<?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>129058</bug_id>
          
          <creation_ts>2014-02-19 13:50:21 -0800</creation_ts>
          <short_desc>Move to using std::unique_ptr for Element, Node and related classes</short_desc>
          <delta_ts>2015-04-20 10:05:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>129321</dependson>
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982528</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-19 13:50:21 -0800</bug_when>
    <thetext>Move to using std::unique_ptr for Element, Node and related classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982533</commentid>
    <comment_count>1</comment_count>
      <attachid>224671</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-19 13:56:04 -0800</bug_when>
    <thetext>Created attachment 224671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982534</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 13:58:43 -0800</bug_when>
    <thetext>Attachment 224671 did not pass style-queue:


ERROR: Source/WebCore/dom/ElementIteratorAssertions.h:57:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982535</commentid>
    <comment_count>3</comment_count>
      <attachid>224672</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-19 14:00:32 -0800</bug_when>
    <thetext>Created attachment 224672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982538</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 14:03:22 -0800</bug_when>
    <thetext>Attachment 224672 did not pass style-queue:


ERROR: Source/WebCore/dom/ElementIteratorAssertions.h:57:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983916</commentid>
    <comment_count>5</comment_count>
      <attachid>224672</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-24 08:31:49 -0800</bug_when>
    <thetext>Comment on attachment 224672
Patch

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

&gt; Source/WebCore/dom/Node.cpp:344
&gt; -        data = ElementRareData::create(toRenderElement(m_data.m_renderer)).leakPtr();
&gt; +        data = new ElementRareData(toRenderElement(m_data.m_renderer));
&gt;      else
&gt; -        data = NodeRareData::create(m_data.m_renderer).leakPtr();
&gt; +        data = new NodeRareData(m_data.m_renderer);

I think you should use std::make_unique with release() here to avoid the ugly new expressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983988</commentid>
    <comment_count>6</comment_count>
      <attachid>224672</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-24 11:48:24 -0800</bug_when>
    <thetext>Comment on attachment 224672
Patch

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

&gt;&gt; Source/WebCore/dom/Node.cpp:344
&gt;&gt; +        data = new NodeRareData(m_data.m_renderer);
&gt; 
&gt; I think you should use std::make_unique with release() here to avoid the ugly new expressions.

Should this be a general rule or just a one-time exception? Should we rigorously try to remove any use of new?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984222</commentid>
    <comment_count>7</comment_count>
      <attachid>224672</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-25 00:42:54 -0800</bug_when>
    <thetext>Comment on attachment 224672
Patch

Clearing flags on attachment: 224672

Committed r164638: &lt;http://trac.webkit.org/changeset/164638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984223</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-25 00:43:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984417</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-02-25 11:57:03 -0800</bug_when>
    <thetext>This broke the Windows build:

    1&gt;c:\cygwin\home\buildbot\slave\win-debug\build\source\webcore\dom\DocumentOrderedMap.cpp(227): error C2280: &apos;std::unique_ptr&lt;WebCore::NoEventDispatchAssertion,std::default_delete&lt;_Ty&gt;&gt;::unique_ptr(const std::unique_ptr&lt;_Ty,std::default_delete&lt;_Ty&gt;&gt; &amp;)&apos; : attempting to reference a deleted function
                 with
                 [
                     _Ty=WebCore::NoEventDispatchAssertion
                 ] (..\dom\DOMAllInOne.cpp)
                 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\memory(1486) : see declaration of &apos;std::unique_ptr&lt;WebCore::NoEventDispatchAssertion,std::default_delete&lt;_Ty&gt;&gt;::unique_ptr&apos;
                 with
                 [
                     _Ty=WebCore::NoEventDispatchAssertion
                 ]
                 This diagnostic occurred in the compiler generated function &apos;WebCore::ElementIteratorAssertions::ElementIteratorAssertions(const WebCore::ElementIteratorAssertions &amp;)&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984431</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-02-25 12:25:14 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; This broke the Windows build:
&gt; 
&gt;     1&gt;c:\cygwin\home\buildbot\slave\win-debug\build\source\webcore\dom\DocumentOrderedMap.cpp(227): error C2280: &apos;std::unique_ptr&lt;WebCore::NoEventDispatchAssertion,std::default_delete&lt;_Ty&gt;&gt;::unique_ptr(const std::unique_ptr&lt;_Ty,std::default_delete&lt;_Ty&gt;&gt; &amp;)&apos; : attempting to reference a deleted function
&gt;                  with
&gt;                  [
&gt;                      _Ty=WebCore::NoEventDispatchAssertion
&gt;                  ] (..\dom\DOMAllInOne.cpp)
&gt;                  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\memory(1486) : see declaration of &apos;std::unique_ptr&lt;WebCore::NoEventDispatchAssertion,std::default_delete&lt;_Ty&gt;&gt;::unique_ptr&apos;
&gt;                  with
&gt;                  [
&gt;                      _Ty=WebCore::NoEventDispatchAssertion
&gt;                  ]
&gt;                  This diagnostic occurred in the compiler generated function &apos;WebCore::ElementIteratorAssertions::ElementIteratorAssertions(const WebCore::ElementIteratorAssertions &amp;)&apos;

It&apos;s trying to copy the unique_ptr in this routine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984435</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-25 12:33:08 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 129321</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984449</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-02-25 12:51:12 -0800</bug_when>
    <thetext>Windows is complaining because it doesn&apos;t like this line:

        auto it = entry.element ? elementDescandents.beginAt(*entry.element) : elementDescandents.begin();

You can establish the value of &apos;it&apos; using either elementDescandents.begin(), or elementDescandents.beginAt(*entry.element), and everything is fine. But if you attempt to use the ternary operator you get the build error.

If you attempt to do it without the ternary operator:

auto it = elementDescandents.begin();
if (entry.element)
    it = elementDescandents.beginAT(*entryElement)

You also get the error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086806</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-20 10:05:52 -0700</bug_when>
    <thetext>This was all done eventually; the code in question is gone.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224671</attachid>
            <date>2014-02-19 13:56:04 -0800</date>
            <delta_ts>2014-02-19 14:00:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129058-20140219225602.patch</filename>
            <type>text/plain</type>
            <size>25225</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MjRkNGYyODE2MjNh
