<?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>55338</bug_id>
          
          <creation_ts>2011-02-27 17:41:05 -0800</creation_ts>
          <short_desc>applyInlineStyleToPushDown and removeInlineStyleFromElement should take EditingStyle</short_desc>
          <delta_ts>2011-03-03 00:35:28 -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>HTML Editing</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>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>55339</blocked>
    
    <blocked>49956</blocked>
    
    <blocked>55349</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>358829</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 17:41:05 -0800</bug_when>
    <thetext>This is a cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358847</commentid>
    <comment_count>1</comment_count>
      <attachid>84009</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 19:47:17 -0800</bug_when>
    <thetext>Created attachment 84009
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358848</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 19:49:12 -0800</bug_when>
    <thetext>I&apos;ll split the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358852</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 19:54:14 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;ll split the patch.

Oops, I take it back.  Fixing these bugs require that we share the code I&apos;m moving in this patch.   On the other hand, sharing code without fixing the bugs is impossible.  So this patch can&apos;t be split into smaller pieces :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358882</commentid>
    <comment_count>4</comment_count>
      <attachid>84009</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 21:10:14 -0800</bug_when>
    <thetext>Comment on attachment 84009
fixes the bug

Found a way to split it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358887</commentid>
    <comment_count>5</comment_count>
      <attachid>84014</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 21:29:39 -0800</bug_when>
    <thetext>Created attachment 84014
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359176</commentid>
    <comment_count>6</comment_count>
      <attachid>84014</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-28 11:02:36 -0800</bug_when>
    <thetext>Comment on attachment 84014
cleanup

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

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1229
&gt; -    
&gt; +       

Nit: Did you mean to add spaces here?

&gt; Source/WebCore/editing/EditingStyle.cpp:327
&gt; +    ExceptionCode ec;
&gt; +    m_mutableStyle-&gt;setProperty(propertyID, value, important, ec);

Do we need to check or assert the exception code here?

&gt; Source/WebCore/editing/EditingStyle.h:39
&gt; +#include &lt;wtf/text/WTFString.h&gt;

Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359720</commentid>
    <comment_count>7</comment_count>
      <attachid>84014</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 00:38:36 -0800</bug_when>
    <thetext>Comment on attachment 84014
cleanup

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

&gt;&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1229
&gt;&gt; +       
&gt; 
&gt; Nit: Did you mean to add spaces here?

Oops, I meant to remove the spaces.

&gt;&gt; Source/WebCore/editing/EditingStyle.cpp:327
&gt;&gt; +    m_mutableStyle-&gt;setProperty(propertyID, value, important, ec);
&gt; 
&gt; Do we need to check or assert the exception code here?

I don&apos;t think we need to given:

void CSSMutableStyleDeclaration::setProperty(int propertyID, const String&amp; value, bool important, ExceptionCode&amp; ec)
{
    ec = 0;
    setProperty(propertyID, value, important, true);
}

&gt;&gt; Source/WebCore/editing/EditingStyle.h:39
&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; Why is this needed?

Because setProperty takes a String reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359721</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 00:40:09 -0800</bug_when>
    <thetext>Committed r79976: &lt;http://trac.webkit.org/changeset/79976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359732</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 00:51:19 -0800</bug_when>
    <thetext>Thanks for the review, Tony.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359992</commentid>
    <comment_count>10</comment_count>
      <attachid>84014</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-01 10:16:52 -0800</bug_when>
    <thetext>Comment on attachment 84014
cleanup

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

&gt;&gt;&gt; Source/WebCore/editing/EditingStyle.h:39
&gt;&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt;&gt; 
&gt;&gt; Why is this needed?
&gt; 
&gt; Because setProperty takes a String reference.

Can we forward declare String instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360032</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-01 11:26:56 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt;&gt;&gt; Source/WebCore/editing/EditingStyle.h:39
&gt; &gt;&gt;&gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; &gt;&gt; 
&gt; &gt;&gt; Why is this needed?
&gt; &gt; 
&gt; &gt; Because setProperty takes a String reference.
&gt; 
&gt; Can we forward declare String instead?

No, but we can include &lt;wtf/Forward.h&gt;, which is the right thing to do here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360606</commentid>
    <comment_count>12</comment_count>
      <attachid>84370</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 23:07:53 -0800</bug_when>
    <thetext>Created attachment 84370
Includes wtf/Forward.h instead of wtf/text/WTFString.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360956</commentid>
    <comment_count>13</comment_count>
      <attachid>84370</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-03-02 12:01:23 -0800</bug_when>
    <thetext>Comment on attachment 84370
Includes wtf/Forward.h instead of wtf/text/WTFString.h

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

&gt; Source/WebCore/editing/EditingStyle.h:39
&gt;  #include &lt;wtf/Vector.h&gt;

It looks like you can remove this as well since it&apos;s in Forward.h and only used as pointers and references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361311</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-02 19:30:32 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 84370 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84370&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/EditingStyle.h:39
&gt; &gt;  #include &lt;wtf/Vector.h&gt;
&gt; 
&gt; It looks like you can remove this as well since it&apos;s in Forward.h and only used as pointers and references.

It seems like I can&apos;t do that because Forward.h only contains the version that have the inline capacity :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361417</commentid>
    <comment_count>15</comment_count>
      <attachid>84370</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-03 00:35:21 -0800</bug_when>
    <thetext>Comment on attachment 84370
Includes wtf/Forward.h instead of wtf/text/WTFString.h

Clearing flags on attachment: 84370

Committed r80213: &lt;http://trac.webkit.org/changeset/80213&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361418</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-03 00:35:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84009</attachid>
            <date>2011-02-27 19:47:17 -0800</date>
            <delta_ts>2011-02-27 21:10:14 -0800</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-55338-20110228124715.patch</filename>
            <type>text/plain</type>
            <size>33825</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDItMjcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24gYW5kIHJlbW92ZUlu
