<?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>129672</bug_id>
          
          <creation_ts>2014-03-04 01:43:13 -0800</creation_ts>
          <short_desc>Move GTK WebKit2 code to std::unique_ptr</short_desc>
          <delta_ts>2014-03-16 12:47:43 -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>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986739</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:43:13 -0800</bug_when>
    <thetext>Move GTK WK2 code to std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986740</commentid>
    <comment_count>1</comment_count>
      <attachid>225760</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-04 01:44:01 -0800</bug_when>
    <thetext>Created attachment 225760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986742</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-04 01:46:12 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986752</commentid>
    <comment_count>3</comment_count>
      <attachid>225760</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-04 02:20:17 -0800</bug_when>
    <thetext>Comment on attachment 225760
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTextChecker.h:27
&gt; +#include &lt;wtf/OwnPtr.h&gt;

Why do we need to keep OwnPtr here?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTextChecker.h:36
&gt; -    static PassOwnPtr&lt;WebKitTextChecker&gt; create() { return adoptPtr(new WebKitTextChecker()); }
&gt; +    WebKitTextChecker();

Why don&apos;t we keep the create method, but calling make_unique instead of adoptPtr? This way we can keep the constructor private to ensure this is not misused.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTextChecker.h:52
&gt;      OwnPtr&lt;WebCore::TextCheckerEnchant&gt; m_textChecker;

This is because WebCore still returns a PassOwnPtr for this?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:410
&gt; -    priv-&gt;pageClient = PageClientImpl::create(viewWidget);
&gt; +    priv-&gt;pageClient = std::make_unique&lt;PageClientImpl&gt;(viewWidget);

Same here, isn&apos;t it possible to keep the create method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990853</commentid>
    <comment_count>4</comment_count>
      <attachid>225760</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-15 06:09:24 -0700</bug_when>
    <thetext>Comment on attachment 225760
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTextChecker.h:27
&gt;&gt; +#include &lt;wtf/OwnPtr.h&gt;
&gt; 
&gt; Why do we need to keep OwnPtr here?

It&apos;s included for the TextCheckerEnchant member.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTextChecker.h:36
&gt;&gt; +    WebKitTextChecker();
&gt; 
&gt; Why don&apos;t we keep the create method, but calling make_unique instead of adoptPtr? This way we can keep the constructor private to ensure this is not misused.

That&apos;s possible and makes sense, but generally we just make the constructor public and use std::make_unique.

There&apos;s a nice approach to making it possible to use std::make_unique with a class that has a private constructor by declaring std::make_unique a friend of that class, but I haven&apos;t yet gotten this working on MSVC.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTextChecker.h:52
&gt;&gt;      OwnPtr&lt;WebCore::TextCheckerEnchant&gt; m_textChecker;
&gt; 
&gt; This is because WebCore still returns a PassOwnPtr for this?

Yes.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:410
&gt;&gt; +    priv-&gt;pageClient = std::make_unique&lt;PageClientImpl&gt;(viewWidget);
&gt; 
&gt; Same here, isn&apos;t it possible to keep the create method?

Ditto, it&apos;s possible but not usually done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990854</commentid>
    <comment_count>5</comment_count>
      <attachid>225760</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-15 07:02:08 -0700</bug_when>
    <thetext>Comment on attachment 225760
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitTextChecker.h:36
&gt;&gt;&gt; +    WebKitTextChecker();
&gt;&gt; 
&gt;&gt; Why don&apos;t we keep the create method, but calling make_unique instead of adoptPtr? This way we can keep the constructor private to ensure this is not misused.
&gt; 
&gt; That&apos;s possible and makes sense, but generally we just make the constructor public and use std::make_unique.
&gt; 
&gt; There&apos;s a nice approach to making it possible to use std::make_unique with a class that has a private constructor by declaring std::make_unique a friend of that class, but I haven&apos;t yet gotten this working on MSVC.

To correct myself, std::make_unique (when not declared as a friend of the class in question) still requires a public constructor. The proper alternative is returning std::unique_ptr&lt;T&gt;(new T) in the create() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990864</commentid>
    <comment_count>6</comment_count>
      <attachid>226820</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-15 07:53:47 -0700</bug_when>
    <thetext>Created attachment 226820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991013</commentid>
    <comment_count>7</comment_count>
      <attachid>226820</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-16 12:47:30 -0700</bug_when>
    <thetext>Comment on attachment 226820
Patch

Clearing flags on attachment: 226820

Committed r165707: &lt;http://trac.webkit.org/changeset/165707&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991014</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-03-16 12:47:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225760</attachid>
            <date>2014-03-04 01:44:01 -0800</date>
            <delta_ts>2014-03-15 07:53:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129672-20140304014359.patch</filename>
            <type>text/plain</type>
            <size>21646</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGIzYWQ4YWUwMWE3NzQy
