<?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>55902</bug_id>
          
          <creation_ts>2011-03-07 13:41:01 -0800</creation_ts>
          <short_desc>selectionHasStyle and selectionStartHasStyle should use EditingStyle</short_desc>
          <delta_ts>2011-03-07 19:54:58 -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>54932</blocked>
    
    <blocked>55904</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>363551</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-07 13:41:01 -0800</bug_when>
    <thetext>We should deploy EditingStyle in selectionHasStyle and selectionStartHasStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363674</commentid>
    <comment_count>1</comment_count>
      <attachid>84993</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-07 16:31:15 -0800</bug_when>
    <thetext>Created attachment 84993
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363680</commentid>
    <comment_count>2</comment_count>
      <attachid>84994</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-07 16:43:30 -0800</bug_when>
    <thetext>Created attachment 84994
cleanup 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363682</commentid>
    <comment_count>3</comment_count>
      <attachid>84993</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-07 16:45:03 -0800</bug_when>
    <thetext>Comment on attachment 84993
cleanup

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

&gt; Source/WebCore/page/ContextMenuController.cpp:41
&gt; +#include &quot;EditingStyle.h&quot;

I got rid of this line but two patches are identical otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363726</commentid>
    <comment_count>4</comment_count>
      <attachid>84994</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-07 18:06:27 -0800</bug_when>
    <thetext>Comment on attachment 84994
cleanup 2

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

&gt; Source/WebCore/editing/EditingStyle.cpp:516
&gt; +// CSS properties that only has a visual difference when applied to text.

Verb agreement problem here. Should be “have” instead of “has”.

But I think the verb “create” is better.

&gt; Source/WebCore/editing/EditingStyle.cpp:527
&gt; +    RefPtr&lt;CSSMutableStyleDeclaration&gt; diff = getPropertiesNotIn(m_mutableStyle.get(), styleToCompare);

Even though diff is a “term of art”, I would use the word “difference” here in this code you moved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363752</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-07 18:46:26 -0800</bug_when>
    <thetext>Thanks for the review as always!  Will fix both before landing the patch.