bGluZVN0eWxlRnJvbUVsZW1lbnQgc2hvdWxkIHRha2UgRWRpdGluZ1N0eWxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTMzOAorCisgICAgICAgIERl
cGxveWVkIEVkaXRpbmdTdHlsZSBpbiBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93biBhbmQgcmVt
b3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudC4gQWxzbyBleHRyYWN0ZWQKKyAgICAgICAgRWRpdGlu
Z1N0eWxlOjptZXJnZUlubGluZVN0eWxlT2ZFbGVtZW50IGZyb20gcmVtb3ZlSW5saW5lU3R5bGVG
cm9tRWxlbWVudCBhbmQgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24uCisKKyAgICAgICAgQWxz
byBmaXhlZCBhIGJ1ZyBpbiBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93biBzbyB0aGF0IGl0IGFw
cGxpZXMgdGV4dCBkZWNvcmF0aW9ucyB1c2luZyBzdHlsZSBhdHRyaWJ1dGUgZXZlbiB3aGVuCisg
ICAgICAgIHRoZSBpbmxpbmUgc3R5bGUgb2YgZWxlbWVudCBkaWRuJ3Qgb3JpZ2luYWxseSBoYXZl
IGFueSB0ZXh0IGRlY29yYXRpb25zLiBUaGlzIHBhdGNoIG11c3QgYWxzbyBoYXZlIGZpeGVkIGEg
YnVnIGluCisgICAgICAgIG1lcmdlVHlwaW5nU3R5bGUgdG8gaW1wcm9wZXJseSBvdmVycmlkZXMg
dGhlIGV4aXN0aW5nIHRleHQgZGVjb3JhdGlvbnMgCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9l
eGVjQ29tbWFuZC9tZXJnZS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmctc3R5bGUuaHRtbAor
CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCk6IFRh
a2VzIEVkaXRpbmdTdHlsZTsgY2FsbHMgbWVyZ2VJbmxpbmVTdHlsZU9mRWxlbWVudC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbXBsaWNpdGx5U3R5bGVkRWxl
bWVudCk6IFRha2VzIEVkaXRpbmdTdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVD
b21tYW5kOjpyZW1vdmVDU1NTdHlsZSk6IFRha2VzIEVkaXRpbmdTdHlsZTsgTW92ZWQgdGhlIGNv
ZGUgdG8gZXh0cmFjdCBzdHlsZXMgdG8KKyAgICAgICAgY29uZmxpY3RzV2l0aElubGluZVN0eWxl
T2ZFbGVtZW50IHRvIGF2b2lkIGRpcmVjdGx5IG1hbmlwdWxhdGluIHN0eWxlcyBhbmQgdG8gbWF0
Y2ggdGhlIHJlc3Qgb2YgY29uZmxpY3RzKiBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpB
cHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24pOiBUYWtlcyBFZGl0
aW5nU3R5bGU7IGNhbGxzIG1lcmdlSW5saW5lU3R5bGVPZkVsZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUpOiBU
YWtlcyBFZGl0aW5nU3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6
cmVtb3ZlSW5saW5lU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQp
OiBBZGRlZCBleHRyYWN0ZWRTdHlsZSB0byB0aGUgYXJndW1lbnQgbGlzdC4KKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQp
OiBUaGUgdHlwZSBvZiBleHRyYWN0ZWRTdHlsZSBpcyBjaGFuZ2VkIHRvIEVkaXRpbmdTdHlsZS4K
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6ZXh0cmFjdENvbmZsaWN0aW5nSW1wbGlj
aXRTdHlsZU9mQXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjptZXJnZVR5cGluZ1N0eWxlKTogQ2FsbHMgbWVyZ2VTdHlsZS4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6bWVyZ2VJbmxpbmVTdHlsZU9mRWxlbWVudCk6IEFkZGVkOyBjYWxs
cyBtZXJnZVN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxl
KTogRXh0cmFjdGVkIGZyb20gcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCBhbmQgYXBwbHlJ
bmxpbmVTdHlsZVRvUHVzaERvd24uCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxl
T2ZFbGVtZW50KTogVGFrZXMgRWRpdGluZ1N0eWxlLgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0
VGV4dENvbW1hbmQuY3BwOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGluY2x1ZGVzLgorICAgICAgICAq
IGVkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmg6IERpdHRvLgorCiAyMDExLTAyLTI3
ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA3OTgzMSkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMw
LDcgKzExMzAsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVTdHlsZUZyb21SCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGlu
ZVN0eWxlRnJvbUVsZW1lbnQoRWRpdGluZ1N0eWxlKiBzdHlsZSwgUGFzc1JlZlB0cjxIVE1MRWxl
bWVudD4gZWxlbWVudCwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSBtb2RlLCBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpCitib29sIEFwcGx5U3R5bGVDb21tYW5kOjpy
ZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KEVkaXRpbmdTdHlsZSogc3R5bGUsIFBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQsIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgbW9kZSwgRWRp
dGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSkKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAKQEAg
LTExNDEsOCArMTE0MSw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0
eWwKICAgICAgICAgaWYgKG1vZGUgPT0gUmVtb3ZlTm9uZSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBBU1NFUlQoZXh0cmFjdGVkU3R5bGUpOwotICAgICAgICBpZiAoZWxlbWVu
dC0+aW5saW5lU3R5bGVEZWNsKCkpCi0gICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+bWVyZ2Uo
ZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkpOworICAgICAgICBleHRyYWN0ZWRTdHlsZS0+bWVy
Z2VJbmxpbmVTdHlsZU9mRWxlbWVudChlbGVtZW50LmdldCgpKTsKICAgICAgICAgcmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbihlbGVtZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMTE4OSw3ICsxMTg4LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVwbGFjZVdp
dGhTcGFuTwogICAgIH0KIH0KICAgICAKLWJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlt
cGxpY2l0bHlTdHlsZWRFbGVtZW50KEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBl
bGVtZW50LCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlIG1vZGUsIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiBleHRyYWN0ZWRTdHlsZSkKK2Jvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlt
cGxpY2l0bHlTdHlsZWRFbGVtZW50KEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBl
bGVtZW50LCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlIG1vZGUsIEVkaXRpbmdTdHlsZSogZXh0cmFj
dGVkU3R5bGUpCiB7CiAgICAgQVNTRVJUKHN0eWxlKTsKICAgICBpZiAobW9kZSA9PSBSZW1vdmVO
b25lKSB7CkBAIC0xMjE4LDcgKzEyMTcsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1v
dmVJbXBsaWNpdGx5CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1ib29sIEFwcGx5U3R5bGVD
b21tYW5kOjpyZW1vdmVDU1NTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBIVE1MRWxlbWVudCog
ZWxlbWVudCwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSBtb2RlLCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpCitib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVD
U1NTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBIVE1MRWxlbWVudCogZWxlbWVudCwgSW5saW5l
U3R5bGVSZW1vdmFsTW9kZSBtb2RlLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlKQogewog
ICAgIEFTU0VSVChzdHlsZSk7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwpAQCAtMTIyNywxOSArMTIy
NiwxNCBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVDU1NTdHlsZShFCiAgICAgICAg
IHJldHVybiBzdHlsZS0+Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQp
OwogCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5SUQ+IHByb3BlcnRpZXM7Ci0gICAgaWYgKCFzdHls
ZS0+Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQsIHByb3BlcnRpZXMp
KQorICAgIGlmICghc3R5bGUtPmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChlbGVt
ZW50LCBleHRyYWN0ZWRTdHlsZSwgcHJvcGVydGllcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQt
PmlubGluZVN0eWxlRGVjbCgpOworICAgIC8vIEZJWE1FOiBVc2UgbWFzcy1yZW1vdmFsIGZ1bmN0
aW9uIGJ1dCBpdCBuZWVkcyB0byBiZSB1bmRvYWJsZS4KICAgICBBU1NFUlQoaW5saW5lU3R5bGUp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllcy5zaXplKCk7IGkrKykgewot
ICAgICAgICBDU1NQcm9wZXJ0eUlEIGlkID0gcHJvcGVydGllc1tpXTsKLSAgICAgICAgaWYgKGV4
dHJhY3RlZFN0eWxlKSB7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAg
ICAgICAgIGV4dHJhY3RlZFN0eWxlLT5zZXRQcm9wZXJ0eShpZCwgaW5saW5lU3R5bGUtPmdldFBy
b3BlcnR5VmFsdWUoaWQpLCBpbmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlQcmlvcml0eShpZCksIGVj
KTsKLSAgICAgICAgfQotICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShlbGVtZW50LCBpZCk7Ci0g
ICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllcy5zaXplKCk7IGkrKykK
KyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydGllc1tpXSk7CiAKICAg
ICAvLyBObyBuZWVkIHRvIHNlcmlhbGl6ZSA8Zm9vIHN0eWxlPSIiPiBpZiB3ZSBqdXN0IHJlbW92
ZWQgdGhlIGxhc3QgY3NzIHByb3BlcnR5CiAgICAgaWYgKGlubGluZVN0eWxlLT5pc0VtcHR5KCkp
CkBAIC0xMjcxLDUyICsxMjY1LDIzIEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6
aGlnaGVzdEEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihOb2RlKiBub2RlLCBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUpCit2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0
eWxlVG9QdXNoRG93bihOb2RlKiBub2RlLCBFZGl0aW5nU3R5bGUqIHN0eWxlKQogewogICAgIEFT
U0VSVChub2RlKTsKIAotICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5sZW5ndGgoKSB8fCAhbm9k
ZS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5pc0VtcHR5KCkgfHwgIW5v
ZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gbmV3SW5saW5lU3R5bGUgPSBzdHlsZTsKLSAgICBpZiAobm9kZS0+
aXNIVE1MRWxlbWVudCgpKSB7Ci0gICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1M
RWxlbWVudChub2RlKTsKLSAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4aXN0
aW5nSW5saW5lU3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKLQotICAgICAgICAv
LyBBdm9pZCBvdmVycmlkaW5nIGV4aXN0aW5nIHN0eWxlcyBvZiBub2RlCi0gICAgICAgIGlmIChl
eGlzdGluZ0lubGluZVN0eWxlKSB7Ci0gICAgICAgICAgICBuZXdJbmxpbmVTdHlsZSA9IGV4aXN0
aW5nSW5saW5lU3R5bGUtPmNvcHkoKTsKLSAgICAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBzdHlsZS0+ZW5kKCk7Ci0gICAgICAgICAgICBm
b3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0eWxl
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBFeGNlcHRpb25D
b2RlIGVjOwotICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdJbmxpbmVTdHlsZS0+Z2V0UHJv
cGVydHlDU1NWYWx1ZShpdC0+aWQoKSkpCi0gICAgICAgICAgICAgICAgICAgIG5ld0lubGluZVN0
eWxlLT5zZXRQcm9wZXJ0eShpdC0+aWQoKSwgaXQtPnZhbHVlKCktPmNzc1RleHQoKSwgaXQtPmlz
SW1wb3J0YW50KCksIGVjKTsKLQotICAgICAgICAgICAgICAgIC8vIHRleHQtZGVjb3JhdGlvbnMg
YWRkcyB1cAotICAgICAgICAgICAgICAgIGlmIChpdC0+aWQoKSA9PSBDU1NQcm9wZXJ0eVRleHRE
ZWNvcmF0aW9uICYmIGl0LT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdGV4dERlY29yYXRpb24gPSBuZXdJbmxpbmVTdHlsZS0+
Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHRleHREZWNvcmF0aW9uICYmIHRleHREZWNvcmF0aW9uLT5pc1ZhbHVl
TGlzdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIHRleHREZWNv
cmF0aW9uT2ZJbmxpbmVTdHlsZSA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHRleHREZWNv
cmF0aW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogdGV4
dERlY29yYXRpb25PZlN0eWxlQXBwbGllZCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KGl0
LT52YWx1ZSgpKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+LCB1bmRlcmxpbmUsIChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVVuZGVybGluZSkpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiwg
bGluZVRocm91Z2gsIChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1
ZUxpbmVUaHJvdWdoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodGV4dERlY29yYXRpb25PZlN0eWxlQXBwbGllZC0+aGFzVmFsdWUodW5k
ZXJsaW5lLmdldCgpKSAmJiAhdGV4dERlY29yYXRpb25PZklubGluZVN0eWxlLT5oYXNWYWx1ZSh1
bmRlcmxpbmUuZ2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0
aW9uT2ZJbmxpbmVTdHlsZS0+YXBwZW5kKHVuZGVybGluZS5nZXQoKSk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXh0RGVjb3JhdGlvbk9mU3R5bGVBcHBsaWVkLT5oYXNWYWx1ZShs
aW5lVGhyb3VnaC5nZXQoKSkgJiYgIXRleHREZWNvcmF0aW9uT2ZJbmxpbmVTdHlsZS0+aGFzVmFs
dWUobGluZVRocm91Z2guZ2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRE
ZWNvcmF0aW9uT2ZJbmxpbmVTdHlsZS0+YXBwZW5kKGxpbmVUaHJvdWdoLmdldCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gc3R5bGU7Cisg
ICAgaWYgKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+
KG5vZGUpLT5pbmxpbmVTdHlsZURlY2woKSkgeworICAgICAgICBuZXdJbmxpbmVTdHlsZSA9IHN0
eWxlLT5jb3B5KCk7CisgICAgICAgIG5ld0lubGluZVN0eWxlLT5tZXJnZUlubGluZVN0eWxlT2ZF
bGVtZW50KHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obm9kZSkpOwogICAgIH0KIAogICAgIC8v
IFNpbmNlIGFkZElubGluZVN0eWxlSWZOZWVkZWQgY2FuJ3QgYWRkIHN0eWxlcyB0byBibG9jay1m
bG93IHJlbmRlciBvYmplY3RzLCBhZGQgc3R5bGUgYXR0cmlidXRlIGluc3RlYWQuCiAgICAgLy8g
RklYTUU6IGFwcGx5SW5saW5lU3R5bGVUb1JhbmdlIHNob3VsZCBiZSB1c2VkIGhlcmUgaW5zdGVh
ZC4KICAgICBpZiAoKG5vZGUtPnJlbmRlcmVyKCktPmlzQmxvY2tGbG93KCkgfHwgbm9kZS0+Y2hp
bGROb2RlQ291bnQoKSkgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7Ci0gICAgICAgIHNldE5v
ZGVBdHRyaWJ1dGUodG9IVE1MRWxlbWVudChub2RlKSwgc3R5bGVBdHRyLCBuZXdJbmxpbmVTdHls
ZS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZSh0b0hUTUxFbGVtZW50KG5v
ZGUpLCBzdHlsZUF0dHIsIG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzI2LDcgKzEyOTEsNyBAQCB2b2lkIEFwcGx5U3R5
bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlCiAgICAgLy8gV2UgY2FuJ3Qgd3JhcCBub2RlIHdp
dGggdGhlIHN0eWxlZCBlbGVtZW50IGhlcmUgYmVjYXVzZSBuZXcgc3R5bGVkIGVsZW1lbnQgd2ls
bCBuZXZlciBiZSByZW1vdmVkIGlmIHdlIGRpZC4KICAgICAvLyBJZiB3ZSBtb2RpZmllZCB0aGUg
Y2hpbGQgcG9pbnRlciBpbiBwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZSB0byBwb2ludCB0
byBuZXcgc3R5bGUgZWxlbWVudAogICAgIC8vIHRoZW4gd2UgZmFsbCBpbnRvIGFuIGluZmluaXRl
IGxvb3Agd2hlcmUgd2Uga2VlcCByZW1vdmluZyBhbmQgYWRkaW5nIHN0eWxlZCBlbGVtZW50IHdy
YXBwaW5nIG5vZGUuCi0gICAgYWRkSW5saW5lU3R5bGVJZk5lZWRlZChuZXdJbmxpbmVTdHlsZS5n
ZXQoKSwgbm9kZSwgbm9kZSwgRG9Ob3RBZGRTdHlsZWRFbGVtZW50KTsKKyAgICBhZGRJbmxpbmVT
dHlsZUlmTmVlZGVkKG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLCBub2RlLCBub2RlLCBEb05vdEFk
ZFN0eWxlZEVsZW1lbnQpOwogfQogCiB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklu
bGluZVN0eWxlQXJvdW5kTm9kZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBOb2RlKiB0YXJnZXROb2Rl
KQpAQCAtMTM1MSw3ICsxMzE2LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25J
bmxpbmVTdAogICAgICAgICAgICAgc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVs
ZW1lbnQqPihjdXJyZW50KTsKICAgICAgICAgICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQo
c3R5bGVkRWxlbWVudCk7CiAgICAgICAgIH0KLSAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBzdHlsZVRvUHVzaERvd24gPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlVG9QdXNoRG93
biA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CiAgICAgICAgIHJlbW92ZUlubGluZVN0eWxlRnJv
bUVsZW1lbnQoc3R5bGUsIHRvSFRNTEVsZW1lbnQoY3VycmVudCksIFJlbW92ZUlmTmVlZGVkLCBz
dHlsZVRvUHVzaERvd24uZ2V0KCkpOwogCiAgICAgICAgIC8vIFRoZSBpbm5lciBsb29wIHdpbGwg
Z28gdGhyb3VnaCBjaGlsZHJlbiBvbiBlYWNoIGxldmVsCkBAIC0xNDIyLDEwICsxMzg3LDEwIEBA
IHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWwKICAgICAgICAgICAgIFJl
ZlB0cjxIVE1MRWxlbWVudD4gZWxlbSA9IHRvSFRNTEVsZW1lbnQobm9kZSk7CiAgICAgICAgICAg
ICBSZWZQdHI8Tm9kZT4gcHJldiA9IGVsZW0tPnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVy
KCk7CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IGVsZW0tPnRyYXZlcnNlTmV4dE5v
ZGUoKTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5
bGVUb1B1c2hEb3duOworICAgICAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGVUb1B1
c2hEb3duOwogICAgICAgICAgICAgUGFzc1JlZlB0cjxOb2RlPiBjaGlsZE5vZGUgPSAwOwogICAg
ICAgICAgICAgaWYgKGlzU3R5bGVkSW5saW5lRWxlbWVudFRvUmVtb3ZlKGVsZW0uZ2V0KCkpKSB7
Ci0gICAgICAgICAgICAgICAgc3R5bGVUb1B1c2hEb3duID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIHN0eWxlVG9QdXNoRG93biA9IEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gZWxlbS0+Zmly
c3RDaGlsZCgpOwogICAgICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5oCShyZXZpc2lvbiA3OTgzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTMgKzc4
LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gc3R5bGUtcmVtb3ZhbCBoZWxwZXJzCiAgICAgYm9vbCBp
c1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CiAgICAgYm9vbCBy
ZW1vdmVTdHlsZUZyb21SdW5CZWZvcmVBcHBseWluZ1N0eWxlKEVkaXRpbmdTdHlsZSosIFJlZlB0
cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0cjxOb2RlPiYgcnVuRW5kKTsKLSAgICBib29sIHJlbW92
ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoRWRpdGluZ1N0eWxlKiwgUGFzc1JlZlB0cjxIVE1MRWxl
bWVudD4sIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVJZk5lZWRlZCwgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlID0gMCk7CisgICAgYm9vbCByZW1vdmVJ
bmxpbmVTdHlsZUZyb21FbGVtZW50KEVkaXRpbmdTdHlsZSosIFBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+LCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlID0gUmVtb3ZlSWZOZWVkZWQsIEVkaXRpbmdTdHls
ZSogZXh0cmFjdGVkU3R5bGUgPSAwKTsKICAgICBpbmxpbmUgYm9vbCBzaG91bGRSZW1vdmVJbmxp
bmVTdHlsZUZyb21FbGVtZW50KEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBlbGVt
ZW50KSB7cmV0dXJuIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGVsZW1lbnQs
IFJlbW92ZU5vbmUpO30KICAgICB2b2lkIHJlcGxhY2VXaXRoU3Bhbk9yUmVtb3ZlSWZXaXRob3V0
QXR0cmlidXRlcyhIVE1MRWxlbWVudComKTsKLSAgICBib29sIHJlbW92ZUltcGxpY2l0bHlTdHls
ZWRFbGVtZW50KEVkaXRpbmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFs
TW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlKTsKLSAgICBi
b29sIHJlbW92ZUNTU1N0eWxlKEVkaXRpbmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5lU3R5
bGVSZW1vdmFsTW9kZSA9IFJlbW92ZUlmTmVlZGVkLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogZXh0cmFjdGVkU3R5bGUgPSAwKTsKKyAgICBib29sIHJlbW92ZUltcGxpY2l0bHlTdHlsZWRF
bGVtZW50KEVkaXRpbmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9k
ZSwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSk7CisgICAgYm9vbCByZW1vdmVDU1NTdHls
ZShFZGl0aW5nU3R5bGUqLCBIVE1MRWxlbWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBS
ZW1vdmVJZk5lZWRlZCwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSA9IDApOwogICAgIEhU
TUxFbGVtZW50KiBoaWdoZXN0QW5jZXN0b3JXaXRoQ29uZmxpY3RpbmdJbmxpbmVTdHlsZShFZGl0
aW5nU3R5bGUqLCBOb2RlKik7Ci0gICAgdm9pZCBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihO
b2RlKiwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qKTsKKyAgICB2b2lkIGFwcGx5SW5saW5l
U3R5bGVUb1B1c2hEb3duKE5vZGUqLCBFZGl0aW5nU3R5bGUqKTsKICAgICB2b2lkIHB1c2hEb3du
SW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKICAgICB2b2lkIHJl
bW92ZUlubGluZVN0eWxlKEVkaXRpbmdTdHlsZSogLCBjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIGJvb2wgbm9kZUZ1bGx5U2VsZWN0ZWQoTm9kZSosIGNv
bnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZpc2lvbiA3OTgzMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDk2LDcgKzQ5Niw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0
aW8KICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7CiB9CiAKLWJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGlj
dHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCwgVmVjdG9y
PENTU1Byb3BlcnR5SUQ+KiBjb25mbGljdGluZ1Byb3BlcnRpZXMpIGNvbnN0Citib29sIEVkaXRp
bmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQq
IGVsZW1lbnQsIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUsIFZlY3RvcjxDU1NQcm9wZXJ0
eUlEPiogY29uZmxpY3RpbmdQcm9wZXJ0aWVzKSBjb25zdAogewogICAgIEFTU0VSVChlbGVtZW50
KTsKICAgICBBU1NFUlQoIWNvbmZsaWN0aW5nUHJvcGVydGllcyB8fCBjb25mbGljdGluZ1Byb3Bl
cnRpZXMtPmlzRW1wdHkoKSk7CkBAIC01MDQsNyArNTA0LDEwIEBAIGJvb2wgRWRpdGluZ1N0eWxl
Ojpjb25mbGljdHNXaXRoSW5saW5lU3QKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiog
aW5saW5lU3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKICAgICBpZiAoIW1fbXV0
YWJsZVN0eWxlIHx8ICFpbmxpbmVTdHlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAg
CisgICAgaWYgKGV4dHJhY3RlZFN0eWxlICYmICFleHRyYWN0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5
bGUpCisgICAgICAgIGV4dHJhY3RlZFN0eWxlLT5tX211dGFibGVTdHlsZSA9IENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAKICAgICBpZiAoIWNvbmZsaWN0aW5nUHJv
cGVydGllcykgewogICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbV9tdXRhYmxlU3R5bGUtPmVuZCgpOwogICAgICAgICBmb3IgKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbXV0YWJsZVN0eWxlLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTUyNywxNiArNTMwLDIyIEBAIGJvb2wgRWRp
dGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3QKICAgICAgICAgaWYgKChwcm9wZXJ0eUlE
ID09IENTU1Byb3BlcnR5V2hpdGVTcGFjZSAmJiBpc1RhYlNwYW5Ob2RlKGVsZW1lbnQpKSB8fCAh
aW5saW5lU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpICYmIGlubGluZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGly
ZWN0aW9uKSkKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgaWYgKHByb3BlcnR5
SUQgPT0gQ1NTUHJvcGVydHlVbmljb2RlQmlkaSAmJiBpbmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbikpIHsKKyAgICAgICAgICAgIGlmIChleHRyYWN0
ZWRTdHlsZSkKKyAgICAgICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUt
PnNldFByb3BlcnR5KHByb3BlcnR5SUQsIGlubGluZVN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKHBy
b3BlcnR5SUQpLCBpbmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlQcmlvcml0eShwcm9wZXJ0eUlEKSwg
ZWMpOwogICAgICAgICAgICAgY29uZmxpY3RpbmdQcm9wZXJ0aWVzLT5hcHBlbmQoQ1NTUHJvcGVy
dHlEaXJlY3Rpb24pOworICAgICAgICB9CiAKKyAgICAgICAgaWYgKGV4dHJhY3RlZFN0eWxlKQor
ICAgICAgICAgICAgZXh0cmFjdGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShw
cm9wZXJ0eUlELCBpbmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlEKSwgaW5s
aW5lU3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHkocHJvcGVydHlJRCksIGVjKTsKICAgICAgICAg
Y29uZmxpY3RpbmdQcm9wZXJ0aWVzLT5hcHBlbmQocHJvcGVydHlJRCk7CiAgICAgfQogCiAgICAg
cmV0dXJuICFjb25mbGljdGluZ1Byb3BlcnRpZXMtPmlzRW1wdHkoKTsKIH0KIAotYm9vbCBFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KEhUTUxFbGVtZW50
KiBlbGVtZW50LCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUsIFNo
b3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlIHNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25z
dAorYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50
KEhUTUxFbGVtZW50KiBlbGVtZW50LCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlLCBTaG91
bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSBzaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29uc3QK
IHsKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
NTQsMTIgKzU2MywxNSBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0
CiAgICAgICAgIEhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQ6OmNyZWF0ZShDU1NWYWx1ZUxp
bmVUaHJvdWdoLCBIVE1MTmFtZXM6OnN0cmlrZVRhZykubGVha1B0cigpLAogICAgIH07CiAKKyAg
ICBpZiAoZXh0cmFjdGVkU3R5bGUgJiYgIWV4dHJhY3RlZFN0eWxlLT5tX211dGFibGVTdHlsZSkK
KyAgICAgICAgZXh0cmFjdGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlID0gQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZSgpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKEhUTUxFcXVpdmFsZW50cyk7ICsraSkgewogICAgICAgICBjb25zdCBIVE1M
RWxlbWVudEVxdWl2YWxlbnQqIGVxdWl2YWxlbnQgPSBIVE1MRXF1aXZhbGVudHNbaV07CiAgICAg
ICAgIGlmIChlcXVpdmFsZW50LT5tYXRjaGVzKGVsZW1lbnQpICYmIGVxdWl2YWxlbnQtPnByb3Bl
cnR5RXhpc3RzSW5TdHlsZShtX211dGFibGVTdHlsZS5nZXQoKSkKICAgICAgICAgICAgICYmIChz
aG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSA9PSBFeHRyYWN0TWF0Y2hpbmdTdHlsZSB8fCAhZXF1
aXZhbGVudC0+dmFsdWVJc1ByZXNlbnRJblN0eWxlKGVsZW1lbnQsIG1fbXV0YWJsZVN0eWxlLmdl
dCgpKSkpIHsKICAgICAgICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkKLSAgICAgICAgICAgICAg
ICBlcXVpdmFsZW50LT5hZGRUb1N0eWxlKGVsZW1lbnQsIGV4dHJhY3RlZFN0eWxlKTsKKyAgICAg
ICAgICAgICAgICBlcXVpdmFsZW50LT5hZGRUb1N0eWxlKGVsZW1lbnQsIGV4dHJhY3RlZFN0eWxl
LT5tX211dGFibGVTdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTU5OSw3ICs2MTEsNyBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxp
Y3RzV2l0aEltcGxpY2l0CiB9CiAKIGJvb2wgRWRpdGluZ1N0eWxlOjpleHRyYWN0Q29uZmxpY3Rp
bmdJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzKEhUTUxFbGVtZW50KiBlbGVtZW50LCBTaG91bGRQ
cmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gc2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uLAot
ICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBleHRyYWN0ZWRTdHlsZSwgVmVjdG9yPFF1
YWxpZmllZE5hbWU+JiBjb25mbGljdGluZ0F0dHJpYnV0ZXMsIFNob3VsZEV4dHJhY3RNYXRjaGlu
Z1N0eWxlIHNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25zdAorICAgIEVkaXRpbmdTdHls
ZSogZXh0cmFjdGVkU3R5bGUsIFZlY3RvcjxRdWFsaWZpZWROYW1lPiYgY29uZmxpY3RpbmdBdHRy
aWJ1dGVzLCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSBzaG91bGRFeHRyYWN0TWF0Y2hpbmdT
dHlsZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7CiAgICAgLy8gSFRNTEF0dHJpYnV0
ZUVxdWl2YWxlbnQ6OmFkZFRvU3R5bGUgZG9lc24ndCBzdXBwb3J0IHVuaWNvZGUtYmlkaSBhbmQg
ZGlyZWN0aW9uIHByb3BlcnRpZXMKQEAgLTYwNyw2ICs2MTksOSBAQCBib29sIEVkaXRpbmdTdHls
ZTo6ZXh0cmFjdENvbmZsaWN0aW5nSW1wCiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKGV4dHJhY3RlZFN0eWxlICYmICFleHRyYWN0ZWRT
dHlsZS0+bV9tdXRhYmxlU3R5bGUpCisgICAgICAgIGV4dHJhY3RlZFN0eWxlLT5tX211dGFibGVT
dHlsZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKwogICAgIGNvbnN0
IFZlY3RvcjxPd25QdHI8SFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ+ID4mIEhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50cyA9IGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpOwogICAgIGJvb2wgcmVtb3Zl
ZCA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTEF0dHJpYnV0ZUVxdWl2
YWxlbnRzLnNpemUoKTsgKytpKSB7CkBAIC02MjEsNyArNjM2LDcgQEAgYm9vbCBFZGl0aW5nU3R5
bGU6OmV4dHJhY3RDb25mbGljdGluZ0ltcAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgaWYgKGV4dHJhY3RlZFN0eWxlKQotICAgICAgICAgICAgZXF1aXZhbGVudC0+YWRkVG9TdHls
ZShlbGVtZW50LCBleHRyYWN0ZWRTdHlsZSk7CisgICAgICAgICAgICBlcXVpdmFsZW50LT5hZGRU
b1N0eWxlKGVsZW1lbnQsIGV4dHJhY3RlZFN0eWxlLT5tX211dGFibGVTdHlsZS5nZXQoKSk7CiAg
ICAgICAgIGNvbmZsaWN0aW5nQXR0cmlidXRlcy5hcHBlbmQoZXF1aXZhbGVudC0+YXR0cmlidXRl
TmFtZSgpKTsKICAgICAgICAgcmVtb3ZlZCA9IHRydWU7CiAgICAgfQpAQCAtNjcxLDEzICs2ODYs
NTcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlVHlwaW5nU3R5bGUoRG9jdQogICAgIEFTU0VS
VChkb2N1bWVudCk7CiAKICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IGRv
Y3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKTsKLSAgICBpZiAoIXR5
cGluZ1N0eWxlIHx8ICF0eXBpbmdTdHlsZS0+c3R5bGUoKSB8fCB0eXBpbmdTdHlsZSA9PSB0aGlz
KQorICAgIGlmICghdHlwaW5nU3R5bGUgfHwgdHlwaW5nU3R5bGUgPT0gdGhpcykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fbXV0YWJsZVN0eWxlKQotICAgICAgICBtX211dGFibGVTdHls
ZS0+bWVyZ2UodHlwaW5nU3R5bGUtPnN0eWxlKCksIHRydWUpOwotICAgIGVsc2UKLSAgICAgICAg
bV9tdXRhYmxlU3R5bGUgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+Y29weSgpOworICAgIG1lcmdl
U3R5bGUodHlwaW5nU3R5bGUtPnN0eWxlKCkpOwogfQotICAgIAorCit2b2lkIEVkaXRpbmdTdHls
ZTo6bWVyZ2VJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBtZXJnZVN0eWxlKGVsZW1lbnQtPmlubGluZVN0eWxl
RGVjbCgpKTsKK30KKwordm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGUoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIHN0eWxlKQoreworICAgIGlmICghc3R5bGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbV9tdXRhYmxlU3R5bGUpIHsKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUg
PSBzdHlsZS0+Y29weSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHN0eWxlLT5lbmQoKTsKKyAg
ICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0
eWxlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgYm9vbCBzaG91bGRBZGRU
ZXh0RGVjb3JhdGlvbnMgPSBmYWxzZTsKKworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
OworICAgICAgICBpZiAoKGl0LT5pZCgpID09IENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24gfHwg
aXQtPmlkKCkgPT0gQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkgJiYg
aXQtPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgICAgIHZhbHVlID0gbV9tdXRh
YmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoaXQtPmlkKCkpOworICAgICAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICAgICAgICAgIHNob3VsZEFk
ZFRleHREZWNvcmF0aW9ucyA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXNob3Vs
ZEFkZFRleHREZWNvcmF0aW9ucykgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAg
ICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShpdC0+aWQoKSwgaXQtPnZhbHVl
KCktPmNzc1RleHQoKSwgaXQtPmlzSW1wb3J0YW50KCksIGVjKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBuZXdUZXh0RGVjb3JhdGlv
bnMgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihpdC0+dmFsdWUoKSk7CisgICAgICAgIENT
U1ZhbHVlTGlzdCogdGV4dERlY29yYXRpb25zID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4o
dmFsdWUuZ2V0KCkpOworCisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiwgdW5kZXJsaW5lLCAoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZUlkZW50aWZpZXIoQ1NTVmFsdWVVbmRlcmxpbmUpKSk7CisgICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiwgbGluZVRocm91Z2gsIChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUxpbmVUaHJvdWdoKSkpOwor
CisgICAgICAgIGlmIChuZXdUZXh0RGVjb3JhdGlvbnMtPmhhc1ZhbHVlKHVuZGVybGluZS5nZXQo
KSkgJiYgIXRleHREZWNvcmF0aW9ucy0+aGFzVmFsdWUodW5kZXJsaW5lLmdldCgpKSkKKyAgICAg
ICAgICAgIHRleHREZWNvcmF0aW9ucy0+YXBwZW5kKHVuZGVybGluZS5nZXQoKSk7CisKKyAgICAg
ICAgaWYgKG5ld1RleHREZWNvcmF0aW9ucy0+aGFzVmFsdWUobGluZVRocm91Z2guZ2V0KCkpICYm
ICF0ZXh0RGVjb3JhdGlvbnMtPmhhc1ZhbHVlKGxpbmVUaHJvdWdoLmdldCgpKSkKKyAgICAgICAg
ICAgIHRleHREZWNvcmF0aW9ucy0+YXBwZW5kKGxpbmVUaHJvdWdoLmdldCgpKTsKKyAgICB9Cit9
CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24g
Nzk4MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NCwxNyArOTQsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU3R5bGVD
b25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlKik7CiAgICAgdm9pZCByZW1vdmVOb25FZGl0
aW5nUHJvcGVydGllcygpOwogICAgIHZvaWQgY29sbGFwc2VUZXh0RGVjb3JhdGlvblByb3BlcnRp
ZXMoKTsKLSAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRF
bGVtZW50KiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBjb25mbGljdHNXaXRoSW5saW5lU3R5bGVP
ZkVsZW1lbnQoZWxlbWVudCwgMCk7IH0KLSAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8Q1NTUHJvcGVydHlJRD4m
IGNvbmZsaWN0aW5nUHJvcGVydGllcykgY29uc3QKKyAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxp
bmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBj
b25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoZWxlbWVudCwgMCwgMCk7IH0KKyAgICBi
b29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVt
ZW50LCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlLCBWZWN0b3I8Q1NTUHJvcGVydHlJRD4m
IGNvbmZsaWN0aW5nUHJvcGVydGllcykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBjb25m
bGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoZWxlbWVudCwgJmNvbmZsaWN0aW5nUHJvcGVy
dGllcyk7CisgICAgICAgIHJldHVybiBjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQo
ZWxlbWVudCwgZXh0cmFjdGVkU3R5bGUsICZjb25mbGljdGluZ1Byb3BlcnRpZXMpOwogICAgIH0K
LSAgICBib29sIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KEhUTUxFbGVtZW50
KiwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlID0gMCwgU2hvdWxk
RXh0cmFjdE1hdGNoaW5nU3R5bGUgPSBEb05vdEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25zdDsK
KyAgICBib29sIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KEhUTUxFbGVtZW50
KiwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSA9IDAsIFNob3VsZEV4dHJhY3RNYXRjaGlu
Z1N0eWxlID0gRG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29uc3Q7CiAgICAgYm9vbCBjb25m
bGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1MRWxlbWVudCopIGNvbnN0Owot
ICAgIGJvb2wgZXh0cmFjdENvbmZsaWN0aW5nSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1M
RWxlbWVudCosIFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiwgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlLAorICAgIGJvb2wgZXh0cmFjdENvbmZsaWN0aW5n
SW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1MRWxlbWVudCosIFNob3VsZFByZXNlcnZlV3Jp
dGluZ0RpcmVjdGlvbiwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSwKICAgICAgICAgICAg
IFZlY3RvcjxRdWFsaWZpZWROYW1lPiYgY29uZmxpY3RpbmdBdHRyaWJ1dGVzLCBTaG91bGRFeHRy
YWN0TWF0Y2hpbmdTdHlsZSkgY29uc3Q7CiAgICAgdm9pZCBwcmVwYXJlVG9BcHBseUF0KGNvbnN0
IFBvc2l0aW9uJiwgU2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uID0gRG9Ob3RQcmVzZXJ2
ZVdyaXRpbmdEaXJlY3Rpb24pOwogICAgIHZvaWQgbWVyZ2VUeXBpbmdTdHlsZShEb2N1bWVudCop
OworICAgIHZvaWQgbWVyZ2VJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50Kik7CiAK
ICAgICBmbG9hdCBmb250U2l6ZURlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9mb250U2l6ZURlbHRh
OyB9CiAgICAgYm9vbCBoYXNGb250U2l6ZURlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9mb250U2l6
ZURlbHRhICE9IE5vRm9udERlbHRhOyB9CkBAIC0xMTksNyArMTIwLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlbW92ZVRleHRGaWxsQW5kU3Ryb2tlQ29sb3JzSWZOZWVkZWQoUmVuZGVyU3R5bGUq
KTsKICAgICB2b2lkIHJlcGxhY2VGb250U2l6ZUJ5S2V5d29yZElmUG9zc2libGUoUmVuZGVyU3R5
bGUqLCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24qKTsKICAgICB2b2lkIGV4dHJhY3RGb250
U2l6ZURlbHRhKCk7Ci0gICAgYm9vbCBjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQo
U3R5bGVkRWxlbWVudCosIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiogY29uZmxpY3RpbmdQcm9wZXJ0
aWVzKSBjb25zdDsKKyAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChT
dHlsZWRFbGVtZW50KiwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSwgVmVjdG9yPENTU1By
b3BlcnR5SUQ+KiBjb25mbGljdGluZ1Byb3BlcnRpZXMpIGNvbnN0OworICAgIHZvaWQgbWVyZ2VT
dHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopOwogCiAgICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBtX211dGFibGVTdHlsZTsKICAgICBib29sIG1fc2hvdWxkVXNl
Rml4ZWREZWZhdWx0Rm9udFNpemU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFRleHRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydFRleHRDb21tYW5kLmNwcAkocmV2aXNpb24gNzk4MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTkgKzI2
LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zZXJ0VGV4dENvbW1hbmQu
aCIKIAotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUg
IkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1l
cy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkVkaXRpbmdUZXh0LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAj
aW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNs
dWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogI2luY2x1
ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuaAkocmV2aXNpb24gNzk4
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFJlbW92ZUNTU1Byb3Bl
cnR5Q29tbWFuZF9oCiAKICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgotI2luY2x1ZGUgIkNTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgog
I2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzk4MzYpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAor
MjAxMS0wMi0yNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBhcHBseUlubGluZVN0eWxlVG9Q
dXNoRG93biBhbmQgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCBzaG91bGQgdGFrZSBFZGl0
aW5nU3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU1MzM4CisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlZCBhIGJ1ZyBpbiBhcHBseUlubGluZVN0
eWxlVG9QdXNoRG93biBzbyB0aGF0IGl0IGFwcGxpZXMgdGV4dCBkZWNvcmF0aW9ucyB1c2luZwor
ICAgICAgICBzdHlsZSBhdHRyaWJ1dGUgZXZlbiB3aGVuIHRoZSBpbmxpbmUgc3R5bGUgb2YgZWxl
bWVudCBkaWRuJ3Qgb3JpZ2luYWxseSBoYXZlIGFueSB0ZXh0IGRlY29yYXRpb25zLgorICAgICAg
ICBUaGlzIGNoYW5nZSBuZWNlc3NpdGF0ZWQgdGhlIHJlYmFzZWxpbmUgb2YgdGhlIGZvbGxvd2lu
ZyB0ZXN0IGJlY2F1c2UgV2ViS2l0IGFwcGxpZXMgc3R5bGVzIGRpZmZlcmVudGx5CisgICAgICAg
IGFsdGhvdWdoIHRoZSByZXN1bHRhbnQgc3R5bGUgaXMgdmlzdWFsbHkgaWRlbnRpY2FsLgorCisg
ICAgICAgIEFsc28gYWRkZWQgYSB0ZXN0IHRvIGVuc3VyZSBXZWJLaXQgbWVyZ2VzIHRleHQgZGVj
b3JhdGlvbnMgaW4gdGhlIHR5cGluZyBzdHlsZSBhbmQgdGhlIGVsZW1lbnQgYXJvdW5kCisgICAg
ICAgIHRoZSBjYXJldCB3aGVuIGNvbXB1dGluZyBzZWxlY3Rpb24gc3R5bGUuCisKKyAgICAgICAg
KiBlZGl0aW5nL2V4ZWNDb21tYW5kL21lcmdlLXRleHQtZGVjb3JhdGlvbi13aXRoLXR5cGluZy1z
dHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQv
bWVyZ2UtdGV4dC1kZWNvcmF0aW9uLXdpdGgtdHlwaW5nLXN0eWxlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGVkaXRpbmcvc3R5bGUvcHVzaC1kb3duLWlubGluZS1zdHlsZXMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGVkaXRpbmcvc3R5bGUvc2NyaXB0LXRlc3RzL3B1c2gtZG93bi1pbmxpbmUt
c3R5bGVzLmpzOgorCiAyMDExLTAyLTI3ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgV2luZG93cyBleHBlY3RlZCBmYWlsdXJlIHJlc3VsdHMgZm9yIGZhc3Qv
ZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLmh0bWwKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvbWVyZ2UtdGV4dC1kZWNvcmF0aW9uLXdpdGgtdHlw
aW5nLXN0eWxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL21lcmdlLXRleHQtZGVjb3JhdGlvbi13aXRoLXR5cGluZy1zdHlsZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L21lcmdlLXRleHQtZGVjb3JhdGlvbi13aXRoLXR5cGluZy1zdHlsZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIFdlYktpdCBtZXJn
ZXMgdGV4dCBkZWNvcmF0aW9ucyBpbiB0aGUgdHlwaW5nIHN0eWxlIGFuZCB0aGUgZm9jdXNlZCBl
bGVtZW50J3Mgc3R5bGUgcHJvcGVydHkuCisKK2hlbGxvIHdvcmxkCitUZXN0IHRvIHNldCBzdHJp
a2VUaHJvdWdoIGJ5IHR5cGluZyBjb21tYW5kIGFuZCBhZGQgdW5kZXJsaW5lIGFzIGlubGluZSBz
dHlsZToKK1BBU1MKKworVGVzdCB0byBzZXQgdW5kZXJsaW5lIGJ5IHR5cGluZyBjb21tYW5kIGFu
ZCBhZGQgbGluZS10aHJvdWdoIGFzIGlubGluZSBzdHlsZToKK1BBU1MKKworCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL21lcmdlLXRleHQtZGVjb3JhdGlvbi13aXRoLXR5
cGluZy1zdHlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvbWVyZ2UtdGV4dC1kZWNvcmF0aW9uLXdpdGgtdHlwaW5nLXN0eWxlLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL21lcmdlLXRleHQtZGVj
b3JhdGlvbi13aXRoLXR5cGluZy1zdHlsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgZW5zdXJl
cyBXZWJLaXQgbWVyZ2VzIHRleHQgZGVjb3JhdGlvbnMgaW4gdGhlIHR5cGluZyBzdHlsZSBhbmQg
dGhlIGZvY3VzZWQgZWxlbWVudCdzIHN0eWxlIHByb3BlcnR5LjwvcD4KKzxkaXYgaWQ9InRlc3Qi
IGNvbnRlbnRlZGl0YWJsZT5oZWxsbyB3b3JsZDwvZGl2PgorPHByZT48c2NyaXB0PgorCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworZnVuY3Rpb24gcXVlcnlUZXh0RGVjb3JhdGlvbnMoKSB7CisgICAgdmFy
IHJlc3VsdCA9ICcnOworICAgIGlmIChkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgndW5kZXJs
aW5lJykpCisgICAgICAgIHJlc3VsdCArPSAndW5kZXJsaW5lJzsKKyAgICBpZiAoZG9jdW1lbnQu
cXVlcnlDb21tYW5kU3RhdGUoJ3N0cmlrZVRocm91Z2gnKSkgeworICAgICAgICBpZiAocmVzdWx0
Lmxlbmd0aCkKKyAgICAgICAgICAgIHJlc3VsdCArPSAnICc7CisgICAgICAgIHJlc3VsdCArPSAn
c3RyaWtlVGhyb3VnaCc7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9u
IHJ1blRlc3QoY29tbWFuZCwgaW5saW5lU3R5bGUpIHsKKyAgICBkb2N1bWVudC53cml0ZWxuKCdU
ZXN0IHRvIHNldCAnICsgY29tbWFuZCArICcgYnkgdHlwaW5nIGNvbW1hbmQgYW5kIGFkZCAnICsg
aW5saW5lU3R5bGUgKyAnIGFzIGlubGluZSBzdHlsZTonKTsKKyAgICB2YXIgdGVzdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CisgICAgdGVzdC5zdHlsZS50ZXh0RGVjb3JhdGlv
biA9IG51bGw7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRlc3QsIDAp
OworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNvbW1hbmQsIGZhbHNlLCBudWxsKTsKKyAgICB0
ZXN0LnN0eWxlLnRleHREZWNvcmF0aW9uID0gaW5saW5lU3R5bGU7CisgICAgaWYgKHF1ZXJ5VGV4
dERlY29yYXRpb25zKCkgIT0gJ3VuZGVybGluZSBzdHJpa2VUaHJvdWdoJykKKyAgICAgICAgZG9j
dW1lbnQud3JpdGVsbignRkFJTDogZ290ICInICsgcXVlcnlUZXh0RGVjb3JhdGlvbnMoKSArICci
IGJ1dCBleHBlY3RlZCAidW5kZXJsaW5lIHN0cmlrZVRocm91Z2giJyk7CisgICAgZWxzZQorICAg
ICAgICBkb2N1bWVudC53cml0ZWxuKCdQQVNTJyk7CisgICAgZG9jdW1lbnQud3JpdGVsbigpOwor
fQorCitydW5UZXN0KCdzdHJpa2VUaHJvdWdoJywgJ3VuZGVybGluZScpOword2luZG93LmdldFNl
bGVjdGlvbigpLnNldFBvc2l0aW9uKHRlc3QsIDEpOworcnVuVGVzdCgndW5kZXJsaW5lJywgJ2xp
bmUtdGhyb3VnaCcpOworCis8L3NjcmlwdD48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUvcHVzaC1kb3duLWlubGluZS1zdHlsZXMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUvcHVzaC1kb3du
LWlubGluZS1zdHlsZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3OTgzMSkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvc3R5bGUvcHVzaC1kb3duLWlubGluZS1zdHlsZXMtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xOSw5ICsxOSw5IEBAIFBBU1MgaXRhbGljIGNvbnZlcnRlZCA8c3Bh
biBzdHlsZT0iZm9udC0KIFBBU1MgdW5kZXJsaW5lIGNvbnZlcnRlZCA8c3BhbiBzdHlsZT0idGV4
dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij48ZGl2IGlkPSJ0ZXN0Ij5oZWxsbzwvZGl2Pndvcmxk
PC9zcGFuPiB0byA8ZGl2IGlkPSJ0ZXN0Ij5oZWxsbzwvZGl2Pjx1PndvcmxkPC91PgogUEFTUyB1
bmRlcmxpbmUgY29udmVydGVkIDxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTsiPjxkaXYgaWQ9InRlc3QiPmhlbGxvPC9kaXY+PGJsb2NrcXVvdGU+d29ybGQ8YnI+d2Via2l0
PC9ibG9ja3F1b3RlPjwvc3Bhbj4gdG8gPGRpdiBpZD0idGVzdCI+aGVsbG88L2Rpdj48YmxvY2tx
dW90ZSBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7ICI+d29ybGQ8YnI+d2Via2l0
PC9ibG9ja3F1b3RlPgogUEFTUyB1bmRlcmxpbmUgY29udmVydGVkIDxzcGFuIHN0eWxlPSJ0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTsiPmhlbGxvPGRpdiBpZD0idGVzdCI+d29ybGQ8L2Rpdj53
ZWJraXQ8L3U+IHRvIDx1PmhlbGxvPC91PjxkaXYgaWQ9InRlc3QiPndvcmxkPC9kaXY+PHU+d2Vi
a2l0PC91PgotRkFJTCB1bmRlcmxpbmUgY29udmVydGVkIDxkaXYgc3R5bGU9InRleHQtZGVjb3Jh
dGlvbjogdW5kZXJsaW5lOyI+PGRpdj5oZWxsbzwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53
ZWJraXQ8L2Rpdj48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+cm9ja3M8L3NwYW4+
IHRvIDxkaXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7ICI+aGVsbG88
L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53ZWJraXQ8L2Rpdj48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTog
aXRhbGljOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgIj5yb2Nrczwvc3Bhbj48L2Rpdj4s
IGV4cGVjdGVkIDxkaXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7ICI+
aGVsbG88L3NwYW4+PC9kaXY+PGRpdiBpZD0idGVzdCI+d2Via2l0PC9kaXY+PHU+PHNwYW4gc3R5
bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPnJvY2tzPC9zcGFuPjwvdT48L2Rpdj4KLVBBU1MgdW5k
ZXJsaW5lIGNvbnZlcnRlZCA8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7
Ij48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsiPmhlbGxvPC9kaXY+
PGRpdiBpZD0idGVzdCI+d29ybGQ8L2Rpdj48L3NwYW4+IHRvIDxkaXYgc3R5bGU9InRleHQtZGVj
b3JhdGlvbjogbGluZS10aHJvdWdoIHVuZGVybGluZTsgIj5oZWxsbzwvZGl2PjxkaXYgaWQ9InRl
c3QiPndvcmxkPC9kaXY+Ci1QQVNTIHN0cmlrZVRocm91Z2ggY29udmVydGVkIDxzcGFuIHN0eWxl
PSJ0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsiPjxkaXYgaWQ9InRlc3QiPmhlbGxvPC9k
aXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij53b3JsZDwvZGl2Pjwv
c3Bhbj4gdG8gPGRpdiBpZD0idGVzdCI+aGVsbG88L2Rpdj48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29y
YXRpb246IHVuZGVybGluZSBsaW5lLXRocm91Z2g7ICI+d29ybGQ8L2Rpdj4KK1BBU1MgdW5kZXJs
aW5lIGNvbnZlcnRlZCA8ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxk
aXY+aGVsbG88L3NwYW4+PC9kaXY+PGRpdiBpZD0idGVzdCI+d2Via2l0PC9kaXY+PHNwYW4gc3R5
bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPnJvY2tzPC9zcGFuPiB0byA8ZGl2PjxkaXYgc3R5bGU9
InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAiPmhlbGxvPC9kaXY+PGRpdiBpZD0idGVzdCI+
d2Via2l0PC9kaXY+PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBmb250
LXN0eWxlOiBpdGFsaWM7ICI+cm9ja3M8L3NwYW4+PC9kaXY+CitQQVNTIHVuZGVybGluZSBjb252
ZXJ0ZWQgPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+PGRpdiBzdHls
ZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Ij5oZWxsbzwvZGl2PjxkaXYgaWQ9InRl
c3QiPndvcmxkPC9kaXY+PC9zcGFuPiB0byA8ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVu
ZGVybGluZSBsaW5lLXRocm91Z2g7ICI+aGVsbG88L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53b3JsZDwv
ZGl2PgorUEFTUyBzdHJpa2VUaHJvdWdoIGNvbnZlcnRlZCA8c3BhbiBzdHlsZT0idGV4dC1kZWNv
cmF0aW9uOiBsaW5lLXRocm91Z2g7Ij48ZGl2IGlkPSJ0ZXN0Ij5oZWxsbzwvZGl2PjxkaXYgc3R5
bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+d29ybGQ8L2Rpdj48L3NwYW4+IHRvIDxk
aXYgaWQ9InRlc3QiPmhlbGxvPC9kaXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5l
LXRocm91Z2ggdW5kZXJsaW5lOyAiPndvcmxkPC9kaXY+CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc3R5
bGUvc2NyaXB0LXRlc3RzL3B1c2gtZG93bi1pbmxpbmUtc3R5bGVzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUvc2NyaXB0LXRlc3RzL3B1c2gtZG93bi1pbmxpbmUt
c3R5bGVzLmpzCShyZXZpc2lvbiA3OTgzMSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUv
c2NyaXB0LXRlc3RzL3B1c2gtZG93bi1pbmxpbmUtc3R5bGVzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw5ICszOSw5IEBAIHRlc3RTaW5nbGVUb2dnbGUoInVuZGVybGluZSIsICc8c3BhbiBzdHkK
IHRlc3RTaW5nbGVUb2dnbGUoInVuZGVybGluZSIsICc8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0
aW9uOiB1bmRlcmxpbmU7Ij5oZWxsbzxkaXYgaWQ9InRlc3QiPndvcmxkPC9kaXY+d2Via2l0PC91
PicsICc8dT5oZWxsbzwvdT48ZGl2IGlkPSJ0ZXN0Ij53b3JsZDwvZGl2Pjx1PndlYmtpdDwvdT4n
KTsKIHRlc3RTaW5nbGVUb2dnbGUoInVuZGVybGluZSIsCiAgICAgJzxkaXYgc3R5bGU9InRleHQt
ZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+PGRpdj5oZWxsbzwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ0
ZXN0Ij53ZWJraXQ8L2Rpdj48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+cm9ja3M8
L3NwYW4+JywKLSAgICAnPGRpdj48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTsgIj5oZWxsbzwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53ZWJraXQ8L2Rpdj48dT48c3Bh
biBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+cm9ja3M8L3NwYW4+PC91PjwvZGl2PicpOwot
dGVzdFNpbmdsZVRvZ2dsZSgidW5kZXJsaW5lIiwgJzxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRp
b246IHVuZGVybGluZTsiPjxkaXYgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdo
OyI+aGVsbG88L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53b3JsZDwvZGl2Pjwvc3Bhbj4nLCAnPGRpdiBz
dHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2ggdW5kZXJsaW5lOyAiPmhlbGxvPC9k
aXY+PGRpdiBpZD0idGVzdCI+d29ybGQ8L2Rpdj4nKTsKLXRlc3RTaW5nbGVUb2dnbGUoInN0cmlr
ZVRocm91Z2giLCAnPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOyI+
PGRpdiBpZD0idGVzdCI+aGVsbG88L2Rpdj48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVu
ZGVybGluZTsiPndvcmxkPC9kaXY+PC9zcGFuPicsICc8ZGl2IGlkPSJ0ZXN0Ij5oZWxsbzwvZGl2
PjxkaXYgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGxpbmUtdGhyb3VnaDsgIj53
b3JsZDwvZGl2PicpOworICAgICc8ZGl2PjxkaXYgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5k
ZXJsaW5lOyAiPmhlbGxvPC9kaXY+PGRpdiBpZD0idGVzdCI+d2Via2l0PC9kaXY+PHNwYW4gc3R5
bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBmb250LXN0eWxlOiBpdGFsaWM7ICI+cm9j
a3M8L3NwYW4+PC9kaXY+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJ1bmRlcmxpbmUiLCAnPHNwYW4g
c3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+PGRpdiBzdHlsZT0idGV4dC1kZWNv
cmF0aW9uOiBsaW5lLXRocm91Z2g7Ij5oZWxsbzwvZGl2PjxkaXYgaWQ9InRlc3QiPndvcmxkPC9k
aXY+PC9zcGFuPicsICc8ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBsaW5l
LXRocm91Z2g7ICI+aGVsbG88L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53b3JsZDwvZGl2PicpOwordGVz
dFNpbmdsZVRvZ2dsZSgic3RyaWtlVGhyb3VnaCIsICc8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0
aW9uOiBsaW5lLXRocm91Z2g7Ij48ZGl2IGlkPSJ0ZXN0Ij5oZWxsbzwvZGl2PjxkaXYgc3R5bGU9
InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+d29ybGQ8L2Rpdj48L3NwYW4+JywgJzxkaXYg
aWQ9InRlc3QiPmhlbGxvPC9kaXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRo
cm91Z2ggdW5kZXJsaW5lOyAiPndvcmxkPC9kaXY+Jyk7CiAKIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQodGVzdENvbnRhaW5lcik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84014</attachid>
            <date>2011-02-27 21:29:39 -0800</date>
            <delta_ts>2011-03-01 23:07:49 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-55338-20110228142937.patch</filename>
            <type>text/plain</type>
            <size>19238</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDItMjcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24gYW5kIHJlbW92ZUlu
