<?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>130689</bug_id>
          
          <creation_ts>2014-03-24 11:44:25 -0700</creation_ts>
          <short_desc>Add platform implementation for RTCOfferAnswerOptions and RTCOfferOptions</short_desc>
          <delta_ts>2014-05-19 09:08:13 -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>WebCore Misc.</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>124288</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago de Barros Lacerda">thiago.lacerda</reporter>
          <assigned_to name="Thiago de Barros Lacerda">thiago.lacerda</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>993901</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2014-03-24 11:44:25 -0700</bug_when>
    <thetext>RTCOfferAnswerOptions and RTCOfferOptions objects were being passed to platform class, causing a layer violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993910</commentid>
    <comment_count>1</comment_count>
      <attachid>227675</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2014-03-24 12:02:30 -0700</bug_when>
    <thetext>Created attachment 227675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>993979</commentid>
    <comment_count>2</comment_count>
      <attachid>227675</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-24 14:58:44 -0700</bug_when>
    <thetext>Comment on attachment 227675
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:78
&gt; +    RefPtr&lt;RTCOfferOptionsPrivate&gt; optionsPrivate = RTCOfferOptionsPrivate::create();
&gt; +    m_private = optionsPrivate;

Nit: is the local variable necessary?

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.h:54
&gt; -private:
&gt; -    String m_requestIdentity;
&gt; +    RefPtr&lt;RTCOfferAnswerOptionsPrivate&gt; m_private;

This should remain private.

&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.h:64
&gt; +    int64_t offerToReceiveVideo() const { return static_cast&lt;RTCOfferOptionsPrivate*&gt;(m_private.get())-&gt;offerToReceiveVideo(); }
&gt; +    int64_t offerToReceiveAudio() const { return static_cast&lt;RTCOfferOptionsPrivate*&gt;(m_private.get())-&gt;offerToReceiveAudio(); }
&gt; +    bool voiceActivityDetection() const { return static_cast&lt;RTCOfferOptionsPrivate*&gt;(m_private.get())-&gt;voiceActivityDetection(); }
&gt; +    bool iceRestart() const { return static_cast&lt;RTCOfferOptionsPrivate*&gt;(m_private.get())-&gt;iceRestart(); }

Are these static_casts necessary? If so, please put the accessor privateOfferOptions() in the base class and use it.

&gt; Source/WebCore/platform/mediastream/RTCOfferAnswerOptionsPrivate.h:53
&gt; +        return;

This should be indented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994015</commentid>
    <comment_count>3</comment_count>
      <attachid>227675</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2014-03-24 16:31:58 -0700</bug_when>
    <thetext>Comment on attachment 227675
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp:78
&gt;&gt; +    m_private = optionsPrivate;
&gt; 
&gt; Nit: is the local variable necessary?

It is just to avoid an static_cast to access RTCOfferOptionsPrivate methods (since m_private is an instance of the base class RTCOfferAnswerOptionsPrivate).

&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.h:64
&gt;&gt; +    bool iceRestart() const { return static_cast&lt;RTCOfferOptionsPrivate*&gt;(m_private.get())-&gt;iceRestart(); }
&gt; 
&gt; Are these static_casts necessary? If so, please put the accessor privateOfferOptions() in the base class and use it.

I don&apos;t think that the base class should no about anyone that derives from it. Putting privateOfferOptions in the base class seems like to add extra information on the base class that it should not know.
And yes, these casts are necessary, m_private is declared as the base class.

&gt;&gt; Source/WebCore/platform/mediastream/RTCOfferAnswerOptionsPrivate.h:53
&gt;&gt; +        return;
&gt; 
&gt; This should be indented.

oops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994169</commentid>
    <comment_count>4</comment_count>
      <attachid>227675</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-03-25 07:42:11 -0700</bug_when>
    <thetext>Comment on attachment 227675
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.h:64
&gt;&gt;&gt; +    bool iceRestart() const { return static_cast&lt;RTCOfferOptionsPrivate*&gt;(m_private.get())-&gt;iceRestart(); }
&gt;&gt; 
&gt;&gt; Are these static_casts necessary? If so, please put the accessor privateOfferOptions() in the base class and use it.
&gt; 
&gt; I don&apos;t think that the base class should no about anyone that derives from it. Putting privateOfferOptions in the base class seems like to add extra information on the base class that it should not know.
&gt; And yes, these casts are necessary, m_private is declared as the base class.

Then I suggest having an privateOfferAnswer() in the base class, use that in privateOfferOptions() here, and use privateOfferOptions in these methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994722</commentid>
    <comment_count>5</comment_count>
      <attachid>227889</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2014-03-26 15:02:41 -0700</bug_when>
    <thetext>Created attachment 227889
Requested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994741</commentid>
    <comment_count>6</comment_count>
      <attachid>227889</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-26 16:27:15 -0700</bug_when>
    <thetext>Comment on attachment 227889
Requested changes

Clearing flags on attachment: 227889

Committed r166325: &lt;http://trac.webkit.org/changeset/166325&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227675</attachid>
            <date>2014-03-24 12:02:30 -0700</date>
            <delta_ts>2014-03-25 07:42:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130689-20140324160208.patch</filename>
            <type>text/plain</type>
            <size>18089</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE1MTA5MTU2YWQ5MWQw