(In reply to comment #4)
&gt; (From update of attachment 84994 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84994&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/EditingStyle.cpp:516
&gt; &gt; +// CSS properties that only has a visual difference when applied to text.
&gt; 
&gt; Verb agreement problem here. Should be “have” instead of “has”.
&gt; 
&gt; But I think the verb “create” is better.
&gt; 
&gt; &gt; Source/WebCore/editing/EditingStyle.cpp:527
&gt; &gt; +    RefPtr&lt;CSSMutableStyleDeclaration&gt; diff = getPropertiesNotIn(m_mutableStyle.get(), styleToCompare);
&gt; 
&gt; Even though diff is a “term of art”, I would use the word “difference” here in this code you moved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363779</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-07 19:54:58 -0800</bug_when>
    <thetext>Committed r80528: &lt;http://trac.webkit.org/changeset/80528&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84993</attachid>
            <date>2011-03-07 16:31:15 -0800</date>
            <delta_ts>2011-03-07 16:45:03 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-55902-20110307163114.patch</filename>
            <type>text/plain</type>
            <size>23268</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNTA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDMtMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgc2VsZWN0aW9uSGFzU3R5bGUgYW5kIHNlbGVjdGlvblN0YXJ0SGFz
U3R5bGUgc2hvdWxkIHVzZSBFZGl0aW5nU3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU1OTAyCisKKyAgICAgICAgRGVwbG95ZWQgRWRpdGluZ1N0
eWxlIGluIHNlbGVjdGlvbkhhc1N0eWxlIGFuZCBzZWxlY3Rpb25TdGFydEhhc1N0eWxlLgorICAg
ICAgICBUaGlzIGFsbG93ZWQgdXMgdG8gbW92ZSB0cmlTdGF0ZU9mU3R5bGUgZnJvbSBFZGl0b3Iu
Y3BwIHRvIEVkaXRpbmdTdHlsZS5jcHAuCisKKyAgICAgICAgQWxzbyBjaGFuZ2VkIHRoZSBhcmd1
bWVudCBsaXN0cyBvZiBzZWxlY3Rpb25IYXNTdHlsZSBhbmQgc2VsZWN0aW9uU3RhcnRIYXNTdHls
ZQorICAgICAgICB0byB0YWtlIGEgcHJvcGVydHkgaWQgYW5kIGEgdmFsdWUgaW5zdGVhZCBvZiBh
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uIHRvIGNsZWFudXAKKyAgICAgICAgY2FsbCBzaXRl
cyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFVw
ZGF0ZWQgdGhlIHNpZ25hdHVyZSBvZiBzZWxlY3Rpb25IYXNTdHlsZS4gTm8gbG9uZ2VyIGV4cG9y
dHMKKyAgICAgICAgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZSBiZWNhdXNlIGl0J3Mgbm90IGNhbGxl
ZCBhbnl3aGVyZSBvdXRzaWRlIG9mIFdlYkNvcmUuCisgICAgICAgICogV2ViQ29yZS5vcmRlcjog
RGl0dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdGluZ1N0eWxlOjpFZGl0aW5nU3R5bGUpOiBBZGRlZCBhIG5ldyBjb25zdHJ1Y3Rv
ciB0aGF0IHRha2VzIGEgcHJvcGVydHkgaWQKKyAgICAgICAgYW5kIGEgcHJvcGVydHkgdmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSk6IE1vdmVk
IGZyb20gRWRpdG9yLmNwcC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblN0
YXJ0SGFzU3R5bGUpOiBUYWtlcyBhIHByb3BlcnR5IGlkIGFuZCBhIHZhbHVlIGluc3RlYWQgb2YK
KyAgICAgICAgYSBDU1NTdHlsZURlY2xhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpzZWxlY3Rpb25IYXNTdHlsZSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
IFVwZGF0ZWQgdGhlIHNpZ25hdHVyZXMgb2Ygc2VsZWN0aW9uU3RhcnRIYXNTdHlsZSBhbmQgc2Vs
ZWN0aW9uSGFzU3R5bGUuCisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZSk6IENhbGxzIHNlbGVjdGlvblN0YXJ0
SGFzU3R5bGUgYW5kIHNlbGVjdGlvbkhhc1N0eWxlLgorICAgICAgICAoV2ViQ29yZTo6c3RhdGVT
dHlsZSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKTogRGl0dG8uCisKIDIwMTEtMDMtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gODA0NzApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE5NCw5ICsxMTk0LDggQEAgX19aTks3V2ViQ29y
ZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0
aW9uUmFuZ2VFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmZvbnRGb3JTZWxlY3Rpb25FUmIKIF9f
Wk5LN1dlYkNvcmU2RWRpdG9yMTdmaXJzdFJlY3RGb3JSYW5nZUVQTlNfNVJhbmdlRQotX19aTks3
V2ViQ29yZTZFZGl0b3IxN3NlbGVjdGlvbkhhc1N0eWxlRVBOU18xOUNTU1N0eWxlRGVjbGFyYXRp
b25FCitfX1pOSzdXZWJDb3JlNkVkaXRvcjE3c2VsZWN0aW9uSGFzU3R5bGVFaVJLTjNXVEY2U3Ry
aW5nRQogX19aTks3V2ViQ29yZTZFZGl0b3IxN3Nob3VsZERlbGV0ZVJhbmdlRVBOU181UmFuZ2VF
Ci1fX1pOSzdXZWJDb3JlNkVkaXRvcjIyc2VsZWN0aW9uU3RhcnRIYXNTdHlsZUVQTlNfMTlDU1NT
dHlsZURlY2xhcmF0aW9uRQogX19aTks3V2ViQ29yZTZFZGl0b3IyM2dldENvbXBvc2l0aW9uU2Vs
ZWN0aW9uRVJqUzFfCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMwYXBwbHlFZGl0aW5nU3R5bGVUb0Jv
ZHlFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMzFmb250QXR0cmlidXRlc0ZvclNlbGVj
dGlvblN0YXJ0RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gODA0NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkzMiw3ICsx
MjkzMiw3IEBAIF9fWk43V2ViQ29yZTQ0anNEb2N1bWVudFByb3RvdHlwZUZ1bmN0aW8KIF9fWk43
V2ViQ29yZThEb2N1bWVudDE3cXVlcnlDb21tYW5kU3RhdGVFUktOU182U3RyaW5nRQogX19aTjdX
ZWJDb3JlTDlzdGF0ZUJvbGRFUE5TXzVGcmFtZUVQTlNfNUV2ZW50RQogX19aTjdXZWJDb3JlTDEw
c3RhdGVTdHlsZUVQTlNfNUZyYW1lRWlQS2MKLV9fWk5LN1dlYkNvcmU2RWRpdG9yMTdzZWxlY3Rp
b25IYXNTdHlsZUVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRQorX19aTks3V2ViQ29yZTZFZGl0
b3IxN3NlbGVjdGlvbkhhc1N0eWxlRWlSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU1RnJh
bWUyMnNlbGVjdGlvbkNvbXB1dGVkU3R5bGVFUlBOU180Tm9kZUUKIF9fWk43V2ViQ29yZUwxMXN0
YXRlSXRhbGljRVBOU181RnJhbWVFUE5TXzVFdmVudEUKIF9fWk43V2ViQ29yZUwxNHN0YXRlVW5k
ZXJsaW5lRVBOU181RnJhbWVFUE5TXzVFdmVudEUKQEAgLTE3NjQxLDcgKzE3NjQxLDYgQEAgX19a
Tks3V2ViQ29yZTE3SW5zZXJ0TGlzdENvbW1hbmQyMHByZXNlcgogX19aTks3V2ViQ29yZTE3SW5z
ZXJ0TGlzdENvbW1hbmQxM2VkaXRpbmdBY3Rpb25FdgogX19aTjdXZWJDb3JlTDE3ZXhlY3V0ZVRv
Z2dsZUJvbGRFUE5TXzVGcmFtZUVQTlNfNUV2ZW50RU5TXzE5RWRpdG9yQ29tbWFuZFNvdXJjZUVS
S05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmVMMThleGVjdXRlVG9nZ2xlU3R5bGVFUE5TXzVGcmFt
ZUVOU18xOUVkaXRvckNvbW1hbmRTb3VyY2VFTlNfMTBFZGl0QWN0aW9uRWlQS2NTNV8KLV9fWk5L
N1dlYkNvcmU2RWRpdG9yMjJzZWxlY3Rpb25TdGFydEhhc1N0eWxlRVBOU18xOUNTU1N0eWxlRGVj
bGFyYXRpb25FCiBfX1pON1dlYkNvcmVMMzB0cmlTdGF0ZU9mU3R5bGVJbkNvbXB1dGVkU3R5bGVF
UE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkVQTlNfMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b25FYgogX19aTjdXZWJDb3JlTDE0ZXhlY3V0ZU91dGRlbnRFUE5TXzVGcmFtZUVQTlNfNUV2ZW50
RU5TXzE5RWRpdG9yQ29tbWFuZFNvdXJjZUVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMElu
ZGVudE91dGRlbnRDb21tYW5kMTNvdXRkZW50UmVnaW9uRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25F
UzNfCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZpc2lv
biA4MDQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4NiwxNCBAQCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdTdHls
ZShjb25zdCBDU1NTdHlsCiAgICAgZXh0cmFjdEZvbnRTaXplRGVsdGEoKTsKIH0KIAorRWRpdGlu
Z1N0eWxlOjpFZGl0aW5nU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CisgICAgOiBtX211dGFibGVTdHlsZSgwKQorICAgICwgbV9zaG91bGRVc2VGaXhlZERlZmF1bHRG
b250U2l6ZShmYWxzZSkKKyAgICAsIG1fZm9udFNpemVEZWx0YShOb0ZvbnREZWx0YSkKK3sKKyAg
ICBzZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSk7Cit9CisKIEVkaXRpbmdTdHlsZTo6fkVk
aXRpbmdTdHlsZSgpCiB7CiB9CkBAIC01MDUsNiArNTEzLDMwIEBAIHZvaWQgRWRpdGluZ1N0eWxl
Ojpjb2xsYXBzZVRleHREZWNvcmF0aW8KICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7CiB9CiAKKy8vIENT
UyBwcm9wZXJ0aWVzIHRoYXQgb25seSBoYXMgYSB2aXN1YWwgZGlmZmVyZW5jZSB3aGVuIGFwcGxp
ZWQgdG8gdGV4dC4KK3N0YXRpYyBjb25zdCBpbnQgdGV4dE9ubHlQcm9wZXJ0aWVzW10gPSB7Cisg
ICAgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0LAorICAgIENTU1Byb3BlcnR5Rm9udFN0eWxlLAorICAgIENTU1By
b3BlcnR5Rm9udFdlaWdodCwKKyAgICBDU1NQcm9wZXJ0eUNvbG9yLAorfTsKKworVHJpU3RhdGUg
RWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVU
b0NvbXBhcmUsIFNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyBzaG91bGRJZ25vcmVUZXh0
T25seVByb3BlcnRpZXMpIGNvbnN0Cit7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBkaWZmID0gZ2V0UHJvcGVydGllc05vdEluKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBz
dHlsZVRvQ29tcGFyZSk7CisKKyAgICBpZiAoc2hvdWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVz
ID09IElnbm9yZVRleHRPbmx5UHJvcGVydGllcykKKyAgICAgICAgZGlmZi0+cmVtb3ZlUHJvcGVy
dGllc0luU2V0KHRleHRPbmx5UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0T25seVBy
b3BlcnRpZXMpKTsKKworICAgIGlmICghZGlmZi0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBU
cnVlVHJpU3RhdGU7CisgICAgaWYgKGRpZmYtPmxlbmd0aCgpID09IG1fbXV0YWJsZVN0eWxlLT5s
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisKKyAgICByZXR1cm4gTWl4
ZWRUcmlTdGF0ZTsKK30KKwogYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVT
dHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBFZGl0aW5nU3R5bGUqIGV4dHJh
Y3RlZFN0eWxlLCBWZWN0b3I8Q1NTUHJvcGVydHlJRD4qIGNvbmZsaWN0aW5nUHJvcGVydGllcykg
Y29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDgwNDcwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBjbGFzcyBR
dWFsaWZpZWROYW1lOwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBTdHlsZWRFbGVtZW50Owog
CitlbnVtIFRyaVN0YXRlIHsgRmFsc2VUcmlTdGF0ZSwgVHJ1ZVRyaVN0YXRlLCBNaXhlZFRyaVN0
YXRlIH07CisKIGNsYXNzIEVkaXRpbmdTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPEVkaXRpbmdT
dHlsZT4gewogcHVibGljOgogCkBAIC03OSw2ICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRWRpdGluZ1N0eWxlKHN0eWxlKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiBjcmVhdGUoaW50IHByb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRp
bmdTdHlsZShwcm9wZXJ0eUlELCB2YWx1ZSkpOworICAgIH0KKwogICAgIH5FZGl0aW5nU3R5bGUo
KTsKIAogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0dXJuIG1f
bXV0YWJsZVN0eWxlLmdldCgpOyB9CkBAIC05NSw2ICsxMDIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5vZGUqKTsKICAgICB2b2lk
IHJlbW92ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzKCk7CiAgICAgdm9pZCBjb2xsYXBzZVRleHREZWNv
cmF0aW9uUHJvcGVydGllcygpOworICAgIGVudW0gU2hvdWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0
aWVzIHsgSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzLCBEb05vdElnbm9yZVRleHRPbmx5UHJvcGVy
dGllcyB9OworICAgIFRyaVN0YXRlIHRyaVN0YXRlT2ZTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9u
KiwgU2hvdWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzID0gRG9Ob3RJZ25vcmVUZXh0T25seVBy
b3BlcnRpZXMpIGNvbnN0OwogICAgIGJvb2wgY29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVt
ZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJuIGNvbmZsaWN0c1dpdGhJ
bmxpbmVTdHlsZU9mRWxlbWVudChlbGVtZW50LCAwLCAwKTsgfQogICAgIGJvb2wgY29uZmxpY3Rz
V2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEVkaXRpbmdT
dHlsZSogZXh0cmFjdGVkU3R5bGUsIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiYgY29uZmxpY3RpbmdQ
cm9wZXJ0aWVzKSBjb25zdAogICAgIHsKQEAgLTExNyw2ICsxMjYsNyBAQCBwcml2YXRlOgogICAg
IEVkaXRpbmdTdHlsZShOb2RlKiwgUHJvcGVydGllc1RvSW5jbHVkZSk7CiAgICAgRWRpdGluZ1N0
eWxlKGNvbnN0IFBvc2l0aW9uJik7CiAgICAgRWRpdGluZ1N0eWxlKGNvbnN0IENTU1N0eWxlRGVj
bGFyYXRpb24qKTsKKyAgICBFZGl0aW5nU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogICAgIHZvaWQgaW5pdChOb2RlKiwgUHJvcGVydGllc1RvSW5jbHVkZSk7CiAg
ICAgdm9pZCByZW1vdmVUZXh0RmlsbEFuZFN0cm9rZUNvbG9yc0lmTmVlZGVkKFJlbmRlclN0eWxl
Kik7CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCShyZXZpc2lvbiA4MDQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ1LDM5ICs5NDUsMTggQEAgdm9pZCBFZGl0b3I6OmFw
cGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdAogICAgICAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0
eWxlLCBlZGl0aW5nQWN0aW9uKTsKIH0KIAotLy8gQ1NTIHByb3BlcnRpZXMgdGhhdCBvbmx5IGhh
cyBhIHZpc3VhbCBkaWZmZXJlbmNlIHdoZW4gYXBwbGllZCB0byB0ZXh0Lgotc3RhdGljIGNvbnN0
IGludCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IHsKLSAgICBDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLAotICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsCi0gICAg
Q1NTUHJvcGVydHlGb250U3R5bGUsCi0gICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0LAotICAgIENT
U1Byb3BlcnR5Q29sb3IsCi19OwotCi1zdGF0aWMgVHJpU3RhdGUgdHJpU3RhdGVPZlN0eWxlKENT
U1N0eWxlRGVjbGFyYXRpb24qIGRlc2lyZWRTdHlsZSwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGVUb0NvbXBhcmUsIGJvb2wgaWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzID0gZmFsc2UpCi17Ci0g
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkaWZmID0gZ2V0UHJvcGVydGll
c05vdEluKGRlc2lyZWRTdHlsZSwgc3R5bGVUb0NvbXBhcmUpOwotCi0gICAgaWYgKGlnbm9yZVRl
eHRPbmx5UHJvcGVydGllcykKLSAgICAgICAgZGlmZi0+cmVtb3ZlUHJvcGVydGllc0luU2V0KHRl
eHRPbmx5UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0T25seVByb3BlcnRpZXMpKTsK
LQotICAgIGlmICghZGlmZi0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7
Ci0gICAgaWYgKGRpZmYtPmxlbmd0aCgpID09IGRlc2lyZWRTdHlsZS0+bGVuZ3RoKCkpCi0gICAg
ICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwotfQot
Ci1ib29sIEVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSkgY29uc3QKK2Jvb2wgRWRpdG9yOjpzZWxlY3Rpb25TdGFydEhhc1N0eWxlKGludCBw
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogeworICAgIFJlZlB0cjxFZGl0
aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUp
OwogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0gc2VsZWN0aW9uU3Rh
cnRTdHlsZSgpOwogICAgIGlmICghc2VsZWN0aW9uU3R5bGUgfHwgIXNlbGVjdGlvblN0eWxlLT5z
dHlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRyaVN0YXRlT2ZTdHls
ZShzdHlsZSwgc2VsZWN0aW9uU3R5bGUtPnN0eWxlKCkpID09IFRydWVUcmlTdGF0ZTsKKyAgICBy
ZXR1cm4gc3R5bGUtPnRyaVN0YXRlT2ZTdHlsZShzZWxlY3Rpb25TdHlsZS0+c3R5bGUoKSkgPT0g
VHJ1ZVRyaVN0YXRlOwogfQogCi1UcmlTdGF0ZSBFZGl0b3I6OnNlbGVjdGlvbkhhc1N0eWxlKENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdAorVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rp
b25IYXNTdHlsZShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsK
KyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBy
b3BlcnR5SUQsIHZhbHVlKTsKICAgICBpZiAoIW1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NhcmV0
T3JSYW5nZSgpKQogICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKIApAQCAtOTg1LDE0ICs5
NjQsMTQgQEAgVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZShDU1NTdAogICAgICAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IHNlbGVjdGlvblN0YXJ0U3R5
bGUoKTsKICAgICAgICAgaWYgKCFzZWxlY3Rpb25TdHlsZSB8fCAhc2VsZWN0aW9uU3R5bGUtPnN0
eWxlKCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJu
IHRyaVN0YXRlT2ZTdHlsZShzdHlsZSwgc2VsZWN0aW9uU3R5bGUtPnN0eWxlKCkpOworICAgICAg
ICByZXR1cm4gc3R5bGUtPnRyaVN0YXRlT2ZTdHlsZShzZWxlY3Rpb25TdHlsZS0+c3R5bGUoKSk7
CiAgICAgfQogCiAgICAgVHJpU3RhdGUgc3RhdGUgPSBGYWxzZVRyaVN0YXRlOwogICAgIGZvciAo
Tm9kZSogbm9kZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gbm9kZVN0eWxlID0gY29tcHV0ZWRTdHls
ZShub2RlKTsKICAgICAgICAgaWYgKG5vZGVTdHlsZSkgewotICAgICAgICAgICAgVHJpU3RhdGUg
bm9kZVN0YXRlID0gdHJpU3RhdGVPZlN0eWxlKHN0eWxlLCBub2RlU3R5bGUuZ2V0KCksICFub2Rl
LT5pc1RleHROb2RlKCkpOworICAgICAgICAgICAgVHJpU3RhdGUgbm9kZVN0YXRlID0gc3R5bGUt
PnRyaVN0YXRlT2ZTdHlsZShub2RlU3R5bGUuZ2V0KCksIG5vZGUtPmlzVGV4dE5vZGUoKSA/IEVk
aXRpbmdTdHlsZTo6RG9Ob3RJZ25vcmVUZXh0T25seVByb3BlcnRpZXMgOiBFZGl0aW5nU3R5bGU6
Oklnbm9yZVRleHRPbmx5UHJvcGVydGllcyk7CiAgICAgICAgICAgICBpZiAobm9kZSA9PSBtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKQogICAgICAgICAgICAg
ICAgIHN0YXRlID0gbm9kZVN0YXRlOwogICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUgIT0gbm9k
ZVN0YXRlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCShyZXZpc2lvbiA4MDQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgc3RydWN0IENvbXBvc2l0aW9uVW5kZXJs
aW5lIHsKICAgICBib29sIHRoaWNrOwogfTsKIAotZW51bSBUcmlTdGF0ZSB7IEZhbHNlVHJpU3Rh
dGUsIFRydWVUcmlTdGF0ZSwgTWl4ZWRUcmlTdGF0ZSB9OwogZW51bSBFZGl0b3JDb21tYW5kU291
cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFu
ZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9OwogCiBjbGFzcyBFZGl0b3IgewpAQCAtMTMzLDcg
KzEzMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uKTsKICAgICB2b2lkIHJlc3BvbmRUb0No
YW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24pOwog
Ci0gICAgVHJpU3RhdGUgc2VsZWN0aW9uSGFzU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopIGNv
bnN0OworICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShpbnQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CisgICAgVHJpU3RhdGUgc2VsZWN0aW9uSGFzU3R5bGUo
aW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0OwogICAgIFN0cmluZyBz
ZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpOwogICAgIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBmb250Rm9yU2VsZWN0aW9uKGJvb2wmKSBjb25zdDsKICAgICBXcml0
aW5nRGlyZWN0aW9uIHRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oYm9vbCYpIGNvbnN0OwpAQCAt
MTcwLDggKzE3MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYXBwbGllZEVkaXRpbmcoUGFzc1Jl
ZlB0cjxFZGl0Q29tbWFuZD4pOwogICAgIHZvaWQgdW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcm
IGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKIAotICAgIGJvb2wgc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKikgY29uc3Q7Ci0KICAgICB2b2lk
IHNldFNob3VsZFN0eWxlV2l0aENTUyhib29sIGZsYWcpIHsgbV9zaG91bGRTdHlsZVdpdGhDU1Mg
PSBmbGFnOyB9CiAgICAgYm9vbCBzaG91bGRTdHlsZVdpdGhDU1MoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZFN0eWxlV2l0aENTUzsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDgwNDcwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDIxICsxNTYsMTggQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0KEZyYQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJj
ZSwgRWRpdEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBvZmZWYWx1
ZSwgY29uc3QgY2hhciogb25WYWx1ZSkKIHsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IHN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwot
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBvblZhbHVlKTsgLy8gV2UgbmVlZCB0
byBhZGQgdGhpcyBzdHlsZSB0byBwYXNzIGl0IHRvIHNlbGVjdGlvblN0YXJ0SGFzU3R5bGUgLyBz
ZWxlY3Rpb25IYXNTdHlsZQotCiAgICAgLy8gU3R5bGUgaXMgY29uc2lkZXJlZCBwcmVzZW50IHdo
ZW4KICAgICAvLyBNYWM6IHByZXNlbnQgYXQgdGhlIGJlZ2lubmluZyBvZiBzZWxlY3Rpb24KICAg
ICAvLyBvdGhlcjogcHJlc2VudCB0aHJvdWdob3V0IHRoZSBzZWxlY3Rpb24KIAogICAgIGJvb2wg
c3R5bGVJc1ByZXNlbnQ7CiAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91
bGRUb2dnbGVTdHlsZUJhc2VkT25TdGFydE9mU2VsZWN0aW9uKCkpCi0gICAgICAgIHN0eWxlSXNQ
cmVzZW50ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHN0eWxlLmdl
dCgpKTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlv
blN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSk7CiAgICAgZWxzZQotICAgICAgICBz
dHlsZUlzUHJlc2VudCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoc3R5bGUu
Z2V0KCkpID09IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVU
cmlTdGF0ZTsKIAotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBzdHlsZUlzUHJl
c2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7Ci0gICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJh
bWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS5nZXQoKSk7CisgICAgUmVmUHRyPEVkaXRp
bmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBzdHlsZUlz
UHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7CisgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRv
RnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUoKSk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQpAQCAtMjI3LDEyICsyMjQsOSBAQCBzdGF0aWMgYm9v
bCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0
eWxlKEZyYW1lKiBmcmFtZSwgaW50IHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2lyZWRWYWx1
ZSkKIHsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOwotCiAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+
YmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25TdGFydE9mU2VsZWN0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoc3R5
bGUuZ2V0KCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICByZXR1cm4gZnJh
bWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShzdHlsZS5nZXQoKSk7CisgICAgICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwg
ZGVzaXJlZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZh
bHVlKTsKIH0KIAogc3RhdGljIFN0cmluZyB2YWx1ZVN0eWxlKEZyYW1lKiBmcmFtZSwgaW50IHBy
b3BlcnR5SUQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiA4MDQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50TG9hZGVyLmgiCisjaW5jbHVkZSAiRWRpdGluZ1N0eWxlLmgiCiAjaW5jbHVk
ZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQu
aCIKQEAgLTEwMTAsMTEgKzEwMTEsOCBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hl
Y2tPckVuYWJsCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdMZWZ0VG9SaWdodDoKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRv
TGVmdDogewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBS
ZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y3Jl
YXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9
IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQgPyAibHRyIiA6
ICJydGwiOwotICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0
aW9uLCBkaXJlY3Rpb24sIGZhbHNlLCBlYyk7Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGZy
YW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoc3R5bGUuZ2V0KCkpICE9IEZhbHNlVHJp
U3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0
aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbikgIT0gRmFsc2VUcmlT
dGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMTA2MCwxMCArMTA1OCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250
cm9sbGVyOjpjaGVja09yRW5hYmwKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lOiB7Ci0gICAgICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBz
dHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0g
ICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIsIGZhbHNlLCBlYyk7Ci0gICAgICAgICAgICBzaG91
bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoc3R5bGUuZ2V0KCkp
ICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0
b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCwgInVuZGVybGluZSIpICE9IEZhbHNlVHJpU3RhdGU7CiAgICAgICAgICAgICBzaG91
bGRFbmFibGUgPSBmcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0xMDc4LDE4ICsxMDczLDEyIEBAIHZvaWQgQ29udGV4dE1l
bnVDb250cm9sbGVyOjpjaGVja09yRW5hYmwKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnSXRhbGljOiB7Ci0gICAgICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9u
PiBzdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7
Ci0gICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U3R5bGUsICJp
dGFsaWMiLCBmYWxzZSwgZWMpOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRp
dG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKHN0eWxlLmdldCgpKSAhPSBGYWxzZVRyaVN0YXRlOwor
ICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0
eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKICAg
ICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdCb2xkOiB7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAg
ICAgICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGZyYW1lLT5kb2N1bWVu
dCgpLT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIsIGZhbHNlLCBlYyk7Ci0gICAg
ICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUo
c3R5bGUuZ2V0KCkpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9
IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0
LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBm
cmFtZS0+ZWRpdG9yKCktPmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODA1MDcpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDExLTAzLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHNlbGVjdGlv
bkhhc1N0eWxlIGFuZCBzZWxlY3Rpb25TdGFydEhhc1N0eWxlIHNob3VsZCB1c2UgRWRpdGluZ1N0
eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTkw
MgorCisgICAgICAgIHNlbGVjdGlvbkhhc1N0eWxlIG5vdyB0YWtlcyBhIHByb3BlcnR5IGlkIGFu
ZCBhIHZhbHVlIGluc3RlYWQgb2YgYSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi4KKworICAg
ICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
b250ZXh0TWVudUNsaWVudEltcGw6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKTogQ2Fs
bHMgc2VsZWN0aW9uSGFzU3R5bGUuCisKIDIwMTEtMDMtMDcgIERhbmllbCBDaGVuZyAgPGRjaGVu
Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJ
bXBsLmNwcAkocmV2aXNpb24gODA0NzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
b250ZXh0TWVudUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsMTMgKzI2Miw5
IEBAIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51Q2xpZW4KICAgICB9CiAKICNp
ZiBPUyhEQVJXSU4pCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPENTU1N0
eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gc2VsZWN0ZWRGcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRl
Q1NTU3R5bGVEZWNsYXJhdGlvbigpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eURpcmVjdGlvbiwgImx0ciIsIGZhbHNlLCBlYyk7Ci0gICAgaWYgKHNlbGVjdGVkRnJhbWUtPmVk
aXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShzdHlsZS5nZXQoKSkgIT0gRmFsc2VUcmlTdGF0ZSkK
KyAgICBpZiAoc2VsZWN0ZWRGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKENTU1By
b3BlcnR5RGlyZWN0aW9uLCAnbHRyJykgIT0gRmFsc2VUcmlTdGF0ZSkKICAgICAgICAgZGF0YS53
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgfD0gV2ViQ29udGV4dE1lbnVEYXRhOjpDaGVja2Fi
bGVNZW51SXRlbUNoZWNrZWQ7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGly
ZWN0aW9uLCAicnRsIiwgZmFsc2UsIGVjKTsKLSAgICBpZiAoc2VsZWN0ZWRGcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGlvbkhhc1N0eWxlKHN0eWxlLmdldCgpKSAhPSBGYWxzZVRyaVN0YXRlKQorICAg
IGlmIChzZWxlY3RlZEZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVy
dHlEaXJlY3Rpb24sICdydGwnKSAhPSBGYWxzZVRyaVN0YXRlKQogICAgICAgICBkYXRhLndyaXRp
bmdEaXJlY3Rpb25SaWdodFRvTGVmdCB8PSBXZWJDb250ZXh0TWVudURhdGE6OkNoZWNrYWJsZU1l
bnVJdGVtQ2hlY2tlZDsKICNlbmRpZiAvLyBPUyhEQVJXSU4pCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDgwNTA3KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDcgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgc2VsZWN0aW9uSGFzU3R5bGUgYW5kIHNlbGVjdGlvblN0YXJ0SGFzU3R5bGUgc2hv
dWxkIHVzZSBFZGl0aW5nU3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU1OTAyCisKKyAgICAgICAgc2VsZWN0aW9uSGFzU3R5bGUgbm93IHRha2Vz
IGEgcHJvcGVydHkgaWQgYW5kIGEgdmFsdWUgaW5zdGVhZCBvZiBhIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbTogUmVtb3ZlZCB1
bnVzZWQgc2VsZWN0aW9uSGFzU3R5bGUuCisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRl
VXNlckludGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6XSk6IENhbGxzIEVkaXRvcjo6c2VsZWN0
aW9uSGFzU3R5bGUuCisKIDIwMTEtMDMtMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBMTFZNIENvbXBpbGVyIGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gODA0NzApCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQz
LDE0ICsyNjQzLDYgQEAgLSAodm9pZClqdW1wVG9TZWxlY3Rpb246KGlkKXNlbmRlcgogICAgICAg
ICBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5yZXZlYWxTZWxlY3Rpb24oU2Nyb2xsQWxpZ25tZW50
OjphbGlnbkNlbnRlckFsd2F5cyk7CiB9CiAKLS0gKE5TQ2VsbFN0YXRlVmFsdWUpc2VsZWN0aW9u
SGFzU3R5bGU6KENTU1N0eWxlRGVjbGFyYXRpb24qKXN0eWxlCi17Ci0gICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgaWYgKCFjb3JlRnJhbWUpCi0gICAgICAg
IHJldHVybiBOU09mZlN0YXRlOwotICAgIHJldHVybiBraXQoY29yZUZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0aW9uSGFzU3R5bGUoc3R5bGUpKTsKLX0KLQogLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRl
cmZhY2VJdGVtV2l0aG91dERlbGVnYXRlOihpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRl
bT4paXRlbQogewogICAgIFNFTCBhY3Rpb24gPSBbaXRlbSBhY3Rpb25dOwpAQCAtMjcwNiwxMCAr
MjY5OCw4IEBAIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXQKIAogICAg
ICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKICAgICAgICAg
aWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0g
ICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoImRpcmVjdGlvbiIsIHdyaXRpbmdEaXJlY3Rp
b24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAiTFRSIiA6ICJSVEwiLCBlYyk7
Ci0gICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rp
b25IYXNTdHlsZShzdHlsZS5nZXQoKSldOworICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9
IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRy
IiA6ICJydGwiOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmZyYW1lLT5lZGl0b3Io
KS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbildOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBbc2VsZiBfY2FuRWRpdF07CiAgICAgfQpAQCAtMjcy
NCwxMiArMjcxNCw5IEBAIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXQK
ICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVCYXNlV3JpdGluZ0RpcmVjdGlvbjop
KSB7CiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOwog
ICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkg
ewotICAgICAgICAgICAgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwotICAgICAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYzsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eSgiZGlyZWN0aW9uIiwgIlJUTCIs
IGVjKTsKICAgICAgICAgICAgIC8vIFRha2UgY29udHJvbCBvZiB0aGUgdGl0bGUgb2YgdGhlIG1l
bnUgaXRlbSBpbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcvdW5jaGVja2luZyBpdCBiZWNhdXNlCiAg
ICAgICAgICAgICAvLyBhIGNoZWNrIHdvdWxkIGJlIGFtYmlndW91cy4KLSAgICAgICAgICAgIFtt
ZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKHN0eWxl
LmdldCgpKQorICAgICAgICAgICAgW21lbnVJdGVtIHNldFRpdGxlOmZyYW1lLT5lZGl0b3IoKS0+
c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiKQogICAgICAgICAg
ICAgICAgID8gVUlfU1RSSU5HX0lOVEVSTkFMKCJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmln
aHQgY29udGV4dCBtZW51IGl0ZW0iKQogICAgICAgICAgICAgICAgIDogVUlfU1RSSU5HX0lOVEVS
TkFMKCJSaWdodCB0byBMZWZ0IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0iKV07
CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84994</attachid>
            <date>2011-03-07 16:43:30 -0800</date>
            <delta_ts>2011-03-07 18:06:27 -0800</delta_ts>
            <desc>cleanup 2</desc>
            <filename>bug-55902-20110307164329.patch</filename>
            <type>text/plain</type>
            <size>23072</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNTA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDMtMDcgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgc2VsZWN0aW9uSGFzU3R5bGUgYW5kIHNlbGVjdGlvblN0YXJ0SGFz
U3R5bGUgc2hvdWxkIHVzZSBFZGl0aW5nU3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU1OTAyCisKKyAgICAgICAgRGVwbG95ZWQgRWRpdGluZ1N0
eWxlIGluIHNlbGVjdGlvbkhhc1N0eWxlIGFuZCBzZWxlY3Rpb25TdGFydEhhc1N0eWxlLgorICAg
ICAgICBUaGlzIGFsbG93ZWQgdXMgdG8gbW92ZSB0cmlTdGF0ZU9mU3R5bGUgZnJvbSBFZGl0b3Iu
Y3BwIHRvIEVkaXRpbmdTdHlsZS5jcHAuCisKKyAgICAgICAgQWxzbyBjaGFuZ2VkIHRoZSBhcmd1
bWVudCBsaXN0cyBvZiBzZWxlY3Rpb25IYXNTdHlsZSBhbmQgc2VsZWN0aW9uU3RhcnRIYXNTdHls
ZQorICAgICAgICB0byB0YWtlIGEgcHJvcGVydHkgaWQgYW5kIGEgdmFsdWUgaW5zdGVhZCBvZiBh
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uIHRvIGNsZWFudXAKKyAgICAgICAgY2FsbCBzaXRl
cyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFVw
ZGF0ZWQgdGhlIHNpZ25hdHVyZSBvZiBzZWxlY3Rpb25IYXNTdHlsZS4gTm8gbG9uZ2VyIGV4cG9y
dHMKKyAgICAgICAgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZSBiZWNhdXNlIGl0J3Mgbm90IGNhbGxl
ZCBhbnl3aGVyZSBvdXRzaWRlIG9mIFdlYkNvcmUuCisgICAgICAgICogV2ViQ29yZS5vcmRlcjog
RGl0dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdGluZ1N0eWxlOjpFZGl0aW5nU3R5bGUpOiBBZGRlZCBhIG5ldyBjb25zdHJ1Y3Rv
ciB0aGF0IHRha2VzIGEgcHJvcGVydHkgaWQKKyAgICAgICAgYW5kIGEgcHJvcGVydHkgdmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSk6IE1vdmVk
IGZyb20gRWRpdG9yLmNwcC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblN0
YXJ0SGFzU3R5bGUpOiBUYWtlcyBhIHByb3BlcnR5IGlkIGFuZCBhIHZhbHVlIGluc3RlYWQgb2YK
KyAgICAgICAgYSBDU1NTdHlsZURlY2xhcmF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpzZWxlY3Rpb25IYXNTdHlsZSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
IFVwZGF0ZWQgdGhlIHNpZ25hdHVyZXMgb2Ygc2VsZWN0aW9uU3RhcnRIYXNTdHlsZSBhbmQgc2Vs
ZWN0aW9uSGFzU3R5bGUuCisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZSk6IENhbGxzIHNlbGVjdGlvblN0YXJ0
SGFzU3R5bGUgYW5kIHNlbGVjdGlvbkhhc1N0eWxlLgorICAgICAgICAoV2ViQ29yZTo6c3RhdGVT
dHlsZSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKTogRGl0dG8uCisKIDIwMTEtMDMtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gODA0NzApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE5NCw5ICsxMTk0LDggQEAgX19aTks3V2ViQ29y
ZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0
aW9uUmFuZ2VFdgogX19aTks3V2ViQ29yZTZFZGl0b3IxNmZvbnRGb3JTZWxlY3Rpb25FUmIKIF9f
Wk5LN1dlYkNvcmU2RWRpdG9yMTdmaXJzdFJlY3RGb3JSYW5nZUVQTlNfNVJhbmdlRQotX19aTks3
V2ViQ29yZTZFZGl0b3IxN3NlbGVjdGlvbkhhc1N0eWxlRVBOU18xOUNTU1N0eWxlRGVjbGFyYXRp
b25FCitfX1pOSzdXZWJDb3JlNkVkaXRvcjE3c2VsZWN0aW9uSGFzU3R5bGVFaVJLTjNXVEY2U3Ry
aW5nRQogX19aTks3V2ViQ29yZTZFZGl0b3IxN3Nob3VsZERlbGV0ZVJhbmdlRVBOU181UmFuZ2VF
Ci1fX1pOSzdXZWJDb3JlNkVkaXRvcjIyc2VsZWN0aW9uU3RhcnRIYXNTdHlsZUVQTlNfMTlDU1NT
dHlsZURlY2xhcmF0aW9uRQogX19aTks3V2ViQ29yZTZFZGl0b3IyM2dldENvbXBvc2l0aW9uU2Vs
ZWN0aW9uRVJqUzFfCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMwYXBwbHlFZGl0aW5nU3R5bGVUb0Jv
ZHlFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMzFmb250QXR0cmlidXRlc0ZvclNlbGVj
dGlvblN0YXJ0RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gODA0NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkzMiw3ICsx
MjkzMiw3IEBAIF9fWk43V2ViQ29yZTQ0anNEb2N1bWVudFByb3RvdHlwZUZ1bmN0aW8KIF9fWk43
V2ViQ29yZThEb2N1bWVudDE3cXVlcnlDb21tYW5kU3RhdGVFUktOU182U3RyaW5nRQogX19aTjdX
ZWJDb3JlTDlzdGF0ZUJvbGRFUE5TXzVGcmFtZUVQTlNfNUV2ZW50RQogX19aTjdXZWJDb3JlTDEw
c3RhdGVTdHlsZUVQTlNfNUZyYW1lRWlQS2MKLV9fWk5LN1dlYkNvcmU2RWRpdG9yMTdzZWxlY3Rp
b25IYXNTdHlsZUVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRQorX19aTks3V2ViQ29yZTZFZGl0
b3IxN3NlbGVjdGlvbkhhc1N0eWxlRWlSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU1RnJh
bWUyMnNlbGVjdGlvbkNvbXB1dGVkU3R5bGVFUlBOU180Tm9kZUUKIF9fWk43V2ViQ29yZUwxMXN0
YXRlSXRhbGljRVBOU181RnJhbWVFUE5TXzVFdmVudEUKIF9fWk43V2ViQ29yZUwxNHN0YXRlVW5k
ZXJsaW5lRVBOU181RnJhbWVFUE5TXzVFdmVudEUKQEAgLTE3NjQxLDcgKzE3NjQxLDYgQEAgX19a
Tks3V2ViQ29yZTE3SW5zZXJ0TGlzdENvbW1hbmQyMHByZXNlcgogX19aTks3V2ViQ29yZTE3SW5z
ZXJ0TGlzdENvbW1hbmQxM2VkaXRpbmdBY3Rpb25FdgogX19aTjdXZWJDb3JlTDE3ZXhlY3V0ZVRv
Z2dsZUJvbGRFUE5TXzVGcmFtZUVQTlNfNUV2ZW50RU5TXzE5RWRpdG9yQ29tbWFuZFNvdXJjZUVS
S05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmVMMThleGVjdXRlVG9nZ2xlU3R5bGVFUE5TXzVGcmFt
ZUVOU18xOUVkaXRvckNvbW1hbmRTb3VyY2VFTlNfMTBFZGl0QWN0aW9uRWlQS2NTNV8KLV9fWk5L
N1dlYkNvcmU2RWRpdG9yMjJzZWxlY3Rpb25TdGFydEhhc1N0eWxlRVBOU18xOUNTU1N0eWxlRGVj
bGFyYXRpb25FCiBfX1pON1dlYkNvcmVMMzB0cmlTdGF0ZU9mU3R5bGVJbkNvbXB1dGVkU3R5bGVF
UE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkVQTlNfMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b25FYgogX19aTjdXZWJDb3JlTDE0ZXhlY3V0ZU91dGRlbnRFUE5TXzVGcmFtZUVQTlNfNUV2ZW50
RU5TXzE5RWRpdG9yQ29tbWFuZFNvdXJjZUVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMElu
ZGVudE91dGRlbnRDb21tYW5kMTNvdXRkZW50UmVnaW9uRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25F
UzNfCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZpc2lv
biA4MDQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4NiwxNCBAQCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdTdHls
ZShjb25zdCBDU1NTdHlsCiAgICAgZXh0cmFjdEZvbnRTaXplRGVsdGEoKTsKIH0KIAorRWRpdGlu
Z1N0eWxlOjpFZGl0aW5nU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CisgICAgOiBtX211dGFibGVTdHlsZSgwKQorICAgICwgbV9zaG91bGRVc2VGaXhlZERlZmF1bHRG
b250U2l6ZShmYWxzZSkKKyAgICAsIG1fZm9udFNpemVEZWx0YShOb0ZvbnREZWx0YSkKK3sKKyAg
ICBzZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSk7Cit9CisKIEVkaXRpbmdTdHlsZTo6fkVk
aXRpbmdTdHlsZSgpCiB7CiB9CkBAIC01MDUsNiArNTEzLDMwIEBAIHZvaWQgRWRpdGluZ1N0eWxl
Ojpjb2xsYXBzZVRleHREZWNvcmF0aW8KICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7CiB9CiAKKy8vIENT
UyBwcm9wZXJ0aWVzIHRoYXQgb25seSBoYXMgYSB2aXN1YWwgZGlmZmVyZW5jZSB3aGVuIGFwcGxp
ZWQgdG8gdGV4dC4KK3N0YXRpYyBjb25zdCBpbnQgdGV4dE9ubHlQcm9wZXJ0aWVzW10gPSB7Cisg
ICAgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0LAorICAgIENTU1Byb3BlcnR5Rm9udFN0eWxlLAorICAgIENTU1By
b3BlcnR5Rm9udFdlaWdodCwKKyAgICBDU1NQcm9wZXJ0eUNvbG9yLAorfTsKKworVHJpU3RhdGUg
RWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVU
b0NvbXBhcmUsIFNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyBzaG91bGRJZ25vcmVUZXh0
T25seVByb3BlcnRpZXMpIGNvbnN0Cit7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBkaWZmID0gZ2V0UHJvcGVydGllc05vdEluKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBz
dHlsZVRvQ29tcGFyZSk7CisKKyAgICBpZiAoc2hvdWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVz
ID09IElnbm9yZVRleHRPbmx5UHJvcGVydGllcykKKyAgICAgICAgZGlmZi0+cmVtb3ZlUHJvcGVy
dGllc0luU2V0KHRleHRPbmx5UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0T25seVBy
b3BlcnRpZXMpKTsKKworICAgIGlmICghZGlmZi0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBU
cnVlVHJpU3RhdGU7CisgICAgaWYgKGRpZmYtPmxlbmd0aCgpID09IG1fbXV0YWJsZVN0eWxlLT5s
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisKKyAgICByZXR1cm4gTWl4
ZWRUcmlTdGF0ZTsKK30KKwogYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVT
dHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBFZGl0aW5nU3R5bGUqIGV4dHJh
Y3RlZFN0eWxlLCBWZWN0b3I8Q1NTUHJvcGVydHlJRD4qIGNvbmZsaWN0aW5nUHJvcGVydGllcykg
Y29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDgwNDcwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBjbGFzcyBR
dWFsaWZpZWROYW1lOwogY2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBTdHlsZWRFbGVtZW50Owog
CitlbnVtIFRyaVN0YXRlIHsgRmFsc2VUcmlTdGF0ZSwgVHJ1ZVRyaVN0YXRlLCBNaXhlZFRyaVN0
YXRlIH07CisKIGNsYXNzIEVkaXRpbmdTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPEVkaXRpbmdT
dHlsZT4gewogcHVibGljOgogCkBAIC03OSw2ICs4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRWRpdGluZ1N0eWxlKHN0eWxlKSk7CiAgICAgfQogCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiBjcmVhdGUoaW50IHByb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRp
bmdTdHlsZShwcm9wZXJ0eUlELCB2YWx1ZSkpOworICAgIH0KKwogICAgIH5FZGl0aW5nU3R5bGUo
KTsKIAogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0dXJuIG1f
bXV0YWJsZVN0eWxlLmdldCgpOyB9CkBAIC05NSw2ICsxMDIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5vZGUqKTsKICAgICB2b2lk
IHJlbW92ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzKCk7CiAgICAgdm9pZCBjb2xsYXBzZVRleHREZWNv
cmF0aW9uUHJvcGVydGllcygpOworICAgIGVudW0gU2hvdWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0
aWVzIHsgSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzLCBEb05vdElnbm9yZVRleHRPbmx5UHJvcGVy
dGllcyB9OworICAgIFRyaVN0YXRlIHRyaVN0YXRlT2ZTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9u
KiwgU2hvdWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzID0gRG9Ob3RJZ25vcmVUZXh0T25seVBy
b3BlcnRpZXMpIGNvbnN0OwogICAgIGJvb2wgY29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVt
ZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJuIGNvbmZsaWN0c1dpdGhJ
bmxpbmVTdHlsZU9mRWxlbWVudChlbGVtZW50LCAwLCAwKTsgfQogICAgIGJvb2wgY29uZmxpY3Rz
V2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEVkaXRpbmdT
dHlsZSogZXh0cmFjdGVkU3R5bGUsIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiYgY29uZmxpY3RpbmdQ
cm9wZXJ0aWVzKSBjb25zdAogICAgIHsKQEAgLTExNyw2ICsxMjYsNyBAQCBwcml2YXRlOgogICAg
IEVkaXRpbmdTdHlsZShOb2RlKiwgUHJvcGVydGllc1RvSW5jbHVkZSk7CiAgICAgRWRpdGluZ1N0
eWxlKGNvbnN0IFBvc2l0aW9uJik7CiAgICAgRWRpdGluZ1N0eWxlKGNvbnN0IENTU1N0eWxlRGVj
bGFyYXRpb24qKTsKKyAgICBFZGl0aW5nU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogICAgIHZvaWQgaW5pdChOb2RlKiwgUHJvcGVydGllc1RvSW5jbHVkZSk7CiAg
ICAgdm9pZCByZW1vdmVUZXh0RmlsbEFuZFN0cm9rZUNvbG9yc0lmTmVlZGVkKFJlbmRlclN0eWxl
Kik7CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCShyZXZpc2lvbiA4MDQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ1LDM5ICs5NDUsMTggQEAgdm9pZCBFZGl0b3I6OmFw
cGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdAogICAgICAgICBhcHBseVBhcmFncmFwaFN0eWxlKHN0
eWxlLCBlZGl0aW5nQWN0aW9uKTsKIH0KIAotLy8gQ1NTIHByb3BlcnRpZXMgdGhhdCBvbmx5IGhh
cyBhIHZpc3VhbCBkaWZmZXJlbmNlIHdoZW4gYXBwbGllZCB0byB0ZXh0Lgotc3RhdGljIGNvbnN0
IGludCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IHsKLSAgICBDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLAotICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsCi0gICAg
Q1NTUHJvcGVydHlGb250U3R5bGUsCi0gICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0LAotICAgIENT
U1Byb3BlcnR5Q29sb3IsCi19OwotCi1zdGF0aWMgVHJpU3RhdGUgdHJpU3RhdGVPZlN0eWxlKENT
U1N0eWxlRGVjbGFyYXRpb24qIGRlc2lyZWRTdHlsZSwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGVUb0NvbXBhcmUsIGJvb2wgaWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzID0gZmFsc2UpCi17Ci0g
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkaWZmID0gZ2V0UHJvcGVydGll
c05vdEluKGRlc2lyZWRTdHlsZSwgc3R5bGVUb0NvbXBhcmUpOwotCi0gICAgaWYgKGlnbm9yZVRl
eHRPbmx5UHJvcGVydGllcykKLSAgICAgICAgZGlmZi0+cmVtb3ZlUHJvcGVydGllc0luU2V0KHRl
eHRPbmx5UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0T25seVByb3BlcnRpZXMpKTsK
LQotICAgIGlmICghZGlmZi0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7
Ci0gICAgaWYgKGRpZmYtPmxlbmd0aCgpID09IGRlc2lyZWRTdHlsZS0+bGVuZ3RoKCkpCi0gICAg
ICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwotfQot
Ci1ib29sIEVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSkgY29uc3QKK2Jvb2wgRWRpdG9yOjpzZWxlY3Rpb25TdGFydEhhc1N0eWxlKGludCBw
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogeworICAgIFJlZlB0cjxFZGl0
aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUp
OwogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0gc2VsZWN0aW9uU3Rh
cnRTdHlsZSgpOwogICAgIGlmICghc2VsZWN0aW9uU3R5bGUgfHwgIXNlbGVjdGlvblN0eWxlLT5z
dHlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRyaVN0YXRlT2ZTdHls
ZShzdHlsZSwgc2VsZWN0aW9uU3R5bGUtPnN0eWxlKCkpID09IFRydWVUcmlTdGF0ZTsKKyAgICBy
ZXR1cm4gc3R5bGUtPnRyaVN0YXRlT2ZTdHlsZShzZWxlY3Rpb25TdHlsZS0+c3R5bGUoKSkgPT0g
VHJ1ZVRyaVN0YXRlOwogfQogCi1UcmlTdGF0ZSBFZGl0b3I6OnNlbGVjdGlvbkhhc1N0eWxlKENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdAorVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rp
b25IYXNTdHlsZShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsK
KyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBy
b3BlcnR5SUQsIHZhbHVlKTsKICAgICBpZiAoIW1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NhcmV0
T3JSYW5nZSgpKQogICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKIApAQCAtOTg1LDE0ICs5
NjQsMTQgQEAgVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZShDU1NTdAogICAgICAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzZWxlY3Rpb25TdHlsZSA9IHNlbGVjdGlvblN0YXJ0U3R5
bGUoKTsKICAgICAgICAgaWYgKCFzZWxlY3Rpb25TdHlsZSB8fCAhc2VsZWN0aW9uU3R5bGUtPnN0
eWxlKCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKLSAgICAgICAgcmV0dXJu
IHRyaVN0YXRlT2ZTdHlsZShzdHlsZSwgc2VsZWN0aW9uU3R5bGUtPnN0eWxlKCkpOworICAgICAg
ICByZXR1cm4gc3R5bGUtPnRyaVN0YXRlT2ZTdHlsZShzZWxlY3Rpb25TdHlsZS0+c3R5bGUoKSk7
CiAgICAgfQogCiAgICAgVHJpU3RhdGUgc3RhdGUgPSBGYWxzZVRyaVN0YXRlOwogICAgIGZvciAo
Tm9kZSogbm9kZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gbm9kZVN0eWxlID0gY29tcHV0ZWRTdHls
ZShub2RlKTsKICAgICAgICAgaWYgKG5vZGVTdHlsZSkgewotICAgICAgICAgICAgVHJpU3RhdGUg
bm9kZVN0YXRlID0gdHJpU3RhdGVPZlN0eWxlKHN0eWxlLCBub2RlU3R5bGUuZ2V0KCksICFub2Rl
LT5pc1RleHROb2RlKCkpOworICAgICAgICAgICAgVHJpU3RhdGUgbm9kZVN0YXRlID0gc3R5bGUt
PnRyaVN0YXRlT2ZTdHlsZShub2RlU3R5bGUuZ2V0KCksIG5vZGUtPmlzVGV4dE5vZGUoKSA/IEVk
aXRpbmdTdHlsZTo6RG9Ob3RJZ25vcmVUZXh0T25seVByb3BlcnRpZXMgOiBFZGl0aW5nU3R5bGU6
Oklnbm9yZVRleHRPbmx5UHJvcGVydGllcyk7CiAgICAgICAgICAgICBpZiAobm9kZSA9PSBtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKQogICAgICAgICAgICAg
ICAgIHN0YXRlID0gbm9kZVN0YXRlOwogICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUgIT0gbm9k
ZVN0YXRlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCShyZXZpc2lvbiA4MDQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgc3RydWN0IENvbXBvc2l0aW9uVW5kZXJs
aW5lIHsKICAgICBib29sIHRoaWNrOwogfTsKIAotZW51bSBUcmlTdGF0ZSB7IEZhbHNlVHJpU3Rh
dGUsIFRydWVUcmlTdGF0ZSwgTWl4ZWRUcmlTdGF0ZSB9OwogZW51bSBFZGl0b3JDb21tYW5kU291
cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFu
ZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9OwogCiBjbGFzcyBFZGl0b3IgewpAQCAtMTMzLDcg
KzEzMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uKTsKICAgICB2b2lkIHJlc3BvbmRUb0No
YW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBlbmRpbmdTZWxlY3Rpb24pOwog
Ci0gICAgVHJpU3RhdGUgc2VsZWN0aW9uSGFzU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopIGNv
bnN0OworICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShpbnQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkgY29uc3Q7CisgICAgVHJpU3RhdGUgc2VsZWN0aW9uSGFzU3R5bGUo
aW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0OwogICAgIFN0cmluZyBz
ZWxlY3Rpb25TdGFydENTU1Byb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpOwogICAgIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBmb250Rm9yU2VsZWN0aW9uKGJvb2wmKSBjb25zdDsKICAgICBXcml0
aW5nRGlyZWN0aW9uIHRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oYm9vbCYpIGNvbnN0OwpAQCAt
MTcwLDggKzE3MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYXBwbGllZEVkaXRpbmcoUGFzc1Jl
ZlB0cjxFZGl0Q29tbWFuZD4pOwogICAgIHZvaWQgdW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbk9mQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcm
IGNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKIAotICAgIGJvb2wgc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKikgY29uc3Q7Ci0KICAgICB2b2lk
IHNldFNob3VsZFN0eWxlV2l0aENTUyhib29sIGZsYWcpIHsgbV9zaG91bGRTdHlsZVdpdGhDU1Mg
PSBmbGFnOyB9CiAgICAgYm9vbCBzaG91bGRTdHlsZVdpdGhDU1MoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZFN0eWxlV2l0aENTUzsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDgwNDcwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDIxICsxNTYsMTggQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0KEZyYQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJj
ZSwgRWRpdEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBvZmZWYWx1
ZSwgY29uc3QgY2hhciogb25WYWx1ZSkKIHsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IHN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwot
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBvblZhbHVlKTsgLy8gV2UgbmVlZCB0
byBhZGQgdGhpcyBzdHlsZSB0byBwYXNzIGl0IHRvIHNlbGVjdGlvblN0YXJ0SGFzU3R5bGUgLyBz
ZWxlY3Rpb25IYXNTdHlsZQotCiAgICAgLy8gU3R5bGUgaXMgY29uc2lkZXJlZCBwcmVzZW50IHdo
ZW4KICAgICAvLyBNYWM6IHByZXNlbnQgYXQgdGhlIGJlZ2lubmluZyBvZiBzZWxlY3Rpb24KICAg
ICAvLyBvdGhlcjogcHJlc2VudCB0aHJvdWdob3V0IHRoZSBzZWxlY3Rpb24KIAogICAgIGJvb2wg
c3R5bGVJc1ByZXNlbnQ7CiAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5zaG91
bGRUb2dnbGVTdHlsZUJhc2VkT25TdGFydE9mU2VsZWN0aW9uKCkpCi0gICAgICAgIHN0eWxlSXNQ
cmVzZW50ID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHN0eWxlLmdl
dCgpKTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlv
blN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSk7CiAgICAgZWxzZQotICAgICAgICBz
dHlsZUlzUHJlc2VudCA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoc3R5bGUu
Z2V0KCkpID09IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgc3R5bGVJc1ByZXNlbnQgPSBmcmFtZS0+
ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKHByb3BlcnR5SUQsIG9uVmFsdWUpID09IFRydWVU
cmlTdGF0ZTsKIAotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBzdHlsZUlzUHJl
c2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7Ci0gICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJh
bWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS5nZXQoKSk7CisgICAgUmVmUHRyPEVkaXRp
bmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCBzdHlsZUlz
UHJlc2VudCA/IG9mZlZhbHVlIDogb25WYWx1ZSk7CisgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRv
RnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUoKSk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQpAQCAtMjI3LDEyICsyMjQsOSBAQCBzdGF0aWMgYm9v
bCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0
eWxlKEZyYW1lKiBmcmFtZSwgaW50IHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2lyZWRWYWx1
ZSkKIHsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpOwotCiAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+
YmVoYXZpb3IoKS5zaG91bGRUb2dnbGVTdHlsZUJhc2VkT25TdGFydE9mU2VsZWN0aW9uKCkpCi0g
ICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoc3R5
bGUuZ2V0KCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKLSAgICByZXR1cm4gZnJh
bWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShzdHlsZS5nZXQoKSk7CisgICAgICAgIHJl
dHVybiBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwg
ZGVzaXJlZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZh
bHVlKTsKIH0KIAogc3RhdGljIFN0cmluZyB2YWx1ZVN0eWxlKEZyYW1lKiBmcmFtZSwgaW50IHBy
b3BlcnR5SUQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiA4MDQ3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxMCwxMSArMTAxMCw4IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmwKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OgogICAgICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0OiB7Ci0gICAgICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9u
PiBzdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7
CiAgICAgICAgICAgICBTdHJpbmcgZGlyZWN0aW9uID0gaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0
TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCA/ICJsdHIiIDogInJ0bCI7Ci0gICAgICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbiwgZmFsc2UsIGVj
KTsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25I
YXNTdHlsZShzdHlsZS5nZXQoKSkgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURp
cmVjdGlvbiwgZGlyZWN0aW9uKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxk
RW5hYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDYwLDEw
ICsxMDU3LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFibAogICAg
ICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdV
bmRlcmxpbmU6IHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAg
ICAgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCkt
PmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5l
IiwgZmFsc2UsIGVjKTsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LT5zZWxlY3Rpb25IYXNTdHlsZShzdHlsZS5nZXQoKSkgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgIT0g
RmFsc2VUcmlTdGF0ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3Io
KS0+Y2FuRWRpdFJpY2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEw
NzgsMTggKzEwNzIsMTIgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNoZWNrT3JFbmFi
bAogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICAgICAgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gZnJhbWUtPmRvY3VtZW50
KCktPmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIsIGZhbHNlLCBlYyk7Ci0gICAg
ICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUo
c3R5bGUuZ2V0KCkpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9
IGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUs
ICJpdGFsaWMiKSAhPSBGYWxzZVRyaVN0YXRlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
ZnJhbWUtPmVkaXRvcigpLT5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6IHsKLSAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgUmVmUHRyPENTU1N0eWxlRGVj
bGFyYXRpb24+IHN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCktPmNyZWF0ZUNTU1N0eWxlRGVjbGFy
YXRpb24oKTsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRX
ZWlnaHQsICJib2xkIiwgZmFsc2UsIGVjKTsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJh
bWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShzdHlsZS5nZXQoKSkgIT0gRmFsc2VUcmlT
dGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rp
b25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gRmFsc2VUcmlTdGF0
ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJp
Y2hseSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA4MDUwNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMDcgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgc2VsZWN0aW9uSGFzU3R5bGUgYW5kIHNlbGVjdGlvblN0
YXJ0SGFzU3R5bGUgc2hvdWxkIHVzZSBFZGl0aW5nU3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1OTAyCisKKyAgICAgICAgc2VsZWN0aW9uSGFz
U3R5bGUgbm93IHRha2VzIGEgcHJvcGVydHkgaWQgYW5kIGEgdmFsdWUgaW5zdGVhZCBvZiBhIENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uLgorCisgICAgICAgICogc3JjL0NvbnRleHRNZW51Q2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50SW1wbDo6Z2V0
Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMpOiBDYWxscyBzZWxlY3Rpb25IYXNTdHlsZS4KKwog
MjAxMS0wMy0wNyAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA4MDQ3MCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MiwxMyArMjYyLDkgQEAgUGxhdGZvcm1NZW51RGVzY3JpcHRp
b24gQ29udGV4dE1lbnVDbGllbgogICAgIH0KIAogI2lmIE9TKERBUldJTikKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBz
ZWxlY3RlZEZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0g
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCAibHRyIiwgZmFsc2Us
IGVjKTsKLSAgICBpZiAoc2VsZWN0ZWRGcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxl
KHN0eWxlLmdldCgpKSAhPSBGYWxzZVRyaVN0YXRlKQorICAgIGlmIChzZWxlY3RlZEZyYW1lLT5l
ZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sICdsdHInKSAh
PSBGYWxzZVRyaVN0YXRlKQogICAgICAgICBkYXRhLndyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdo
dCB8PSBXZWJDb250ZXh0TWVudURhdGE6OkNoZWNrYWJsZU1lbnVJdGVtQ2hlY2tlZDsKLSAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiLCBmYWxzZSwgZWMp
OwotICAgIGlmIChzZWxlY3RlZEZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoc3R5
bGUuZ2V0KCkpICE9IEZhbHNlVHJpU3RhdGUpCisgICAgaWYgKHNlbGVjdGVkRnJhbWUtPmVkaXRv
cigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgJ3J0bCcpICE9IEZh
bHNlVHJpU3RhdGUpCiAgICAgICAgIGRhdGEud3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0IHw9
IFdlYkNvbnRleHRNZW51RGF0YTo6Q2hlY2thYmxlTWVudUl0ZW1DaGVja2VkOwogI2VuZGlmIC8v
IE9TKERBUldJTikKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODA1MDcpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxMS0wMy0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBzZWxlY3Rpb25IYXNTdHls
ZSBhbmQgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZSBzaG91bGQgdXNlIEVkaXRpbmdTdHlsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU5MDIKKworICAg
ICAgICBzZWxlY3Rpb25IYXNTdHlsZSBub3cgdGFrZXMgYSBwcm9wZXJ0eSBpZCBhbmQgYSB2YWx1
ZSBpbnN0ZWFkIG9mIGEgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uCisKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOiBSZW1vdmVkIHVudXNlZCBzZWxlY3Rpb25IYXNTdHlsZS4K
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbVdpdGhvdXRE
ZWxlZ2F0ZTpdKTogQ2FsbHMgRWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZS4KKwogMjAxMS0wMy0w
NyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIExMVk0gQ29tcGls
ZXIgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCShyZXZpc2lvbiA4MDQ3MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2NDMsMTQgKzI2NDMsNiBAQCAtICh2b2lkKWp1
bXBUb1NlbGVjdGlvbjooaWQpc2VuZGVyCiAgICAgICAgIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkt
PnJldmVhbFNlbGVjdGlvbihTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVyQWx3YXlzKTsKIH0K
IAotLSAoTlNDZWxsU3RhdGVWYWx1ZSlzZWxlY3Rpb25IYXNTdHlsZTooQ1NTU3R5bGVEZWNsYXJh
dGlvbiopc3R5bGUKLXsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKLSAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIE5TT2ZmU3RhdGU7Ci0gICAg
cmV0dXJuIGtpdChjb3JlRnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShzdHlsZSkp
OwotfQotCiAtIChCT09MKXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6
KGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJdGVtPilpdGVtCiB7CiAgICAgU0VMIGFjdGlv
biA9IFtpdGVtIGFjdGlvbl07CkBAIC0yNzA2LDEwICsyNjk4LDggQEAgLSAoQk9PTCl2YWxpZGF0
ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dAogCiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVt
ID0gKE5TTWVudUl0ZW0gKilpdGVtOwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xh
c3M6W05TTWVudUl0ZW0gY2xhc3NdXSkgewotICAgICAgICAgICAgUmVmUHRyPENTU1N0eWxlRGVj
bGFyYXRpb24+IHN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwot
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eSgiZGlyZWN0aW9uIiwgd3JpdGluZ0RpcmVjdGlvbiA9PSBOU1dyaXRpbmdEaXJlY3Rpb25M
ZWZ0VG9SaWdodCA/ICJMVFIiIDogIlJUTCIsIGVjKTsKLSAgICAgICAgICAgIFttZW51SXRlbSBz
ZXRTdGF0ZTpmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvbkhhc1N0eWxlKHN0eWxlLmdldCgpKV07
CisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0aW9uID0gd3JpdGluZ0RpcmVjdGlvbiA9PSBOU1dy
aXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/ICJsdHIiIDogInJ0bCI7CisgICAgICAgICAgICBb
bWVudUl0ZW0gc2V0U3RhdGU6ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0aW9uKV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IFtzZWxmIF9jYW5FZGl0XTsKICAgICB9CkBAIC0yNzI0LDEyICsyNzE0LDkgQEAgLSAoQk9PTCl2
YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtV2l0aG91dAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVj
dG9yKHRvZ2dsZUJhc2VXcml0aW5nRGlyZWN0aW9uOikpIHsKICAgICAgICAgTlNNZW51SXRlbSAq
bWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07CiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNL
aW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7Ci0gICAgICAgICAgICBSZWZQdHI8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3Jl
YXRlKCk7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KCJkaXJlY3Rpb24iLCAiUlRMIiwgZWMpOwogICAgICAgICAgICAgLy8gVGFr
ZSBjb250cm9sIG9mIHRoZSB0aXRsZSBvZiB0aGUgbWVudSBpdGVtIGluc3RlYWQgb2YganVzdCBj
aGVja2luZy91bmNoZWNraW5nIGl0IGJlY2F1c2UKICAgICAgICAgICAgIC8vIGEgY2hlY2sgd291
bGQgYmUgYW1iaWd1b3VzLgotICAgICAgICAgICAgW21lbnVJdGVtIHNldFRpdGxlOmZyYW1lLT5l
ZGl0b3IoKS0+c2VsZWN0aW9uSGFzU3R5bGUoc3R5bGUuZ2V0KCkpCisgICAgICAgICAgICBbbWVu
dUl0ZW0gc2V0VGl0bGU6ZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9w
ZXJ0eURpcmVjdGlvbiwgInJ0bCIpCiAgICAgICAgICAgICAgICAgPyBVSV9TVFJJTkdfSU5URVJO
QUwoIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdodCBjb250ZXh0IG1lbnUgaXRlbSIpCiAg
ICAgICAgICAgICAgICAgOiBVSV9TVFJJTkdfSU5URVJOQUwoIlJpZ2h0IHRvIExlZnQiLCAiUmln
aHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpXTsKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="77056"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>