bGluZVN0eWxlRnJvbUVsZW1lbnQgc2hvdWxkIHRha2UgRWRpdGluZ1N0eWxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTMzOAorCisgICAgICAgIERl
cGxveWVkIEVkaXRpbmdTdHlsZSBpbiBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93biBhbmQgcmVt
b3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudC4KKworICAgICAgICBBbHNvIGFkZGVkIGEgY29udmVu
aWVuY2UgZnVuY3Rpb24gRWRpdGluZ1N0eWxlOjpzZXRQcm9wZXJ0eSwgd2hpY2ggbGF6aWx5IGlu
c3RhbnRpYXRlcworICAgICAgICBuZXcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gZm9yIG1f
bXV0YWJsZVN0eWxlLgorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGVG
cm9tRWxlbWVudCk6IFRha2VzIEVkaXRpbmdTdHlsZSouCisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW1wbGljaXRseVN0eWxlZEVsZW1lbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVDU1NTdHlsZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5
bGVBcm91bmROb2RlKTogQ2FsbHMgdGhlIGFib3ZlIHRocmVlIGZ1bmN0aW9ucy4KKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZSk6IENhbGxzIHB1
c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlLgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRWxlbWVudEVxdWl2YWxlbnQ6OmFkZFRvU3R5bGUpOiBUYWtlcyBFZGl0
aW5nU3R5bGUqOyBjYWxscyBFZGl0aW5nU3R5bGU6OnNldFByb3BlcnR5LgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ6OmFkZFRvU3R5bGUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6c2V0UHJvcGVydHkpOiBBZGRlZC4gIFRoaXMgbWVt
YmVyIGZ1bmN0aW9uIGxhemlseSBpbnN0YW50aWF0ZXMKKyAgICAgICAgbmV3IENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uIGZvciBtX211dGFibGVTdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KTogVGFrZXMgRWRp
dGluZ1N0eWxlKi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0
aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRp
bmdTdHlsZTo6ZXh0cmFjdENvbmZsaWN0aW5nSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyk6IERp
dHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmg6IEFkZGVkIEhUTUxFbGVtZW50
RXF1aXZhbGVudCBhbmQgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQgYXMgZnJpZW5kcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVt
ZW50KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHA6IFJl
bW92ZWQgdW5uZWNlc3NhcnkgaW5jbHVkZXMuCisgICAgICAgICogZWRpdGluZy9SZW1vdmVDU1NQ
cm9wZXJ0eUNvbW1hbmQuaDogRGl0dG8uCisKIDIwMTEtMDItMjcgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAJKHJldmlzaW9uIDc5ODMxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzAsNyArMTEzMCw3IEBAIGJvb2wg
QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZVN0eWxlRnJvbVIKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChF
ZGl0aW5nU3R5bGUqIHN0eWxlLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50LCBJbmxp
bmVTdHlsZVJlbW92YWxNb2RlIG1vZGUsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBleHRy
YWN0ZWRTdHlsZSkKK2Jvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWxlRnJv
bUVsZW1lbnQoRWRpdGluZ1N0eWxlKiBzdHlsZSwgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxl
bWVudCwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSBtb2RlLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3Rl
ZFN0eWxlKQogewogICAgIEFTU0VSVChlbGVtZW50KTsKIApAQCAtMTE0MSw4ICsxMTQxLDEyIEBA
IGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWwKICAgICAgICAgaWYgKG1v
ZGUgPT0gUmVtb3ZlTm9uZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBBU1NF
UlQoZXh0cmFjdGVkU3R5bGUpOwotICAgICAgICBpZiAoZWxlbWVudC0+aW5saW5lU3R5bGVEZWNs
KCkpCi0gICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+bWVyZ2UoZWxlbWVudC0+aW5saW5lU3R5
bGVEZWNsKCkpOworICAgICAgICBpZiAoZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkpIHsKKyAg
ICAgICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZS0+c3R5bGUoKSkKKyAgICAgICAgICAgICAgICBl
eHRyYWN0ZWRTdHlsZS0+c3R5bGUoKS0+bWVyZ2UoZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGV4dHJhY3RlZFN0eWxlLT5zZXRT
dHlsZShlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKS0+Y29weSgpKTsKKyAgICAgICAgfQogICAg
ICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKGVsZW1lbnQpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC0xMTg5LDcgKzExOTMsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjpyZXBsYWNlV2l0aFNwYW5PCiAgICAgfQogfQogICAgIAotYm9vbCBBcHBseVN0eWxlQ29t
bWFuZDo6cmVtb3ZlSW1wbGljaXRseVN0eWxlZEVsZW1lbnQoRWRpdGluZ1N0eWxlKiBzdHlsZSwg
SFRNTEVsZW1lbnQqIGVsZW1lbnQsIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgbW9kZSwgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlKQorYm9vbCBBcHBseVN0eWxlQ29t
bWFuZDo6cmVtb3ZlSW1wbGljaXRseVN0eWxlZEVsZW1lbnQoRWRpdGluZ1N0eWxlKiBzdHlsZSwg
SFRNTEVsZW1lbnQqIGVsZW1lbnQsIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgbW9kZSwgRWRpdGlu
Z1N0eWxlKiBleHRyYWN0ZWRTdHlsZSkKIHsKICAgICBBU1NFUlQoc3R5bGUpOwogICAgIGlmICht
b2RlID09IFJlbW92ZU5vbmUpIHsKQEAgLTEyMTcsMjkgKzEyMjEsMjQgQEAgYm9vbCBBcHBseVN0
eWxlQ29tbWFuZDo6cmVtb3ZlSW1wbGljaXRseQogCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAg
Ci1ib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVDU1NTdHlsZShFZGl0aW5nU3R5bGUqIHN0
eWxlLCBIVE1MRWxlbWVudCogZWxlbWVudCwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSBtb2RlLCBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpCisKK2Jvb2wgQXBwbHlT
dHlsZUNvbW1hbmQ6OnJlbW92ZUNTU1N0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVt
ZW50KiBlbGVtZW50LCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlIG1vZGUsIEVkaXRpbmdTdHlsZSog
ZXh0cmFjdGVkU3R5bGUpCiB7CiAgICAgQVNTRVJUKHN0eWxlKTsKICAgICBBU1NFUlQoZWxlbWVu
dCk7Ci0gICAgCisgICAgICAgCiAgICAgaWYgKG1vZGUgPT0gUmVtb3ZlTm9uZSkKICAgICAgICAg
cmV0dXJuIHN0eWxlLT5jb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoZWxlbWVudCk7
CiAKICAgICBWZWN0b3I8Q1NTUHJvcGVydHlJRD4gcHJvcGVydGllczsKLSAgICBpZiAoIXN0eWxl
LT5jb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoZWxlbWVudCwgcHJvcGVydGllcykp
CisgICAgaWYgKCFzdHlsZS0+Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1l
bnQsIGV4dHJhY3RlZFN0eWxlLCBwcm9wZXJ0aWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGlubGluZVN0eWxlID0gZWxlbWVudC0+
aW5saW5lU3R5bGVEZWNsKCk7CiAgICAgQVNTRVJUKGlubGluZVN0eWxlKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByb3BlcnRpZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQ1NTUHJv
cGVydHlJRCBpZCA9IHByb3BlcnRpZXNbaV07Ci0gICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkg
ewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBleHRyYWN0
ZWRTdHlsZS0+c2V0UHJvcGVydHkoaWQsIGlubGluZVN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKGlk
KSwgaW5saW5lU3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHkoaWQpLCBlYyk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoZWxlbWVudCwgaWQpOwotICAgIH0KKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHVzZSBhIG1hc3MtcmVtb3ZhbCBmdW5jdGlvbiBoZXJlIGJ1dCB3ZSBk
b24ndCBoYXZlIGFuIHVuZG9hYmxlIG9uZSB5ZXQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcm9wZXJ0aWVzLnNpemUoKTsgaSsrKQorICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShlbGVt
ZW50LCBwcm9wZXJ0aWVzW2ldKTsKIAogICAgIC8vIE5vIG5lZWQgdG8gc2VyaWFsaXplIDxmb28g
c3R5bGU9IiI+IGlmIHdlIGp1c3QgcmVtb3ZlZCB0aGUgbGFzdCBjc3MgcHJvcGVydHkKICAgICBp
ZiAoaW5saW5lU3R5bGUtPmlzRW1wdHkoKSkKQEAgLTEzNTEsNyArMTM1MCw3IEBAIHZvaWQgQXBw
bHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3QKICAgICAgICAgICAgIHN0eWxlZEVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oY3VycmVudCk7CiAgICAgICAgICAgICBl
bGVtZW50c1RvUHVzaERvd24uYXBwZW5kKHN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9Ci0gICAg
ICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVUb1B1c2hEb3duID0g
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzdHlsZVRvUHVzaERvd24gPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOwogICAg
ICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCB0b0hUTUxFbGVtZW50KGN1
cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLmdldCgpKTsKIAogICAgICAg
ICAvLyBUaGUgaW5uZXIgbG9vcCB3aWxsIGdvIHRocm91Z2ggY2hpbGRyZW4gb24gZWFjaCBsZXZl
bApAQCAtMTM3Miw3ICsxMzcxLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25J
bmxpbmVTdAogICAgICAgICAgICAgLy8gQXBwbHkgdGV4dCBkZWNvcmF0aW9uIHRvIGFsbCBub2Rl
cyBjb250YWluaW5nIHRhcmdldE5vZGUgYW5kIHRoZWlyIHNpYmxpbmdzIGJ1dCBOT1QgdG8gdGFy
Z2V0Tm9kZQogICAgICAgICAgICAgLy8gQnV0IGlmIHdlJ3ZlIHJlbW92ZWQgc3R5bGVkRWxlbWVu
dCB0aGVuIGdvIGFoZWFkIGFuZCBhbHdheXMgYXBwbHkgdGhlIHN0eWxlLgogICAgICAgICAgICAg
aWYgKGNoaWxkICE9IHRhcmdldE5vZGUgfHwgc3R5bGVkRWxlbWVudCkKLSAgICAgICAgICAgICAg
ICBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5bGVUb1B1c2hEb3duLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5
bGVUb1B1c2hEb3duLT5zdHlsZSgpKTsKIAogICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIG5l
eHQgbm9kZSBmb3IgdGhlIG91dGVyIGxvb3AgKGNvbnRhaW5zIHRhcmdldE5vZGUpCiAgICAgICAg
ICAgICAvLyBXaGVuIHJlYWNoZWQgdGFyZ2V0Tm9kZSwgc3RvcCB0aGUgb3V0ZXIgbG9vcCB1cG9u
IHRoZSBjb21wbGV0aW9uIG9mIHRoZSBjdXJyZW50IGlubmVyIGxvb3AKQEAgLTE0MjIsMTAgKzE0
MjEsMTAgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bAogICAgICAg
ICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtID0gdG9IVE1MRWxlbWVudChub2RlKTsKICAg
ICAgICAgICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gZWxlbS0+dHJhdmVyc2VQcmV2aW91c05vZGVQ
b3N0T3JkZXIoKTsKICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXh0ID0gZWxlbS0+dHJhdmVy
c2VOZXh0Tm9kZSgpOwotICAgICAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBzdHlsZVRvUHVzaERvd247CisgICAgICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBz
dHlsZVRvUHVzaERvd247CiAgICAgICAgICAgICBQYXNzUmVmUHRyPE5vZGU+IGNoaWxkTm9kZSA9
IDA7CiAgICAgICAgICAgICBpZiAoaXNTdHlsZWRJbmxpbmVFbGVtZW50VG9SZW1vdmUoZWxlbS5n
ZXQoKSkpIHsKLSAgICAgICAgICAgICAgICBzdHlsZVRvUHVzaERvd24gPSBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgc3R5bGVUb1B1c2hEb3du
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBl
bGVtLT5maXJzdENoaWxkKCk7CiAgICAgICAgICAgICB9CiAKQEAgLTE0NDksNyArMTQ0OCw3IEBA
IHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWwKIAogICAgICAgICAgICAg
aWYgKHN0eWxlVG9QdXNoRG93bikgewogICAgICAgICAgICAgICAgIGZvciAoOyBjaGlsZE5vZGU7
IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAg
ICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGROb2RlLmdldCgpLCBzdHlsZVRvUHVz
aERvd24uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBhcHBseUlubGluZVN0eWxlVG9QdXNo
RG93bihjaGlsZE5vZGUuZ2V0KCksIHN0eWxlVG9QdXNoRG93bi0+c3R5bGUoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUgPT0gZW5kLmRlcHJlY2F0ZWROb2Rl
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCShy
ZXZpc2lvbiA3OTgzMSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDExIEBAIHByaXZhdGU6CiAgICAgLy8g
c3R5bGUtcmVtb3ZhbCBoZWxwZXJzCiAgICAgYm9vbCBpc1N0eWxlZElubGluZUVsZW1lbnRUb1Jl
bW92ZShFbGVtZW50KikgY29uc3Q7CiAgICAgYm9vbCByZW1vdmVTdHlsZUZyb21SdW5CZWZvcmVB
cHBseWluZ1N0eWxlKEVkaXRpbmdTdHlsZSosIFJlZlB0cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0
cjxOb2RlPiYgcnVuRW5kKTsKLSAgICBib29sIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQo
RWRpdGluZ1N0eWxlKiwgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4sIElubGluZVN0eWxlUmVtb3Zh
bE1vZGUgPSBSZW1vdmVJZk5lZWRlZCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJh
Y3RlZFN0eWxlID0gMCk7CisgICAgYm9vbCByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KEVk
aXRpbmdTdHlsZSosIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+LCBJbmxpbmVTdHlsZVJlbW92YWxN
b2RlID0gUmVtb3ZlSWZOZWVkZWQsIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUgPSAwKTsK
ICAgICBpbmxpbmUgYm9vbCBzaG91bGRSZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KEVkaXRp
bmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBlbGVtZW50KSB7cmV0dXJuIHJlbW92ZUlubGlu
ZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGVsZW1lbnQsIFJlbW92ZU5vbmUpO30KICAgICB2b2lk
IHJlcGxhY2VXaXRoU3Bhbk9yUmVtb3ZlSWZXaXRob3V0QXR0cmlidXRlcyhIVE1MRWxlbWVudCom
KTsKLSAgICBib29sIHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KEVkaXRpbmdTdHlsZSos
IEhUTUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlKTsKLSAgICBib29sIHJlbW92ZUNTU1N0eWxlKEVkaXRp
bmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9IFJlbW92ZUlm
TmVlZGVkLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUgPSAwKTsK
KyAgICBib29sIHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KEVkaXRpbmdTdHlsZSosIEhU
TUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSwgRWRpdGluZ1N0eWxlKiBleHRyYWN0
ZWRTdHlsZSk7CisgICAgYm9vbCByZW1vdmVDU1NTdHlsZShFZGl0aW5nU3R5bGUqLCBIVE1MRWxl
bWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVJZk5lZWRlZCwgRWRpdGluZ1N0
eWxlKiBleHRyYWN0ZWRTdHlsZSA9IDApOwogICAgIEhUTUxFbGVtZW50KiBoaWdoZXN0QW5jZXN0
b3JXaXRoQ29uZmxpY3RpbmdJbmxpbmVTdHlsZShFZGl0aW5nU3R5bGUqLCBOb2RlKik7CiAgICAg
dm9pZCBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihOb2RlKiwgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qKTsKICAgICB2b2lkIHB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKEVkaXRp
bmdTdHlsZSosIE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAJKHJldmlzaW9uIDc5ODMxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIHByb3BlcnR5RXhpc3RzSW5TdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29u
c3QgeyByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsgfQog
ICAgIHZpcnR1YWwgYm9vbCB2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCosIENTU1N0eWxl
RGVjbGFyYXRpb24qKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVG9TdHlsZShFbGVtZW50
KiwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkVG9TdHlsZShFbGVtZW50KiwgRWRpdGluZ1N0eWxlKikgY29uc3Q7CiAKIHByb3RlY3RlZDoK
ICAgICBIVE1MRWxlbWVudEVxdWl2YWxlbnQoQ1NTUHJvcGVydHlJRCk7CkBAIC0xMzYsNyArMTM2
LDcgQEAgYm9vbCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZQogICAgIHJldHVy
biBtYXRjaGVzKGVsZW1lbnQpICYmIHZhbHVlICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkg
JiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSktPmdldElkZW50
KCkgPT0gbV9wcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVu
dEVxdWl2YWxlbnQ6OmFkZFRvU3R5bGUoRWxlbWVudCosIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZSkgY29uc3QKK3ZvaWQgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjphZGRUb1N0eWxl
KEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShtX3Byb3BlcnR5SUQsIG1fcHJpbWl0aXZlVmFsdWUtPmNzc1RleHQoKSk7CiB9CkBA
IC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAgIGJvb2wgbWF0Y2hlcyhFbGVtZW50KiBlbGVt
KSBjb25zdCB7IHJldHVybiBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6Om1hdGNoZXMoZWxlbSkgJiYg
ZWxlbS0+aGFzQXR0cmlidXRlKG1fYXR0ck5hbWUpOyB9CiAgICAgdmlydHVhbCBib29sIGhhc0F0
dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVJ
c1ByZXNlbnRJblN0eWxlKEVsZW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9uKikgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIGFkZFRvU3R5bGUoRWxlbWVudCosIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFRvU3R5bGUoRWxlbWVudCosIEVk
aXRpbmdTdHlsZSopIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gYXR0
cmlidXRlVmFsdWVBc0NTU1ZhbHVlKEVsZW1lbnQqKSBjb25zdDsKICAgICBpbmxpbmUgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0ck5hbWU7
IH0KIApAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ6OnZh
bHVlSXNQcmUKICAgICByZXR1cm4gdmFsdWUgJiYgc3R5bGVWYWx1ZSAmJiB2YWx1ZS0+Y3NzVGV4
dCgpID09IHN0eWxlVmFsdWUtPmNzc1RleHQoKTsKIH0KIAotdm9pZCBIVE1MQXR0cmlidXRlRXF1
aXZhbGVudDo6YWRkVG9TdHlsZShFbGVtZW50KiBlbGVtZW50LCBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUpIGNvbnN0Cit2b2lkIEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50OjphZGRU
b1N0eWxlKEVsZW1lbnQqIGVsZW1lbnQsIEVkaXRpbmdTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAg
ICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUo
ZWxlbWVudCkpCiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShtX3Byb3BlcnR5SUQsIHZhbHVl
LT5jc3NUZXh0KCkpOwpAQCAtMzE4LDYgKzMxOCwxNSBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVt
b3ZlVGV4dEZpbGxBbmRTdHJvCiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKK3ZvaWQgRWRpdGluZ1N0
eWxlOjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQpCit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSkKKyAgICAgICAgbV9tdXRh
YmxlU3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjOworICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0
eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBlYyk7Cit9CisKIHZvaWQgRWRpdGluZ1N0eWxlOjpyZXBs
YWNlRm9udFNpemVCeUtleXdvcmRJZlBvc3NpYmxlKFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSwg
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKiBjb21wdXRlZFN0eWxlKQogewogICAgIEFTU0VS
VChyZW5kZXJTdHlsZSk7CkBAIC00OTYsNyArNTA1LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmNv
bGxhcHNlVGV4dERlY29yYXRpbwogICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKIH0KIAotYm9vbCBFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50
KiBlbGVtZW50LCBWZWN0b3I8Q1NTUHJvcGVydHlJRD4qIGNvbmZsaWN0aW5nUHJvcGVydGllcykg
Y29uc3QKK2Jvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1l
bnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSwg
VmVjdG9yPENTU1Byb3BlcnR5SUQ+KiBjb25mbGljdGluZ1Byb3BlcnRpZXMpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIEFTU0VSVCghY29uZmxpY3RpbmdQcm9wZXJ0aWVzIHx8
IGNvbmZsaWN0aW5nUHJvcGVydGllcy0+aXNFbXB0eSgpKTsKQEAgLTUyNywxNiArNTM2LDIxIEBA
IGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5saW5lU3QKICAgICAgICAgaWYgKChw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2hpdGVTcGFjZSAmJiBpc1RhYlNwYW5Ob2RlKGVsZW1l
bnQpKSB8fCAhaW5saW5lU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eVVuaWNvZGVCaWRpICYmIGlubGluZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5RGlyZWN0aW9uKSkKKyAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlV
bmljb2RlQmlkaSAmJiBpbmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eURpcmVjdGlvbikpIHsKKyAgICAgICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkKKyAgICAgICAg
ICAgICAgICBleHRyYWN0ZWRTdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgaW5saW5lU3R5
bGUtPmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlJRCksIGlubGluZVN0eWxlLT5nZXRQcm9wZXJ0
eVByaW9yaXR5KHByb3BlcnR5SUQpKTsKICAgICAgICAgICAgIGNvbmZsaWN0aW5nUHJvcGVydGll
cy0+YXBwZW5kKENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNv
bmZsaWN0aW5nUHJvcGVydGllcy0+YXBwZW5kKHByb3BlcnR5SUQpOworICAgICAgICBpZiAoZXh0
cmFjdGVkU3R5bGUpCisgICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+c2V0UHJvcGVydHkocHJv
cGVydHlJRCwgaW5saW5lU3R5bGUtPmdldFByb3BlcnR5VmFsdWUocHJvcGVydHlJRCksIGlubGlu
ZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KHByb3BlcnR5SUQpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gIWNvbmZsaWN0aW5nUHJvcGVydGllcy0+aXNFbXB0eSgpOwogfQogCi1ib29sIEVkaXRp
bmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQq
IGVsZW1lbnQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBleHRyYWN0ZWRTdHlsZSwgU2hv
dWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUgc2hvdWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNvbnN0
Citib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQo
SFRNTEVsZW1lbnQqIGVsZW1lbnQsIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUsIFNob3Vs
ZEV4dHJhY3RNYXRjaGluZ1N0eWxlIHNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25zdAog
ewogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5
OSw3ICs2MTMsNyBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0CiB9
CiAKIGJvb2wgRWRpdGluZ1N0eWxlOjpleHRyYWN0Q29uZmxpY3RpbmdJbXBsaWNpdFN0eWxlT2ZB
dHRyaWJ1dGVzKEhUTUxFbGVtZW50KiBlbGVtZW50LCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJl
Y3Rpb24gc2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uLAotICAgIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiBleHRyYWN0ZWRTdHlsZSwgVmVjdG9yPFF1YWxpZmllZE5hbWU+JiBjb25m
bGljdGluZ0F0dHJpYnV0ZXMsIFNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlIHNob3VsZEV4dHJh
Y3RNYXRjaGluZ1N0eWxlKSBjb25zdAorICAgIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUs
IFZlY3RvcjxRdWFsaWZpZWROYW1lPiYgY29uZmxpY3RpbmdBdHRyaWJ1dGVzLCBTaG91bGRFeHRy
YWN0TWF0Y2hpbmdTdHlsZSBzaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29uc3QKIHsKICAg
ICBBU1NFUlQoZWxlbWVudCk7CiAgICAgLy8gSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ6OmFkZFRv
U3R5bGUgZG9lc24ndCBzdXBwb3J0IHVuaWNvZGUtYmlkaSBhbmQgZGlyZWN0aW9uIHByb3BlcnRp
ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gNzk4
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk0LDE0ICs5
NSwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxl
T2ZOb2RlKE5vZGUqKTsKICAgICB2b2lkIHJlbW92ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzKCk7CiAg
ICAgdm9pZCBjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygpOwotICAgIGJvb2wgY29u
ZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNv
bnN0IHsgcmV0dXJuIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChlbGVtZW50LCAw
KTsgfQotICAgIGJvb2wgY29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVs
ZW1lbnQqIGVsZW1lbnQsIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiYgY29uZmxpY3RpbmdQcm9wZXJ0
aWVzKSBjb25zdAorICAgIGJvb2wgY29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJuIGNvbmZsaWN0c1dpdGhJbmxpbmVT
dHlsZU9mRWxlbWVudChlbGVtZW50LCAwLCAwKTsgfQorICAgIGJvb2wgY29uZmxpY3RzV2l0aElu
bGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEVkaXRpbmdTdHlsZSog
ZXh0cmFjdGVkU3R5bGUsIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiYgY29uZmxpY3RpbmdQcm9wZXJ0
aWVzKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHls
ZU9mRWxlbWVudChlbGVtZW50LCAmY29uZmxpY3RpbmdQcm9wZXJ0aWVzKTsKKyAgICAgICAgcmV0
dXJuIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChlbGVtZW50LCBleHRyYWN0ZWRT
dHlsZSwgJmNvbmZsaWN0aW5nUHJvcGVydGllcyk7CiAgICAgfQotICAgIGJvb2wgY29uZmxpY3Rz
V2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQqLCBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUgPSAwLCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHls
ZSA9IERvTm90RXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNvbnN0OworICAgIGJvb2wgY29uZmxpY3Rz
V2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4
dHJhY3RlZFN0eWxlID0gMCwgU2hvdWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUgPSBEb05vdEV4dHJh
Y3RNYXRjaGluZ1N0eWxlKSBjb25zdDsKICAgICBib29sIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0
eWxlT2ZBdHRyaWJ1dGVzKEhUTUxFbGVtZW50KikgY29uc3Q7Ci0gICAgYm9vbCBleHRyYWN0Q29u
ZmxpY3RpbmdJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzKEhUTUxFbGVtZW50KiwgU2hvdWxkUHJl
c2VydmVXcml0aW5nRGlyZWN0aW9uLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFj
dGVkU3R5bGUsCisgICAgYm9vbCBleHRyYWN0Q29uZmxpY3RpbmdJbXBsaWNpdFN0eWxlT2ZBdHRy
aWJ1dGVzKEhUTUxFbGVtZW50KiwgU2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uLCBFZGl0
aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlLAogICAgICAgICAgICAgVmVjdG9yPFF1YWxpZmllZE5h
bWU+JiBjb25mbGljdGluZ0F0dHJpYnV0ZXMsIFNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBj
b25zdDsKICAgICB2b2lkIHByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mLCBTaG91bGRQ
cmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gPSBEb05vdFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbik7
CiAgICAgdm9pZCBtZXJnZVR5cGluZ1N0eWxlKERvY3VtZW50Kik7CkBAIC0xMTcsMTMgKzExOCwx
NyBAQCBwcml2YXRlOgogICAgIEVkaXRpbmdTdHlsZShjb25zdCBDU1NTdHlsZURlY2xhcmF0aW9u
Kik7CiAgICAgdm9pZCBpbml0KE5vZGUqLCBQcm9wZXJ0aWVzVG9JbmNsdWRlKTsKICAgICB2b2lk
IHJlbW92ZVRleHRGaWxsQW5kU3Ryb2tlQ29sb3JzSWZOZWVkZWQoUmVuZGVyU3R5bGUqKTsKKyAg
ICB2b2lkIHNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBi
b29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICB2b2lkIHJlcGxhY2VGb250U2l6ZUJ5S2V5d29y
ZElmUG9zc2libGUoUmVuZGVyU3R5bGUqLCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24qKTsK
ICAgICB2b2lkIGV4dHJhY3RGb250U2l6ZURlbHRhKCk7Ci0gICAgYm9vbCBjb25mbGljdHNXaXRo
SW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCosIFZlY3RvcjxDU1NQcm9wZXJ0eUlE
PiogY29uZmxpY3RpbmdQcm9wZXJ0aWVzKSBjb25zdDsKKyAgICBib29sIGNvbmZsaWN0c1dpdGhJ
bmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiwgRWRpdGluZ1N0eWxlKiBleHRyYWN0
ZWRTdHlsZSwgVmVjdG9yPENTU1Byb3BlcnR5SUQ+KiBjb25mbGljdGluZ1Byb3BlcnRpZXMpIGNv
bnN0OwogCiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtX211dGFibGVT
dHlsZTsKICAgICBib29sIG1fc2hvdWxkVXNlRml4ZWREZWZhdWx0Rm9udFNpemU7CiAgICAgZmxv
YXQgbV9mb250U2l6ZURlbHRhOworCisgICAgZnJpZW5kIGNsYXNzIEhUTUxFbGVtZW50RXF1aXZh
bGVudDsKKyAgICBmcmllbmQgY2xhc3MgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFRleHRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydFRleHRDb21tYW5kLmNwcAkocmV2aXNpb24gNzk4MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTkgKzI2
LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zZXJ0VGV4dENvbW1hbmQu
aCIKIAotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgotI2luY2x1ZGUg
IkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1l
cy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkVkaXRpbmdUZXh0LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAj
aW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKLSNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNs
dWRlICJUeXBpbmdDb21tYW5kLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogI2luY2x1
ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuaAkocmV2aXNpb24gNzk4
MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFJlbW92ZUNTU1Byb3Bl
cnR5Q29tbWFuZF9oCiAKICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgotI2luY2x1ZGUgIkNTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgog
I2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84370</attachid>
            <date>2011-03-01 23:07:53 -0800</date>
            <delta_ts>2011-03-03 00:35:21 -0800</delta_ts>
            <desc>Includes wtf/Forward.h instead of wtf/text/WTFString.h</desc>
            <filename>bug-55338-20110302160752.patch</filename>
            <type>text/plain</type>
            <size>1107</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwMDk3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDMtMDEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24gYW5kIHJlbW92ZUlu
bGluZVN0eWxlRnJvbUVsZW1lbnQgc2hvdWxkIHRha2UgRWRpdGluZ1N0eWxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTMzOAorCisgICAgICAgIElu
Y2x1ZGUgd3RmL0ZvcndhcmQuaCBpbnN0ZWFkIG9mIHd0Zi90ZXh0L1N0cmluZy5oCisKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5oOgorCiAyMDExLTAzLTAxICBLZW50IFRhbXVyYSAg
PHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXpr
b3YuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDgw
MDkwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>