ZmIxNzEwNjg4NDNhZTdlY2JkNWRjOTE2MS4uYmI0NTA3YzRkYzk5ZGZiOTY3NDg4NjBjZjRiNmNi
MGJkMTMxODI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTAyLTE5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHRvIHVzaW5n
IHN0ZDo6dW5pcXVlX3B0ciBmb3IgRWxlbWVudCwgTm9kZSBhbmQgcmVsYXRlZCBjbGFzc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkwNTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHVz
ZXMgb2YgT3duUHRyIGFuZCBQYXNzT3duUHRyIGluIEVsZW1lbnQsIE5vZGUgYW5kIHRoZSByZWxh
dGVkCisgICAgICAgIGNsYXNzZXMgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgYW5kIG1vdmUgc2VtYW50
aWNzLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNoaWxkTm9kZXNMYXp5U25hcHNob3Q6OnRha2VTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGlsZE5vZGVzTGF6eVNuYXBzaG90OjpoYXNTbmFwc2hvdCk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlQXR0ck5vZGVMaXN0Rm9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKiBk
b20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9uczo6RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyk6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpzZXRBdHRyaWJ1dGVNYXApOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmNsZWFyVHJhbnNpZW50UmVnaXN0cmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjphZGRS
ZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbi5oOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hbWVkTm9kZU1hcDo6TmFtZWROb2RlTWFwKToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlZ2lzdGVy
TXV0YXRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp1bnJlZ2lzdGVyTXV0
YXRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpub3RpZnlNdXRhdGlvbk9i
c2VydmVyc05vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAq
IGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRh
OjpOb2RlTGlzdHNOb2RlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5v
ZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmNsZWFyTm9kZUxp
c3RzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRh
dGEpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSk6CisKIDIw
MTQtMDItMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBzZXR0aW5ncy9wcmVmZXJlbmNlcyBmb3IgZW5hYmxpbmcgaW1hZ2UgY29udHJvbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDE3ZGM1MzZiNTFjNTc2NDBmNzhhY2UxMzQ1NmQ0
NzMyMTZhYjI3MzUuLjU0ZTg4ZjY3NzZhNGE4YmM3YjNmN2E3YTUxNjIxNGNmYmNhODYzYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMjYsOCArMjYsNyBAQAogCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgotCi0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI4OCw3ICsyODcsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBpZiAoaGFzU25hcHNob3QoKSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgbV9jaGlsZE5vZGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4+
KCkpOworICAgICAgICBtX2NoaWxkTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQ
dHI8Tm9kZT4+PigpOwogICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsK
ICAgICAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAgICAgIG1fY2hpbGROb2Rlcy0+YXBwZW5k
KG5vZGUpOwpAQCAtMjk3LDcgKzI5Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBDaGlsZE5v
ZGVzTGF6eVNuYXBzaG90KiBuZXh0U25hcHNob3QoKSB7IHJldHVybiBtX25leHRTbmFwc2hvdDsg
fQotICAgIGJvb2wgaGFzU25hcHNob3QoKSB7IHJldHVybiAhIW1fY2hpbGROb2Rlcy5nZXQoKTsg
fQorICAgIGJvb2wgaGFzU25hcHNob3QoKSB7IHJldHVybiAhIW1fY2hpbGROb2RlczsgfQogCiAg
ICAgc3RhdGljIHZvaWQgdGFrZUNoaWxkTm9kZXNMYXp5U25hcHNob3QoKQogICAgIHsKQEAgLTMx
Myw3ICszMTIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1fY3VycmVudE5vZGU7
CiAgICAgdW5zaWduZWQgbV9jdXJyZW50SW5kZXg7Ci0gICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8
Tm9kZT4+PiBtX2NoaWxkTm9kZXM7IC8vIExhemlseSBpbnN0YW50aWF0ZWQuCisgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiBtX2NoaWxkTm9kZXM7IC8vIExhemlseSBp
bnN0YW50aWF0ZWQuCiAgICAgQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCogbV9uZXh0U25hcHNob3Q7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNTM4OWI1ODg5NDc4ZGM4ZDlhNGQ5ODU4
MTQzYzcxZjE1YmM1MjUyOS4uNmQ0ZjUzMmQxNGU3MzRiMDYzNTI1NTViMjNjMGM5NGY2M2QzY2Yw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgIlhN
TE5TTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5n
LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC05Myw3ICs5NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVD
YXNlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB9CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxB
dHRyPj4gQXR0ck5vZGVMaXN0OwotdHlwZWRlZiBIYXNoTWFwPEVsZW1lbnQqLCBPd25QdHI8QXR0
ck5vZGVMaXN0Pj4gQXR0ck5vZGVMaXN0TWFwOwordHlwZWRlZiBIYXNoTWFwPEVsZW1lbnQqLCBz
dGQ6OnVuaXF1ZV9wdHI8QXR0ck5vZGVMaXN0Pj4gQXR0ck5vZGVMaXN0TWFwOwogCiBzdGF0aWMg
QXR0ck5vZGVMaXN0TWFwJiBhdHRyTm9kZUxpc3RNYXAoKQogewpAQCAtMTE3LDcgKzExOCw3IEBA
IHN0YXRpYyBBdHRyTm9kZUxpc3QmIGVuc3VyZUF0dHJOb2RlTGlzdEZvckVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkKICAgICB9CiAgICAgQVNTRVJUKCFhdHRyTm9kZUxpc3RNYXAoKS5jb250YWlu
cyhlbGVtZW50KSk7CiAgICAgZWxlbWVudC0+c2V0SGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXMo
dHJ1ZSk7Ci0gICAgQXR0ck5vZGVMaXN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYXR0ck5vZGVM
aXN0TWFwKCkuYWRkKGVsZW1lbnQsIGFkb3B0UHRyKG5ldyBBdHRyTm9kZUxpc3QpKTsKKyAgICBB
dHRyTm9kZUxpc3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBhdHRyTm9kZUxpc3RNYXAoKS5hZGQo
ZWxlbWVudCwgc3RkOjptYWtlX3VuaXF1ZTxBdHRyTm9kZUxpc3Q+KCkpOwogICAgIHJldHVybiAq
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMzY1LDcgKzM2Niw3IEBAIE5hbWVkTm9k
ZU1hcCogRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgaWYgKE5hbWVkTm9kZU1hcCog
YXR0cmlidXRlTWFwID0gcmFyZURhdGEuYXR0cmlidXRlTWFwKCkpCiAgICAgICAgIHJldHVybiBh
dHRyaWJ1dGVNYXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoTmFtZWROb2RlTWFw
OjpjcmVhdGUoY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpKSk7CisgICAgcmFyZURhdGEuc2V0
QXR0cmlidXRlTWFwKHN0ZDo6bWFrZV91bmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVs
ZW1lbnQmPigqdGhpcykpKTsKICAgICByZXR1cm4gcmFyZURhdGEuYXR0cmlidXRlTWFwKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmlu
ZGV4IGMwNTRiYTM3MTU0YWIxNWM5ODkwYjYyNWQ5MzM0YTU0MDU0MGYzZmUuLmE5YWEzODRjYjdk
NjFjY2NlM2FlMGI1YzhjYTljNWJlMDI0MjY5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSA8bWVtb3J5Pgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBjb25zdCBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICB1aW50NjRfdCBtX2luaXRp
YWxET01UcmVlVmVyc2lvbjsKLSAgICBPd25QdHI8Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uPiBt
X25vRXZlbnREaXNwYXRjaEFzc2VydGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uPiBtX25vRXZlbnREaXNwYXRjaEFzc2VydGlvbjsKIH07CiAKIGlubGlu
ZSBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zKCkK
QEAgLTUzLDcgKzU0LDcgQEAgaW5saW5lIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OkVsZW1l
bnRJdGVyYXRvckFzc2VydGlvbnMoKQogaW5saW5lIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6
OkVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMoY29uc3QgRWxlbWVudCogZmlyc3QpCiAgICAgOiBt
X2RvY3VtZW50KGZpcnN0ID8gJmZpcnN0LT5kb2N1bWVudCgpIDogbnVsbHB0cikKICAgICAsIG1f
aW5pdGlhbERPTVRyZWVWZXJzaW9uKG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT5kb21UcmVlVmVy
c2lvbigpIDogMCkKLSAgICAsIG1fbm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKG1fZG9jdW1lbnQg
PyBhZG9wdFB0cihuZXcgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKSA6IG51bGxwdHIpCisgICAg
LCBtX25vRXZlbnREaXNwYXRjaEFzc2VydGlvbihtX2RvY3VtZW50ID8gc3RkOjptYWtlX3VuaXF1
ZTxOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24+KCkgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggMGM1YWU2Zjc5ZmJiZjUxZjQxN2JlMDI1ODYx
ZDAyMWIyNzJmYmZmZi4uZGMwOTZhNjI1MmYwOGZiNTM0NWJlNGZmNjhjN2JkNjRmNzY0NDk4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMzAsMTQgKzMwLDEzIEBACiAj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNs
dWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnRSYXJl
RGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGEgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPEVsZW1lbnRSYXJlRGF0YT4gY3JlYXRlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKHJlbmRlcmVyKSk7IH0KLQorICAgIGV4
cGxpY2l0IEVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50Kik7CiAgICAgfkVsZW1lbnRSYXJl
RGF0YSgpOwogCiAgICAgdm9pZCBzZXRCZWZvcmVQc2V1ZG9FbGVtZW50KFBhc3NSZWZQdHI8UHNl
dWRvRWxlbWVudD4pOwpAQCAtOTMsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFk
b3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCkgeyBtX3NoYWRvd1Jvb3Qg
PSBzaGFkb3dSb290OyB9CiAKICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXR0cmlidXRlTWFwLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRBdHRyaWJ1dGVN
YXAoUGFzc093blB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZU1hcCkgeyBtX2F0dHJpYnV0ZU1h
cCA9IGF0dHJpYnV0ZU1hcDsgfQorICAgIHZvaWQgc2V0QXR0cmlidXRlTWFwKHN0ZDo6dW5pcXVl
X3B0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZU1hcCkgeyBtX2F0dHJpYnV0ZU1hcCA9IHN0ZDo6
bW92ZShhdHRyaWJ1dGVNYXApOyB9CiAKICAgICBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRTdHlsZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q29t
cHV0ZWRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBjb21wdXRlZFN0eWxlKSB7IG1fY29tcHV0
ZWRTdHlsZSA9IHN0ZDo6bW92ZShjb21wdXRlZFN0eWxlKTsgfQpAQCAtMTUwLDEyICsxNDksMTEg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YXNldERPTVN0cmluZ01hcD4gbV9k
YXRhc2V0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc0xpc3Q+IG1fY2xhc3NMaXN0OwogICAg
IFJlZlB0cjxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3Q7Ci0gICAgT3duUHRyPE5hbWVkTm9kZU1h
cD4gbV9hdHRyaWJ1dGVNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5hbWVkTm9kZU1hcD4gbV9h
dHRyaWJ1dGVNYXA7CiAKICAgICBSZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZvcmVQc2V1ZG9F
bGVtZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRvRWxlbWVudDsK
IAotICAgIGV4cGxpY2l0IEVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50Kik7CiAgICAgdm9p
ZCByZWxlYXNlUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50Kik7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXgg
MTJlMGI0NDFmMGU0ZjdlYzBkMmRmYzJkN2U0YzE2MDA3MzFhZDY4ZS4uYzVlYTAyOGI1ODlmNmI2
YWY0Y2FiN2ZkNjYxYzRhOTdlNjczZjdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzYsMTEgKzM2LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24+IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmNyZWF0ZShQYXNzUmVmUHRyPE11
dGF0aW9uT2JzZXJ2ZXI+IG9ic2VydmVyLCBOb2RlKiByZWdpc3RyYXRpb25Ob2RlLCBNdXRhdGlv
bk9ic2VydmVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGF0
dHJpYnV0ZUZpbHRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24ob2JzZXJ2ZXIsIHJlZ2lzdHJhdGlvbk5vZGUsIG9wdGlvbnMsIGF0dHJp
YnV0ZUZpbHRlcikpOwotfQotCiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpNdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4gb2JzZXJ2
ZXIsIE5vZGUqIHJlZ2lzdHJhdGlvbk5vZGUsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlv
bnMsIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKQogICAgIDog
bV9vYnNlcnZlcihvYnNlcnZlcikKICAgICAsIG1fcmVnaXN0cmF0aW9uTm9kZShyZWdpc3RyYXRp
b25Ob2RlKQpAQCAtNzIsNyArNjcsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKE5vZGUqIG5vZGUpCiAgICAgbV9vYnNl
cnZlci0+c2V0SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9uKCk7CiAKICAgICBpZiAoIW1fdHJhbnNp
ZW50UmVnaXN0cmF0aW9uTm9kZXMpIHsKLSAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25O
b2RlcyA9IGFkb3B0UHRyKG5ldyBOb2RlSGFzaFNldCk7CisgICAgICAgIG1fdHJhbnNpZW50UmVn
aXN0cmF0aW9uTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVIYXNoU2V0PigpOwogCiAgICAg
ICAgIEFTU0VSVCghbV9yZWdpc3RyYXRpb25Ob2RlS2VlcEFsaXZlKTsKICAgICAgICAgbV9yZWdp
c3RyYXRpb25Ob2RlS2VlcEFsaXZlID0gbV9yZWdpc3RyYXRpb25Ob2RlOyAvLyBCYWxhbmNlZCBp
biBjbGVhclRyYW5zaWVudFJlZ2lzdHJhdGlvbnMuCkBAIC04NywxMCArODIsMTAgQEAgdm9pZCBN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpjbGVhclRyYW5zaWVudFJlZ2lzdHJhdGlvbnMo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yIChOb2RlSGFzaFNldDo6aXRlcmF0
b3IgaXRlciA9IG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMtPmJlZ2luKCk7IGl0ZXIgIT0g
bV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcy0+ZW5kKCk7ICsraXRlcikKLSAgICAgICAgKCpp
dGVyKS0+dW5yZWdpc3RlclRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXIodGhpcyk7CisgICAgZm9y
IChhdXRvJiBpdGVyIDogKm1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpCisgICAgICAgIGl0
ZXItPnVucmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKHRoaXMpOwogCi0gICAgbV90
cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcy5jbGVhcigpOworICAgIG1fdHJhbnNpZW50UmVnaXN0
cmF0aW9uTm9kZXMucmVzZXQoKTsKIAogICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbk5vZGVLZWVw
QWxpdmUpOwogICAgIG1fcmVnaXN0cmF0aW9uTm9kZUtlZXBBbGl2ZSA9IDA7IC8vIEJhbGFuY2Vk
IGluIG9ic2VydmVTdWJ0cmVlTm9kZVdpbGxEZXRhY2guCkBAIC0xMjYsOCArMTIxLDggQEAgdm9p
ZCBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjphZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0
KEhhc2hTZXQ8Tm9kZSo+JiBub2QKICAgICBub2Rlcy5hZGQobV9yZWdpc3RyYXRpb25Ob2RlKTsK
ICAgICBpZiAoIW1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpCiAgICAgICAgIHJldHVybjsK
LSAgICBmb3IgKE5vZGVIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90cmFuc2llbnRS
ZWdpc3RyYXRpb25Ob2Rlcy0+YmVnaW4oKTsgaXRlciAhPSBtX3RyYW5zaWVudFJlZ2lzdHJhdGlv
bk5vZGVzLT5lbmQoKTsgKytpdGVyKQotICAgICAgICBub2Rlcy5hZGQoaXRlci0+Z2V0KCkpOwor
ICAgIGZvciAoYXV0byYgaXRlciA6ICptX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5vZGVzKQorICAg
ICAgICBub2Rlcy5hZGQoaXRlci5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5o
CmluZGV4IDVhZjZjMzU3ZWE4YTRiNTk1ZmI2MzA5ZGY5OWViODFkN2VmMzllMTQuLmQ1OTA5Y2M0
MzI0NWQ0ODg5MWQ5NTczMjZmMjM0YmI5NTFlMjgxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMzIsNiArMzIsNyBAQAog
I2RlZmluZSBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uX2gKIAogI2luY2x1ZGUgIk11dGF0
aW9uT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmdIYXNoLmg+CkBAIC00Miw3ICs0Myw3IEBAIGNsYXNzIFF1YWxpZmllZE5h
bWU7CiAKIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+IGNyZWF0ZShQ
YXNzUmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+LCBOb2RlKiwgTXV0YXRpb25PYnNlcnZlck9wdGlv
bnMsIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKTsKKyAgICBN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4s
IE5vZGUqLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiBhdHRyaWJ1dGVGaWx0ZXIpOwogICAgIH5NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
KCk7CiAKICAgICB2b2lkIHJlc2V0T2JzZXJ2YXRpb24oTXV0YXRpb25PYnNlcnZlck9wdGlvbnMs
IGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKTsKQEAgLTYxLDEz
ICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KEhh
c2hTZXQ8Tm9kZSo+JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbihQYXNzUmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+LCBOb2RlKiwgTXV0YXRpb25P
YnNlcnZlck9wdGlvbnMsIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgYXR0cmlidXRlRmls
dGVyKTsKLQogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBtX29ic2VydmVyOwogICAgIE5v
ZGUqIG1fcmVnaXN0cmF0aW9uTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9yZWdpc3RyYXRpb25O
b2RlS2VlcEFsaXZlOwogICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IE5vZGVIYXNo
U2V0OwotICAgIE93blB0cjxOb2RlSGFzaFNldD4gbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rl
czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9kZUhhc2hTZXQ+IG1fdHJhbnNpZW50UmVnaXN0cmF0
aW9uTm9kZXM7CiAKICAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAg
SGFzaFNldDxBdG9taWNTdHJpbmc+IG1fYXR0cmlidXRlRmlsdGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVk
Tm9kZU1hcC5oCmluZGV4IGZjOGJmYmU4YmI1NjdkN2IwNDhmYzljOTM3NGMwNTAxNzExOWM4ZGEu
LjczOWQ3ZDJhZTAyNWQxNTA4MDM4MDMxYWUzOTM2ZDdmYzdjM2I3YjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TmFtZWROb2RlTWFwLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNkZWZpbmUgTmFtZWROb2RlTWFwX2gK
IAogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIApAQCAtNDEsOSArNDAsMTAgQEAgY2xhc3MgTmFtZWROb2RlTWFwIDogcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ZnJpZW5kIGNsYXNzIEVsZW1lbnQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TmFt
ZWROb2RlTWFwPiBjcmVhdGUoRWxlbWVudCYgZWxlbWVudCkKKyAgICBleHBsaWNpdCBOYW1lZE5v
ZGVNYXAoRWxlbWVudCYgZWxlbWVudCkKKyAgICAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTmFtZWROb2RlTWFwKGVsZW1lbnQpKTsK
KyAgICAgICAgLy8gT25seSBzdXBwb3J0cyBOYW1lZE5vZGVNYXBzIHdpdGggRWxlbWVudCBhc3Nv
Y2lhdGVkLCBEb2N1bWVudFR5cGUuZW50aXRpZXMgYW5kIERvY3VtZW50VHlwZS5ub3RhdGlvbnMg
YXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgogICAgIH0KIAogICAgIHZvaWQgcmVmKCk7CkBAIC02Nywx
MiArNjcsNiBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
ICZtX2VsZW1lbnQ7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBOYW1lZE5vZGVNYXAoRWxl
bWVudCYgZWxlbWVudCkKLSAgICAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICB7Ci0gICAg
ICAgIC8vIE9ubHkgc3VwcG9ydHMgTmFtZWROb2RlTWFwcyB3aXRoIEVsZW1lbnQgYXNzb2NpYXRl
ZCwgRG9jdW1lbnRUeXBlLmVudGl0aWVzIGFuZCBEb2N1bWVudFR5cGUubm90YXRpb25zIGFyZSBu
b3Qgc3VwcG9ydGVkIHlldC4KLSAgICB9Ci0KICAgICBFbGVtZW50JiBtX2VsZW1lbnQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggYmM0YmYxZjE3NDJhODk4ZjBlZjE4NzcxOWZkMDUyZDg1OTUy
OWRmYi4uMjlkODAwMzljMjdkNjZlN2ZhYTQxYjA5NTJkYzExZDUyZWUxMWRlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtMzM5LDkgKzMzOSw5IEBAIE5vZGVSYXJlRGF0YSYgTm9kZTo6ZW5zdXJlUmFy
ZURhdGEoKQogCiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhOwogICAgIGlmIChpc0VsZW1lbnROb2Rl
KCkpCi0gICAgICAgIGRhdGEgPSBFbGVtZW50UmFyZURhdGE6OmNyZWF0ZSh0b1JlbmRlckVsZW1l
bnQobV9kYXRhLm1fcmVuZGVyZXIpKS5sZWFrUHRyKCk7CisgICAgICAgIGRhdGEgPSBuZXcgRWxl
bWVudFJhcmVEYXRhKHRvUmVuZGVyRWxlbWVudChtX2RhdGEubV9yZW5kZXJlcikpOwogICAgIGVs
c2UKLSAgICAgICAgZGF0YSA9IE5vZGVSYXJlRGF0YTo6Y3JlYXRlKG1fZGF0YS5tX3JlbmRlcmVy
KS5sZWFrUHRyKCk7CisgICAgICAgIGRhdGEgPSBuZXcgTm9kZVJhcmVEYXRhKG1fZGF0YS5tX3Jl
bmRlcmVyKTsKICAgICBBU1NFUlQoZGF0YSk7CiAKICAgICBtX2RhdGEubV9yYXJlRGF0YSA9IGRh
dGE7CkBAIC0xNzY2LDcgKzE3NjYsNyBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50KiBvbGREb2N1bWVudCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChWZWN0
b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogcmVnaXN0cnkgPSBtdXRh
dGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgeworICAgIGlmIChWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogcmVnaXN0cnkgPSBtdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cnkoKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZ2lzdHJ5
LT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgZG9jdW1lbnQoKS5hZGRNdXRhdGlvbk9ic2Vy
dmVyVHlwZXMocmVnaXN0cnktPmF0KGkpLT5tdXRhdGlvblR5cGVzKCkpOwogICAgICAgICB9CkBA
IC0xODYzLDcgKzE4NjMsNyBAQCBib29sIE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqIGxpcwogICAgIHJldHVybiB0
cnlSZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1
cmUpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Tm9kZSosIE93blB0cjxFdmVudFRhcmdldERhdGE+
PiBFdmVudFRhcmdldERhdGFNYXA7Cit0eXBlZGVmIEhhc2hNYXA8Tm9kZSosIHN0ZDo6dW5pcXVl
X3B0cjxFdmVudFRhcmdldERhdGE+PiBFdmVudFRhcmdldERhdGFNYXA7CiAKIHN0YXRpYyBFdmVu
dFRhcmdldERhdGFNYXAmIGV2ZW50VGFyZ2V0RGF0YU1hcCgpCiB7CkBAIC0xODgyLDcgKzE4ODIs
NyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAgICAg
ICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRhTWFwKCkuZ2V0KHRoaXMpOwogICAgIHNldEhhc0V2
ZW50VGFyZ2V0RGF0YSh0cnVlKTsKICAgICBFdmVudFRhcmdldERhdGEqIGRhdGEgPSBuZXcgRXZl
bnRUYXJnZXREYXRhOwotICAgIGV2ZW50VGFyZ2V0RGF0YU1hcCgpLnNldCh0aGlzLCBhZG9wdFB0
cihkYXRhKSk7CisgICAgZXZlbnRUYXJnZXREYXRhTWFwKCkuc2V0KHRoaXMsIHN0ZDo6dW5pcXVl
X3B0cjxFdmVudFRhcmdldERhdGE+KGRhdGEpKTsKICAgICByZXR1cm4gKmRhdGE7CiB9CiAKQEAg
LTE4OTEsNyArMTg5MSw3IEBAIHZvaWQgTm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEoKQogICAg
IGV2ZW50VGFyZ2V0RGF0YU1hcCgpLnJlbW92ZSh0aGlzKTsKIH0KIAotVmVjdG9yPE93blB0cjxN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPj4qIE5vZGU6Om11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyeSgpCitWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b24+PiogTm9kZTo6bXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkKIHsKICAgICBpZiAoIWhhc1Jh
cmVEYXRhKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTk0MSw3ICsxOTQxLDcgQEAgdm9pZCBO
b2RlOjpnZXRSZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoSGFzaE1hcDxNdXRhdGlv
bk9ic2VydmVyKiwgTXV0YXQKIHZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11
dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25z
LCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGF0dHJpYnV0ZUZpbHRlcikKIHsKICAgICBN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24gPSAwOwotICAgIFZlY3Rv
cjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+JiByZWdpc3RyeSA9IGVuc3Vy
ZVJhcmVEYXRhKCkuZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKS5yZWdpc3RyeTsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiYgcmVn
aXN0cnkgPSBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkucmVn
aXN0cnk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RyeS5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAocmVnaXN0cnlbaV0tPm9ic2VydmVyKCkgPT0gb2JzZXJ2ZXIpIHsKICAg
ICAgICAgICAgIHJlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJ5W2ldLmdldCgpOwpAQCAtMTk1MCw3ICsx
OTUwLDcgQEAgdm9pZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNl
cnZlciogb2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIKICAgICB9CiAKICAgICBpZiAoIXJlZ2lz
dHJhdGlvbikgewotICAgICAgICByZWdpc3RyeS5hcHBlbmQoTXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbjo6Y3JlYXRlKG9ic2VydmVyLCB0aGlzLCBvcHRpb25zLCBhdHRyaWJ1dGVGaWx0ZXIp
KTsKKyAgICAgICAgcmVnaXN0cnkuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbj4ob2JzZXJ2ZXIsIHRoaXMsIG9wdGlvbnMsIGF0dHJpYnV0ZUZpbHRl
cikpOwogICAgICAgICByZWdpc3RyYXRpb24gPSByZWdpc3RyeS5sYXN0KCkuZ2V0KCk7CiAgICAg
fQogCkBAIC0xOTU5LDE3ICsxOTU5LDIyIEBAIHZvaWQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9i
c2VydmVyKE11dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyLCBNdXRhdGlvbk9ic2VydmVyCiAKIHZv
aWQgTm9kZTo6dW5yZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbiogcmVnaXN0cmF0aW9uKQogewotICAgIFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbj4+KiByZWdpc3RyeSA9IG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgp
OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlv
bj4+KiByZWdpc3RyeSA9IG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOwogICAgIEFTU0VSVChy
ZWdpc3RyeSk7CiAgICAgaWYgKCFyZWdpc3RyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2l6
ZV90IGluZGV4ID0gcmVnaXN0cnktPmZpbmQocmVnaXN0cmF0aW9uKTsKLSAgICBBU1NFUlQoaW5k
ZXggIT0gbm90Rm91bmQpOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuOworICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgZm9yIChjb25zdCBhdXRvJiBzdG9yZWRS
ZWdpc3RyYXRpb24gOiAqcmVnaXN0cnkpIHsKKyAgICAgICAgaWYgKHN0b3JlZFJlZ2lzdHJhdGlv
bi5nZXQoKSA9PSByZWdpc3RyYXRpb24pIHsKKyAgICAgICAgICAgIHJlZ2lzdHJ5LT5yZW1vdmUo
aW5kZXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICByZWdpc3RyeS0+
cmVtb3ZlKGluZGV4KTsKKyAgICAgICAgaW5kZXgrKzsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAogdm9pZCBOb2RlOjpyZWdpc3RlclRyYW5zaWVudE11dGF0aW9uT2Jz
ZXJ2ZXIoTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uKQpAQCAtMTk5
NCw3ICsxOTk5LDcgQEAgdm9pZCBOb2RlOjpub3RpZnlNdXRhdGlvbk9ic2VydmVyc05vZGVXaWxs
RGV0YWNoKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50
Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChW
ZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogcmVnaXN0cnkgPSBu
b2RlLT5tdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgeworICAgICAgICBpZiAoVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPj4qIHJlZ2lzdHJ5ID0g
bm9kZS0+bXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKICAgICAgICAgICAgIGNvbnN0IHNp
emVfdCBzaXplID0gcmVnaXN0cnktPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LT5hdChpKS0+b2Jz
ZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2godGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA5ZGY4ZTgz
NWI2MzYxYjQwMTgwYmE5Y2ZjOWY5ODJkM2FhZGY5YWNhLi5mNDA0NDQ3MjFhMWQ1YTA4ODQ3NmU3
ODIxZTcxMzI2ZTY1YTAzZjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKICNp
bmNsdWRlICJUcmVlU2hhcmVkLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CkBAIC02NzEsNyArNjcyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKIAotICAgIFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbj4+KiBtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKTsKKyAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogbXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAgICAgSGFzaFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uKj4qIHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOwogCiAgICAgbXV0
YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRl
eCBhNDg4MGY4NDEzZjY4NTQwMWYwOTFjNTIxZWEzN2M4ZDBlZTEwNGNhLi5iYWU0MjMzOTQ3ZTcz
NjBmOThhZDNkZGQ3ZjA4M2ExNGU0NzdhOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CkBAIC0zNiw5ICszNiw4IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIlRl
eHRUcmFjay5oIgogI2VuZGlmCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogCkBAIC01MSw2ICs1MCwxMSBAQCBjbGFzcyBUcmVlU2NvcGU7CiBj
bGFzcyBOb2RlTGlzdHNOb2RlRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZUxp
c3RzTm9kZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBOb2Rl
TGlzdHNOb2RlRGF0YSgpCisgICAgICAgIDogbV9jaGlsZE5vZGVMaXN0KG51bGxwdHIpCisgICAg
ICAgICwgbV9lbXB0eUNoaWxkTm9kZUxpc3QobnVsbHB0cikKKyAgICB7IH0KKwogICAgIHZvaWQg
Y2xlYXJDaGlsZE5vZGVMaXN0Q2FjaGUoKQogICAgIHsKICAgICAgICAgaWYgKG1fY2hpbGROb2Rl
TGlzdCkKQEAgLTIwNywxMSArMjExLDYgQEAgcHVibGljOgogICAgICAgICBtX2NhY2hlZENvbGxl
Y3Rpb25zLnJlbW92ZShuYW1lZENvbGxlY3Rpb25LZXkoY29sbGVjdGlvbi0+dHlwZSgpLCBuYW1l
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IGNy
ZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5vZGVMaXN0c05vZGVE
YXRhKTsKLSAgICB9Ci0KICAgICB2b2lkIGludmFsaWRhdGVDYWNoZXMoY29uc3QgUXVhbGlmaWVk
TmFtZSogYXR0ck5hbWUgPSAwKTsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsKQEAg
LTI1NiwxMSArMjU1LDYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBOb2RlTGlz
dHNOb2RlRGF0YSgpCi0gICAgICAgIDogbV9jaGlsZE5vZGVMaXN0KG51bGxwdHIpCi0gICAgICAg
ICwgbV9lbXB0eUNoaWxkTm9kZUxpc3QobnVsbHB0cikKLSAgICB7IH0KLQogICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+IG5hbWVkQ29sbGVjdGlvbktleShDb2xsZWN0
aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIEF0b21pY1N0cmluZz4odHlwZSwgbmFtZSk7
CkBAIC0yODYsMjYgKzI4MCwyNiBAQCBwcml2YXRlOgogY2xhc3MgTm9kZU11dGF0aW9uT2JzZXJ2
ZXJEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2RlTXV0YXRpb25PYnNlcnZlckRh
dGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBWZWN0b3I8T3duUHRy
PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiByZWdpc3RyeTsKKyAgICBOb2RlTXV0YXRp
b25PYnNlcnZlckRhdGEoKSA9IGRlZmF1bHQ7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPj4gcmVnaXN0cnk7CiAgICAgSGFzaFNldDxNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKj4gdHJhbnNpZW50UmVnaXN0cnk7Ci0KLSAgICBzdGF0
aWMgUGFzc093blB0cjxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UHRyKG5ldyBOb2RlTXV0YXRpb25PYnNlcnZlckRhdGEpOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgTm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhKCkgeyB9CiB9OwogCiBjbGFzcyBOb2RlUmFyZURh
dGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Tm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8Tm9kZVJhcmVEYXRhPiBjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikgeyByZXR1cm4gYWRvcHRQdHIobmV3IE5vZGVSYXJlRGF0YShyZW5kZXJlcikpOyB9CisgICAg
Tm9kZVJhcmVEYXRhKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisgICAgICAgIDogTm9kZVJhcmVE
YXRhQmFzZShyZW5kZXJlcikKKyAgICAgICAgLCBtX2Nvbm5lY3RlZEZyYW1lQ291bnQoMCkKKyAg
ICB7IH0KIAotICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7
IH0KKworICAgIHZvaWQgY2xlYXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzLnJlc2V0KCk7IH0K
ICAgICBOb2RlTGlzdHNOb2RlRGF0YSogbm9kZUxpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9ub2Rl
TGlzdHMuZ2V0KCk7IH0KICAgICBOb2RlTGlzdHNOb2RlRGF0YSYgZW5zdXJlTm9kZUxpc3RzKCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9ub2RlTGlzdHMpCi0gICAgICAgICAgICBtX25vZGVMaXN0
cyA9IE5vZGVMaXN0c05vZGVEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fbm9kZUxpc3Rz
ID0gc3RkOjptYWtlX3VuaXF1ZTxOb2RlTGlzdHNOb2RlRGF0YT4oKTsKICAgICAgICAgcmV0dXJu
ICptX25vZGVMaXN0czsKICAgICB9CiAKQEAgLTMxMyw3ICszMDcsNyBAQCBwdWJsaWM6CiAgICAg
Tm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhJiBlbnN1cmVNdXRhdGlvbk9ic2VydmVyRGF0YSgpCiAg
ICAgewogICAgICAgICBpZiAoIW1fbXV0YXRpb25PYnNlcnZlckRhdGEpCi0gICAgICAgICAgICBt
X211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gTm9kZU11dGF0aW9uT2JzZXJ2ZXJEYXRhOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIG1fbXV0YXRpb25PYnNlcnZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4oKTsKICAgICAgICAgcmV0dXJuICptX211dGF0aW9u
T2JzZXJ2ZXJEYXRhOwogICAgIH0KIApAQCAtMzI5LDE3ICszMjMsMTEgQEAgcHVibGljOgogICAg
ICAgICBtX2Nvbm5lY3RlZEZyYW1lQ291bnQgLT0gYW1vdW50OwogICAgIH0KIAotcHJvdGVjdGVk
OgotICAgIE5vZGVSYXJlRGF0YShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotICAgICAgICA6IE5v
ZGVSYXJlRGF0YUJhc2UocmVuZGVyZXIpCi0gICAgICAgICwgbV9jb25uZWN0ZWRGcmFtZUNvdW50
KDApCi0gICAgeyB9Ci0KIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb25uZWN0ZWRGcmFtZUNv
dW50IDogMTA7IC8vIE11c3QgZml0IFBhZ2U6Om1heE51bWJlck9mRnJhbWVzLgogCi0gICAgT3du
UHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKLSAgICBPd25QdHI8Tm9kZU11dGF0
aW9uT2JzZXJ2ZXJEYXRhPiBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4gbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsKIH07CiAK
IGlubGluZSBib29sIE5vZGVMaXN0c05vZGVEYXRhOjpkZWxldGVUaGlzQW5kVXBkYXRlTm9kZVJh
cmVEYXRhSWZBYm91dFRvUmVtb3ZlTGFzdExpc3QoTm9kZSYgb3duZXJOb2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDNiOTQ3NWRjNGZjNjYzMWE4YmM1NDNjNmJlODUy
ZTA1M2IzOWI4YTAuLjI1NzU5MmM5N2UyODAyZTFmODVhZDIwNDU5YzI0MWJhNDRlYTRiNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IHZhbHVlOwogfTsKIAotdHlwZWRlZiBIYXNo
TWFwPHVuc2lnbmVkLCBPd25QdHI8UHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVFbnRyeT4sIEFs
cmVhZHlIYXNoZWQ+IFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlOwordHlwZWRlZiBIYXNoTWFw
PHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8UHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVFbnRy
eT4sIEFscmVhZHlIYXNoZWQ+IFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlOwogICAgIAogc3Rh
dGljIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleSYg
YSwgY29uc3QgUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVLZXkmIGIpCiB7CkBAIC0zNDYsNyAr
MzQ2LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpyZWJ1aWxkUHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGUoKQogICAgIGlmICghY2FjaGVIYXNoIHx8IGNhY2hlSXRlcmF0b3ItPnZhbHVlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBPd25QdHI8UHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVFbnRy
eT4gbmV3RW50cnkgPSBhZG9wdFB0cihuZXcgUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVFbnRy
eSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlRW50cnk+
IG5ld0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUVu
dHJ5PigpOwogICAgIG5ld0VudHJ5LT5rZXkgPSBjYWNoZUtleTsKICAgICBuZXdFbnRyeS0+dmFs
dWUgPSBzdHlsZS5yZWxlYXNlKCk7CiAKQEAgLTM1NCw5ICszNTQsOSBAQCB2b2lkIFN0eWxlZEVs
ZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCiAgICAgaWYgKHByZXNl
bnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuc2l6ZSgpID4gcHJlc2VudGF0aW9uQXR0cmlidXRlQ2Fj
aGVNYXhpbXVtU2l6ZSkgewogICAgICAgICAvLyBTdGFydCBidWlsZGluZyBmcm9tIHNjcmF0Y2gg
aWYgdGhlIGNhY2hlIGV2ZXIgZ2V0cyBiaWcuCiAgICAgICAgIHByZXNlbnRhdGlvbkF0dHJpYnV0
ZUNhY2hlKCkuY2xlYXIoKTsKLSAgICAgICAgcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKS5z
ZXQoY2FjaGVIYXNoLCBuZXdFbnRyeS5yZWxlYXNlKCkpOworICAgICAgICBwcmVzZW50YXRpb25B
dHRyaWJ1dGVDYWNoZSgpLnNldChjYWNoZUhhc2gsIHN0ZDo6bW92ZShuZXdFbnRyeSkpOwogICAg
IH0gZWxzZQotICAgICAgICBjYWNoZUl0ZXJhdG9yLT52YWx1ZSA9IG5ld0VudHJ5LnJlbGVhc2Uo
KTsKKyAgICAgICAgY2FjaGVJdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1vdmUobmV3RW50cnkpOwog
fQogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1
dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBDU1NWYWx1ZUlEIGlkZW50aWZpZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224672</attachid>
            <date>2014-02-19 14:00:32 -0800</date>
            <delta_ts>2014-02-25 00:42:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129058-20140219230030.patch</filename>
            <type>text/plain</type>
            <size>25185</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MjRkNGYyODE2MjNh