ZmMxZDQ4OGFhYTBmM2ZmMDk2ZjgyOGEwZC4uOTExOTEyM2M1MDZkMGZlNWJhYTEzYjg2YjdkOGI1
OWIzODVmMWM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0LTAzLTI0ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEFkZCBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBmb3IgUlRDT2ZmZXJBbnN3ZXJPcHRp
b25zIGFuZCBSVENPZmZlck9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJUQ09mZmVyQW5zd2VyT3B0aW9ucyBhbmQgUlRDT2ZmZXJPcHRpb25z
IG9iamVjdHMgd2VyZSBiZWluZyBwYXNzZWQgdG8gcGxhdGZvcm0gY2xhc3MsIGNhdXNpbmcgYSBs
YXllcgorICAgICAgICB2aW9sYXRpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENPZmZlckFu
c3dlck9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDT2ZmZXJPcHRp
b25zOjppbml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVy
QW5zd2VyT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDT2ZmZXJBbnN3ZXJPcHRpb25z
OjpyZXF1ZXN0SWRlbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDT2ZmZXJBbnN3ZXJPcHRp
b25zOjpwcml2YXRlT2ZmZXJBbnN3ZXJPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ09m
ZmVyQW5zd2VyT3B0aW9uczo6UlRDT2ZmZXJBbnN3ZXJPcHRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ09mZmVyT3B0aW9uczo6b2ZmZXJUb1JlY2VpdmVWaWRlbyk6CisgICAgICAgIChXZWJD
b3JlOjpSVENPZmZlck9wdGlvbnM6Om9mZmVyVG9SZWNlaXZlQXVkaW8pOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDT2ZmZXJPcHRpb25zOjp2b2ljZUFjdGl2aXR5RGV0ZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ09mZmVyT3B0aW9uczo6aWNlUmVzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSVENPZmZlck9wdGlvbnM6OnByaXZhdGVPZmZlck9wdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDT2ZmZXJPcHRpb25zOjpSVENPZmZlck9wdGlvbnMpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UGVlckNvbm5lY3Rpb246OmNyZWF0ZU9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uOjpjcmVhdGVBbnN3ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZU9mZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZUFuc3dlcik6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmg6
CisKIDIwMTQtMDMtMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWVyZ2UgTWlub3IgV2ViVlRUIENsZWFudXBzIGZyb20gQmxpbmsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJP
cHRpb25zLmNwcAppbmRleCA3ZDNlZmFkYTk3ZDAxMDExNzQ2NWM2ODQ1MGY1ZjQ2ODI3YTBmYjQw
Li4xODU1YjgwYzU3NDdlODJmNWEyZmJhNDU0YmNmZmI3NGJlYmVjMzRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dl
ck9wdGlvbnMuY3BwCkBAIC0zMiwxMSArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBib29sIHZhbGlkYXRlUmVxdWVzdElkZW50aXR5KGNvbnN0IFN0cmluZyYgdmFsdWUp
Ci17Ci0gICAgcmV0dXJuIHZhbHVlID09ICJ5ZXMiIHx8IHZhbHVlID09ICJubyIgfHwgdmFsdWUg
PT0gImlmY29uZmlndXJlZCI7Ci19Ci0KIFBhc3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25z
PiBSVENPZmZlckFuc3dlck9wdGlvbnM6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25z
PiBvZmZlckFuc3dlck9wdGlvbnMgPSBhZG9wdFJlZihuZXcgUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
KCkpOwpAQCAtNTMsMTMgKzQ4LDE0IEBAIFBhc3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25z
PiBSVENPZmZlckFuc3dlck9wdGlvbnM6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5CiAKIGJvb2wg
UlRDT2ZmZXJBbnN3ZXJPcHRpb25zOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlv
bnMpCiB7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZSA9IFJUQ09mZmVy
QW5zd2VyT3B0aW9uc1ByaXZhdGU6OmNyZWF0ZSgpOworCiAgICAgU3RyaW5nIHJlcXVlc3RJZGVu
dGl0eTsKICAgICBpZiAoIW9wdGlvbnMuaXNVbmRlZmluZWRPck51bGwoKSAmJiAoIW9wdGlvbnMu
Z2V0KCJyZXF1ZXN0SWRlbnRpdHkiLCByZXF1ZXN0SWRlbnRpdHkpIHx8IHJlcXVlc3RJZGVudGl0
eS5pc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAodmFsaWRhdGVS
ZXF1ZXN0SWRlbnRpdHkocmVxdWVzdElkZW50aXR5KSkKLSAgICAgICAgbV9yZXF1ZXN0SWRlbnRp
dHkgPSByZXF1ZXN0SWRlbnRpdHk7Ci0KKyAgICBtX3ByaXZhdGUtPnNldFJlcXVlc3RJZGVudGl0
eShyZXF1ZXN0SWRlbnRpdHkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03OCw2ICs3NCw5
IEBAIFBhc3NSZWZQdHI8UlRDT2ZmZXJPcHRpb25zPiBSVENPZmZlck9wdGlvbnM6OmNyZWF0ZShj
b25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFCiAKIGJvb2wgUlRDT2ZmZXJPcHRpb25zOjppbml0
aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCiB7CisgICAgUmVmUHRyPFJUQ09mZmVy
T3B0aW9uc1ByaXZhdGU+IG9wdGlvbnNQcml2YXRlID0gUlRDT2ZmZXJPcHRpb25zUHJpdmF0ZTo6
Y3JlYXRlKCk7CisgICAgbV9wcml2YXRlID0gb3B0aW9uc1ByaXZhdGU7CisKICAgICBpZiAob3B0
aW9ucy5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtODks
MjUgKzg4LDI5IEBAIGJvb2wgUlRDT2ZmZXJPcHRpb25zOjppbml0aWFsaXplKGNvbnN0IERpY3Rp
b25hcnkmIG9wdGlvbnMpCiAgICAgaWYgKCFvcHRpb25zLmdldCgib2ZmZXJUb1JlY2VpdmVWaWRl
byIsIG9mZmVyVG9SZWNlaXZlVmlkZW9TdHIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX29mZmVyVG9SZWNlaXZlVmlkZW8gPSBvZmZlclRvUmVjZWl2ZVZpZGVvU3RyLnRvSW50NjRT
dHJpY3QoJm51bWJlckNvbnZlcnNpb25TdWNjZXNzKTsKKyAgICBpbnQ2NF90IGludENvbnZlcnNp
b25SZXN1bHQgPSBvZmZlclRvUmVjZWl2ZVZpZGVvU3RyLnRvSW50NjRTdHJpY3QoJm51bWJlckNv
bnZlcnNpb25TdWNjZXNzKTsKICAgICBpZiAoIW51bWJlckNvbnZlcnNpb25TdWNjZXNzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBvcHRpb25zUHJpdmF0ZS0+c2V0T2ZmZXJUb1JlY2Vp
dmVWaWRlbyhpbnRDb252ZXJzaW9uUmVzdWx0KTsKKwogICAgIFN0cmluZyBvZmZlclRvUmVjZWl2
ZUF1ZGlvU3RyOwogICAgIGlmICghb3B0aW9ucy5nZXQoIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCBv
ZmZlclRvUmVjZWl2ZUF1ZGlvU3RyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9v
ZmZlclRvUmVjZWl2ZUF1ZGlvID0gb2ZmZXJUb1JlY2VpdmVBdWRpb1N0ci50b0ludDY0U3RyaWN0
KCZudW1iZXJDb252ZXJzaW9uU3VjY2Vzcyk7CisgICAgaW50Q29udmVyc2lvblJlc3VsdCA9IG9m
ZmVyVG9SZWNlaXZlQXVkaW9TdHIudG9JbnQ2NFN0cmljdCgmbnVtYmVyQ29udmVyc2lvblN1Y2Nl
c3MpOwogICAgIGlmICghbnVtYmVyQ29udmVyc2lvblN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIG9wdGlvbnNQcml2YXRlLT5zZXRPZmZlclRvUmVjZWl2ZUF1ZGlvKGludENv
bnZlcnNpb25SZXN1bHQpOworCiAgICAgYm9vbCB2b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOwogICAg
IGlmIChvcHRpb25zLmdldCgidm9pY2VBY3Rpdml0eURldGVjdGlvbiIsIHZvaWNlQWN0aXZpdHlE
ZXRlY3Rpb24pKQotICAgICAgICBtX3ZvaWNlQWN0aXZpdHlEZXRlY3Rpb24gPSB2b2ljZUFjdGl2
aXR5RGV0ZWN0aW9uOworICAgICAgICBvcHRpb25zUHJpdmF0ZS0+c2V0Vm9pY2VBY3Rpdml0eURl
dGVjdGlvbih2b2ljZUFjdGl2aXR5RGV0ZWN0aW9uKTsKIAogICAgIGJvb2wgaWNlUmVzdGFydDsK
ICAgICBpZiAob3B0aW9ucy5nZXQoImljZVJlc3RhcnQiLCBpY2VSZXN0YXJ0KSkKLSAgICAgICAg
bV9pY2VSZXN0YXJ0ID0gaWNlUmVzdGFydDsKKyAgICAgICAgb3B0aW9uc1ByaXZhdGUtPnNldElj
ZVJlc3RhcnQoaWNlUmVzdGFydCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0
aW9ucy5oCmluZGV4IGQyNmI5MDhmZmUzNTE2NjBiZGUwNmIyYWFkZjE3MmIyZTlkNDI5MzIuLmQ1
Yzg0OWQwZTY0YTFkYjY1ZjMxYmYzNDJhZDNlMDEyMDYxZWI4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlv
bnMuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJSVENPZmZlckFuc3dlck9wdGlvbnNQcml2
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC00MSw0NiArNDIsMzMgQEAgY2xhc3MgUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiBjcmVhdGUoY29uc3Qg
RGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0SWRlbnRpdHk7IH0KKyAgICBjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS0+cmVx
dWVzdElkZW50aXR5KCk7IH0KKyAgICBSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlKiBwcml2
YXRlT2ZmZXJBbnN3ZXJPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9
CiAKICAgICB2aXJ0dWFsIH5SVENPZmZlckFuc3dlck9wdGlvbnMoKSB7IH0KIAogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmKTsKLSAgICBS
VENPZmZlckFuc3dlck9wdGlvbnMoKQotICAgICAgICA6IG1fcmVxdWVzdElkZW50aXR5KCJpZmNv
bmZpZ3VyZWQiKQotICAgIHsKLSAgICB9CisgICAgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zKCkgeyB9
CiAKLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fcmVxdWVzdElkZW50aXR5OworICAgIFJlZlB0cjxS
VENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlPiBtX3ByaXZhdGU7CiB9OwogCiBjbGFzcyBSVENP
ZmZlck9wdGlvbnMgOiBwdWJsaWMgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxSVENPZmZlck9wdGlvbnM+IGNyZWF0ZShjb25zdCBEaWN0aW9u
YXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgaW50NjRfdCBvZmZlclRvUmVjZWl2ZVZpZGVv
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZlclRvUmVjZWl2ZVZpZGVvOyB9Ci0gICAgaW50NjRfdCBv
ZmZlclRvUmVjZWl2ZUF1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9vZmZlclRvUmVjZWl2ZUF1ZGlv
OyB9Ci0gICAgYm9vbCB2b2ljZUFjdGl2aXR5RGV0ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92
b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOyB9Ci0gICAgYm9vbCBpY2VSZXN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pY2VSZXN0YXJ0OyB9CisgICAgaW50NjRfdCBvZmZlclRvUmVjZWl2ZVZpZGVvKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UlRDT2ZmZXJPcHRpb25zUHJpdmF0ZSo+KG1fcHJp
dmF0ZS5nZXQoKSktPm9mZmVyVG9SZWNlaXZlVmlkZW8oKTsgfQorICAgIGludDY0X3Qgb2ZmZXJU
b1JlY2VpdmVBdWRpbygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJUQ09mZmVyT3B0aW9u
c1ByaXZhdGUqPihtX3ByaXZhdGUuZ2V0KCkpLT5vZmZlclRvUmVjZWl2ZUF1ZGlvKCk7IH0KKyAg
ICBib29sIHZvaWNlQWN0aXZpdHlEZXRlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxSVENPZmZlck9wdGlvbnNQcml2YXRlKj4obV9wcml2YXRlLmdldCgpKS0+dm9pY2VBY3Rpdml0
eURldGVjdGlvbigpOyB9CisgICAgYm9vbCBpY2VSZXN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8UlRDT2ZmZXJPcHRpb25zUHJpdmF0ZSo+KG1fcHJpdmF0ZS5nZXQoKSktPmljZVJl
c3RhcnQoKTsgfQorICAgIFJUQ09mZmVyT3B0aW9uc1ByaXZhdGUqIHByaXZhdGVPZmZlck9wdGlv
bnMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxSVENPZmZlck9wdGlvbnNQcml2YXRlKj4o
bV9wcml2YXRlLmdldCgpKTsgfQogCiAgICAgdmlydHVhbCB+UlRDT2ZmZXJPcHRpb25zKCkgeyB9
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFy
eSYpIG92ZXJyaWRlOwotICAgIFJUQ09mZmVyT3B0aW9ucygpCi0gICAgICAgIDogbV9vZmZlclRv
UmVjZWl2ZVZpZGVvKDApCi0gICAgICAgICwgbV9vZmZlclRvUmVjZWl2ZUF1ZGlvKDApCi0gICAg
ICAgICwgbV92b2ljZUFjdGl2aXR5RGV0ZWN0aW9uKHRydWUpCi0gICAgICAgICwgbV9pY2VSZXN0
YXJ0KGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQ2NF90IG1fb2ZmZXJUb1JlY2VpdmVW
aWRlbzsKLSAgICBpbnQ2NF90IG1fb2ZmZXJUb1JlY2VpdmVBdWRpbzsKLSAgICBib29sIG1fdm9p
Y2VBY3Rpdml0eURldGVjdGlvbjsKLSAgICBib29sIG1faWNlUmVzdGFydDsKKyAgICBSVENPZmZl
ck9wdGlvbnMoKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggNGMyYzY1MWYyMzVkN2YwM2I1ZjQyMTkyMzg0OTNkNGRiZGQ5YWFhNS4uNWI0ZTk4
NGQwZTNlZTk3NWQ0YjQzMjdjMmMzN2FjNDBjY2I5NWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAg
LTIyOSw3ICsyMjksNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVPZmZlcihQYXNz
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrPiBzdQogICAgIH0KIAogICAgIFJl
ZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0SW1wbD4gcmVxdWVzdCA9IFJUQ1Nlc3Np
b25EZXNjcmlwdGlvblJlcXVlc3RJbXBsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIG1fcGVlckhhbmRsZXItPmNy
ZWF0ZU9mZmVyKHJlcXVlc3QucmVsZWFzZSgpLCBvcHRpb25zLnJlbGVhc2UoKSk7CisgICAgbV9w
ZWVySGFuZGxlci0+Y3JlYXRlT2ZmZXIocmVxdWVzdC5yZWxlYXNlKCksIG9wdGlvbnMtPnByaXZh
dGVPZmZlck9wdGlvbnMoKSk7CiB9CiAKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZUFu
c3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8UlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrLCBjb25zdCBEaWN0aW9uYXJ5JiBhbnN3ZXJPcHRpb25zLCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVBbnN3
ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaz4gcwogICAgIH0KIAog
ICAgIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0SW1wbD4gcmVxdWVzdCA9IFJU
Q1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3RJbXBsOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIG1fcGVlckhhbmRs
ZXItPmNyZWF0ZUFuc3dlcihyZXF1ZXN0LnJlbGVhc2UoKSwgb3B0aW9ucy5yZWxlYXNlKCkpOwor
ICAgIG1fcGVlckhhbmRsZXItPmNyZWF0ZUFuc3dlcihyZXF1ZXN0LnJlbGVhc2UoKSwgb3B0aW9u
cy0+cHJpdmF0ZU9mZmVyQW5zd2VyT3B0aW9ucygpKTsKIH0KIAogYm9vbCBSVENQZWVyQ29ubmVj
dGlvbjo6Y2hlY2tTdGF0ZUZvckxvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
KiBsb2NhbERlc2NyaXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUzMTEzMmQxODUxMTgzMzA5ZTM2OGVhNjZjNjkwOGQzYmYyZDE3NTEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENPZmZl
ckFuc3dlck9wdGlvbnNQcml2YXRlLmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ09mZmVyQW5zd2VyT3B0
aW9uc1ByaXZhdGVfaAorI2RlZmluZSBSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgdmFsaWRhdGVSZXF1ZXN0
SWRlbnRpdHkoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gInll
cyIgfHwgdmFsdWUgPT0gIm5vIiB8fCB2YWx1ZSA9PSAiaWZjb25maWd1cmVkIjsKK30KKworY2xh
c3MgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ09m
ZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlKCkpOworICAg
IH0KKworICAgIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkZW50aXR5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0SWRlbnRpdHk7IH0KKyAgICB2b2lkIHNldFJlcXVlc3RJZGVudGl0eShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZGVudGl0eSkKKyAgICB7CisgICAgICAgIGlmICghdmFsaWRhdGVSZXF1
ZXN0SWRlbnRpdHkocmVxdWVzdElkZW50aXR5KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgICAg
IG1fcmVxdWVzdElkZW50aXR5ID0gcmVxdWVzdElkZW50aXR5OworICAgIH0KKworICAgIHZpcnR1
YWwgflJUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGUoKSB7IH0KKworcHJvdGVjdGVkOgorICAg
IFJUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGUoKQorICAgICAgICA6IG1fcmVxdWVzdElkZW50
aXR5KCJpZmNvbmZpZ3VyZWQiKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5n
IG1fcmVxdWVzdElkZW50aXR5OworfTsKKworY2xhc3MgUlRDT2ZmZXJPcHRpb25zUHJpdmF0ZSA6
IHB1YmxpYyBSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSVENPZmZlck9wdGlvbnNQcml2YXRlPiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENPZmZlck9wdGlvbnNQcml2YXRlKCkpOworICAg
IH0KKworICAgIGludDY0X3Qgb2ZmZXJUb1JlY2VpdmVWaWRlbygpIGNvbnN0IHsgcmV0dXJuIG1f
b2ZmZXJUb1JlY2VpdmVWaWRlbzsgfQorICAgIHZvaWQgc2V0T2ZmZXJUb1JlY2VpdmVWaWRlbyhp
bnQ2NF90IG9mZmVyVG9SZWNlaXZlVmlkZW8pIHsgbV9vZmZlclRvUmVjZWl2ZVZpZGVvID0gb2Zm
ZXJUb1JlY2VpdmVWaWRlbzsgfQorICAgIGludDY0X3Qgb2ZmZXJUb1JlY2VpdmVBdWRpbygpIGNv
bnN0IHsgcmV0dXJuIG1fb2ZmZXJUb1JlY2VpdmVBdWRpbzsgfQorICAgIHZvaWQgc2V0T2ZmZXJU
b1JlY2VpdmVBdWRpbyhpbnQ2NF90IG9mZmVyVG9SZWNlaXZlQXVkaW8pIHsgbV9vZmZlclRvUmVj
ZWl2ZUF1ZGlvID0gb2ZmZXJUb1JlY2VpdmVBdWRpbzsgfQorICAgIGJvb2wgdm9pY2VBY3Rpdml0
eURldGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdm9pY2VBY3Rpdml0eURldGVjdGlvbjsgfQor
ICAgIHZvaWQgc2V0Vm9pY2VBY3Rpdml0eURldGVjdGlvbihib29sIHZvaWNlQWN0aXZpdHlEZXRl
Y3Rpb24pIHsgbV92b2ljZUFjdGl2aXR5RGV0ZWN0aW9uID0gdm9pY2VBY3Rpdml0eURldGVjdGlv
bjsgfQorICAgIGJvb2wgaWNlUmVzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faWNlUmVzdGFydDsg
fQorICAgIHZvaWQgc2V0SWNlUmVzdGFydChib29sIGljZVJlc3RhcnQpIHsgbV9pY2VSZXN0YXJ0
ID0gaWNlUmVzdGFydDsgfQorCisgICAgdmlydHVhbCB+UlRDT2ZmZXJPcHRpb25zUHJpdmF0ZSgp
IHsgfQorCitwcml2YXRlOgorICAgIFJUQ09mZmVyT3B0aW9uc1ByaXZhdGUoKQorICAgICAgICA6
IFJUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGUoKQorICAgICAgICAsIG1fb2ZmZXJUb1JlY2Vp
dmVWaWRlbygwKQorICAgICAgICAsIG1fb2ZmZXJUb1JlY2VpdmVBdWRpbygwKQorICAgICAgICAs
IG1fdm9pY2VBY3Rpdml0eURldGVjdGlvbih0cnVlKQorICAgICAgICAsIG1faWNlUmVzdGFydChm
YWxzZSkKKyAgICB7CisgICAgfQorCisgICAgaW50NjRfdCBtX29mZmVyVG9SZWNlaXZlVmlkZW87
CisgICAgaW50NjRfdCBtX29mZmVyVG9SZWNlaXZlQXVkaW87CisgICAgYm9vbCBtX3ZvaWNlQWN0
aXZpdHlEZXRlY3Rpb247CisgICAgYm9vbCBtX2ljZVJlc3RhcnQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYg
Ly8gUlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5oCmluZGV4IGE4NWZkYjFkOWQzNTkyNjcyNmZiYzgwOWZlNGMzYjliOGQ4OTcyN2EuLjFiZmIw
MjVjMzE1NTkxODA4ZDBmNDg0YzVlYjAyOTQ0MjQzNDVmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCkBAIC00NCw4ICs0NCw4IEBAIGNsYXNzIFJUQ0NvbmZpZ3VyYXRpb25Qcml2YXRl
OwogY2xhc3MgUlRDRFRNRlNlbmRlckhhbmRsZXI7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI7CiBjbGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwotY2xhc3MgUlRDT2ZmZXJPcHRp
b25zOwotY2xhc3MgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zOworY2xhc3MgUlRDT2ZmZXJPcHRpb25z
UHJpdmF0ZTsKK2NsYXNzIFJUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGU7CiBjbGFzcyBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQ7CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOwpAQCAtODMsOCArODMs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShQYXNzUmVmUHRyPFJU
Q0NvbmZpZ3VyYXRpb25Qcml2YXRlPikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9m
ZmVyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8
UlRDT2ZmZXJPcHRpb25zPikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVBbnN3ZXIoUGFz
c1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZl
ckFuc3dlck9wdGlvbnM+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9mZmVyKFBhc3NS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDT2ZmZXJP
cHRpb25zUHJpdmF0ZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKFBhc3NS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDT2ZmZXJB
bnN3ZXJPcHRpb25zUHJpdmF0ZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxEZXNj
cmlwdGlvbihQYXNzUmVmUHRyPFJUQ1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENTZXNzaW9u
RGVzY3JpcHRpb25EZXNjcmlwdG9yPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW1vdGVE
ZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJUQ1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPikgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPiBsb2NhbERlc2NyaXB0aW9uKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jay5jcHAKaW5kZXggMTU2Y2I5MWMwNDM0MDQ0ZGEwOTQ5N2I3NDUw
MjFhMDc5NTExODVhZS4uYTI0NTA5NWM2NjJkMGEzMDZiN2JkOTI5ODdkMjFlNjgwNTFhZTQ0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCkBAIC01OCwxMyArNTgsMTMgQEAgYm9vbCBSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjppbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmln
dXJhdGlvblByaXZhdGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlw
dGlvblJlcXVlc3Q+IHJlcXVlc3QsIFBhc3NSZWZQdHI8UlRDT2ZmZXJPcHRpb25zPikKK3ZvaWQg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jazo6Y3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiByZXF1ZXN0LCBQYXNzUmVmUHRyPFJUQ09mZmVyT3B0
aW9uc1ByaXZhdGU+KQogewogICAgIFJlZlB0cjxTZXNzaW9uUmVxdWVzdE5vdGlmaWVyPiBub3Rp
ZmllciA9IGFkb3B0UmVmKG5ldyBTZXNzaW9uUmVxdWVzdE5vdGlmaWVyKHJlcXVlc3QsIFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmNyZWF0ZSgib2ZmZXIiLCAibG9jYWwiKSkpOwog
ICAgIG1fdGltZXJFdmVudHMuYXBwZW5kKGFkb3B0UmVmKG5ldyBUaW1lckV2ZW50KHRoaXMsIG5v
dGlmaWVyKSkpOwogfQogCi12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0
ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+IHJlcXVlc3Qs
IFBhc3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPikKK3ZvaWQgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyTW9jazo6Y3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0
aW9uUmVxdWVzdD4gcmVxdWVzdCwgUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnNQcml2
YXRlPikKIHsKICAgICBSZWZQdHI8U2Vzc2lvblJlcXVlc3ROb3RpZmllcj4gbm90aWZpZXIgPSBh
ZG9wdFJlZihuZXcgU2Vzc2lvblJlcXVlc3ROb3RpZmllcihyZXF1ZXN0LCBSVENTZXNzaW9uRGVz
Y3JpcHRpb25EZXNjcmlwdG9yOjpjcmVhdGUoImFuc3dlciIsICJsb2NhbCIpKSk7CiAgICAgbV90
aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3IFRpbWVyRXZlbnQodGhpcywgbm90aWZpZXIp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyTW9jay5oCmluZGV4IDVjYjVjNzgyZTU1NGIyNTBmM2I0NjAzNzUz
YTQwNDg1NThkMjcxMWUuLjRhOGYyZmM4ZGZlODEwN2EwNzQzNGM1ZGUzZWMzOWI0NzYzYmVjYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyTW9jay5oCkBAIC00Myw4ICs0Myw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvblByaXZh
dGU+KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZlcihQYXNzUmVmUHRy
PFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ09mZmVyT3B0aW9u
cz4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9w
dGlvbnM+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2ZmZXIoUGFzc1JlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZlck9wdGlv
bnNQcml2YXRlPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuc3dlcihQYXNz
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ09mZmVy
QW5zd2VyT3B0aW9uc1ByaXZhdGU+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9j
YWxEZXNjcmlwdGlvbihQYXNzUmVmUHRyPFJUQ1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldFJlbW90ZURlc2NyaXB0aW9uKFBhc3NSZWZQdHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVm
UHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gbG9jYWxEZXNj
cmlwdGlvbigpIG92ZXJyaWRlOwo=
</data>
<flag name="review"
          id="251922"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227889</attachid>
            <date>2014-03-26 15:02:41 -0700</date>
            <delta_ts>2014-03-26 16:27:15 -0700</delta_ts>
            <desc>Requested changes</desc>
            <filename>bug-130689-20140326190220.patch</filename>
            <type>text/plain</type>
            <size>17995</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMwOTc0NzlkNjYwMTBl
