<?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>35157</bug_id>
          
          <creation_ts>2010-02-19 07:50:49 -0800</creation_ts>
          <short_desc>Remove auto_ptr usage in WebCore</short_desc>
          <delta_ts>2010-02-21 15:51:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>191912</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2010-02-19 07:50:49 -0800</bug_when>
    <thetext>Since PassOwnPtr was introduced, we can switch all the code using auto_ptr to using OwnPtr / PassOwnPtr.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>191914</commentid>
    <comment_count>1</comment_count>
      <attachid>49079</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2010-02-19 07:55:24 -0800</bug_when>
    <thetext>Created attachment 49079
Proposed fix: change signatures, remove &lt;memory&gt; and auto_ptr reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192017</commentid>
    <comment_count>2</comment_count>
      <attachid>49079</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-19 12:41:01 -0800</bug_when>
    <thetext>Comment on attachment 49079
Proposed fix: change signatures, remove &lt;memory&gt; and auto_ptr reference

LGTM.

My only concern is if &quot;Type&quot; could end up getting used for a stack object.  We only use PassOwnPtr to return or pass values, never as a stack object or an instance variable.

05     template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, ResourceRequest&gt; {
115          typedef std::auto_ptr&lt;CrossThreadResourceRequestData&gt; Type;
 106         typedef PassOwnPtr&lt;CrossThreadResourceRequestData&gt; Type;
116107         static Type copy(const ResourceRequest&amp;);
117108     };
118109 
119110     template&lt;&gt; struct CrossThreadCopierBase&lt;false, false, ResourceResponse&gt; {
120          typedef std::auto_ptr&lt;CrossThreadResourceResponseData&gt; Type;
 111         typedef PassOwnPtr&lt;CrossThreadResourceResponseData&gt; Type;
121112         static Type copy(const ResourceResponse&amp;);
122113     };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192312</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2010-02-21 15:36:33 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 49079 [details])
&gt; LGTM.
&gt; 
&gt; My only concern is if &quot;Type&quot; could end up getting used for a stack object.  We
&gt; only use PassOwnPtr to return or pass values, never as a stack object or an
&gt; instance variable.
[snip]

Looking at the auto_ptr and PassOwnPtr implementation, there is no constructor for stack allocated object. The constructor takes a pointer type:

template &lt;typename T&gt; class PassOwnPtr {
    typedef typename RemovePointer&lt;T&gt;::Type ValueType;
    typedef ValueType* PtrType;

    PassOwnPtr(PtrType ptr = 0) : m_ptr(ptr) { }

}

So unless I miss something, using a stack object will be detected at compile time.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192316</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2010-02-21 15:51:54 -0800</bug_when>
    <thetext>Landed the patch in r55066.

Follow-up change in bug 35221 (for JavaScriptCore).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49079</attachid>
            <date>2010-02-19 07:55:24 -0800</date>
            <delta_ts>2010-02-19 12:41:01 -0800</delta_ts>
            <desc>Proposed fix: change signatures, remove &lt;memory&gt; and auto_ptr reference</desc>
            <filename>auto_ptr_WebCore_removal.diff</filename>
            <type>text/plain</type>
            <size>25562</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjlkZDA5YS4uMzFjZTQwZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMC0wMi0xOCAgSnVsaWVuIENoYWZm
cmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYXV0b19wdHIgdXNhZ2UgaW4gV2ViQ29yZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MTU3CisK
KyAgICAgICAgVGhlIGNoYW5nZXMgY29uc2lzdHMgb2Y6CisKKyAgICAgICAgLSBDaGFuZ2luZyBh
dXRvX3B0ciBhcmd1bWVudHMgb3IgcmV0dXJuIHR5cGVzIHRvIFBhc3NPd25QdHIuCisKKyAgICAg
ICAgLSBSZXBsYWNpbmcgbG9jYWwgYXV0b19wdHIgYnkgT3duUHRyLgorCisgICAgICAgIC0gUmVt
b3Zpbmcgbm93IHVubmVlZGVkIDxtZW1vcnk+IGluY2x1c2lvbi4KKworICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjphZGRQcm9wZXJ0eSk6
CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRo
cmVhZENyZWF0ZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250ZXh0RGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OndvcmtlckNvbnRleHREaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjp3b3JrZXJDb250
ZXh0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKiBsb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25M
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4
dE1lbnUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VwYXJhdG9ySXRlbSk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXA6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXA6OmFkb3B0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2VCYXNlOjpjb3B5RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVQZW5kaW5nUmVz
b3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpjcmVhdGUpOgorCiAyMDEwLTAyLTE3ICBLd2FuZyBZ
dWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBlYzU5MDU1Li41YzY1MTQyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTM2OSw3ICszNjksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5KE1lZGlh
TGlzdCogcXVlcmllcywgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHZvaWQgQ1NTUGFyc2VyOjph
ZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBp
bXBvcnRhbnQpCiB7Ci0gICAgYXV0b19wdHI8Q1NTUHJvcGVydHk+IHByb3AobmV3IENTU1Byb3Bl
cnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxp
Y2l0U2hvcnRoYW5kKSk7CisgICAgT3duUHRyPENTU1Byb3BlcnR5PiBwcm9wKG5ldyBDU1NQcm9w
ZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBs
aWNpdFNob3J0aGFuZCkpOwogICAgIGlmIChtX251bVBhcnNlZFByb3BlcnRpZXMgPj0gbV9tYXhQ
YXJzZWRQcm9wZXJ0aWVzKSB7CiAgICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyArPSAzMjsK
ICAgICAgICAgaWYgKG1fbWF4UGFyc2VkUHJvcGVydGllcyA+IFVJTlRfTUFYIC8gc2l6ZW9mKENT
U1Byb3BlcnR5KikpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IDY4MzdjYTEuLjI1ODM0OTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgog
I2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
Ci0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTAxLDcgKzEwMCw3
IEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6On5NYWluVGhyZWFk
QnJpZGdlKCkKIHsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjptYWluVGhyZWFkQ3JlYXRlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIE1haW5UaHJlYWRCcmlkZ2UqIHRoaXNQdHIsIGF1dG9fcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4gcmVxdWVzdERhdGEsIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9w
dGlvbnMpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1h
aW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWFp
blRocmVhZEJyaWRnZSogdGhpc1B0ciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+IHJlcXVlc3REYXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9j
dW1lbnQoKSk7CkBAIC0xNzQsNyArMTczLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnkKICAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kRGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVy
LCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCksIG1fdGFza01vZGUpOwogfQogCi1zdGF0
aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZVJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29y
a2VyQ2xpZW50V3JhcHBlciwgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4gcmVzcG9uc2VEYXRhKQorc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFJlY2VpdmVSZXNw
b25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBhc3NPd25QdHI8Q3Jvc3NU
aHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gcmVzcG9uc2VEYXRhKQogewogICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgIE93blB0cjxS
ZXNvdXJjZVJlc3BvbnNlPiByZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlOjphZG9wdChyZXNwb25z
ZURhdGEpKTsKQEAgLTE4Niw3ICsxODUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZQogICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxi
YWNrVGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVSZXNwb25zZSwgbV93b3JrZXJDbGllbnRX
cmFwcGVyLCByZXNwb25zZSksIG1fdGFza01vZGUpOwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJD
b250ZXh0RGlkUmVjZWl2ZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVm
UHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBh
dXRvX3B0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3JEYXRhKQorc3RhdGljIHZvaWQgd29ya2VyQ29u
dGV4dERpZFJlY2VpdmVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0
cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgUGFz
c093blB0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3JEYXRhKQogewogICAgIEFTU0VSVF9VTlVTRUQo
Y29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVEYXRhKHZlY3RvckRhdGEtPmRhdGEoKSwgdmVjdG9yRGF0YS0+c2l6
ZSgpKTsKQEAgLTE5NCw5ICsxOTMsOSBAQCBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkUmVj
ZWl2ZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPAogCiB2b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCkKIHsKLSAgICBhdXRvX3B0cjxW
ZWN0b3I8Y2hhcj4gPiB2ZWN0b3IobmV3IFZlY3RvcjxjaGFyPihsZW5ndGhSZWNlaXZlZCkpOyAv
LyBuZWVkcyB0byBiZSBhbiBhdXRvX3B0ciBmb3IgdXNhZ2Ugd2l0aCBjcmVhdGVDYWxsYmFja1Rh
c2suCisgICAgT3duUHRyPFZlY3RvcjxjaGFyPiA+IHZlY3RvcihuZXcgVmVjdG9yPGNoYXI+KGxl
bmd0aFJlY2VpdmVkKSk7IC8vIG5lZWRzIHRvIGJlIGFuIE93blB0ciBmb3IgdXNhZ2Ugd2l0aCBj
cmVhdGVDYWxsYmFja1Rhc2suCiAgICAgbWVtY3B5KHZlY3Rvci0+ZGF0YSgpLCBkYXRhLCBsZW5n
dGhSZWNlaXZlZCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNv
bnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZURhdGEsIG1f
d29ya2VyQ2xpZW50V3JhcHBlciwgdmVjdG9yKSwgbV90YXNrTW9kZSk7CisgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3
b3JrZXJDb250ZXh0RGlkUmVjZWl2ZURhdGEsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgdmVjdG9y
LnJlbGVhc2UoKSksIG1fdGFza01vZGUpOwogfQogCiBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0
RGlkRmluaXNoTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKQEAgLTIzMiw3ICsyMzEsNyBAQCB2b2lkIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWxSZWRpcmVjdENoZWNrKCkKICAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRGYWlsUmVkaXJlY3RDaGVjaywgbV93b3JrZXJDbGll
bnRXcmFwcGVyKSwgbV90YXNrTW9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHRE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3b3JrZXJD
bGllbnRXcmFwcGVyLCBhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBy
ZXNwb25zZURhdGEpCitzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0
cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiByZXNwb25zZURhdGEpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7
CiAgICAgT3duUHRyPFJlc291cmNlUmVzcG9uc2U+IHJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2U6
OmFkb3B0KHJlc3BvbnNlRGF0YSkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5oCmluZGV4IDA5ZjhmODUuLjgxZGEyZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCIKIAot
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CkBAIC0xMDksNyArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAgIH5NYWluVGhyZWFkQnJp
ZGdlKCk7CiAKLSAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqLCBzdGQ6OmF1dG9fcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4sIFRocmVhZGFibGVMb2FkZXJPcHRpb25z
KTsKKyAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE1haW5UaHJlYWRCcmlkZ2UqLCBQYXNzT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4sIFRocmVhZGFibGVMb2FkZXJPcHRpb25zKTsKICAgICAg
ICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDYW5jZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIE1haW5UaHJlYWRCcmlkZ2UqKTsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KTsKICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5j
cHAKaW5kZXggNWRkMDAwZS4uZWI0OTA4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3Bw
CkBAIC00OSw5ICs0OSw5IEBAIEljb25Mb2FkZXI6Okljb25Mb2FkZXIoRnJhbWUqIGZyYW1lKQog
ewogfQogCi1hdXRvX3B0cjxJY29uTG9hZGVyPiBJY29uTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZy
YW1lKQorUGFzc093blB0cjxJY29uTG9hZGVyPiBJY29uTG9hZGVyOjpjcmVhdGUoRnJhbWUqIGZy
YW1lKQogewotICAgIHJldHVybiBhdXRvX3B0cjxJY29uTG9hZGVyPihuZXcgSWNvbkxvYWRlcihm
cmFtZSkpOworICAgIHJldHVybiBuZXcgSWNvbkxvYWRlcihmcmFtZSk7CiB9CiAKIEljb25Mb2Fk
ZXI6On5JY29uTG9hZGVyKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxv
YWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKaW5kZXggN2I5NmVkOC4u
MWViYWM0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKKysr
IGIvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNk
ZWZpbmUgSWNvbkxvYWRlcl9oCiAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5o
IgotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQwLDcgKzM5
LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJY29uTG9hZGVyIDogcHJpdmF0ZSBT
dWJyZXNvdXJjZUxvYWRlckNsaWVudCwgcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgc3RkOjphdXRvX3B0cjxJY29uTG9hZGVyPiBjcmVhdGUoRnJhbWUqKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxJY29uTG9hZGVyPiBjcmVhdGUoRnJhbWUqKTsKICAgICB+SWNvbkxv
YWRlcigpOwogICAgIAogICAgIHZvaWQgc3RhcnRMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1l
bnUuY3BwCmluZGV4IDIzNjI3OWUuLjI4M2FhNTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vQ29udGV4dE1lbnUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3Bw
CkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSA8
bWVtb3J5PgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAg
LTY2LDkgKzY1LDkgQEAgQ29udGV4dE1lbnVDb250cm9sbGVyKiBDb250ZXh0TWVudTo6Y29udHJv
bGxlcigpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBhdXRvX3B0cjxDb250ZXh0
TWVudUl0ZW0+IHNlcGFyYXRvckl0ZW0oKQorc3RhdGljIFBhc3NPd25QdHI8Q29udGV4dE1lbnVJ
dGVtPiBzZXBhcmF0b3JJdGVtKCkKIHsKLSAgICByZXR1cm4gYXV0b19wdHI8Q29udGV4dE1lbnVJ
dGVtPihuZXcgQ29udGV4dE1lbnVJdGVtKFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRh
Z05vQWN0aW9uLCBTdHJpbmcoKSkpOworICAgIHJldHVybiBuZXcgQ29udGV4dE1lbnVJdGVtKFNl
cGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZEZvbnRTdWJNZW51KGNvbnN0IEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgQ29udGV4dE1lbnVJdGVtJiBmb250TWVudUl0ZW0pCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL0Ny
b3NzVGhyZWFkQ29waWVyLmgKaW5kZXggMGE5YWVlYi4uZTM1YTZiMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMzEsNyArMzEsNiBAQAogI2lmbmRlZiBDcm9zc1RocmVh
ZENvcGllcl9oCiAjZGVmaW5lIENyb3NzVGhyZWFkQ29waWVyX2gKIAotI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtODgsMTQgKzg3LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB9CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBzdGQ6OmF1dG9fcHRy
PFQ+ID4gewotICAgICAgICB0eXBlZGVmIHN0ZDo6YXV0b19wdHI8VD4gVHlwZTsKLSAgICAgICAg
c3RhdGljIFR5cGUgY29weShjb25zdCBzdGQ6OmF1dG9fcHRyPFQ+JiBhdXRvUHRyKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjphdXRvX3B0cjxUPigqY29uc3RfY2FzdDxzdGQ6
OmF1dG9fcHRyPFQ+Kj4oJmF1dG9QdHIpKTsKLSAgICAgICAgfQotICAgIH07Ci0KICAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBLVVJMPiB7
CiAgICAgICAgIHR5cGVkZWYgS1VSTCBUeXBlOwogICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNv
bnN0IEtVUkwmKTsKQEAgLTExMiwxMiArMTAzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICB9OwogCiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNl
LCBmYWxzZSwgUmVzb3VyY2VSZXF1ZXN0PiB7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjphdXRvX3B0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFR5cGU7CisgICAgICAgIHR5cGVkZWYg
UGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFR5cGU7CiAgICAgICAg
IHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgfTsKIAogICAg
IHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFJl
c291cmNlUmVzcG9uc2U+IHsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OmF1dG9fcHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IFR5cGU7CisgICAgICAgIHR5cGVkZWYgUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBUeXBlOwogICAgICAgICBzdGF0aWMg
VHlwZSBjb3B5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKaW5kZXggNDEzZmI3Yi4uZTMwNGZmYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApAQCAtMzEsMjYg
KzMxLDI1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5o
IgogCi0jaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYXV0b19wdHI8Q3Jvc3NUaHJlYWRI
VFRQSGVhZGVyTWFwRGF0YT4gSFRUUEhlYWRlck1hcDo6Y29weURhdGEoKSBjb25zdAorUGFzc093
blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBIVFRQSGVhZGVyTWFwOjpjb3B5RGF0
YSgpIGNvbnN0CiB7Ci0gICAgYXV0b19wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4g
ZGF0YShuZXcgQ3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YSgpKTsKKyAgICBPd25QdHI8Q3Jv
c3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YShuZXcgQ3Jvc3NUaHJlYWRIVFRQSGVhZGVy
TWFwRGF0YSgpKTsKICAgICBkYXRhLT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CiAK
ICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmRfaXQgPSBlbmQoKTsKICAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYmVnaW4oKTsgaXQgIT0gZW5k
X2l0OyArK2l0KSB7CiAgICAgICAgIGRhdGEtPmFwcGVuZChtYWtlX3BhaXIoaXQtPmZpcnN0LnN0
cmluZygpLmNyb3NzVGhyZWFkU3RyaW5nKCksIGl0LT5zZWNvbmQuY3Jvc3NUaHJlYWRTdHJpbmco
KSkpOwogICAgIH0KLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7
CiB9CiAKLXZvaWQgSFRUUEhlYWRlck1hcDo6YWRvcHQoYXV0b19wdHI8Q3Jvc3NUaHJlYWRIVFRQ
SGVhZGVyTWFwRGF0YT4gZGF0YSkKK3ZvaWQgSFRUUEhlYWRlck1hcDo6YWRvcHQoUGFzc093blB0
cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBkYXRhKQogewogICAgIGNsZWFyKCk7CiAg
ICAgc2l6ZV90IGRhdGFTaXplID0gZGF0YS0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggZGZkZTk3NC4uNTU3ZGRiMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSAi
QXRvbWljU3RyaW5nLmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUg
IlN0cmluZ0hhc2guaCIKLSNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw5ICs0Miw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIVFRQSGVhZGVyTWFwIDogcHVibGlj
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gewogICAgIHB1
YmxpYzoKICAgICAgICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUgZm9yIHBh
c3NpbmcgdG8gYW5vdGhlciB0aHJlYWQuCi0gICAgICAgIHN0ZDo6YXV0b19wdHI8Q3Jvc3NUaHJl
YWRIVFRQSGVhZGVyTWFwRGF0YT4gY29weURhdGEoKSBjb25zdDsKKyAgICAgICAgUGFzc093blB0
cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBjb3B5RGF0YSgpIGNvbnN0OwogCi0gICAg
ICAgIHZvaWQgYWRvcHQoc3RkOjphdXRvX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRh
Pik7CisgICAgICAgIHZvaWQgYWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJN
YXBEYXRhPik7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgZ2V0KGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3QKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDBhNjg5NzIuLjQyYzFjNmUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTI0
LDYgKzI0LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAjaW5jbHVkZSAiY29uZmlnLmgiCisK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3RCYXNlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCiAKQEAgLTM2LDkgKzM3LDkgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6YXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAogICAgIHJldHVy
biAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Kj4odGhpcyk7CiB9CiAKLWF1dG9f
cHRyPFJlc291cmNlUmVxdWVzdD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQoYXV0b19wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKQorUGFzc093blB0cjxSZXNvdXJj
ZVJlcXVlc3Q+IFJlc291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKQogewotICAgIGF1dG9fcHRyPFJlc291cmNlUmVx
dWVzdD4gcmVxdWVzdChuZXcgUmVzb3VyY2VSZXF1ZXN0KCkpOworICAgIE93blB0cjxSZXNvdXJj
ZVJlcXVlc3Q+IHJlcXVlc3QobmV3IFJlc291cmNlUmVxdWVzdCgpKTsKICAgICByZXF1ZXN0LT5z
ZXRVUkwoZGF0YS0+bV91cmwpOwogICAgIHJlcXVlc3QtPnNldENhY2hlUG9saWN5KGRhdGEtPm1f
Y2FjaGVQb2xpY3kpOwogICAgIHJlcXVlc3QtPnNldFRpbWVvdXRJbnRlcnZhbChkYXRhLT5tX3Rp
bWVvdXRJbnRlcnZhbCk7CkBAIC00Niw3ICs0Nyw3IEBAIGF1dG9fcHRyPFJlc291cmNlUmVxdWVz
dD4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWRvcHQoYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
CiAgICAgcmVxdWVzdC0+c2V0SFRUUE1ldGhvZChkYXRhLT5tX2h0dHBNZXRob2QpOwogCiAgICAg
cmVxdWVzdC0+dXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgcmVxdWVzdC0+bV9odHRwSGVh
ZGVyRmllbGRzLmFkb3B0KGF1dG9fcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+KGRh
dGEtPm1faHR0cEhlYWRlcnMucmVsZWFzZSgpKSk7CisgICAgcmVxdWVzdC0+bV9odHRwSGVhZGVy
RmllbGRzLmFkb3B0KGRhdGEtPm1faHR0cEhlYWRlcnMucmVsZWFzZSgpKTsKIAogICAgIHNpemVf
dCBlbmNvZGluZ0NvdW50ID0gZGF0YS0+bV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAgaWYgKGVuY29kaW5nQ291bnQgPiAwKSB7CkBA
IC02MywxOCArNjQsMTggQEAgYXV0b19wdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJjZVJlcXVl
c3RCYXNlOjphZG9wdChhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmMKICAgICB9CiAgICAgcmVx
dWVzdC0+c2V0SFRUUEJvZHkoZGF0YS0+bV9odHRwQm9keSk7CiAgICAgcmVxdWVzdC0+c2V0QWxs
b3dDb29raWVzKGRhdGEtPm1fYWxsb3dDb29raWVzKTsKLSAgICByZXR1cm4gcmVxdWVzdDsKKyAg
ICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLWF1dG9fcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEoKSBjb25zdAor
UGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJlc291cmNlUmVxdWVz
dEJhc2U6OmNvcHlEYXRhKCkgY29uc3QKIHsKLSAgICBhdXRvX3B0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGE+IGRhdGEobmV3IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YSgp
KTsKKyAgICBPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKG5ldyBD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEoKSk7CiAgICAgZGF0YS0+bV91cmwgPSB1cmwo
KS5jb3B5KCk7CiAgICAgZGF0YS0+bV9jYWNoZVBvbGljeSA9IGNhY2hlUG9saWN5KCk7CiAgICAg
ZGF0YS0+bV90aW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2YWwoKTsKICAgICBkYXRhLT5t
X2ZpcnN0UGFydHlGb3JDb29raWVzID0gZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5jb3B5KCk7CiAg
ICAgZGF0YS0+bV9odHRwTWV0aG9kID0gaHR0cE1ldGhvZCgpLmNyb3NzVGhyZWFkU3RyaW5nKCk7
Ci0gICAgZGF0YS0+bV9odHRwSGVhZGVycy5hZG9wdChodHRwSGVhZGVyRmllbGRzKCkuY29weURh
dGEoKSk7CisgICAgZGF0YS0+bV9odHRwSGVhZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5jb3B5
RGF0YSgpOwogCiAgICAgZGF0YS0+bV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpKTsKICAgICBzaXplX3QgZW5jb2Rp
bmdBcnJheVNpemUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5LnNpemUoKTsKQEAgLTg0LDcgKzg1LDcgQEAgYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSgpIGNvbnN0CiAg
ICAgaWYgKG1faHR0cEJvZHkpCiAgICAgICAgIGRhdGEtPm1faHR0cEJvZHkgPSBtX2h0dHBCb2R5
LT5kZWVwQ29weSgpOwogICAgIGRhdGEtPm1fYWxsb3dDb29raWVzID0gbV9hbGxvd0Nvb2tpZXM7
Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCiBib29s
IFJlc291cmNlUmVxdWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggYWRmODMyNy4uMmNhNWQ3ZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJN
YXAuaCIKIAotI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY1LDEwICs2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICBUYXJnZXRJc01lZGlhCiAgICAgICAgIH07CiAKLSAgICAgICAgc3RhdGlj
IHN0ZDo6YXV0b19wdHI8UmVzb3VyY2VSZXF1ZXN0PiBhZG9wdChzdGQ6OmF1dG9fcHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOworICAgICAgICBzdGF0aWMgUGFzc093blB0cjxS
ZXNvdXJjZVJlcXVlc3Q+IGFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhPik7CiAKICAgICAgICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUg
Zm9yIHBhc3NpbmcgdG8gYW5vdGhlciB0aHJlYWQuCi0gICAgICAgIHN0ZDo6YXV0b19wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBjb3B5RGF0YSgpIGNvbnN0OworICAgICAgICBQ
YXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gY29weURhdGEoKSBjb25z
dDsKIAogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgICAgICBib29sIGlzRW1wdHko
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwCmluZGV4IGY5Y2QyNzEuLjMxOTJhMTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtODUsOSArODUsOSBAQCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeQogewogfQogCi1hdXRvX3B0cjxSZXNvdXJjZVJlc3BvbnNl
PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWRvcHQoYXV0b19wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YT4gZGF0YSkKK1Bhc3NPd25QdHI8UmVzb3VyY2VSZXNwb25zZT4gUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YT4gZGF0YSkKIHsKLSAgICBhdXRvX3B0cjxSZXNvdXJjZVJlc3BvbnNlPiByZXNwb25z
ZShuZXcgUmVzb3VyY2VSZXNwb25zZSgpKTsKKyAgICBPd25QdHI8UmVzb3VyY2VSZXNwb25zZT4g
cmVzcG9uc2UobmV3IFJlc291cmNlUmVzcG9uc2UoKSk7CiAgICAgcmVzcG9uc2UtPnNldFVSTChk
YXRhLT5tX3VybCk7CiAgICAgcmVzcG9uc2UtPnNldE1pbWVUeXBlKGRhdGEtPm1fbWltZVR5cGUp
OwogICAgIHJlc3BvbnNlLT5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoZGF0YS0+bV9leHBlY3Rl
ZENvbnRlbnRMZW5ndGgpOwpAQCAtOTgsMTUgKzk4LDE1IEBAIGF1dG9fcHRyPFJlc291cmNlUmVz
cG9uc2U+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZG9wdChhdXRvX3B0cjxDcm9zc1RocmVhZFJl
c291CiAgICAgcmVzcG9uc2UtPnNldEhUVFBTdGF0dXNUZXh0KGRhdGEtPm1faHR0cFN0YXR1c1Rl
eHQpOwogCiAgICAgcmVzcG9uc2UtPmxhenlJbml0KCk7Ci0gICAgcmVzcG9uc2UtPm1faHR0cEhl
YWRlckZpZWxkcy5hZG9wdChzdGQ6OmF1dG9fcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERh
dGE+KGRhdGEtPm1faHR0cEhlYWRlcnMucmVsZWFzZSgpKSk7CisgICAgcmVzcG9uc2UtPm1faHR0
cEhlYWRlckZpZWxkcy5hZG9wdChkYXRhLT5tX2h0dHBIZWFkZXJzLnJlbGVhc2UoKSk7CiAgICAg
cmVzcG9uc2UtPnNldExhc3RNb2RpZmllZERhdGUoZGF0YS0+bV9sYXN0TW9kaWZpZWREYXRlKTsK
IAotICAgIHJldHVybiByZXNwb25zZTsKKyAgICByZXR1cm4gcmVzcG9uc2UucmVsZWFzZSgpOwog
fQogCi1hdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6Y29weURhdGEoKSBjb25zdAorUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29weURhdGEoKSBjb25zdAog
ewotICAgIGF1dG9fcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEobmV3
IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEoKSk7CisgICAgT3duUHRyPENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEobmV3IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNw
b25zZURhdGEoKSk7CiAgICAgZGF0YS0+bV91cmwgPSB1cmwoKS5jb3B5KCk7CiAgICAgZGF0YS0+
bV9taW1lVHlwZSA9IG1pbWVUeXBlKCkuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKICAgICBkYXRhLT5t
X2V4cGVjdGVkQ29udGVudExlbmd0aCA9IGV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMTE0
LDkgKzExNCw5IEBAIGF1dG9fcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgZGF0YS0+bV9zdWdnZXN0
ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lKCkuY3Jvc3NUaHJlYWRTdHJpbmcoKTsKICAg
ICBkYXRhLT5tX2h0dHBTdGF0dXNDb2RlID0gaHR0cFN0YXR1c0NvZGUoKTsKICAgICBkYXRhLT5t
X2h0dHBTdGF0dXNUZXh0ID0gaHR0cFN0YXR1c1RleHQoKS5jcm9zc1RocmVhZFN0cmluZygpOwot
ICAgIGRhdGEtPm1faHR0cEhlYWRlcnMuYWRvcHQoaHR0cEhlYWRlckZpZWxkcygpLmNvcHlEYXRh
KCkpOworICAgIGRhdGEtPm1faHR0cEhlYWRlcnMgPSBodHRwSGVhZGVyRmllbGRzKCkuY29weURh
dGEoKTsKICAgICBkYXRhLT5tX2xhc3RNb2RpZmllZERhdGUgPSBsYXN0TW9kaWZpZWREYXRlKCk7
Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQogCiBib29s
IFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0hUVFAoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAppbmRleCBiZjE5N2E3Li43NGUyM2E0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRl
ICJLVVJMLmgiCiAKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwxMCArNDAsMTAgQEAgc3RydWN0IENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE7CiAvLyBEbyBub3QgdXNlIHRoaXMgY2xhc3Mg
ZGlyZWN0bHksIHVzZSB0aGUgY2xhc3MgUmVzcG9uc2VSZXNwb25zZSBpbnN0ZWFkCiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlQmFzZSA6IHB1YmxpYyBGYXN0QWxsb2NCYXNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgc3RkOjphdXRvX3B0cjxSZXNvdXJjZVJlc3BvbnNlPiBhZG9wdChzdGQ6OmF1dG9f
cHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBhZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGE+KTsKIAogICAgIC8vIEdldHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRh
YmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgotICAgIHN0ZDo6YXV0b19wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gY29weURhdGEoKSBjb25zdDsKKyAgICBQYXNz
T3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGNvcHlEYXRhKCkgY29uc3Q7
CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CiAgICAgYm9v
bCBpc0hUVFAoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4
IGIyNDkyYjQuLmFkNzRlYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApA
QCAtMTM1LDEzICsxMzUsMTMgQEAgYm9vbCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzUGVuZGlu
Z1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGVu
ZGluZ1Jlc291cmNlcy5jb250YWlucyhpZCk7CiB9CiAKLXN0ZDo6YXV0b19wdHI8SGFzaFNldDxT
VkdTdHlsZWRFbGVtZW50Kj4gPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVBlbmRpbmdS
ZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkKQorUGFzc093blB0cjxIYXNoU2V0PFNWR1N0
eWxlZEVsZW1lbnQqPiA+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlUGVuZGluZ1Jlc291
cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiB7CiAgICAgQVNTRVJUKG1fcGVuZGluZ1Jlc291
cmNlcy5jb250YWlucyhpZCkpOwogCi0gICAgc3RkOjphdXRvX3B0cjxIYXNoU2V0PFNWR1N0eWxl
ZEVsZW1lbnQqPiA+IHNldChtX3BlbmRpbmdSZXNvdXJjZXMuZ2V0KGlkKSk7CisgICAgT3duUHRy
PEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+ID4gc2V0KG1fcGVuZGluZ1Jlc291cmNlcy5nZXQo
aWQpKTsKICAgICBtX3BlbmRpbmdSZXNvdXJjZXMucmVtb3ZlKGlkKTsKLSAgICByZXR1cm4gc2V0
OworICAgIHJldHVybiBzZXQucmVsZWFzZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBiL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oCmluZGV4IDA1MGU2ZjYuLjhkMzcyMjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oCkBAIC0yNCw4ICsyNCw4IEBACiAjZGVmaW5lIFNWR0RvY3VtZW50RXh0ZW5zaW9u
c19oCiAKICNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgPG1lbW9yeT4KIAorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgaW5zdGFu
Y2UsIGR5bmFtaWNhbGx5IGJ1aWxkIGdyYWRpZW50cyAvIHBhdHRlcm5zIC8gY2xpcHBlcnMuLi4K
ICAgICB2b2lkIGFkZFBlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBTVkdT
dHlsZWRFbGVtZW50Kik7CiAgICAgYm9vbCBpc1BlbmRpbmdSZXNvdXJjZShjb25zdCBBdG9taWNT
dHJpbmcmIGlkKSBjb25zdDsKLSAgICBzdGQ6OmF1dG9fcHRyPEhhc2hTZXQ8U1ZHU3R5bGVkRWxl
bWVudCo+ID4gcmVtb3ZlUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpOwor
ICAgIFBhc3NPd25QdHI8SGFzaFNldDxTVkdTdHlsZWRFbGVtZW50Kj4gPiByZW1vdmVQZW5kaW5n
UmVzb3VyY2UoY29uc3QgQXRvbWljU3RyaW5nJiBpZCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmlu
ZGV4IDE5YzVmM2IuLjE5OGU2MzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAg
dm9pZCBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiAKICAgICBTdHJpbmcgcmVz
b3VyY2VJZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGdldEF0dHJpYnV0ZShpZEF0dHJp
YnV0ZU5hbWUoKSkpOwogICAgIGlmIChleHRlbnNpb25zLT5pc1BlbmRpbmdSZXNvdXJjZShyZXNv
dXJjZUlkKSkgewotICAgICAgICBzdGQ6OmF1dG9fcHRyPEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVu
dCo+ID4gY2xpZW50cyhleHRlbnNpb25zLT5yZW1vdmVQZW5kaW5nUmVzb3VyY2UocmVzb3VyY2VJ
ZCkpOworICAgICAgICBPd25QdHI8SGFzaFNldDxTVkdTdHlsZWRFbGVtZW50Kj4gPiBjbGllbnRz
KGV4dGVuc2lvbnMtPnJlbW92ZVBlbmRpbmdSZXNvdXJjZShyZXNvdXJjZUlkKSk7CiAgICAgICAg
IGlmIChjbGllbnRzLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd29ya2Vycy9HZW5lcmljV29ya2VyVGFzay5oIGIvV2ViQ29yZS93b3JrZXJz
L0dlbmVyaWNXb3JrZXJUYXNrLmgKaW5kZXggMjc2OTRjNC4uYTk4MzljNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93b3JrZXJzL0dlbmVyaWNXb3JrZXJUYXNrLmgKKysrIGIvV2ViQ29yZS93b3JrZXJz
L0dlbmVyaWNXb3JrZXJUYXNrLmgKQEAgLTUxLDEwICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdHlwZWRlZiBUKiBQYXJhbVR5cGU7CiAgICAgfTsKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBHZW5lcmljV29ya2VyVGFza1RyYWl0czxzdGQ6OmF1dG9fcHRy
PFQ+ID4gewotICAgICAgICB0eXBlZGVmIHN0ZDo6YXV0b19wdHI8VD4gUGFyYW1UeXBlOwotICAg
IH07Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgR2VuZXJpY1dvcmtlclRhc2tU
cmFpdHM8UGFzc1JlZlB0cjxUPiA+IHsKICAgICAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFQ+IFBh
cmFtVHlwZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCA0ZTNmZmExLi4w
NWZiZTY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtNTgsOSArNTgsOSBAQCB1bnNp
Z25lZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KCkKIAogc3RydWN0IFdvcmtlclRo
cmVhZFN0YXJ0dXBEYXRhIDogTm9uY29weWFibGUgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6
OmF1dG9fcHRyPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPiBjcmVhdGUoY29uc3QgS1VSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPiBjcmVhdGUo
Y29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6YXV0b19wdHI8V29y
a2VyVGhyZWFkU3RhcnR1cERhdGE+KG5ldyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShzY3JpcHRV
UkwsIHVzZXJBZ2VudCwgc291cmNlQ29kZSkpOworICAgICAgICByZXR1cm4gbmV3IFdvcmtlclRo
cmVhZFN0YXJ0dXBEYXRhKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzb3VyY2VDb2RlKTsKICAgICB9
CiAKICAgICBLVVJMIG1fc2NyaXB0VVJMOwo=
</data>
<flag name="review"
          id="31842"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="31843"
          type_id="3"
          status="-"
          setter="jchaffraix"
    />
          </attachment>
      

    </bug>

</bugzilla>