ZmIxNzEwNjg4NDNhZTdlY2JkNWRjOTE2MS4uYmI0NTA3YzRkYzk5ZGZiOTY3NDg4NjBjZjRiNmNi
MGJkMTMxODI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTAyLTE5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHRvIHVzaW5n
IHN0ZDo6dW5pcXVlX3B0ciBmb3IgRWxlbWVudCwgTm9kZSBhbmQgcmVsYXRlZCBjbGFzc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkwNTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHVz
ZXMgb2YgT3duUHRyIGFuZCBQYXNzT3duUHRyIGluIEVsZW1lbnQsIE5vZGUgYW5kIHRoZSByZWxh
dGVkCisgICAgICAgIGNsYXNzZXMgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgYW5kIG1vdmUgc2VtYW50
aWNzLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNoaWxkTm9kZXNMYXp5U25hcHNob3Q6OnRha2VTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGlsZE5vZGVzTGF6eVNuYXBzaG90OjpoYXNTbmFwc2hvdCk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJlQXR0ck5vZGVMaXN0Rm9yRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKiBk
b20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9uczo6RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyk6CisgICAgICAg
ICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpzZXRBdHRyaWJ1dGVNYXApOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmNsZWFyVHJhbnNpZW50UmVnaXN0cmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjphZGRS
ZWdpc3RyYXRpb25Ob2Rlc1RvU2V0KToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbi5oOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hbWVkTm9kZU1hcDo6TmFtZWROb2RlTWFwKToKKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlZ2lzdGVy
TXV0YXRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp1bnJlZ2lzdGVyTXV0
YXRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpub3RpZnlNdXRhdGlvbk9i
c2VydmVyc05vZGVXaWxsRGV0YWNoKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAq
IGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRh
OjpOb2RlTGlzdHNOb2RlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5v
ZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmNsZWFyTm9kZUxp
c3RzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTm9kZUxpc3RzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YTo6ZW5zdXJlTXV0YXRpb25PYnNlcnZlckRh
dGEpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSk6CisKIDIw
MTQtMDItMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBzZXR0aW5ncy9wcmVmZXJlbmNlcyBmb3IgZW5hYmxpbmcgaW1hZ2UgY29udHJvbHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDE3ZGM1MzZiNTFjNTc2NDBmNzhhY2UxMzQ1NmQ0
NzMyMTZhYjI3MzUuLjU0ZTg4ZjY3NzZhNGE4YmM3YjNmN2E3YTUxNjIxNGNmYmNhODYzYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMjYsOCArMjYsNyBAQAogCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgotCi0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTI4OCw3ICsyODcsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBpZiAoaGFzU25hcHNob3QoKSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgbV9jaGlsZE5vZGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4+
KCkpOworICAgICAgICBtX2NoaWxkTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxSZWZQ
dHI8Tm9kZT4+PigpOwogICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsK
ICAgICAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAgICAgIG1fY2hpbGROb2Rlcy0+YXBwZW5k
KG5vZGUpOwpAQCAtMjk3LDcgKzI5Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBDaGlsZE5v
ZGVzTGF6eVNuYXBzaG90KiBuZXh0U25hcHNob3QoKSB7IHJldHVybiBtX25leHRTbmFwc2hvdDsg
fQotICAgIGJvb2wgaGFzU25hcHNob3QoKSB7IHJldHVybiAhIW1fY2hpbGROb2Rlcy5nZXQoKTsg
fQorICAgIGJvb2wgaGFzU25hcHNob3QoKSB7IHJldHVybiAhIW1fY2hpbGROb2RlczsgfQogCiAg
ICAgc3RhdGljIHZvaWQgdGFrZUNoaWxkTm9kZXNMYXp5U25hcHNob3QoKQogICAgIHsKQEAgLTMx
Myw3ICszMTIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1fY3VycmVudE5vZGU7
CiAgICAgdW5zaWduZWQgbV9jdXJyZW50SW5kZXg7Ci0gICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8
Tm9kZT4+PiBtX2NoaWxkTm9kZXM7IC8vIExhemlseSBpbnN0YW50aWF0ZWQuCisgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiBtX2NoaWxkTm9kZXM7IC8vIExhemlseSBp
bnN0YW50aWF0ZWQuCiAgICAgQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCogbV9uZXh0U25hcHNob3Q7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNTM4OWI1ODg5NDc4ZGM4ZDlhNGQ5ODU4
MTQzYzcxZjE1YmM1MjUyOS4uNmQ0ZjUzMmQxNGU3MzRiMDYzNTI1NTViMjNjMGM5NGY2M2QzY2Yw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgIlhN
TE5TTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5n
LmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC05Myw3ICs5NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVD
YXNlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB9CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxB
dHRyPj4gQXR0ck5vZGVMaXN0OwotdHlwZWRlZiBIYXNoTWFwPEVsZW1lbnQqLCBPd25QdHI8QXR0
ck5vZGVMaXN0Pj4gQXR0ck5vZGVMaXN0TWFwOwordHlwZWRlZiBIYXNoTWFwPEVsZW1lbnQqLCBz
dGQ6OnVuaXF1ZV9wdHI8QXR0ck5vZGVMaXN0Pj4gQXR0ck5vZGVMaXN0TWFwOwogCiBzdGF0aWMg
QXR0ck5vZGVMaXN0TWFwJiBhdHRyTm9kZUxpc3RNYXAoKQogewpAQCAtMTE3LDcgKzExOCw3IEBA
IHN0YXRpYyBBdHRyTm9kZUxpc3QmIGVuc3VyZUF0dHJOb2RlTGlzdEZvckVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkKICAgICB9CiAgICAgQVNTRVJUKCFhdHRyTm9kZUxpc3RNYXAoKS5jb250YWlu
cyhlbGVtZW50KSk7CiAgICAgZWxlbWVudC0+c2V0SGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXMo
dHJ1ZSk7Ci0gICAgQXR0ck5vZGVMaXN0TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gYXR0ck5vZGVM
aXN0TWFwKCkuYWRkKGVsZW1lbnQsIGFkb3B0UHRyKG5ldyBBdHRyTm9kZUxpc3QpKTsKKyAgICBB
dHRyTm9kZUxpc3RNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBhdHRyTm9kZUxpc3RNYXAoKS5hZGQo
ZWxlbWVudCwgc3RkOjptYWtlX3VuaXF1ZTxBdHRyTm9kZUxpc3Q+KCkpOwogICAgIHJldHVybiAq
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIApAQCAtMzY1LDcgKzM2Niw3IEBAIE5hbWVkTm9k
ZU1hcCogRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgaWYgKE5hbWVkTm9kZU1hcCog
YXR0cmlidXRlTWFwID0gcmFyZURhdGEuYXR0cmlidXRlTWFwKCkpCiAgICAgICAgIHJldHVybiBh
dHRyaWJ1dGVNYXA7CiAKLSAgICByYXJlRGF0YS5zZXRBdHRyaWJ1dGVNYXAoTmFtZWROb2RlTWFw
OjpjcmVhdGUoY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpKSk7CisgICAgcmFyZURhdGEuc2V0
QXR0cmlidXRlTWFwKHN0ZDo6bWFrZV91bmlxdWU8TmFtZWROb2RlTWFwPihjb25zdF9jYXN0PEVs
ZW1lbnQmPigqdGhpcykpKTsKICAgICByZXR1cm4gcmFyZURhdGEuYXR0cmlidXRlTWFwKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmlu
ZGV4IGMwNTRiYTM3MTU0YWIxNWM5ODkwYjYyNWQ5MzM0YTU0MDU0MGYzZmUuLmE5YWEzODRjYjdk
NjFjY2NlM2FlMGI1YzhjYTljNWJlMDI0MjY5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSA8bWVtb3J5Pgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBjb25zdCBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICB1aW50NjRfdCBtX2luaXRp
YWxET01UcmVlVmVyc2lvbjsKLSAgICBPd25QdHI8Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uPiBt
X25vRXZlbnREaXNwYXRjaEFzc2VydGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uPiBtX25vRXZlbnREaXNwYXRjaEFzc2VydGlvbjsKIH07CiAKIGlubGlu
ZSBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zKCkK
QEAgLTUzLDcgKzU0LDcgQEAgaW5saW5lIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OkVsZW1l
bnRJdGVyYXRvckFzc2VydGlvbnMoKQogaW5saW5lIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6
OkVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMoY29uc3QgRWxlbWVudCogZmlyc3QpCiAgICAgOiBt
X2RvY3VtZW50KGZpcnN0ID8gJmZpcnN0LT5kb2N1bWVudCgpIDogbnVsbHB0cikKICAgICAsIG1f
aW5pdGlhbERPTVRyZWVWZXJzaW9uKG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT5kb21UcmVlVmVy
c2lvbigpIDogMCkKLSAgICAsIG1fbm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKG1fZG9jdW1lbnQg
PyBhZG9wdFB0cihuZXcgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKSA6IG51bGxwdHIpCisgICAg
LCBtX25vRXZlbnREaXNwYXRjaEFzc2VydGlvbihtX2RvY3VtZW50ID8gc3RkOjptYWtlX3VuaXF1
ZTxOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24+KCkgOiBudWxscHRyKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggMGM1YWU2Zjc5ZmJiZjUxZjQxN2JlMDI1ODYx
ZDAyMWIyNzJmYmZmZi4uZGMwOTZhNjI1MmYwOGZiNTM0NWJlNGZmNjhjN2JkNjRmNzY0NDk4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMzAsMTQgKzMwLDEzIEBACiAj
aW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNs
dWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8bWVtb3J5PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnRSYXJl
RGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGEgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPEVsZW1lbnRSYXJlRGF0YT4gY3JlYXRlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKHJlbmRlcmVyKSk7IH0KLQorICAgIGV4
cGxpY2l0IEVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50Kik7CiAgICAgfkVsZW1lbnRSYXJl
RGF0YSgpOwogCiAgICAgdm9pZCBzZXRCZWZvcmVQc2V1ZG9FbGVtZW50KFBhc3NSZWZQdHI8UHNl
dWRvRWxlbWVudD4pOwpAQCAtOTMsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFk
b3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCkgeyBtX3NoYWRvd1Jvb3Qg
PSBzaGFkb3dSb290OyB9CiAKICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXR0cmlidXRlTWFwLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRBdHRyaWJ1dGVN
YXAoUGFzc093blB0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZU1hcCkgeyBtX2F0dHJpYnV0ZU1h
cCA9IGF0dHJpYnV0ZU1hcDsgfQorICAgIHZvaWQgc2V0QXR0cmlidXRlTWFwKHN0ZDo6dW5pcXVl
X3B0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0ZU1hcCkgeyBtX2F0dHJpYnV0ZU1hcCA9IHN0ZDo6
bW92ZShhdHRyaWJ1dGVNYXApOyB9CiAKICAgICBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRTdHlsZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q29t
cHV0ZWRTdHlsZShQYXNzUmVmPFJlbmRlclN0eWxlPiBjb21wdXRlZFN0eWxlKSB7IG1fY29tcHV0
ZWRTdHlsZSA9IHN0ZDo6bW92ZShjb21wdXRlZFN0eWxlKTsgfQpAQCAtMTUwLDEyICsxNDksMTEg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YXNldERPTVN0cmluZ01hcD4gbV9k
YXRhc2V0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDbGFzc0xpc3Q+IG1fY2xhc3NMaXN0OwogICAg
IFJlZlB0cjxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3Q7Ci0gICAgT3duUHRyPE5hbWVkTm9kZU1h
cD4gbV9hdHRyaWJ1dGVNYXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5hbWVkTm9kZU1hcD4gbV9h
dHRyaWJ1dGVNYXA7CiAKICAgICBSZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZvcmVQc2V1ZG9F
bGVtZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRvRWxlbWVudDsK
IAotICAgIGV4cGxpY2l0IEVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50Kik7CiAgICAgdm9p
ZCByZWxlYXNlUHNldWRvRWxlbWVudChQc2V1ZG9FbGVtZW50Kik7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXgg
MTJlMGI0NDFmMGU0ZjdlYzBkMmRmYzJkN2U0YzE2MDA3MzFhZDY4ZS4uNWU3YWI1MzE1NTlmYjY4
YTAzNjkwNDMzOTQ5Nzg5MTcyMzA3OTUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzYsMTEgKzM2LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24+IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmNyZWF0ZShQYXNzUmVmUHRyPE11
dGF0aW9uT2JzZXJ2ZXI+IG9ic2VydmVyLCBOb2RlKiByZWdpc3RyYXRpb25Ob2RlLCBNdXRhdGlv
bk9ic2VydmVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGF0
dHJpYnV0ZUZpbHRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24ob2JzZXJ2ZXIsIHJlZ2lzdHJhdGlvbk5vZGUsIG9wdGlvbnMsIGF0dHJp
YnV0ZUZpbHRlcikpOwotfQotCiBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpNdXRhdGlv
bk9ic2VydmVyUmVnaXN0cmF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4gb2JzZXJ2
ZXIsIE5vZGUqIHJlZ2lzdHJhdGlvbk5vZGUsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlv
bnMsIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKQogICAgIDog
bV9vYnNlcnZlcihvYnNlcnZlcikKICAgICAsIG1fcmVnaXN0cmF0aW9uTm9kZShyZWdpc3RyYXRp
b25Ob2RlKQpAQCAtNzIsNyArNjcsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b246Om9ic2VydmVkU3VidHJlZU5vZGVXaWxsRGV0YWNoKE5vZGUqIG5vZGUpCiAgICAgbV9vYnNl
cnZlci0+c2V0SGFzVHJhbnNpZW50UmVnaXN0cmF0aW9uKCk7CiAKICAgICBpZiAoIW1fdHJhbnNp
ZW50UmVnaXN0cmF0aW9uTm9kZXMpIHsKLSAgICAgICAgbV90cmFuc2llbnRSZWdpc3RyYXRpb25O
b2RlcyA9IGFkb3B0UHRyKG5ldyBOb2RlSGFzaFNldCk7CisgICAgICAgIG1fdHJhbnNpZW50UmVn
aXN0cmF0aW9uTm9kZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVIYXNoU2V0PigpOwogCiAgICAg
ICAgIEFTU0VSVCghbV9yZWdpc3RyYXRpb25Ob2RlS2VlcEFsaXZlKTsKICAgICAgICAgbV9yZWdp
c3RyYXRpb25Ob2RlS2VlcEFsaXZlID0gbV9yZWdpc3RyYXRpb25Ob2RlOyAvLyBCYWxhbmNlZCBp
biBjbGVhclRyYW5zaWVudFJlZ2lzdHJhdGlvbnMuCkBAIC04NywxMCArODIsMTAgQEAgdm9pZCBN
dXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjpjbGVhclRyYW5zaWVudFJlZ2lzdHJhdGlvbnMo
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yIChOb2RlSGFzaFNldDo6aXRlcmF0
b3IgaXRlciA9IG1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMtPmJlZ2luKCk7IGl0ZXIgIT0g
bV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcy0+ZW5kKCk7ICsraXRlcikKLSAgICAgICAgKCpp
dGVyKS0+dW5yZWdpc3RlclRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXIodGhpcyk7CisgICAgZm9y
IChhdXRvJiBpdGVyIDogKm1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpCisgICAgICAgIGl0
ZXItPnVucmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9ic2VydmVyKHRoaXMpOwogCi0gICAgbV90
cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rlcy5jbGVhcigpOworICAgIG1fdHJhbnNpZW50UmVnaXN0
cmF0aW9uTm9kZXMgPSBudWxscHRyOwogCiAgICAgQVNTRVJUKG1fcmVnaXN0cmF0aW9uTm9kZUtl
ZXBBbGl2ZSk7CiAgICAgbV9yZWdpc3RyYXRpb25Ob2RlS2VlcEFsaXZlID0gMDsgLy8gQmFsYW5j
ZWQgaW4gb2JzZXJ2ZVN1YnRyZWVOb2RlV2lsbERldGFjaC4KQEAgLTEyNiw4ICsxMjEsOCBAQCB2
b2lkIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmFkZFJlZ2lzdHJhdGlvbk5vZGVzVG9T
ZXQoSGFzaFNldDxOb2RlKj4mIG5vZAogICAgIG5vZGVzLmFkZChtX3JlZ2lzdHJhdGlvbk5vZGUp
OwogICAgIGlmICghbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2RlcykKICAgICAgICAgcmV0dXJu
OwotICAgIGZvciAoTm9kZUhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RyYW5zaWVu
dFJlZ2lzdHJhdGlvbk5vZGVzLT5iZWdpbigpOyBpdGVyICE9IG1fdHJhbnNpZW50UmVnaXN0cmF0
aW9uTm9kZXMtPmVuZCgpOyArK2l0ZXIpCi0gICAgICAgIG5vZGVzLmFkZChpdGVyLT5nZXQoKSk7
CisgICAgZm9yIChhdXRvJiBpdGVyIDogKm1fdHJhbnNpZW50UmVnaXN0cmF0aW9uTm9kZXMpCisg
ICAgICAgIG5vZGVzLmFkZChpdGVyLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3Ry
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
LmgKaW5kZXggNWFmNmMzNTdlYThhNGI1OTVmYjYzMDlkZjk5ZWI4MWQ3ZWYzOWUxNC4uZDU5MDlj
YzQzMjQ1ZDQ4ODkxZDk1NzMyNmYyMzRiYjk1MWUyODEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjZGVmaW5lIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb25faAogCiAjaW5jbHVkZSAiTXV0
YXRpb25PYnNlcnZlci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KQEAgLTQyLDcgKzQzLDcgQEAgY2xhc3MgUXVhbGlmaWVk
TmFtZTsKIAogY2xhc3MgTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4gY3JlYXRl
KFBhc3NSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4sIE5vZGUqLCBNdXRhdGlvbk9ic2VydmVyT3B0
aW9ucywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpOworICAg
IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24oUGFzc1JlZlB0cjxNdXRhdGlvbk9ic2VydmVy
PiwgTm9kZSosIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zLCBjb25zdCBIYXNoU2V0PEF0b21pY1N0
cmluZz4mIGF0dHJpYnV0ZUZpbHRlcik7CiAgICAgfk11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRp
b24oKTsKIAogICAgIHZvaWQgcmVzZXRPYnNlcnZhdGlvbihNdXRhdGlvbk9ic2VydmVyT3B0aW9u
cywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpOwpAQCAtNjEs
MTMgKzYyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbk5vZGVzVG9TZXQo
SGFzaFNldDxOb2RlKj4mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uKFBhc3NSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4sIE5vZGUqLCBNdXRhdGlv
bk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBhdHRyaWJ1dGVG
aWx0ZXIpOwotCiAgICAgUmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+IG1fb2JzZXJ2ZXI7CiAgICAg
Tm9kZSogbV9yZWdpc3RyYXRpb25Ob2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX3JlZ2lzdHJhdGlv
bk5vZGVLZWVwQWxpdmU7CiAgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxOb2RlPj4gTm9kZUhh
c2hTZXQ7Ci0gICAgT3duUHRyPE5vZGVIYXNoU2V0PiBtX3RyYW5zaWVudFJlZ2lzdHJhdGlvbk5v
ZGVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlSGFzaFNldD4gbV90cmFuc2llbnRSZWdpc3Ry
YXRpb25Ob2RlczsKIAogICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG1fb3B0aW9uczsKICAg
ICBIYXNoU2V0PEF0b21pY1N0cmluZz4gbV9hdHRyaWJ1dGVGaWx0ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWROb2RlTWFwLmgKaW5kZXggZmM4YmZiZThiYjU2N2Q3YjA0OGZjOWM5Mzc0YzA1MDE3MTE5Yzhk
YS4uNzM5ZDdkMmFlMDI1ZDE1MDgwMzgwMzFhZTM5MzZkN2ZjN2MzYjdiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9OYW1lZE5vZGVNYXAuaApAQCAtMjYsNyArMjYsNiBAQAogI2RlZmluZSBOYW1lZE5vZGVNYXBf
aAogCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgogCkBAIC00MSw5ICs0MCwxMCBAQCBjbGFzcyBOYW1lZE5vZGVNYXAgOiBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBmcmllbmQgY2xhc3MgRWxlbWVudDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxO
YW1lZE5vZGVNYXA+IGNyZWF0ZShFbGVtZW50JiBlbGVtZW50KQorICAgIGV4cGxpY2l0IE5hbWVk
Tm9kZU1hcChFbGVtZW50JiBlbGVtZW50KQorICAgICAgICA6IG1fZWxlbWVudChlbGVtZW50KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOYW1lZE5vZGVNYXAoZWxlbWVudCkp
OworICAgICAgICAvLyBPbmx5IHN1cHBvcnRzIE5hbWVkTm9kZU1hcHMgd2l0aCBFbGVtZW50IGFz
c29jaWF0ZWQsIERvY3VtZW50VHlwZS5lbnRpdGllcyBhbmQgRG9jdW1lbnRUeXBlLm5vdGF0aW9u
cyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCiAgICAgfQogCiAgICAgdm9pZCByZWYoKTsKQEAgLTY3
LDEyICs2Nyw2IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gJm1fZWxlbWVudDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE5hbWVkTm9kZU1hcChF
bGVtZW50JiBlbGVtZW50KQotICAgICAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgIHsKLSAg
ICAgICAgLy8gT25seSBzdXBwb3J0cyBOYW1lZE5vZGVNYXBzIHdpdGggRWxlbWVudCBhc3NvY2lh
dGVkLCBEb2N1bWVudFR5cGUuZW50aXRpZXMgYW5kIERvY3VtZW50VHlwZS5ub3RhdGlvbnMgYXJl
IG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgIH0KLQogICAgIEVsZW1lbnQmIG1fZWxlbWVudDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiYzRiZjFmMTc0MmE4OThmMGVmMTg3NzE5ZmQwNTJkODU5
NTI5ZGZiLi4yOWQ4MDAzOWMyN2Q2NmU3ZmFhNDFiMDk1MmRjMTFkNTJlZTExZGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCkBAIC0zMzksOSArMzM5LDkgQEAgTm9kZVJhcmVEYXRhJiBOb2RlOjplbnN1cmVS
YXJlRGF0YSgpCiAKICAgICBOb2RlUmFyZURhdGEqIGRhdGE7CiAgICAgaWYgKGlzRWxlbWVudE5v
ZGUoKSkKLSAgICAgICAgZGF0YSA9IEVsZW1lbnRSYXJlRGF0YTo6Y3JlYXRlKHRvUmVuZGVyRWxl
bWVudChtX2RhdGEubV9yZW5kZXJlcikpLmxlYWtQdHIoKTsKKyAgICAgICAgZGF0YSA9IG5ldyBF
bGVtZW50UmFyZURhdGEodG9SZW5kZXJFbGVtZW50KG1fZGF0YS5tX3JlbmRlcmVyKSk7CiAgICAg
ZWxzZQotICAgICAgICBkYXRhID0gTm9kZVJhcmVEYXRhOjpjcmVhdGUobV9kYXRhLm1fcmVuZGVy
ZXIpLmxlYWtQdHIoKTsKKyAgICAgICAgZGF0YSA9IG5ldyBOb2RlUmFyZURhdGEobV9kYXRhLm1f
cmVuZGVyZXIpOwogICAgIEFTU0VSVChkYXRhKTsKIAogICAgIG1fZGF0YS5tX3JhcmVEYXRhID0g
ZGF0YTsKQEAgLTE3NjYsNyArMTc2Niw3IEBAIHZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1l
bnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFZl
Y3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+KiByZWdpc3RyeSA9IG11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7CisgICAgaWYgKFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+KiByZWdpc3RyeSA9IG11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyeSgpKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0
cnktPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkZE11dGF0aW9uT2Jz
ZXJ2ZXJUeXBlcyhyZWdpc3RyeS0+YXQoaSktPm11dGF0aW9uVHlwZXMoKSk7CiAgICAgICAgIH0K
QEAgLTE4NjMsNyArMTg2Myw3IEBAIGJvb2wgTm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlzCiAgICAgcmV0dXJu
IHRyeVJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxOb2RlKiwgT3duUHRyPEV2ZW50VGFyZ2V0RGF0
YT4+IEV2ZW50VGFyZ2V0RGF0YU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxOb2RlKiwgc3RkOjp1bmlx
dWVfcHRyPEV2ZW50VGFyZ2V0RGF0YT4+IEV2ZW50VGFyZ2V0RGF0YU1hcDsKIAogc3RhdGljIEV2
ZW50VGFyZ2V0RGF0YU1hcCYgZXZlbnRUYXJnZXREYXRhTWFwKCkKIHsKQEAgLTE4ODIsNyArMTg4
Miw3IEBAIEV2ZW50VGFyZ2V0RGF0YSYgTm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKICAg
ICAgICAgcmV0dXJuICpldmVudFRhcmdldERhdGFNYXAoKS5nZXQodGhpcyk7CiAgICAgc2V0SGFz
RXZlbnRUYXJnZXREYXRhKHRydWUpOwogICAgIEV2ZW50VGFyZ2V0RGF0YSogZGF0YSA9IG5ldyBF
dmVudFRhcmdldERhdGE7Ci0gICAgZXZlbnRUYXJnZXREYXRhTWFwKCkuc2V0KHRoaXMsIGFkb3B0
UHRyKGRhdGEpKTsKKyAgICBldmVudFRhcmdldERhdGFNYXAoKS5zZXQodGhpcywgc3RkOjp1bmlx
dWVfcHRyPEV2ZW50VGFyZ2V0RGF0YT4oZGF0YSkpOwogICAgIHJldHVybiAqZGF0YTsKIH0KIApA
QCAtMTg5MSw3ICsxODkxLDcgQEAgdm9pZCBOb2RlOjpjbGVhckV2ZW50VGFyZ2V0RGF0YSgpCiAg
ICAgZXZlbnRUYXJnZXREYXRhTWFwKCkucmVtb3ZlKHRoaXMpOwogfQogCi1WZWN0b3I8T3duUHRy
PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogTm9kZTo6bXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJ5KCkKK1ZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbj4+KiBOb2RlOjptdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKQogewogICAgIGlmICghaGFz
UmFyZURhdGEoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTQxLDcgKzE5NDEsNyBAQCB2b2lk
IE5vZGU6OmdldFJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVyc09mVHlwZShIYXNoTWFwPE11dGF0
aW9uT2JzZXJ2ZXIqLCBNdXRhdAogdm9pZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIo
TXV0YXRpb25PYnNlcnZlciogb2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG9wdGlv
bnMsIGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgYXR0cmlidXRlRmlsdGVyKQogewogICAg
IE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbiA9IDA7Ci0gICAgVmVj
dG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPj4mIHJlZ2lzdHJ5ID0gZW5z
dXJlUmFyZURhdGEoKS5lbnN1cmVNdXRhdGlvbk9ic2VydmVyRGF0YSgpLnJlZ2lzdHJ5OworICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+JiBy
ZWdpc3RyeSA9IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKS5y
ZWdpc3RyeTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZ2lzdHJ5LnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGlmIChyZWdpc3RyeVtpXS0+b2JzZXJ2ZXIoKSA9PSBvYnNlcnZlcikgewog
ICAgICAgICAgICAgcmVnaXN0cmF0aW9uID0gcmVnaXN0cnlbaV0uZ2V0KCk7CkBAIC0xOTUwLDcg
KzE5NTAsNyBAQCB2b2lkIE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9i
c2VydmVyKiBvYnNlcnZlciwgTXV0YXRpb25PYnNlcnZlcgogICAgIH0KIAogICAgIGlmICghcmVn
aXN0cmF0aW9uKSB7Ci0gICAgICAgIHJlZ2lzdHJ5LmFwcGVuZChNdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uOjpjcmVhdGUob2JzZXJ2ZXIsIHRoaXMsIG9wdGlvbnMsIGF0dHJpYnV0ZUZpbHRl
cikpOworICAgICAgICByZWdpc3RyeS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uPihvYnNlcnZlciwgdGhpcywgb3B0aW9ucywgYXR0cmlidXRlRmls
dGVyKSk7CiAgICAgICAgIHJlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJ5Lmxhc3QoKS5nZXQoKTsKICAg
ICB9CiAKQEAgLTE5NTksMTcgKzE5NTksMjIgQEAgdm9pZCBOb2RlOjpyZWdpc3Rlck11dGF0aW9u
T2JzZXJ2ZXIoTXV0YXRpb25PYnNlcnZlciogb2JzZXJ2ZXIsIE11dGF0aW9uT2JzZXJ2ZXIKIAog
dm9pZCBOb2RlOjp1bnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uKiByZWdpc3RyYXRpb24pCiB7Ci0gICAgVmVjdG9yPE93blB0cjxNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uPj4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5
KCk7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uPj4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAgICAgQVNTRVJU
KHJlZ2lzdHJ5KTsKICAgICBpZiAoIXJlZ2lzdHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBz
aXplX3QgaW5kZXggPSByZWdpc3RyeS0+ZmluZChyZWdpc3RyYXRpb24pOwotICAgIEFTU0VSVChp
bmRleCAhPSBub3RGb3VuZCk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBy
ZXR1cm47CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3Jl
ZFJlZ2lzdHJhdGlvbiA6ICpyZWdpc3RyeSkgeworICAgICAgICBpZiAoc3RvcmVkUmVnaXN0cmF0
aW9uLmdldCgpID09IHJlZ2lzdHJhdGlvbikgeworICAgICAgICAgICAgcmVnaXN0cnktPnJlbW92
ZShpbmRleCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIHJlZ2lzdHJ5
LT5yZW1vdmUoaW5kZXgpOworICAgICAgICBpbmRleCsrOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCiB2b2lkIE5vZGU6OnJlZ2lzdGVyVHJhbnNpZW50TXV0YXRpb25P
YnNlcnZlcihNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24pCkBAIC0x
OTk0LDcgKzE5OTksNyBAQCB2b2lkIE5vZGU6Om5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdp
bGxEZXRhY2goKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJl
bnROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYg
KFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+KiByZWdpc3RyeSA9
IG5vZGUtPm11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7CisgICAgICAgIGlmIChWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiogcmVnaXN0cnkg
PSBub2RlLT5tdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgewogICAgICAgICAgICAgY29uc3Qg
c2l6ZV90IHNpemUgPSByZWdpc3RyeS0+c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICAgICAgcmVnaXN0cnktPmF0KGkpLT5v
YnNlcnZlZFN1YnRyZWVOb2RlV2lsbERldGFjaCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDlkZjhl
ODM1YjYzNjFiNDAxODBiYTljZmM5Zjk4MmQzYWFkZjlhY2EuLmY0MDQ0NDcyMWExZDVhMDg4NDc2
ZTc4MjFlNzEzMjZlNjVhMDNmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIlNpbXVsYXRlZENsaWNrT3B0aW9ucy5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgog
I2luY2x1ZGUgIlRyZWVTaGFyZWQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTY3MSw3ICs2NzIsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCi0gICAgVmVjdG9yPE93blB0cjxNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uPj4qIG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+KiBtdXRh
dGlvbk9ic2VydmVyUmVnaXN0cnkoKTsKICAgICBIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24qPiogdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAKICAgICBt
dXRhYmxlIHVpbnQzMl90IG1fbm9kZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmlu
ZGV4IGE0ODgwZjg0MTNmNjg1NDAxZjA5MWM1MjFlYTM3YzhkMGVlMTA0Y2EuLmNkMTc0MmZiZjlh
ZGIzNjJlNzRiYzRmOGFiMTJmYzYzZmFlZTlmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKQEAgLTM2LDkgKzM2LDggQEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAi
VGV4dFRyYWNrLmgiCiAjZW5kaWYKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTUxLDYgKzUwLDExIEBAIGNsYXNzIFRyZWVTY29wZTsK
IGNsYXNzIE5vZGVMaXN0c05vZGVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2Rl
TGlzdHNOb2RlRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIE5v
ZGVMaXN0c05vZGVEYXRhKCkKKyAgICAgICAgOiBtX2NoaWxkTm9kZUxpc3QobnVsbHB0cikKKyAg
ICAgICAgLCBtX2VtcHR5Q2hpbGROb2RlTGlzdChudWxscHRyKQorICAgIHsgfQorCiAgICAgdm9p
ZCBjbGVhckNoaWxkTm9kZUxpc3RDYWNoZSgpCiAgICAgewogICAgICAgICBpZiAobV9jaGlsZE5v
ZGVMaXN0KQpAQCAtMjA3LDExICsyMTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2FjaGVkQ29s
bGVjdGlvbnMucmVtb3ZlKG5hbWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uLT50eXBlKCksIG5h
bWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4g
Y3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTm9kZUxpc3RzTm9k
ZURhdGEpOwotICAgIH0KLQogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlcyhjb25zdCBRdWFsaWZp
ZWROYW1lKiBhdHRyTmFtZSA9IDApOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewpA
QCAtMjU2LDExICsyNTUsNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIE5vZGVM
aXN0c05vZGVEYXRhKCkKLSAgICAgICAgOiBtX2NoaWxkTm9kZUxpc3QobnVsbHB0cikKLSAgICAg
ICAgLCBtX2VtcHR5Q2hpbGROb2RlTGlzdChudWxscHRyKQotICAgIHsgfQotCiAgICAgc3RkOjpw
YWlyPHVuc2lnbmVkIGNoYXIsIEF0b21pY1N0cmluZz4gbmFtZWRDb2xsZWN0aW9uS2V5KENvbGxl
Y3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPih0eXBlLCBuYW1l
KTsKQEAgLTI4NiwyNiArMjgwLDI2IEBAIHByaXZhdGU6CiBjbGFzcyBOb2RlTXV0YXRpb25PYnNl
cnZlckRhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVNdXRhdGlvbk9ic2VydmVy
RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFZlY3RvcjxPd25Q
dHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+IHJlZ2lzdHJ5OworICAgIE5vZGVNdXRh
dGlvbk9ic2VydmVyRGF0YSgpID0gZGVmYXVsdDsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+PiByZWdpc3RyeTsKICAgICBIYXNoU2V0PE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qPiB0cmFuc2llbnRSZWdpc3RyeTsKLQotICAgIHN0
YXRpYyBQYXNzT3duUHRyPE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRQdHIobmV3IE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YSk7IH0KLQotcHJpdmF0ZToK
LSAgICBOb2RlTXV0YXRpb25PYnNlcnZlckRhdGEoKSB7IH0KIH07CiAKIGNsYXNzIE5vZGVSYXJl
RGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShOb2RlUmFyZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxOb2RlUmFyZURhdGE+IGNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgTm9kZVJhcmVEYXRhKHJlbmRlcmVyKSk7IH0KKyAg
ICBOb2RlUmFyZURhdGEoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICAgICAgOiBOb2RlUmFy
ZURhdGFCYXNlKHJlbmRlcmVyKQorICAgICAgICAsIG1fY29ubmVjdGVkRnJhbWVDb3VudCgwKQor
ICAgIHsgfQogCi0gICAgdm9pZCBjbGVhck5vZGVMaXN0cygpIHsgbV9ub2RlTGlzdHMuY2xlYXIo
KTsgfQorCisgICAgdm9pZCBjbGVhck5vZGVMaXN0cygpIHsgbV9ub2RlTGlzdHMgPSBudWxscHRy
OyB9CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0dXJuIG1f
bm9kZUxpc3RzLmdldCgpOyB9CiAgICAgTm9kZUxpc3RzTm9kZURhdGEmIGVuc3VyZU5vZGVMaXN0
cygpCiAgICAgewogICAgICAgICBpZiAoIW1fbm9kZUxpc3RzKQotICAgICAgICAgICAgbV9ub2Rl
TGlzdHMgPSBOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX25vZGVM
aXN0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Tm9kZUxpc3RzTm9kZURhdGE+KCk7CiAgICAgICAgIHJl
dHVybiAqbV9ub2RlTGlzdHM7CiAgICAgfQogCkBAIC0zMTMsNyArMzA3LDcgQEAgcHVibGljOgog
ICAgIE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YSYgZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX211dGF0aW9uT2JzZXJ2ZXJEYXRhKQotICAgICAgICAg
ICAgbV9tdXRhdGlvbk9ic2VydmVyRGF0YSA9IE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YTo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICBtX211dGF0aW9uT2JzZXJ2ZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+KCk7CiAgICAgICAgIHJldHVybiAqbV9tdXRh
dGlvbk9ic2VydmVyRGF0YTsKICAgICB9CiAKQEAgLTMyOSwxNyArMzIzLDExIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9jb25uZWN0ZWRGcmFtZUNvdW50IC09IGFtb3VudDsKICAgICB9CiAKLXByb3Rl
Y3RlZDoKLSAgICBOb2RlUmFyZURhdGEoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKLSAgICAgICAg
OiBOb2RlUmFyZURhdGFCYXNlKHJlbmRlcmVyKQotICAgICAgICAsIG1fY29ubmVjdGVkRnJhbWVD
b3VudCgwKQotICAgIHsgfQotCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY29ubmVjdGVkRnJh
bWVDb3VudCA6IDEwOyAvLyBNdXN0IGZpdCBQYWdlOjptYXhOdW1iZXJPZkZyYW1lcy4KIAotICAg
IE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7Ci0gICAgT3duUHRyPE5vZGVN
dXRhdGlvbk9ic2VydmVyRGF0YT4gbV9tdXRhdGlvbk9ic2VydmVyRGF0YTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxpc3RzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxOb2RlTXV0YXRpb25PYnNlcnZlckRhdGE+IG1fbXV0YXRpb25PYnNlcnZlckRhdGE7CiB9
OwogCiBpbmxpbmUgYm9vbCBOb2RlTGlzdHNOb2RlRGF0YTo6ZGVsZXRlVGhpc0FuZFVwZGF0ZU5v
ZGVSYXJlRGF0YUlmQWJvdXRUb1JlbW92ZUxhc3RMaXN0KE5vZGUmIG93bmVyTm9kZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCAzYjk0NzVkYzRmYzY2MzFhOGJjNTQzYzZi
ZTg1MmUwNTNiMzliOGEwLi41YWVmMGVhYzJhN2E3ODcxOWMwMmY2YTE2ZDFlNWJmZmM3MWM0OWIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiB2YWx1ZTsKIH07CiAKLXR5cGVkZWYg
SGFzaE1hcDx1bnNpZ25lZCwgT3duUHRyPFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlRW50cnk+
LCBBbHJlYWR5SGFzaGVkPiBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZTsKK3R5cGVkZWYgSGFz
aE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hl
RW50cnk+LCBBbHJlYWR5SGFzaGVkPiBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZTsKICAgICAK
IHN0YXRpYyBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVL
ZXkmIGEsIGNvbnN0IFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlS2V5JiBiKQogewpAQCAtMzQ2
LDcgKzM0Niw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6cmVidWlsZFByZXNlbnRhdGlvbkF0dHJp
YnV0ZVN0eWxlKCkKICAgICBpZiAoIWNhY2hlSGFzaCB8fCBjYWNoZUl0ZXJhdG9yLT52YWx1ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgT3duUHRyPFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hl
RW50cnk+IG5ld0VudHJ5ID0gYWRvcHRQdHIobmV3IFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hl
RW50cnkpOworICAgIGF1dG8gbmV3RW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZXNlbnRhdGlv
bkF0dHJpYnV0ZUNhY2hlRW50cnk+KCk7CiAgICAgbmV3RW50cnktPmtleSA9IGNhY2hlS2V5Owog
ICAgIG5ld0VudHJ5LT52YWx1ZSA9IHN0eWxlLnJlbGVhc2UoKTsKIApAQCAtMzU0LDkgKzM1NCw5
IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6cmVidWlsZFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KCkKICAgICBpZiAocHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKS5zaXplKCkgPiBwcmVzZW50
YXRpb25BdHRyaWJ1dGVDYWNoZU1heGltdW1TaXplKSB7CiAgICAgICAgIC8vIFN0YXJ0IGJ1aWxk
aW5nIGZyb20gc2NyYXRjaCBpZiB0aGUgY2FjaGUgZXZlciBnZXRzIGJpZy4KICAgICAgICAgcHJl
c2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKS5jbGVhcigpOwotICAgICAgICBwcmVzZW50YXRpb25B
dHRyaWJ1dGVDYWNoZSgpLnNldChjYWNoZUhhc2gsIG5ld0VudHJ5LnJlbGVhc2UoKSk7CisgICAg
ICAgIHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuc2V0KGNhY2hlSGFzaCwgc3RkOjptb3Zl
KG5ld0VudHJ5KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNhY2hlSXRlcmF0b3ItPnZhbHVlID0g
bmV3RW50cnkucmVsZWFzZSgpOworICAgICAgICBjYWNoZUl0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bW92ZShuZXdFbnRyeSk7CiB9CiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIENTU1ZhbHVlSUQgaWRlbnRpZmllcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>