ZmJmMTA0N2M5NTJjODczYWU0NTUyNjNmYy4uNTBiMTI2ZTg3YWRiNDJhMGJlOTc2MWJlN2QzOTY4
MDE3NDg4NGU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0LTAzLTI0ICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIEFkZCBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBmb3IgUlRDT2ZmZXJBbnN3ZXJPcHRp
b25zIGFuZCBSVENPZmZlck9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNv
bi4KKworICAgICAgICBSVENPZmZlckFuc3dlck9wdGlvbnMgYW5kIFJUQ09mZmVyT3B0aW9ucyBv
YmplY3RzIHdlcmUgYmVpbmcgcGFzc2VkIHRvIHBsYXRmb3JtIGNsYXNzLCBjYXVzaW5nIGEgbGF5
ZXIKKyAgICAgICAgdmlvbGF0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENPZmZlckFuc3dlck9wdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDT2ZmZXJBbnN3
ZXJPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ09mZmVyT3B0aW9u
czo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFu
c3dlck9wdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ09mZmVyQW5zd2VyT3B0aW9uczo6
cmVxdWVzdElkZW50aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ09mZmVyQW5zd2VyT3B0aW9u
czo6cHJpdmF0ZU9mZmVyQW5zd2VyT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSVENPZmZl
ckFuc3dlck9wdGlvbnM6OlJUQ09mZmVyQW5zd2VyT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpSVENPZmZlck9wdGlvbnM6Om9mZmVyVG9SZWNlaXZlVmlkZW8pOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDT2ZmZXJPcHRpb25zOjpvZmZlclRvUmVjZWl2ZUF1ZGlvKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ09mZmVyT3B0aW9uczo6dm9pY2VBY3Rpdml0eURldGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSVENPZmZlck9wdGlvbnM6OmljZVJlc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDT2ZmZXJPcHRpb25zOjpwcml2YXRlT2ZmZXJPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ09mZmVyT3B0aW9uczo6UlRDT2ZmZXJPcHRpb25zKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjpjcmVhdGVPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvbjo6Y3JlYXRlQW5zd2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
VENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVPZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVBbnN3ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5oOgor
CiAyMDE0LTAzLTI2ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLiBpT1MgYnVpbGQgZml4IGFmdGVyIHIxNjYzMTIuIFNvZnQgbGluayBD
TVRpbWVSYW5nZUdldEVuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmNwcAppbmRleCA3ZDNlZmFkYTk3
ZDAxMDExNzQ2NWM2ODQ1MGY1ZjQ2ODI3YTBmYjQwLi4xODU1YjgwYzU3NDdlODJmNWEyZmJhNDU0
YmNmZmI3NGJlYmVjMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuY3BwCkBAIC0zMiwxMSArMzIs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHZhbGlkYXRlUmVxdWVz
dElkZW50aXR5KGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09ICJ5
ZXMiIHx8IHZhbHVlID09ICJubyIgfHwgdmFsdWUgPT0gImlmY29uZmlndXJlZCI7Ci19Ci0KIFBh
c3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiBSVENPZmZlckFuc3dlck9wdGlvbnM6OmNy
ZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiBvZmZlckFuc3dlck9wdGlvbnMgPSBhZG9w
dFJlZihuZXcgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zKCkpOwpAQCAtNTMsMTMgKzQ4LDE0IEBAIFBh
c3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zPiBSVENPZmZlckFuc3dlck9wdGlvbnM6OmNy
ZWF0ZShjb25zdCBEaWN0aW9uYXJ5CiAKIGJvb2wgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zOjppbml0
aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCiB7CisgICAgaWYgKCFtX3ByaXZhdGUp
CisgICAgICAgIG1fcHJpdmF0ZSA9IFJUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGU6OmNyZWF0
ZSgpOworCiAgICAgU3RyaW5nIHJlcXVlc3RJZGVudGl0eTsKICAgICBpZiAoIW9wdGlvbnMuaXNV
bmRlZmluZWRPck51bGwoKSAmJiAoIW9wdGlvbnMuZ2V0KCJyZXF1ZXN0SWRlbnRpdHkiLCByZXF1
ZXN0SWRlbnRpdHkpIHx8IHJlcXVlc3RJZGVudGl0eS5pc0VtcHR5KCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAodmFsaWRhdGVSZXF1ZXN0SWRlbnRpdHkocmVxdWVzdElkZW50
aXR5KSkKLSAgICAgICAgbV9yZXF1ZXN0SWRlbnRpdHkgPSByZXF1ZXN0SWRlbnRpdHk7Ci0KKyAg
ICBtX3ByaXZhdGUtPnNldFJlcXVlc3RJZGVudGl0eShyZXF1ZXN0SWRlbnRpdHkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC03OCw2ICs3NCw5IEBAIFBhc3NSZWZQdHI8UlRDT2ZmZXJPcHRp
b25zPiBSVENPZmZlck9wdGlvbnM6OmNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBF
CiAKIGJvb2wgUlRDT2ZmZXJPcHRpb25zOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIG9w
dGlvbnMpCiB7CisgICAgUmVmUHRyPFJUQ09mZmVyT3B0aW9uc1ByaXZhdGU+IG9wdGlvbnNQcml2
YXRlID0gUlRDT2ZmZXJPcHRpb25zUHJpdmF0ZTo6Y3JlYXRlKCk7CisgICAgbV9wcml2YXRlID0g
b3B0aW9uc1ByaXZhdGU7CisKICAgICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtODksMjUgKzg4LDI5IEBAIGJvb2wgUlRDT2ZmZXJP
cHRpb25zOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCiAgICAgaWYgKCFv
cHRpb25zLmdldCgib2ZmZXJUb1JlY2VpdmVWaWRlbyIsIG9mZmVyVG9SZWNlaXZlVmlkZW9TdHIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX29mZmVyVG9SZWNlaXZlVmlkZW8gPSBv
ZmZlclRvUmVjZWl2ZVZpZGVvU3RyLnRvSW50NjRTdHJpY3QoJm51bWJlckNvbnZlcnNpb25TdWNj
ZXNzKTsKKyAgICBpbnQ2NF90IGludENvbnZlcnNpb25SZXN1bHQgPSBvZmZlclRvUmVjZWl2ZVZp
ZGVvU3RyLnRvSW50NjRTdHJpY3QoJm51bWJlckNvbnZlcnNpb25TdWNjZXNzKTsKICAgICBpZiAo
IW51bWJlckNvbnZlcnNpb25TdWNjZXNzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBv
cHRpb25zUHJpdmF0ZS0+c2V0T2ZmZXJUb1JlY2VpdmVWaWRlbyhpbnRDb252ZXJzaW9uUmVzdWx0
KTsKKwogICAgIFN0cmluZyBvZmZlclRvUmVjZWl2ZUF1ZGlvU3RyOwogICAgIGlmICghb3B0aW9u
cy5nZXQoIm9mZmVyVG9SZWNlaXZlQXVkaW8iLCBvZmZlclRvUmVjZWl2ZUF1ZGlvU3RyKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9vZmZlclRvUmVjZWl2ZUF1ZGlvID0gb2ZmZXJU
b1JlY2VpdmVBdWRpb1N0ci50b0ludDY0U3RyaWN0KCZudW1iZXJDb252ZXJzaW9uU3VjY2Vzcyk7
CisgICAgaW50Q29udmVyc2lvblJlc3VsdCA9IG9mZmVyVG9SZWNlaXZlQXVkaW9TdHIudG9JbnQ2
NFN0cmljdCgmbnVtYmVyQ29udmVyc2lvblN1Y2Nlc3MpOwogICAgIGlmICghbnVtYmVyQ29udmVy
c2lvblN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIG9wdGlvbnNQcml2YXRl
LT5zZXRPZmZlclRvUmVjZWl2ZUF1ZGlvKGludENvbnZlcnNpb25SZXN1bHQpOworCiAgICAgYm9v
bCB2b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOwogICAgIGlmIChvcHRpb25zLmdldCgidm9pY2VBY3Rp
dml0eURldGVjdGlvbiIsIHZvaWNlQWN0aXZpdHlEZXRlY3Rpb24pKQotICAgICAgICBtX3ZvaWNl
QWN0aXZpdHlEZXRlY3Rpb24gPSB2b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOworICAgICAgICBvcHRp
b25zUHJpdmF0ZS0+c2V0Vm9pY2VBY3Rpdml0eURldGVjdGlvbih2b2ljZUFjdGl2aXR5RGV0ZWN0
aW9uKTsKIAogICAgIGJvb2wgaWNlUmVzdGFydDsKICAgICBpZiAob3B0aW9ucy5nZXQoImljZVJl
c3RhcnQiLCBpY2VSZXN0YXJ0KSkKLSAgICAgICAgbV9pY2VSZXN0YXJ0ID0gaWNlUmVzdGFydDsK
KyAgICAgICAgb3B0aW9uc1ByaXZhdGUtPnNldEljZVJlc3RhcnQoaWNlUmVzdGFydCk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oCmluZGV4IGQyNmI5MDhmZmUzNTE2
NjBiZGUwNmIyYWFkZjE3MmIyZTlkNDI5MzIuLmFkNTgyNDhiZDAwMWM2NzM1ZjEzNWM3ZGY5MmMw
NmFhZWZlMmMzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuaApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00MSw0NiArNDIsMzMg
QEAgY2xhc3MgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDT2Zm
ZXJBbnN3ZXJPcHRpb25zPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDT2Zm
ZXJBbnN3ZXJPcHRpb25zPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUm
KTsKIAotICAgIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkZW50aXR5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0SWRlbnRpdHk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZGVudGl0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS0+cmVxdWVzdElkZW50aXR5KCk7IH0KKyAgICBSVENP
ZmZlckFuc3dlck9wdGlvbnNQcml2YXRlKiBwcml2YXRlT2ZmZXJBbnN3ZXJPcHRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIH5SVENPZmZlckFu
c3dlck9wdGlvbnMoKSB7IH0KIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFs
aXplKGNvbnN0IERpY3Rpb25hcnkmKTsKLSAgICBSVENPZmZlckFuc3dlck9wdGlvbnMoKQotICAg
ICAgICA6IG1fcmVxdWVzdElkZW50aXR5KCJpZmNvbmZpZ3VyZWQiKQotICAgIHsKLSAgICB9Cisg
ICAgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zKCkgeyB9CiAKLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1f
cmVxdWVzdElkZW50aXR5OworICAgIFJlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRl
PiBtX3ByaXZhdGU7CiB9OwogCiBjbGFzcyBSVENPZmZlck9wdGlvbnMgOiBwdWJsaWMgUlRDT2Zm
ZXJBbnN3ZXJPcHRpb25zIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENPZmZl
ck9wdGlvbnM+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgaW50NjRfdCBvZmZlclRvUmVjZWl2ZVZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9vZmZlclRv
UmVjZWl2ZVZpZGVvOyB9Ci0gICAgaW50NjRfdCBvZmZlclRvUmVjZWl2ZUF1ZGlvKCkgY29uc3Qg
eyByZXR1cm4gbV9vZmZlclRvUmVjZWl2ZUF1ZGlvOyB9Ci0gICAgYm9vbCB2b2ljZUFjdGl2aXR5
RGV0ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOyB9Ci0g
ICAgYm9vbCBpY2VSZXN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9pY2VSZXN0YXJ0OyB9CisgICAg
aW50NjRfdCBvZmZlclRvUmVjZWl2ZVZpZGVvKCkgY29uc3QgeyByZXR1cm4gcHJpdmF0ZU9mZmVy
T3B0aW9ucygpLT5vZmZlclRvUmVjZWl2ZVZpZGVvKCk7IH0KKyAgICBpbnQ2NF90IG9mZmVyVG9S
ZWNlaXZlQXVkaW8oKSBjb25zdCB7IHJldHVybiBwcml2YXRlT2ZmZXJPcHRpb25zKCktPm9mZmVy
VG9SZWNlaXZlQXVkaW8oKTsgfQorICAgIGJvb2wgdm9pY2VBY3Rpdml0eURldGVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHByaXZhdGVPZmZlck9wdGlvbnMoKS0+dm9pY2VBY3Rpdml0eURldGVjdGlv
bigpOyB9CisgICAgYm9vbCBpY2VSZXN0YXJ0KCkgY29uc3QgeyByZXR1cm4gcHJpdmF0ZU9mZmVy
T3B0aW9ucygpLT5pY2VSZXN0YXJ0KCk7IH0KKyAgICBSVENPZmZlck9wdGlvbnNQcml2YXRlKiBw
cml2YXRlT2ZmZXJPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UlRDT2ZmZXJP
cHRpb25zUHJpdmF0ZSo+KG1fcHJpdmF0ZS5nZXQoKSk7IH0KIAogICAgIHZpcnR1YWwgflJUQ09m
ZmVyT3B0aW9ucygpIHsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXpl
KGNvbnN0IERpY3Rpb25hcnkmKSBvdmVycmlkZTsKLSAgICBSVENPZmZlck9wdGlvbnMoKQotICAg
ICAgICA6IG1fb2ZmZXJUb1JlY2VpdmVWaWRlbygwKQotICAgICAgICAsIG1fb2ZmZXJUb1JlY2Vp
dmVBdWRpbygwKQotICAgICAgICAsIG1fdm9pY2VBY3Rpdml0eURldGVjdGlvbih0cnVlKQotICAg
ICAgICAsIG1faWNlUmVzdGFydChmYWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgaW50NjRfdCBt
X29mZmVyVG9SZWNlaXZlVmlkZW87Ci0gICAgaW50NjRfdCBtX29mZmVyVG9SZWNlaXZlQXVkaW87
Ci0gICAgYm9vbCBtX3ZvaWNlQWN0aXZpdHlEZXRlY3Rpb247Ci0gICAgYm9vbCBtX2ljZVJlc3Rh
cnQ7CisgICAgUlRDT2ZmZXJPcHRpb25zKCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDRjMmM2NTFmMjM1ZDdmMDNiNWY0MjE5MjM4NDkzZDRk
YmRkOWFhYTUuLjViNGU5ODRkMGUzZWU5NzVkNGI0MzI3YzJjMzdhYzQwY2NiOTVmYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6
Y3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjaz4gc3UK
ICAgICB9CiAKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdEltcGw+IHJl
cXVlc3QgPSBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0SW1wbDo6Y3JlYXRlKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBt
X3BlZXJIYW5kbGVyLT5jcmVhdGVPZmZlcihyZXF1ZXN0LnJlbGVhc2UoKSwgb3B0aW9ucy5yZWxl
YXNlKCkpOworICAgIG1fcGVlckhhbmRsZXItPmNyZWF0ZU9mZmVyKHJlcXVlc3QucmVsZWFzZSgp
LCBvcHRpb25zLT5wcml2YXRlT2ZmZXJPcHRpb25zKCkpOwogfQogCiB2b2lkIFJUQ1BlZXJDb25u
ZWN0aW9uOjpjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uRXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgY29uc3QgRGljdGlvbmFyeSYgYW5zd2VyT3B0aW9ucywg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBSVENQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJh
Y2s+IHMKICAgICB9CiAKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdElt
cGw+IHJlcXVlc3QgPSBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0SW1wbDo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
LSAgICBtX3BlZXJIYW5kbGVyLT5jcmVhdGVBbnN3ZXIocmVxdWVzdC5yZWxlYXNlKCksIG9wdGlv
bnMucmVsZWFzZSgpKTsKKyAgICBtX3BlZXJIYW5kbGVyLT5jcmVhdGVBbnN3ZXIocmVxdWVzdC5y
ZWxlYXNlKCksIG9wdGlvbnMtPnByaXZhdGVPZmZlckFuc3dlck9wdGlvbnMoKSk7CiB9CiAKIGJv
b2wgUlRDUGVlckNvbm5lY3Rpb246OmNoZWNrU3RhdGVGb3JMb2NhbERlc2NyaXB0aW9uKFJUQ1Nl
c3Npb25EZXNjcmlwdGlvbiogbG9jYWxEZXNjcmlwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0
aW9uc1ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMWUyODNlMjgyYmFkZGViNjYzNjYyMjM3YzNjYTRj
ZGFmM2EyNWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMTA4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBS
VENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlX2gKKyNkZWZpbmUgUlRDT2ZmZXJBbnN3ZXJPcHRp
b25zUHJpdmF0ZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29s
IHZhbGlkYXRlUmVxdWVzdElkZW50aXR5KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgcmV0
dXJuIHZhbHVlID09ICJ5ZXMiIHx8IHZhbHVlID09ICJubyIgfHwgdmFsdWUgPT0gImlmY29uZmln
dXJlZCI7Cit9CisKK2NsYXNzIFJUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZT4gY3JlYXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
UHJpdmF0ZSgpKTsKKyAgICB9CisKKyAgICBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZGVudGl0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdElkZW50aXR5OyB9CisgICAgdm9pZCBzZXRSZXF1ZXN0
SWRlbnRpdHkoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWRlbnRpdHkpCisgICAgeworICAgICAgICBp
ZiAoIXZhbGlkYXRlUmVxdWVzdElkZW50aXR5KHJlcXVlc3RJZGVudGl0eSkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgbV9yZXF1ZXN0SWRlbnRpdHkgPSByZXF1ZXN0SWRlbnRpdHk7
CisgICAgfQorCisgICAgdmlydHVhbCB+UlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZSgpIHsg
fQorCitwcm90ZWN0ZWQ6CisgICAgUlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZSgpCisgICAg
ICAgIDogbV9yZXF1ZXN0SWRlbnRpdHkoImlmY29uZmlndXJlZCIpCisgICAgeworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBTdHJpbmcgbV9yZXF1ZXN0SWRlbnRpdHk7Cit9OworCitjbGFzcyBSVENP
ZmZlck9wdGlvbnNQcml2YXRlIDogcHVibGljIFJUQ09mZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGUg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ09mZmVyT3B0aW9uc1ByaXZhdGU+
IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ09mZmVyT3B0
aW9uc1ByaXZhdGUoKSk7CisgICAgfQorCisgICAgaW50NjRfdCBvZmZlclRvUmVjZWl2ZVZpZGVv
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZlclRvUmVjZWl2ZVZpZGVvOyB9CisgICAgdm9pZCBzZXRP
ZmZlclRvUmVjZWl2ZVZpZGVvKGludDY0X3Qgb2ZmZXJUb1JlY2VpdmVWaWRlbykgeyBtX29mZmVy
VG9SZWNlaXZlVmlkZW8gPSBvZmZlclRvUmVjZWl2ZVZpZGVvOyB9CisgICAgaW50NjRfdCBvZmZl
clRvUmVjZWl2ZUF1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9vZmZlclRvUmVjZWl2ZUF1ZGlvOyB9
CisgICAgdm9pZCBzZXRPZmZlclRvUmVjZWl2ZUF1ZGlvKGludDY0X3Qgb2ZmZXJUb1JlY2VpdmVB
dWRpbykgeyBtX29mZmVyVG9SZWNlaXZlQXVkaW8gPSBvZmZlclRvUmVjZWl2ZUF1ZGlvOyB9Cisg
ICAgYm9vbCB2b2ljZUFjdGl2aXR5RGV0ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUFj
dGl2aXR5RGV0ZWN0aW9uOyB9CisgICAgdm9pZCBzZXRWb2ljZUFjdGl2aXR5RGV0ZWN0aW9uKGJv
b2wgdm9pY2VBY3Rpdml0eURldGVjdGlvbikgeyBtX3ZvaWNlQWN0aXZpdHlEZXRlY3Rpb24gPSB2
b2ljZUFjdGl2aXR5RGV0ZWN0aW9uOyB9CisgICAgYm9vbCBpY2VSZXN0YXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pY2VSZXN0YXJ0OyB9CisgICAgdm9pZCBzZXRJY2VSZXN0YXJ0KGJvb2wgaWNlUmVz
dGFydCkgeyBtX2ljZVJlc3RhcnQgPSBpY2VSZXN0YXJ0OyB9CisKKyAgICB2aXJ0dWFsIH5SVENP
ZmZlck9wdGlvbnNQcml2YXRlKCkgeyB9CisKK3ByaXZhdGU6CisgICAgUlRDT2ZmZXJPcHRpb25z
UHJpdmF0ZSgpCisgICAgICAgIDogUlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZSgpCisgICAg
ICAgICwgbV9vZmZlclRvUmVjZWl2ZVZpZGVvKDApCisgICAgICAgICwgbV9vZmZlclRvUmVjZWl2
ZUF1ZGlvKDApCisgICAgICAgICwgbV92b2ljZUFjdGl2aXR5RGV0ZWN0aW9uKHRydWUpCisgICAg
ICAgICwgbV9pY2VSZXN0YXJ0KGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQ2NF90IG1f
b2ZmZXJUb1JlY2VpdmVWaWRlbzsKKyAgICBpbnQ2NF90IG1fb2ZmZXJUb1JlY2VpdmVBdWRpbzsK
KyAgICBib29sIG1fdm9pY2VBY3Rpdml0eURldGVjdGlvbjsKKyAgICBib29sIG1faWNlUmVzdGFy
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggYTg1ZmRiMWQ5ZDM1OTI2NzI2ZmJjODA5ZmU0
YzNiOWI4ZDg5NzI3YS4uMWJmYjAyNWMzMTU1OTE4MDhkMGY0ODRjNWViMDI5NDQyNDM0NWZhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTQ0LDggKzQ0LDggQEAgY2xhc3MgUlRD
Q29uZmlndXJhdGlvblByaXZhdGU7CiBjbGFzcyBSVENEVE1GU2VuZGVySGFuZGxlcjsKIGNsYXNz
IFJUQ0RhdGFDaGFubmVsSGFuZGxlcjsKIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I7
Ci1jbGFzcyBSVENPZmZlck9wdGlvbnM7Ci1jbGFzcyBSVENPZmZlckFuc3dlck9wdGlvbnM7Citj
bGFzcyBSVENPZmZlck9wdGlvbnNQcml2YXRlOworY2xhc3MgUlRDT2ZmZXJBbnN3ZXJPcHRpb25z
UHJpdmF0ZTsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIGNsYXNzIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I7CkBAIC04Myw4ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpbml0
aWFsaXplKFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvblByaXZhdGU+KSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25S
ZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZlck9wdGlvbnM+KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+
LCBQYXNzUmVmUHRyPFJUQ09mZmVyQW5zd2VyT3B0aW9ucz4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Piwg
UGFzc1JlZlB0cjxSVENPZmZlck9wdGlvbnNQcml2YXRlPikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Piwg
UGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnNQcml2YXRlPikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKFBhc3NSZWZQdHI8UlRDVm9pZFJlcXVlc3Q+LCBQ
YXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFJlbW90ZURlc2NyaXB0aW9uKFBhc3NSZWZQdHI8UlRDVm9pZFJlcXVlc3Q+
LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KSA9IDA7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IGxvY2Fs
RGVzY3JpcHRpb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmNwcAppbmRleCAxNTZjYjkx
YzA0MzQwNDRkYTA5NDk3Yjc0NTAyMWEwNzk1MTE4NWFlLi5hMjQ1MDk1YzY2MmQwYTMwNmI3YmQ5
Mjk4N2QyMWU2ODA1MWFlNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5jcHAKQEAgLTU4LDEz
ICs1OCwxMyBAQCBib29sIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmluaXRpYWxpemUo
UGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uUHJpdmF0ZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2s6OmNyZWF0ZU9mZmVyKFBhc3NSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4gcmVxdWVzdCwgUGFzc1JlZlB0cjxSVENP
ZmZlck9wdGlvbnM+KQordm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVP
ZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+IHJlcXVlc3QsIFBh
c3NSZWZQdHI8UlRDT2ZmZXJPcHRpb25zUHJpdmF0ZT4pCiB7CiAgICAgUmVmUHRyPFNlc3Npb25S
ZXF1ZXN0Tm90aWZpZXI+IG5vdGlmaWVyID0gYWRvcHRSZWYobmV3IFNlc3Npb25SZXF1ZXN0Tm90
aWZpZXIocmVxdWVzdCwgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcjo6Y3JlYXRlKCJv
ZmZlciIsICJsb2NhbCIpKSk7CiAgICAgbV90aW1lckV2ZW50cy5hcHBlbmQoYWRvcHRSZWYobmV3
IFRpbWVyRXZlbnQodGhpcywgbm90aWZpZXIpKSk7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyTW9jazo6Y3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0
aW9uUmVxdWVzdD4gcmVxdWVzdCwgUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnM+KQor
dm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrOjpjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0
cjxSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiByZXF1ZXN0LCBQYXNzUmVmUHRyPFJUQ09m
ZmVyQW5zd2VyT3B0aW9uc1ByaXZhdGU+KQogewogICAgIFJlZlB0cjxTZXNzaW9uUmVxdWVzdE5v
dGlmaWVyPiBub3RpZmllciA9IGFkb3B0UmVmKG5ldyBTZXNzaW9uUmVxdWVzdE5vdGlmaWVyKHJl
cXVlc3QsIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I6OmNyZWF0ZSgiYW5zd2VyIiwg
ImxvY2FsIikpKTsKICAgICBtX3RpbWVyRXZlbnRzLmFwcGVuZChhZG9wdFJlZihuZXcgVGltZXJF
dmVudCh0aGlzLCBub3RpZmllcikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmgKaW5kZXggNWNiNWM3
ODJlNTU0YjI1MGYzYjQ2MDM3NTNhNDA0ODU1OGQyNzExZS4uNGE4ZjJmYzhkZmU4MTA3YTA3NDM0
YzVkZTNlYzM5YjQ3NjNiZWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJNb2NrLmgKQEAgLTQzLDggKzQz
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoUGFzc1JlZlB0cjxS
VENDb25maWd1cmF0aW9uUHJpdmF0ZT4pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZU9mZmVyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4sIFBhc3NS
ZWZQdHI8UlRDT2ZmZXJPcHRpb25zPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0
ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVm
UHRyPFJUQ09mZmVyQW5zd2VyT3B0aW9ucz4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVPZmZlcihQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNz
UmVmUHRyPFJUQ09mZmVyT3B0aW9uc1ByaXZhdGU+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlQW5zd2VyKFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4s
IFBhc3NSZWZQdHI8UlRDT2ZmZXJBbnN3ZXJPcHRpb25zUHJpdmF0ZT4pIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKFBhc3NSZWZQdHI8UlRDVm9pZFJlcXVl
c3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+KSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb24oUGFzc1JlZlB0cjxSVENW
b2lkUmVxdWVzdD4sIFBhc3NSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4p
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yPiBsb2NhbERlc2NyaXB0aW9uKCkgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>