YjM2NDkxNDJhYWNkZWU5YjE3Yjg0N2E2ZS4uM2JhODVlMDkwZDQwZWJhM2Y3NTE0MjMzY2M1MDk3
MmRjZjYzMDI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE0LTAzLTA0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEdUSyBXZWJL
aXQyIGNvZGUgdG8gc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk2NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZXBhY2UgdXNlcyBvZiBPd25QdHIgYW5kIFBhc3NPd25QdHIg
aW4gR1RLLXNwZWNpZmljIFdlYktpdDIgY29kZSB3aXRoIHN0ZDo6dW5pcXVlX3B0ci4KKworICAg
ICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBTaGFyZWQvRG93
bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgICh3ZWJraXRDb250ZXh0TWVudUl0
ZW1DcmVhdGUpOgorICAgICAgICAod2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlRm9yR3RrSXRl
bSk6CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAgICAgICAo
d2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVs
KToKKyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KToK
KyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUZXh0Q2hlY2tlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAoY3JlYXRlRGVm
YXVsdFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3
ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUGVuZGluZ1JlYWRBc3luY0NvbXBsZXRlKToKKyAg
ICAgICAgKHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMpOgorICAgICAgICAq
IFdlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
c291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaDoKKwogMjAxNC0wMy0wNCAgSHlvd29uIEtpbSAg
PGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgTW92ZSBFdmFzR0xDb250ZXh0IGFu
ZCBFdmFzR0xTdXJmYWNlIGZpbGVzIGludG8gdGhlIGVmbCBjb21tb24gZGlyZWN0b3J5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IDNmMzgwZjFkMmVj
Y2MzZmM2YjRlOWNhNWFjN2M3ZGFkOTJhZmU2MTUuLjhjNjlkNDA4YzdjZTYzYjg0NGNmMjVhMGE2
YjZjZjJkOWFlZmZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25s
b2FkLmgKQEAgLTQwLDYgKzQwLDcgQEAgT0JKQ19DTEFTUyBXS0Rvd25sb2FkQXNEZWxlZ2F0ZTsK
ICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
PgorI2luY2x1ZGUgPG1lbW9yeT4KICNlbmRpZgogCiAjaWYgVVNFKENGTkVUV09SSykKQEAgLTEz
MSw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb3dubG9hZEF1dGhlbnRpY2F0aW9u
Q2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShFRkwpCi0gICAgT3duUHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50PiBtX2Rvd25sb2FkQ2xpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZUNsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBSZWZQdHI8V2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU+IG1fcmVzb3VyY2VIYW5kbGU7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCmlu
ZGV4IDQwN2U0NDc5NmEzZGZjZDBlNzE5YTA5MDZjZTk2OTBmOTE4ZTg3YTQuLmExZjE5YmZkZTVm
YjY1ZDgyMmM2Mzk5YjFiYzQwNmU0NzA5NWNmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCkBAIC0yMTIsNyArMjEy
LDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnQoKQogewogICAgIEFTU0VSVCghbV9kb3dubG9hZENs
aWVudCk7CiAgICAgQVNTRVJUKCFtX3Jlc291cmNlSGFuZGxlKTsKLSAgICBtX2Rvd25sb2FkQ2xp
ZW50ID0gYWRvcHRQdHIobmV3IERvd25sb2FkQ2xpZW50KHRoaXMpKTsKKyAgICBtX2Rvd25sb2Fk
Q2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZENsaWVudD4odGhpcyk7CiAgICAgbV9y
ZXNvdXJjZUhhbmRsZSA9IFJlc291cmNlSGFuZGxlOjpjcmVhdGUoMCwgbV9yZXF1ZXN0LCBtX2Rv
d25sb2FkQ2xpZW50LmdldCgpLCBmYWxzZSwgZmFsc2UpOwogICAgIGRpZFN0YXJ0KCk7CiB9CkBA
IC0yMjEsNyArMjIxLDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNl
SGFuZGxlKiByZXNvdXJjZUhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXMKIHsKICAgICBBU1NFUlQo
IW1fZG93bmxvYWRDbGllbnQpOwogICAgIEFTU0VSVCghbV9yZXNvdXJjZUhhbmRsZSk7Ci0gICAg
bV9kb3dubG9hZENsaWVudCA9IGFkb3B0UHRyKG5ldyBEb3dubG9hZENsaWVudCh0aGlzKSk7Cisg
ICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHRo
aXMpOwogICAgIHJlc291cmNlSGFuZGxlLT5zZXRDbGllbnQobV9kb3dubG9hZENsaWVudC5nZXQo
KSk7CiAgICAgbV9yZXNvdXJjZUhhbmRsZSA9IHJlc291cmNlSGFuZGxlOwogICAgIGRpZFN0YXJ0
KCk7CkBAIC0yNDcsNyArMjQ3LDggQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRl
KCkKICAgICAgICAgbV9yZXNvdXJjZUhhbmRsZS0+Y2FuY2VsKCk7CiAgICAgICAgIG1fcmVzb3Vy
Y2VIYW5kbGUgPSAwOwogICAgIH0KLSAgICBtX2Rvd25sb2FkQ2xpZW50LnJlbGVhc2UoKTsKKwor
ICAgIG1fZG93bmxvYWRDbGllbnQgPSBudWxscHRyOwogfQogCiB2b2lkIERvd25sb2FkOjpkaWRE
ZWNpZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIC8qZGVzdGluYXRpb24qLywgYm9vbCAvKmFs
bG93T3ZlcndyaXRlKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggYTAwOGQ5YTVjZTgxZDc5ZjY3MmQ3ZWY3OTc0OTBl
MzFhMTJmMGQ5Mi4uZDFkZjNlZDA1ODdhOTA1MzhlMGQwZjIxODBkMjlhZWJlZjIwZTk3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtNTMsMTAgKzUzLDYgQEAgUGFnZUNsaWVudEltcGw6OlBhZ2VDbGllbnRJbXBsKEd0
a1dpZGdldCogdmlld1dpZGdldCkKIHsKIH0KIAotUGFnZUNsaWVudEltcGw6On5QYWdlQ2xpZW50
SW1wbCgpCi17Ci19Ci0KIHZvaWQgUGFnZUNsaWVudEltcGw6OmdldEVkaXRvckNvbW1hbmRzRm9y
S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb21tYW5kTGlzdCkKIHsK
ICAgICBBU1NFUlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDBlMWJjMzRjMGYy
MmI2NjExNmQ0ZjBlMjY2ZTQzN2M1M2NjYzVkODAuLjEzNGJiMmJjNDNkNjc5NmZmZjZlN2QyMzc4
NWNkYzdmMjliNDcxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaApAQCAtNDgsMTcgKzQ4LDExIEBAIGNsYXNzIFBhZ2VDbGllbnRJ
bXBsIDogcHVibGljIFBhZ2VDbGllbnQKICNlbmRpZgogewogcHVibGljOgotICAgIH5QYWdlQ2xp
ZW50SW1wbCgpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBjcmVhdGUo
R3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBQYWdlQ2xpZW50SW1wbCh2aWV3V2lkZ2V0KSk7Ci0gICAgfQorICAgIGV4cGxpY2l0IFBhZ2VD
bGllbnRJbXBsKEd0a1dpZGdldCopOwogCiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KCkgeyBy
ZXR1cm4gbV92aWV3V2lkZ2V0OyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZUNsaWVu
dEltcGwoR3RrV2lkZ2V0Kik7Ci0KICAgICAvLyBQYWdlQ2xpZW50CiAgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwCmluZGV4IGM1ZTQ1NTNh
YTNlYzM1ZDM2ZDA5ZDZhYzM4ZWNmOGUwMzNiOGFhNDcuLjVkMDU5YmNmNjdiNjc4MTFkM2RlZTQ4
Y2ExZjgxMGVlNTBhZThkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcApAQCAtMjksOCArMjksNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRleHRNZW51SXRlbS5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dV
bmlxdWVQdHIuaD4KIApAQCAtNTcsNyArNTYsNyBAQCBzdHJ1Y3QgX1dlYktpdENvbnRleHRNZW51
SXRlbVByaXZhdGUgewogICAgICAgICAgICAgd2Via2l0Q29udGV4dE1lbnVTZXRQYXJlbnRJdGVt
KHN1Yk1lbnUuZ2V0KCksIDApOwogICAgIH0KIAotICAgIE93blB0cjxDb250ZXh0TWVudUl0ZW0+
IG1lbnVJdGVtOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZXh0TWVudUl0ZW0+IG1lbnVJdGVt
OwogICAgIEdSZWZQdHI8V2ViS2l0Q29udGV4dE1lbnU+IHN1Yk1lbnU7CiB9OwogCkBAIC05NSw3
ICs5NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVtQ3Jl
YXRlKFdlYkNvbnRleHRNZW51SXRlbSogd2ViSXRlbSkKIHsKICAgICBXZWJLaXRDb250ZXh0TWVu
dUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBOVUxMKSk7CiAgICAgV2ViQ29udGV4dE1lbnVJdGVt
RGF0YSogaXRlbURhdGEgPSB3ZWJJdGVtLT5kYXRhKCk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0
ZW0gPSBXVEY6OmFkb3B0UHRyKG5ldyBDb250ZXh0TWVudUl0ZW0oaXRlbURhdGEtPnR5cGUoKSwg
aXRlbURhdGEtPmFjdGlvbigpLCBpdGVtRGF0YS0+dGl0bGUoKSwgaXRlbURhdGEtPmVuYWJsZWQo
KSwgaXRlbURhdGEtPmNoZWNrZWQoKSkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gc3Rk
OjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUl0ZW0+KGl0ZW1EYXRhLT50eXBlKCksIGl0ZW1EYXRh
LT5hY3Rpb24oKSwgaXRlbURhdGEtPnRpdGxlKCksIGl0ZW1EYXRhLT5lbmFibGVkKCksIGl0ZW1E
YXRhLT5jaGVja2VkKCkpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRh
PiYgc3ViTWVudSA9IGl0ZW1EYXRhLT5zdWJtZW51KCk7CiAgICAgaWYgKCFzdWJNZW51LnNpemUo
KSkKICAgICAgICAgcmV0dXJuIGl0ZW07CkBAIC0xMTIsNyArMTExLDcgQEAgV2ViS2l0Q29udGV4
dE1lbnVJdGVtKiB3ZWJraXRDb250ZXh0TWVudUl0ZW1DcmVhdGUoV2ViQ29udGV4dE1lbnVJdGVt
KiB3ZWJJdGVtKQogc3RhdGljIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1l
bnVJdGVtQ3JlYXRlRm9yR3RrSXRlbShHdGtNZW51SXRlbSogbWVudUl0ZW0pCiB7CiAgICAgV2Vi
S2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwotICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gV1RGOjphZG9wdFB0cihuZXcgQ29udGV4dE1lbnVJdGVtKG1lbnVJ
dGVtKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRl
eHRNZW51SXRlbT4obWVudUl0ZW0pOwogICAgIHdlYmtpdENvbnRleHRNZW51SXRlbVNldFN1Yk1l
bnVGcm9tR3RrTWVudShpdGVtLCBHVEtfTUVOVShndGtfbWVudV9pdGVtX2dldF9zdWJtZW51KG1l
bnVJdGVtKSkpOwogCiAgICAgcmV0dXJuIGl0ZW07CkBAIC0xNjUsNyArMTY0LDcgQEAgV2ViS2l0
Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KEd0a0FjdGlvbiog
YWN0aW9uKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJT04oYWN0aW9uKSwg
MCk7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9N
RU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBOVUxM
KSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBXVEY6OmFkb3B0UHRyKG5ldyBDb250ZXh0
TWVudUl0ZW0oR1RLX01FTlVfSVRFTShndGtfYWN0aW9uX2NyZWF0ZV9tZW51X2l0ZW0oYWN0aW9u
KSkpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udGV4
dE1lbnVJdGVtPihHVEtfTUVOVV9JVEVNKGd0a19hY3Rpb25fY3JlYXRlX21lbnVfaXRlbShhY3Rp
b24pKSk7CiAgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0tPnNldEFjdGlvbihDb250ZXh0TWVudUl0
ZW1CYXNlQXBwbGljYXRpb25UYWcpOwogCiAgICAgcmV0dXJuIGl0ZW07CkBAIC0xOTMsNyArMTky
LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3
X2Zyb21fc3RvY2tfYWN0aW9uKFdlYktpdENvbnQKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRl
bSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZ
UEVfQ09OVEVYVF9NRU5VX0lURU0sIE5VTEwpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5
cGUgPSB3ZWJraXRDb250ZXh0TWVudUFjdGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2Fi
bGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IFdU
Rjo6YWRvcHRQdHIobmV3IENvbnRleHRNZW51SXRlbSh0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFj
dGlvbkdldEFjdGlvblRhZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldExhYmVs
KGFjdGlvbikpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGV4dE1lbnVJdGVtPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRh
ZyhhY3Rpb24pLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldExhYmVsKGFjdGlvbikpOwogCiAg
ICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yMTUsNyArMjE0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fc3RvY2tfYWN0aW9uX3dpdGhf
bGFiZWwKIAogICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhU
X01FTlVfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQ09OVEVYVF9NRU5VX0lURU0sIE5V
TEwpKTsKICAgICBDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUgPSB3ZWJraXRDb250ZXh0TWVudUFj
dGlvbklzQ2hlY2thYmxlKGFjdGlvbikgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlw
ZTsKLSAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IFdURjo6YWRvcHRQdHIobmV3IENvbnRleHRN
ZW51SXRlbSh0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFjdGlvblRhZyhhY3Rpb24p
LCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSkpOworICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0g
c3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUl0ZW0+KHR5cGUsIHdlYmtpdENvbnRleHRNZW51
QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKTsKIAog
ICAgIHJldHVybiBpdGVtOwogfQpAQCAtMjM4LDcgKzIzNyw3IEBAIFdlYktpdENvbnRleHRNZW51
SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2No
YXIqIGxhCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBp
dGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9D
T05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gV1RG
OjphZG9wdFB0cihuZXcgQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0TWVudUl0
ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKSk7CisgICAgaXRl
bS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51SXRlbT4oU3Vi
bWVudVR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgU3RyaW5nOjpmcm9t
VVRGOChsYWJlbCkpOwogICAgIGl0ZW0tPnByaXYtPnN1Yk1lbnUgPSBzdWJtZW51OwogICAgIHdl
YmtpdENvbnRleHRNZW51U2V0UGFyZW50SXRlbShzdWJtZW51LCBpdGVtKTsKIApAQCAtMjU1LDcg
KzI1NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ld193aXRoX3N1Ym1lbnUoY29uc3QgZ2NoYXIqIGxhCiBXZWJLaXRDb250ZXh0TWVudUl0ZW0q
IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKHZvaWQpCiB7CiAgICAgV2Vi
S2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwotICAgIGl0ZW0t
PnByaXYtPm1lbnVJdGVtID0gV1RGOjphZG9wdFB0cihuZXcgQ29udGV4dE1lbnVJdGVtKFNlcGFy
YXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSkpOworICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUl0ZW0+KFNl
cGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CiAKICAg
ICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFRleHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRUZXh0Q2hlY2tlci5oCmluZGV4IDQ1NDI0YzU4NGI0MGVmOGQzNGJkZjc0NTgx
NmQ5NmVmMTNiNDQxMWEuLjY1YzFiNTgzZjlhMTljMmIwM2ZkNmVkMDc3MzJhMGE4YzMwMjJkOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFRleHRD
aGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VGV4
dENoZWNrZXIuaApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hl
Y2tlckVuY2hhbnQuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJLaXRUZXh0Q2hlY2tl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxXZWJLaXRUZXh0Q2hlY2tlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFdlYktpdFRleHRDaGVja2VyKCkpOyB9CisgICAgV2ViS2l0VGV4dENoZWNrZXIoKTsKICAg
ICB2aXJ0dWFsIH5XZWJLaXRUZXh0Q2hlY2tlcigpOwogCiAgICAgLy8gRm9yIGltcGxlbWVudGlu
ZyBUZXh0Q2hlY2tlckNsaWVudC4KQEAgLTQ5LDggKzQ5LDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3BlbGxDaGVja2luZ0xhbmd1YWdlcyhjb25zdCBjaGFyKiBjb25zdCogc3BlbGxDaGVja2lu
Z0xhbmd1YWdlcyk7CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0VGV4dENoZWNrZXIoKTsKLQogICAg
IE93blB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tlckVuY2hhbnQ+IG1fdGV4dENoZWNrZXI7CiAgICAg
R1JlZlB0cjxHUHRyQXJyYXk+IG1fc3BlbGxDaGVja2luZ0xhbmd1YWdlczsKICAgICBib29sIG1f
c3BlbGxDaGVja2luZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDYxMjNhZDEzMmI2MzU3OWI4MzFi
YjZlNTMzMzhhMjdhYzFkYTg2YzMuLmQwN2YwNDU4ZWNkZWRiMWIyZDE1Yjk3MGIyN2JlODllY2Rm
MTBlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYkNvbnRleHQuY3BwCkBAIC00Niw5ICs0Niw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xhbmd1YWdlLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC0xNDksNyAr
MTQ5LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSB7CiAgICAgUmVmUHRyPFdl
YktpdEJhdHRlcnlQcm92aWRlcj4gYmF0dGVyeVByb3ZpZGVyOwogI2VuZGlmCiAjaWYgRU5BQkxF
KFNQRUxMQ0hFQ0spCi0gICAgT3duUHRyPFdlYktpdFRleHRDaGVja2VyPiB0ZXh0Q2hlY2tlcjsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0VGV4dENoZWNrZXI+IHRleHRDaGVja2VyOwogI2Vu
ZGlmCiAgICAgQ1N0cmluZyBmYXZpY29uRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgV2ViS2l0VExT
RXJyb3JzUG9saWN5IHRsc0Vycm9yc1BvbGljeTsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMg
Z3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdlYkNvbnRleHQoZ3BvaW50ZXIpCiAgICAgcHJpdi0+YmF0
dGVyeVByb3ZpZGVyID0gV2ViS2l0QmF0dGVyeVByb3ZpZGVyOjpjcmVhdGUocHJpdi0+Y29udGV4
dC0+c3VwcGxlbWVudDxXZWJCYXR0ZXJ5TWFuYWdlclByb3h5PigpKTsKICNlbmRpZgogI2lmIEVO
QUJMRShTUEVMTENIRUNLKQotICAgIHByaXYtPnRleHRDaGVja2VyID0gV2ViS2l0VGV4dENoZWNr
ZXI6OmNyZWF0ZSgpOworICAgIHByaXYtPnRleHRDaGVja2VyID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJLaXRUZXh0Q2hlY2tlcj4oKTsKICNlbmRpZgogICAgIHJldHVybiB3ZWJDb250ZXh0LmdldCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwCmluZGV4IDFhOWI0M2ExZDA1Y2IwYTJmYjc4ZTNlY2Q4ODY4OGY3NGFh
ZTIxZDYuLmFjMjVmMjdmZWQwN2Y3MWJiZDQyNmNiOTNlOGZlNTA3ZDRiNWMxOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQogI2luY2x1
ZGUgPGdkay9nZGt4Lmg+CiAjZW5kaWYKKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtOTMsNyArOTQsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSB7CiAgICAgfQogCiAgICAgV2ViS2l0V2ViVmlld0NoaWxkcmVuTWFwIGNo
aWxkcmVuOwotICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZUNsaWVudEltcGw+IHBhZ2VDbGllbnQ7CiAgICAgUmVmUHRyPFdlYlBh
Z2VQcm94eT4gcGFnZVByb3h5OwogICAgIGJvb2wgc2hvdWxkRm9yd2FyZE5leHRLZXlFdmVudDsK
ICAgICBHdGtDbGlja0NvdW50ZXIgY2xpY2tDb3VudGVyOwpAQCAtNDA2LDcgKzQwNyw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQog
ICAgIGd0a19kcmFnX2Rlc3Rfc2V0X3RhcmdldF9saXN0KHZpZXdXaWRnZXQsIFBhc3RlYm9hcmRI
ZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPnRhcmdldExpc3QoKSk7CiAKICAgICBX
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRShvYmpl
Y3QpLT5wcml2OwotICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRl
KHZpZXdXaWRnZXQpOworICAgIHByaXYtPnBhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VDbGllbnRJbXBsPih2aWV3V2lkZ2V0KTsKICAgICBwcml2LT5kcmFnQW5kRHJvcEhlbHBlci5z
ZXRXaWRnZXQodmlld1dpZGdldCk7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRl
ZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCmluZGV4
IDQwNDY5ZTZhOWIzZDkwNTU5ZTU2MDlkZDE2N2VhYjc4NTY5MGVlNmIuLjk5NjkyMDA4MjlmOTVl
NDQ4YjA4ODZhMDE3N2NhMTQyNWI3NDZkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
VW5pcXVlUHRyLmg+CiAKQEAgLTcwMiw3ICs3MDMsNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0aW9u
R3RrOjpwcmludChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGRvdWJsZSB4RFBJLCBkb3VibGUg
eQogewogICAgIEFTU0VSVChtX3ByaW50Q29udGV4dCk7CiAKLSAgICBPd25QdHI8UHJpbnRQYWdl
c0RhdGE+IGRhdGEgPSBhZG9wdFB0cihuZXcgUHJpbnRQYWdlc0RhdGEodGhpcykpOworICAgIGF1
dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRQYWdlc0RhdGE+KHRoaXMpOwogICAgIGlm
ICghZGF0YS0+aXNWYWxpZCkgewogICAgICAgICBjYWlyb19zdXJmYWNlX2ZpbmlzaChzdXJmYWNl
KTsKICAgICAgICAgcHJpbnREb25lKGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGZyYW1lVVJMKCkp
KTsKQEAgLTcxOCw3ICs3MTksNyBAQCB2b2lkIFdlYlByaW50T3BlcmF0aW9uR3RrOjpwcmludChj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGRvdWJsZSB4RFBJLCBkb3VibGUgeQogICAgIC8vIG9w
ZXJhdGlvbiBoYXMgZmluaXNoZWQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyODAxLgogICAgIHVuc2lnbmVkIGlkbGVQcmlvcml0eSA9IG1fcHJpbnRNb2Rl
ID09IFByaW50SW5mbzo6UHJpbnRNb2RlU3luYyA/IEdfUFJJT1JJVFlfREVGQVVMVCAtIDEwIDog
R19QUklPUklUWV9ERUZBVUxUX0lETEUgKyAxMDsKICAgICBHTWFpbkxvb3AqIG1haW5Mb29wID0g
ZGF0YS0+bWFpbkxvb3AuZ2V0KCk7Ci0gICAgbV9wcmludFBhZ2VzSWRsZUlkID0gZ2RrX3RocmVh
ZHNfYWRkX2lkbGVfZnVsbChpZGxlUHJpb3JpdHksIHByaW50UGFnZXNJZGxlLCBkYXRhLmxlYWtQ
dHIoKSwgcHJpbnRQYWdlc0lkbGVEb25lKTsKKyAgICBtX3ByaW50UGFnZXNJZGxlSWQgPSBnZGtf
dGhyZWFkc19hZGRfaWRsZV9mdWxsKGlkbGVQcmlvcml0eSwgcHJpbnRQYWdlc0lkbGUsIGRhdGEu
cmVsZWFzZSgpLCBwcmludFBhZ2VzSWRsZURvbmUpOwogICAgIGlmIChtX3ByaW50TW9kZSA9PSBQ
cmludEluZm86OlByaW50TW9kZVN5bmMpIHsKICAgICAgICAgQVNTRVJUKG1haW5Mb29wKTsKICAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKG1haW5Mb29wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggYThl
ZGY2MjI1NGQwMDgzNmJhMzcxOGEyMTRlYjQzMGNiZThiZGRjZS4uNThjYzc1ZDIwYzUxZDRiZmEy
OGY0MTA2ZTcwMjE2YzllNGNhYTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9ndGsvV2ViR3RrRXh0ZW5zaW9uTWFuYWdlci5jcHAKQEAgLTI3LDcgKzI3LDcg
QEAKICNpbmNsdWRlICJXS1R5cGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb25Qcml2
YXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTA1LDExICsxMDUsMTEgQEAgdm9pZCBXZWJHdGtF
eHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVm
IHVzZXJEYXRhU3QKICAgICBzY2FuTW9kdWxlcyh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBtb2R1
bGVQYXRocyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIE93blB0cjxNb2R1bGU+IG1vZHVsZSA9IGFkb3B0UHRyKG5ldyBN
b2R1bGUobW9kdWxlUGF0aHNbaV0pKTsKKyAgICAgICAgYXV0byBtb2R1bGUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE1vZHVsZT4obW9kdWxlUGF0aHNbaV0pOwogICAgICAgICBpZiAoIW1vZHVsZS0+bG9h
ZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChpbml0aWFsaXplV2ViRXh0
ZW5zaW9uKG1vZHVsZS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpKQotICAgICAgICAgICAgbV9leHRl
bnNpb25Nb2R1bGVzLmFwcGVuZChtb2R1bGUubGVha1B0cigpKTsKKyAgICAgICAgICAgIG1fZXh0
ZW5zaW9uTW9kdWxlcy5hcHBlbmQobW9kdWxlLnJlbGVhc2UoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJ
bnB1dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKaW5kZXggODUyYTU4NWQ2ZDQyYWIxZmE2ZTU5YjE5MTRi
ODdjMGUwMzA4OWFiOC4uZGQ1ZDU4YWQ1Yzg3OWE1ODgzOGEzZmRkYTI1MzVjNjVkMjM5ODQzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9X
ZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcApAQCAtMjAsOCArMjAsNiBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uaCIK
IAotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CiAKQEAgLTQ2LDcgKzQ0LDcgQEAgc3RydWN0IF9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3Ry
ZWFtUHJpdmF0ZSB7CiAgICAgdWludDY0X3QgYnl0ZXNSZWFkOwogCiAgICAgTXV0ZXggcmVhZExv
Y2s7Ci0gICAgT3duUHRyPEFzeW5jUmVhZERhdGE+IHBlbmRpbmdBc3luY1JlYWQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFzeW5jUmVhZERhdGE+IHBlbmRpbmdBc3luY1JlYWQ7CiB9OwogCiBHX0RF
RklORV9UWVBFKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0sIHdlYmtpdF9zb3VwX3JlcXVl
c3RfaW5wdXRfc3RyZWFtLCBHX1RZUEVfTUVNT1JZX0lOUFVUX1NUUkVBTSkKQEAgLTcwLDcgKzY4
LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVBlbmRpbmdSZWFk
QXN5bmNDb21wbGV0ZShXZWJLaXRTb3VwUmVxdWUKIAogICAgIEFzeW5jUmVhZERhdGEqIGRhdGEg
PSBzdHJlYW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQuZ2V0KCk7CiAgICAgd2Via2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luY1Jlc3VsdENvbXBsZXRlKHN0cmVhbSwgZGF0YS0+cmVz
dWx0LmdldCgpLCBkYXRhLT5idWZmZXIsIGRhdGEtPmNvdW50LCBkYXRhLT5jYW5jZWxsYWJsZS5n
ZXQoKSk7Ci0gICAgc3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkLmNsZWFyKCk7CisgICAg
c3RyZWFtLT5wcml2LT5wZW5kaW5nQXN5bmNSZWFkID0gbnVsbHB0cjsKIH0KIAogc3RhdGljIGJv
b2wgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUhhc0RhdGFUb1JlYWQoV2ViS2l0U291cFJl
cXVlc3RJbnB1dFN0cmVhbSogc3RyZWFtKQpAQCAtMTAxLDcgKzk5LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlucHV0
U3RyZWFtLCB2b2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0cmVhbS0+cHJpdi0+
cGVuZGluZ0FzeW5jUmVhZCA9IGFkb3B0UHRyKG5ldyBBc3luY1JlYWREYXRhKHJlc3VsdC5nZXQo
KSwgYnVmZmVyLCBjb3VudCwgY2FuY2VsbGFibGUpKTsKKyAgICBzdHJlYW0tPnByaXYtPnBlbmRp
bmdBc3luY1JlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jUmVhZERhdGE+KHJlc3VsdC5nZXQo
KSwgYnVmZmVyLCBjb3VudCwgY2FuY2VsbGFibGUpOwogfQogCiBzdGF0aWMgZ3NzaXplIHdlYmtp
dFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkRmluaXNoKEdJbnB1dFN0cmVhbSosIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBHRXJyb3IqKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggZDVlM2NkODBkNjE0
Y2U3Yzc1NmE0YzY5ZDExYzg3NTM3N2Y5ZWMwZC4uZTcxZWU0MGY4ODFkYjM0MGU0OTYyMWU2OTFh
ZGY5Zjc0Njc4OWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3Vw
L1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lk
IFdlYlNvdXBSZXF1ZXN0TWFuYWdlcjo6c2VuZChHVGFzayogdGFzaykKICAgICBHVW5pcXVlUHRy
PGNoYXI+IHVyaVN0cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cF9yZXF1ZXN0X2dldF91cmko
c291cFJlcXVlc3QpLCBGQUxTRSkpOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJh
dGVTb3VwUmVxdWVzdElEKCk7Ci0gICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0SUQsIGFkb3B0
UHRyKG5ldyBXZWJTb3VwUmVxdWVzdEFzeW5jRGF0YSh0YXNrLCByZXF1ZXN0KSkpOworICAgIG1f
cmVxdWVzdE1hcC5zZXQocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvdXBSZXF1ZXN0
QXN5bmNEYXRhPih0YXNrLCByZXF1ZXN0KSk7CiAKICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFn
ZUlEID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KHNvdXBSZXF1ZXN0KS5pbml0aWF0aW5nUGFn
ZUlEKCk7CiAgICAgbV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZzo6ZnJvbVVU
RjgodXJpU3RyaW5nLmdldCgpKSwgcmVxdWVzdElEKSwgaW5pdGlhdGluZ1BhZ2VJRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5h
Z2VyLmgKaW5kZXggYmQxMGJlMmIzMWVjNGY5MDkyN2RmOGQxMGEwNTA4ZjQzNzIyZGYwZi4uNzEw
OTg5M2ZmM2YxODBkZGI0ZjVlNGQ1NWM3OTllY2RhYjcyYWVkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaApAQCAt
MjQsOSArMjQsOSBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViUHJvY2VzcyogbV9wcm9jZXNzOwog
ICAgIEdSZWZQdHI8R1B0ckFycmF5PiBtX3NjaGVtZXM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
T3duUHRyPFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPiA+IG1fcmVxdWVzdE1hcDsKKyAgICBIYXNo
TWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU291cFJlcXVlc3RBc3luY0RhdGE+ID4g
bV9yZXF1ZXN0TWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226820</attachid>
            <date>2014-03-15 07:53:47 -0700</date>
            <delta_ts>2014-03-16 12:47:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129672-20140315075323.patch</filename>
            <type>text/plain</type>
            <size>19349</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTY1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE0LTAzLTE1ICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEdUSyBXZWJLaXQy
IGNvZGUgdG8gc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjk2NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBhY2UgdXNlcyBvZiBPd25QdHIgYW5kIFBhc3NPd25QdHIgaW4g
R1RLLXNwZWNpZmljIFdlYktpdDIgY29kZSB3aXRoIHN0ZDo6dW5pcXVlX3B0ci4KKworICAgICAg
ICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaDoKKyAgICAgICAgKiBTaGFyZWQvRG93bmxv
YWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0
YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvbnRleHRNZW51SXRlbS5jcHA6CisgICAgICAgICh3ZWJraXRDb250ZXh0TWVudUl0ZW1D
cmVhdGUpOgorICAgICAgICAod2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlRm9yR3RrSXRlbSk6
CisgICAgICAgICh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KToKKyAgICAgICAgKHdlYmtp
dF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24pOgorICAgICAgICAod2Vi
a2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX3N0b2NrX2FjdGlvbl93aXRoX2xhYmVsKToK
KyAgICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfd2l0aF9zdWJtZW51KToKKyAg
ICAgICAgKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9yKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUZXh0Q2hlY2tlci5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAoY3JlYXRlRGVmYXVs
dFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJHdGtFeHRlbnNpb25NYW5hZ2VyOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3ZWJr
aXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUGVuZGluZ1JlYWRBc3luY0NvbXBsZXRlKToKKyAgICAg
ICAgKHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMpOgorICAgICAgICAqIFdl
YlByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTb3VwUmVxdWVzdE1hbmFnZXI6OnNlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXIuaDoKKwogMjAxNC0wMy0xNCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gSW1wcm92ZSBiZWhh
dmlvciBvZiBmaXhlZCBlbG1lbnRzIG9uIHpvb21pbmcKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDE2NTY1MykKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsNyBAQCBPQkpDX0NMQVNTIFdLRG93bmxvYWRBc0RlbGVnYXRlOwogI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CisjaW5jbHVkZSA8
bWVtb3J5PgogI2VuZGlmCiAKICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtMTMxLDcgKzEzMiw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPERvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQ+IG1fYXV0
aGVudGljYXRpb25DbGllbnQ7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKLSAgICBPd25QdHI8V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ+IG1fZG93bmxv
YWRDbGllbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZT4gbV9yZXNvdXJjZUhhbmRsZTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwCShyZXZpc2lv
biAxNjU2NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxv
YWRTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRG93bmxv
YWQ6OnN0YXJ0KCkKIHsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRDbGllbnQpOwogICAgIEFTU0VS
VCghbV9yZXNvdXJjZUhhbmRsZSk7Ci0gICAgbV9kb3dubG9hZENsaWVudCA9IGFkb3B0UHRyKG5l
dyBEb3dubG9hZENsaWVudCh0aGlzKSk7CisgICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHRoaXMpOwogICAgIG1fcmVzb3VyY2VIYW5kbGUgPSBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKDAsIG1fcmVxdWVzdCwgbV9kb3dubG9hZENsaWVudC5nZXQo
KSwgZmFsc2UsIGZhbHNlKTsKICAgICBkaWRTdGFydCgpOwogfQpAQCAtMjIxLDcgKzIyMSw3IEBA
IHZvaWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUgKIHsKICAgICBBU1NFUlQo
IW1fZG93bmxvYWRDbGllbnQpOwogICAgIEFTU0VSVCghbV9yZXNvdXJjZUhhbmRsZSk7Ci0gICAg
bV9kb3dubG9hZENsaWVudCA9IGFkb3B0UHRyKG5ldyBEb3dubG9hZENsaWVudCh0aGlzKSk7Cisg
ICAgbV9kb3dubG9hZENsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWRDbGllbnQ+KHRo
aXMpOwogICAgIHJlc291cmNlSGFuZGxlLT5zZXRDbGllbnQobV9kb3dubG9hZENsaWVudC5nZXQo
KSk7CiAgICAgbV9yZXNvdXJjZUhhbmRsZSA9IHJlc291cmNlSGFuZGxlOwogICAgIGRpZFN0YXJ0
KCk7CkBAIC0yNDcsNyArMjQ3LDggQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1JbnZhbGlkYXRl
KCkKICAgICAgICAgbV9yZXNvdXJjZUhhbmRsZS0+Y2FuY2VsKCk7CiAgICAgICAgIG1fcmVzb3Vy
Y2VIYW5kbGUgPSAwOwogICAgIH0KLSAgICBtX2Rvd25sb2FkQ2xpZW50LnJlbGVhc2UoKTsKKwor
ICAgIG1fZG93bmxvYWRDbGllbnQgPSBudWxscHRyOwogfQogCiB2b2lkIERvd25sb2FkOjpkaWRE
ZWNpZGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIC8qZGVzdGluYXRpb24qLywgYm9vbCAvKmFs
bG93T3ZlcndyaXRlKi8pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9Q
YWdlQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxNjU2NTMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDEwICs1Myw2IEBAIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChHdGtX
aWRnZXQKIHsKIH0KIAotUGFnZUNsaWVudEltcGw6On5QYWdlQ2xpZW50SW1wbCgpCi17Ci19Ci0K
IHZvaWQgUGFnZUNsaWVudEltcGw6OmdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3Qg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb21tYW5kTGlzdCkKIHsKICAgICBBU1NFUlQoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTY1NjUzKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lu
Y2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ4LDEwICs0OSw5IEBA
IGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VDbGllbnQKICNlbmRpZgogewogcHVi
bGljOgotICAgIH5QYWdlQ2xpZW50SW1wbCgpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VD
bGllbnRJbXBsPiBjcmVhdGUoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0KQorICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZUNsaWVudEltcGw+IGNyZWF0ZShHdGtXaWRnZXQqIHZpZXdXaWRnZXQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBhZ2VDbGllbnRJbXBsKHZpZXdX
aWRnZXQpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ2xpZW50SW1wbD4o
bmV3IFBhZ2VDbGllbnRJbXBsKHZpZXdXaWRnZXQpKTsKICAgICB9CiAKICAgICBHdGtXaWRnZXQq
IHZpZXdXaWRnZXQoKSB7IHJldHVybiBtX3ZpZXdXaWRnZXQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJ
dGVtLmNwcAkocmV2aXNpb24gMTY1NjUzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCAr
MjksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0NvbnRleHRNZW51SXRlbS5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1v
cnk+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dVbmlxdWVQdHIuaD4KIApAQCAtNTcsNyArNTYsNyBAQCBzdHJ1Y3QgX1dlYktpdENvbnRl
eHRNZW51SXRlbVByaXZhdGUgewogICAgICAgICAgICAgd2Via2l0Q29udGV4dE1lbnVTZXRQYXJl
bnRJdGVtKHN1Yk1lbnUuZ2V0KCksIDApOwogICAgIH0KIAotICAgIE93blB0cjxDb250ZXh0TWVu
dUl0ZW0+IG1lbnVJdGVtOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZXh0TWVudUl0ZW0+IG1l
bnVJdGVtOwogICAgIEdSZWZQdHI8V2ViS2l0Q29udGV4dE1lbnU+IHN1Yk1lbnU7CiB9OwogCkBA
IC05NSw3ICs5NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnUK
IHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5V
X0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBOVUxMKSk7
CiAgICAgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSogaXRlbURhdGEgPSB3ZWJJdGVtLT5kYXRhKCk7
Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBXVEY6OmFkb3B0UHRyKG5ldyBDb250ZXh0TWVu
dUl0ZW0oaXRlbURhdGEtPnR5cGUoKSwgaXRlbURhdGEtPmFjdGlvbigpLCBpdGVtRGF0YS0+dGl0
bGUoKSwgaXRlbURhdGEtPmVuYWJsZWQoKSwgaXRlbURhdGEtPmNoZWNrZWQoKSkpOworICAgIGl0
ZW0tPnByaXYtPm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUl0ZW0+KGl0
ZW1EYXRhLT50eXBlKCksIGl0ZW1EYXRhLT5hY3Rpb24oKSwgaXRlbURhdGEtPnRpdGxlKCksIGl0
ZW1EYXRhLT5lbmFibGVkKCksIGl0ZW1EYXRhLT5jaGVja2VkKCkpOwogICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgc3ViTWVudSA9IGl0ZW1EYXRhLT5zdWJtZW51KCk7
CiAgICAgaWYgKCFzdWJNZW51LnNpemUoKSkKICAgICAgICAgcmV0dXJuIGl0ZW07CkBAIC0xMTIs
NyArMTExLDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRDb250ZXh0TWVudQogc3Rh
dGljIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0Q29udGV4dE1lbnVJdGVtQ3JlYXRlRm9y
R3RrSXRlbShHdGtNZW51SXRlbSogbWVudUl0ZW0pCiB7CiAgICAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9DT05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gV1RGOjphZG9wdFB0cihuZXcgQ29udGV4dE1lbnVJdGVtKG1lbnVJdGVtKSk7CisgICAgaXRl
bS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51SXRlbT4obWVu
dUl0ZW0pOwogICAgIHdlYmtpdENvbnRleHRNZW51SXRlbVNldFN1Yk1lbnVGcm9tR3RrTWVudShp
dGVtLCBHVEtfTUVOVShndGtfbWVudV9pdGVtX2dldF9zdWJtZW51KG1lbnVJdGVtKSkpOwogCiAg
ICAgcmV0dXJuIGl0ZW07CkBAIC0xNjUsNyArMTY0LDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVt
KiB3ZWJraXRfY29udGV4dF9tZQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19BQ1RJ
T04oYWN0aW9uKSwgMCk7CiAKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJL
SVRfQ09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVO
VV9JVEVNLCBOVUxMKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBXVEY6OmFkb3B0UHRy
KG5ldyBDb250ZXh0TWVudUl0ZW0oR1RLX01FTlVfSVRFTShndGtfYWN0aW9uX2NyZWF0ZV9tZW51
X2l0ZW0oYWN0aW9uKSkpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGV4dE1lbnVJdGVtPihHVEtfTUVOVV9JVEVNKGd0a19hY3Rpb25fY3JlYXRlX21l
bnVfaXRlbShhY3Rpb24pKSk7CiAgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0tPnNldEFjdGlvbihD
b250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpOwogCiAgICAgcmV0dXJuIGl0ZW07CkBA
IC0xOTMsNyArMTkyLDcgQEAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiB3ZWJraXRfY29udGV4dF9t
ZQogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVO
VV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9DT05URVhUX01FTlVfSVRFTSwgTlVMTCkp
OwogICAgIENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSA9IHdlYmtpdENvbnRleHRNZW51QWN0aW9u
SXNDaGVja2FibGUoYWN0aW9uKSA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwot
ICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVtID0gV1RGOjphZG9wdFB0cihuZXcgQ29udGV4dE1lbnVJ
dGVtKHR5cGUsIHdlYmtpdENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdl
YmtpdENvbnRleHRNZW51QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSkpOworICAgIGl0ZW0tPnByaXYt
Pm1lbnVJdGVtID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZXh0TWVudUl0ZW0+KHR5cGUsIHdlYmtp
dENvbnRleHRNZW51QWN0aW9uR2V0QWN0aW9uVGFnKGFjdGlvbiksIHdlYmtpdENvbnRleHRNZW51
QWN0aW9uR2V0TGFiZWwoYWN0aW9uKSk7CiAKICAgICByZXR1cm4gaXRlbTsKIH0KQEAgLTIxNSw3
ICsyMTQsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtpdF9jb250ZXh0X21lCiAKICAg
ICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0o
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9JVEVNLCBOVUxMKSk7CiAgICAg
Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlID0gd2Via2l0Q29udGV4dE1lbnVBY3Rpb25Jc0NoZWNr
YWJsZShhY3Rpb24pID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgaXRl
bS0+cHJpdi0+bWVudUl0ZW0gPSBXVEY6OmFkb3B0UHRyKG5ldyBDb250ZXh0TWVudUl0ZW0odHlw
ZSwgd2Via2l0Q29udGV4dE1lbnVBY3Rpb25HZXRBY3Rpb25UYWcoYWN0aW9uKSwgU3RyaW5nOjpm
cm9tVVRGOChsYWJlbCkpKTsKKyAgICBpdGVtLT5wcml2LT5tZW51SXRlbSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGV4dE1lbnVJdGVtPih0eXBlLCB3ZWJraXRDb250ZXh0TWVudUFjdGlvbkdldEFj
dGlvblRhZyhhY3Rpb24pLCBTdHJpbmc6OmZyb21VVEY4KGxhYmVsKSk7CiAKICAgICByZXR1cm4g
aXRlbTsKIH0KQEAgLTIzOCw3ICsyMzcsNyBAQCBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIHdlYmtp
dF9jb250ZXh0X21lCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgV2ViS2l0Q29udGV4dE1lbnVJ
dGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9DT05URVhUX01FTlVfSVRFTSwgTlVMTCkpOwotICAgIGl0ZW0tPnByaXYtPm1lbnVJdGVt
ID0gV1RGOjphZG9wdFB0cihuZXcgQ29udGV4dE1lbnVJdGVtKFN1Ym1lbnVUeXBlLCBDb250ZXh0
TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcsIFN0cmluZzo6ZnJvbVVURjgobGFiZWwpKSk7Cisg
ICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRleHRNZW51SXRl
bT4oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZywgU3RyaW5n
Ojpmcm9tVVRGOChsYWJlbCkpOwogICAgIGl0ZW0tPnByaXYtPnN1Yk1lbnUgPSBzdWJtZW51Owog
ICAgIHdlYmtpdENvbnRleHRNZW51U2V0UGFyZW50SXRlbShzdWJtZW51LCBpdGVtKTsKIApAQCAt
MjU1LDcgKzI1NCw3IEBAIFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWUK
IFdlYktpdENvbnRleHRNZW51SXRlbSogd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBh
cmF0b3Iodm9pZCkKIHsKICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRf
Q09OVEVYVF9NRU5VX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0NPTlRFWFRfTUVOVV9J
VEVNLCBOVUxMKSk7Ci0gICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBXVEY6OmFkb3B0UHRyKG5l
dyBDb250ZXh0TWVudUl0ZW0oU2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rp
b24sIFN0cmluZygpKSk7CisgICAgaXRlbS0+cHJpdi0+bWVudUl0ZW0gPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRleHRNZW51SXRlbT4oU2VwYXJhdG9yVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnTm9B
Y3Rpb24sIFN0cmluZygpKTsKIAogICAgIHJldHVybiBpdGVtOwogfQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VGV4dENoZWNrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRUZXh0Q2hlY2tlci5oCShy
ZXZpc2lvbiAxNjU2NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRUZXh0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRDaGVja2VyRW5jaGFudC5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0zMyw4ICszMywxMSBAQCBj
bGFzcyBXZWJLaXRUZXh0Q2hlY2tlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJLaXRUZXh0Q2hlY2tlcj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFdlYktpdFRleHRDaGVja2VyKCkpOyB9Ci0gICAgdmly
dHVhbCB+V2ViS2l0VGV4dENoZWNrZXIoKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
YktpdFRleHRDaGVja2VyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxXZWJLaXRUZXh0Q2hlY2tlcj4obmV3IFdlYktpdFRleHRDaGVja2VyKTsKKyAgICB9
CisgICAgfldlYktpdFRleHRDaGVja2VyKCk7CiAKICAgICAvLyBGb3IgaW1wbGVtZW50aW5nIFRl
eHRDaGVja2VyQ2xpZW50LgogICAgIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIHsgcmV0
dXJuIG1fc3BlbGxDaGVja2luZ0VuYWJsZWQ7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAx
NjU2NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgpAQCAtMTQ5
LDcgKzE0OSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewogICAgIFJlZlB0
cjxXZWJLaXRCYXR0ZXJ5UHJvdmlkZXI+IGJhdHRlcnlQcm92aWRlcjsKICNlbmRpZgogI2lmIEVO
QUJMRShTUEVMTENIRUNLKQotICAgIE93blB0cjxXZWJLaXRUZXh0Q2hlY2tlcj4gdGV4dENoZWNr
ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdFRleHRDaGVja2VyPiB0ZXh0Q2hlY2tlcjsK
ICNlbmRpZgogICAgIENTdHJpbmcgZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdlYktp
dFRMU0Vycm9yc1BvbGljeSB0bHNFcnJvcnNQb2xpY3k7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCShyZXZp
c2lvbiAxNjU2NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNpZmRlZiBH
REtfV0lORE9XSU5HX1gxMQogI2luY2x1ZGUgPGdkay9nZGt4Lmg+CiAjZW5kaWYKKyNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtODgsNyArODks
NyBAQCB2b2lkIHJlZGlyZWN0ZWRXaW5kb3dEYW1hZ2VkQ2FsbGJhY2sodm9pCiAKIHN0cnVjdCBf
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBXZWJLaXRXZWJWaWV3Q2hpbGRyZW5NYXAg
Y2hpbGRyZW47Ci0gICAgT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2Vi
UGFnZVByb3h5PiBwYWdlUHJveHk7CiAgICAgYm9vbCBzaG91bGRGb3J3YXJkTmV4dEtleUV2ZW50
OwogICAgIEd0a0NsaWNrQ291bnRlciBjbGlja0NvdW50ZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcAkocmV2aXNpb24gMTY1NjUzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dV
bmlxdWVQdHIuaD4KIApAQCAtNzEzLDcgKzcxNCw3IEBAIHZvaWQgV2ViUHJpbnRPcGVyYXRpb25H
dGs6OnByaW50KGNhaXJvX3MKIHsKICAgICBBU1NFUlQobV9wcmludENvbnRleHQpOwogCi0gICAg
T3duUHRyPFByaW50UGFnZXNEYXRhPiBkYXRhID0gYWRvcHRQdHIobmV3IFByaW50UGFnZXNEYXRh
KHRoaXMpKTsKKyAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50UGFnZXNEYXRh
Pih0aGlzKTsKICAgICBpZiAoIWRhdGEtPmlzVmFsaWQpIHsKICAgICAgICAgY2Fpcm9fc3VyZmFj
ZV9maW5pc2goc3VyZmFjZSk7CiAgICAgICAgIHByaW50RG9uZShpbnZhbGlkUGFnZVJhbmdlVG9Q
cmludChmcmFtZVVSTCgpKSk7CkBAIC03MjksNyArNzMwLDcgQEAgdm9pZCBXZWJQcmludE9wZXJh
dGlvbkd0azo6cHJpbnQoY2Fpcm9fcwogICAgIC8vIG9wZXJhdGlvbiBoYXMgZmluaXNoZWQuIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyODAxLgogICAgIHVu
c2lnbmVkIGlkbGVQcmlvcml0eSA9IG1fcHJpbnRNb2RlID09IFByaW50SW5mbzo6UHJpbnRNb2Rl
U3luYyA/IEdfUFJJT1JJVFlfREVGQVVMVCAtIDEwIDogR19QUklPUklUWV9ERUZBVUxUX0lETEUg
KyAxMDsKICAgICBHTWFpbkxvb3AqIG1haW5Mb29wID0gZGF0YS0+bWFpbkxvb3AuZ2V0KCk7Ci0g
ICAgbV9wcmludFBhZ2VzSWRsZUlkID0gZ2RrX3RocmVhZHNfYWRkX2lkbGVfZnVsbChpZGxlUHJp
b3JpdHksIHByaW50UGFnZXNJZGxlLCBkYXRhLmxlYWtQdHIoKSwgcHJpbnRQYWdlc0lkbGVEb25l
KTsKKyAgICBtX3ByaW50UGFnZXNJZGxlSWQgPSBnZGtfdGhyZWFkc19hZGRfaWRsZV9mdWxsKGlk
bGVQcmlvcml0eSwgcHJpbnRQYWdlc0lkbGUsIGRhdGEucmVsZWFzZSgpLCBwcmludFBhZ2VzSWRs
ZURvbmUpOwogICAgIGlmIChtX3ByaW50TW9kZSA9PSBQcmludEluZm86OlByaW50TW9kZVN5bmMp
IHsKICAgICAgICAgQVNTRVJUKG1haW5Mb29wKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1h
aW5Mb29wKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYkd0a0V4dGVu
c2lvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Z3RrL1dlYkd0a0V4dGVuc2lvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAxNjU2NTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJHdGtFeHRlbnNpb25NYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIldLVHlwZS5oIgogI2luY2x1
ZGUgIldlYktpdFdlYkV4dGVuc2lvblByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVT
eXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMDUs
MTEgKzEwNSwxMSBAQCB2b2lkIFdlYkd0a0V4dGVuc2lvbk1hbmFnZXI6OmluaXRpYWxpemUoCiAg
ICAgc2Nhbk1vZHVsZXMod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgbW9kdWxlUGF0aHMpOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewotICAg
ICAgICBPd25QdHI8TW9kdWxlPiBtb2R1bGUgPSBhZG9wdFB0cihuZXcgTW9kdWxlKG1vZHVsZVBh
dGhzW2ldKSk7CisgICAgICAgIGF1dG8gbW9kdWxlID0gc3RkOjptYWtlX3VuaXF1ZTxNb2R1bGU+
KG1vZHVsZVBhdGhzW2ldKTsKICAgICAgICAgaWYgKCFtb2R1bGUtPmxvYWQoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbihtb2R1bGUu
Z2V0KCksIHVzZXJEYXRhLmdldCgpKSkKLSAgICAgICAgICAgIG1fZXh0ZW5zaW9uTW9kdWxlcy5h
cHBlbmQobW9kdWxlLmxlYWtQdHIoKSk7CisgICAgICAgICAgICBtX2V4dGVuc2lvbk1vZHVsZXMu
YXBwZW5kKG1vZHVsZS5yZWxlYXNlKCkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtLmNwcAkocmV2aXNpb24gMTY1NjUzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw4ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5oIgogCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIApAQCAtNDYsNyArNDQsNyBAQCBzdHJ1
Y3QgX1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Qcml2CiAgICAgdWludDY0X3QgYnl0ZXNS
ZWFkOwogCiAgICAgTXV0ZXggcmVhZExvY2s7Ci0gICAgT3duUHRyPEFzeW5jUmVhZERhdGE+IHBl
bmRpbmdBc3luY1JlYWQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jUmVhZERhdGE+IHBlbmRp
bmdBc3luY1JlYWQ7CiB9OwogCiBHX0RFRklORV9UWVBFKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRT
dHJlYW0sIHdlYmtpdF9zb3VwX3JlcXVlc3RfaW5wdXRfc3RyZWFtLCBHX1RZUEVfTUVNT1JZX0lO
UFVUX1NUUkVBTSkKQEAgLTcwLDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbQogCiAgICAgQXN5bmNSZWFkRGF0YSogZGF0YSA9IHN0cmVhbS0+cHJpdi0+
cGVuZGluZ0FzeW5jUmVhZC5nZXQoKTsKICAgICB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFt
UmVhZEFzeW5jUmVzdWx0Q29tcGxldGUoc3RyZWFtLCBkYXRhLT5yZXN1bHQuZ2V0KCksIGRhdGEt
PmJ1ZmZlciwgZGF0YS0+Y291bnQsIGRhdGEtPmNhbmNlbGxhYmxlLmdldCgpKTsKLSAgICBzdHJl
YW0tPnByaXYtPnBlbmRpbmdBc3luY1JlYWQuY2xlYXIoKTsKKyAgICBzdHJlYW0tPnByaXYtPnBl
bmRpbmdBc3luY1JlYWQgPSBudWxscHRyOwogfQogCiBzdGF0aWMgYm9vbCB3ZWJraXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtSGFzRGF0YVRvUmVhZChXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFt
KiBzdHJlYW0pCkBAIC0xMDEsNyArOTksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdHJlYW0tPnByaXYt
PnBlbmRpbmdBc3luY1JlYWQgPSBhZG9wdFB0cihuZXcgQXN5bmNSZWFkRGF0YShyZXN1bHQuZ2V0
KCksIGJ1ZmZlciwgY291bnQsIGNhbmNlbGxhYmxlKSk7CisgICAgc3RyZWFtLT5wcml2LT5wZW5k
aW5nQXN5bmNSZWFkID0gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1JlYWREYXRhPihyZXN1bHQuZ2V0
KCksIGJ1ZmZlciwgY291bnQsIGNhbmNlbGxhYmxlKTsKIH0KIAogc3RhdGljIGdzc2l6ZSB3ZWJr
aXRTb3VwUmVxdWVzdElucHV0U3RyZWFtUmVhZEZpbmlzaChHSW5wdXRTdHJlYW0qLCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgR0Vycm9yKiopCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MTY1NjUzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFdlYlNv
dXBSZXF1ZXN0TWFuYWdlcjo6c2VuZChHVGFzayoKICAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaVN0
cmluZyhzb3VwX3VyaV90b19zdHJpbmcoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3Qp
LCBGQUxTRSkpOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2VuZXJhdGVTb3VwUmVxdWVz
dElEKCk7Ci0gICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0SUQsIGFkb3B0UHRyKG5ldyBXZWJT
b3VwUmVxdWVzdEFzeW5jRGF0YSh0YXNrLCByZXF1ZXN0KSkpOworICAgIG1fcmVxdWVzdE1hcC5z
ZXQocmVxdWVzdElELCBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPih0
YXNrLCByZXF1ZXN0KSk7CiAKICAgICB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEID0gV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0KHNvdXBSZXF1ZXN0KS5pbml0aWF0aW5nUGFnZUlEKCk7CiAgICAg
bV9wcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJlY2VpdmVVUklSZXF1ZXN0KFN0cmluZzo6ZnJvbVVURjgodXJpU3RyaW5n
LmdldCgpKSwgcmVxdWVzdElEKSwgaW5pdGlhdGluZ1BhZ2VJRCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlci5o
CShyZXZpc2lvbiAxNjU2NTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
U291cFJlcXVlc3RNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDkgKzI0LDkgQEAKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVu
dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTYxLDcgKzYxLDcgQEAg
cHJpdmF0ZToKIAogICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsKICAgICBHUmVmUHRyPEdQdHJB
cnJheT4gbV9zY2hlbWVzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIE93blB0cjxXZWJTb3VwUmVx
dWVzdEFzeW5jRGF0YT4gPiBtX3JlcXVlc3RNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYlNvdXBSZXF1ZXN0QXN5bmNEYXRhPiA+IG1fcmVxdWVzdE1hcDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>