<?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>142026</bug_id>
          
          <creation_ts>2015-02-25 14:21:10 -0800</creation_ts>
          <short_desc>Adding support for serializing HTMLAttachment elements.</short_desc>
          <delta_ts>2015-02-27 15:08:39 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>beidson</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072137</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-02-25 14:21:10 -0800</bug_when>
    <thetext>Adding support to create a WebArchive with the correct resources as well as conversion to NSAttributedString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072138</commentid>
    <comment_count>1</comment_count>
      <attachid>247347</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-02-25 14:29:07 -0800</bug_when>
    <thetext>Created attachment 247347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072463</commentid>
    <comment_count>2</comment_count>
      <attachid>247347</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-26 13:08:15 -0800</bug_when>
    <thetext>Comment on attachment 247347
Patch

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

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:1968
&gt; +        NSURL *url = [NSURL fileURLWithPath:[urlString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];

What&apos;s up with the trimming? Though, I see the same thing happens below.

Why not use _web_URLWithString: like we do below? I think it&apos;s better for some reason (other than that it takes a String instead of NSString).

&gt; Source/WebCore/editing/mac/EditorMac.mm:514
&gt; +                else

I really don&apos;t like flow control that flows between #ifs like this. Maybe it could be written like this instead?:

if (subresource-&gt;url().protocol() == String(&quot;webkit-attachment&quot;)) {
    attachments.append(sub resource);
    continue;
}

loader-&gt;addArchiveResource(subresource);

&gt; Source/WebCore/editing/mac/EditorMac.mm:524
&gt; +        for (size_t i = 0; i &lt; nodes-&gt;length(); ++i) {

No modern iterators for NodeList?

&gt; Source/WebCore/editing/mac/EditorMac.mm:525
&gt; +            ASSERT(nodes-&gt;length() == attachments.size());

I don&apos;t think this assert should be *inside* the for loop.

&gt; Source/WebCore/html/HTMLAttachmentElement.h:31
&gt; +#include &quot;File.h&quot;

We can put filePath() in the implementation file to avoid this include.

&gt; Source/WebCore/html/HTMLAttachmentElement.h:33
&gt; +#include &quot;SharedBuffer.h&quot;

A forward declaration of the SharedBuffer type would be preferable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072517</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-02-26 15:24:46 -0800</bug_when>
    <thetext>&gt; Why not use _web_URLWithString: like we do below? I think it&apos;s better for
&gt; some reason (other than that it takes a String instead of NSString).
&gt; 
What I have from the file object is a path and I don&apos;t get a URL if I don&apos;t use fileWithURLPath.

&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:514
&gt; &gt; +                else
&gt; 
&gt; I really don&apos;t like flow control that flows between #ifs like this. Maybe it
&gt; could be written like this instead?:
&gt; 
&gt; if (subresource-&gt;url().protocol() == String(&quot;webkit-attachment&quot;)) {
&gt;     attachments.append(sub resource);
&gt;     continue;
&gt; }
&gt; 
&gt; loader-&gt;addArchiveResource(subresource);
&gt; 
You&apos;re right, much better.

&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:524
&gt; &gt; +        for (size_t i = 0; i &lt; nodes-&gt;length(); ++i) {
&gt; 
&gt; No modern iterators for NodeList?
&gt; 
&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:525
&gt; &gt; +            ASSERT(nodes-&gt;length() == attachments.size());
&gt; 
&gt; I don&apos;t think this assert should be *inside* the for loop.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLAttachmentElement.h:31
&gt; &gt; +#include &quot;File.h&quot;
&gt; 
&gt; We can put filePath() in the implementation file to avoid this include.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLAttachmentElement.h:33
&gt; &gt; +#include &quot;SharedBuffer.h&quot;
&gt; 
&gt; A forward declaration of the SharedBuffer type would be preferable.

Will do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072522</commentid>
    <comment_count>4</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-02-26 15:29:03 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:524
&gt; &gt; +        for (size_t i = 0; i &lt; nodes-&gt;length(); ++i) {
&gt; 
&gt; No modern iterators for NodeList?
&gt; 
No, NodeList does not have an iterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072528</commentid>
    <comment_count>5</comment_count>
      <attachid>247454</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-02-26 15:45:14 -0800</bug_when>
    <thetext>Created attachment 247454
Patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072553</commentid>
    <comment_count>6</comment_count>
      <attachid>247454</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-02-26 16:47:20 -0800</bug_when>
    <thetext>Comment on attachment 247454
Patch2

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

As discussed, let&apos;s do this with an attribute instead of an archive resource for now.

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:1967
&gt; +        NSString *urlString = downcast&lt;HTMLAttachmentElement&gt;(element).filePath();

I don&apos;t think you need the filePath function. Instead, you can just do, file().path().

&gt; Source/WebCore/editing/cocoa/HTMLConverter.mm:1968
&gt; +        NSURL *url = [NSURL fileURLWithPath:[urlString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];

I don&apos;t think you need the trimming here. It is necessary for other types because they are getting the path from an attribute which is user supplied.

&gt; Source/WebCore/editing/mac/EditorMac.mm:507
&gt; +#if ENABLE(ATTACHMENT_ELEMENT)
&gt; +        Vector&lt;RefPtr&lt;ArchiveResource&gt;&gt; attachments;
&gt; +#endif

Please add a comment (not necessarily here), about why you need this extra logic.

&gt; Source/WebCore/editing/mac/EditorMac.mm:512
&gt; +                if (subresource-&gt;url().protocol() == String(&quot;webkit-attachment&quot;)) {

You can use url().protocolIs(&quot;webkit-attachment&quot;).

&gt; Source/WebCore/editing/mac/EditorMac.mm:527
&gt; +            HTMLAttachmentElement&amp; element = downcast&lt;HTMLAttachmentElement&gt;(*nodes-&gt;item(i));

This downcast is not safe.  You need to do an is&lt;HTMLAttachmentElement&gt;(*nodes-&gt;item(i)) first.

&gt; Source/WebCore/editing/mac/EditorMac.mm:528
&gt; +            element.setFile(&amp;File::create(String(attachments[i]-&gt;data()-&gt;data(), attachments[i]-&gt;data()-&gt;size())).get());

Instead of .get(), you can do .ptr(), then you don&apos;t need the &amp;.

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:74
&gt; +    if (file)
&gt; +        m_dataBuffer = SharedBuffer::create(m_file-&gt;path().characters8(), m_file-&gt;path().length());
&gt; +    else
&gt; +        m_dataBuffer = nullptr;

This can be created lazily when the buffer is necessary.

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:80
&gt; +const String HTMLAttachmentElement::filePath()
&gt; +{
&gt; +    return m_file ? m_file-&gt;path() : String();
&gt;  }

I don&apos;t think this helper is useful. Just have the caller grab the file.

&gt; Source/WebCore/html/HTMLAttachmentElement.cpp:102
&gt; +    addSubresourceURL(urls, resourceURL());

I don&apos;t think this called frequently enough to warrant caching the resource URL.  Let&apos;s just create it here, and instead of using a UUID, just use the path as the path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072773</commentid>
    <comment_count>7</comment_count>
      <attachid>247533</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-02-27 11:55:35 -0800</bug_when>
    <thetext>Created attachment 247533
Patch2

Following different approach as discussed with Sam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072848</commentid>
    <comment_count>8</comment_count>
      <attachid>247533</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-02-27 14:56:10 -0800</bug_when>
    <thetext>Comment on attachment 247533
Patch2

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

&gt; Source/WebCore/html/HTMLAttachmentElement.h:40
&gt; +    virtual bool canContainRangeEndPoint() const override { return false; }

I don&apos;t think this is actually part of this patch?

&gt; LayoutTests/editing/pasteboard/copy-paste-attachment.html:5
&gt; +&lt;!--&lt;script type=&quot;text/javascript&quot; src=&quot;../../resources/dump-as-markup.js&quot;&gt;&lt;/script&gt;--&gt;

Let&apos;s not have random commented out stuff here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072860</commentid>
    <comment_count>9</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-02-27 15:08:29 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 247533 [details]
&gt; Patch2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247533&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLAttachmentElement.h:40
&gt; &gt; +    virtual bool canContainRangeEndPoint() const override { return false; }
&gt; 
&gt; I don&apos;t think this is actually part of this patch?
&gt; 
Yes it is, it is the change to fix the selection.
&gt; &gt; LayoutTests/editing/pasteboard/copy-paste-attachment.html:5
&gt; &gt; +&lt;!--&lt;script type=&quot;text/javascript&quot; src=&quot;../../resources/dump-as-markup.js&quot;&gt;&lt;/script&gt;--&gt;
&gt; 
&gt; Let&apos;s not have random commented out stuff here.
Oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072861</commentid>
    <comment_count>10</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-02-27 15:08:39 -0800</bug_when>
    <thetext>Committed revision 180785.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247347</attachid>
            <date>2015-02-25 14:29:07 -0800</date>
            <delta_ts>2015-02-26 15:45:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>attachment-serialization.txt</filename>
            <type>text/plain</type>
            <size>12611</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDYzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAyLTI1ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9y
IHNlcmlhbGl6aW5nIEhUTUxBdHRhY2htZW50IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDI2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2Nv
cHktcGFzdGUtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgdG8gY3Jl
YXRlIGEgV2ViQXJjaGl2ZSB3aXRoIHRoZSBjb3JyZWN0IHJlc291cmNlcworICAgICAgICBhcyB3
ZWxsIGNvZGUgdG8gY29udmVydCB0byBOU0F0dHJpYnV0ZWRTdHJpbmcuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpf
cHJvY2Vzc0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6c2V0RmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlc291cmNl
QnVmZmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKwogMjAxNS0wMi0yNSAgQmV0aCBEYWtp
biAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE4MDAxOCApOiBI
b2xkaW5nIGEgcnViYmVyLWJhbmQgaW4gcGxhY2UgY2FuIGdldCBzdHVjawpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQkocmV2aXNpb24gMTgw
NjMwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJGb250Q2FzY2FkZS5oIgog
I2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCisjaW1wb3J0ICJIVE1M
QXR0YWNobWVudEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJI
VE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVudC5oIgpAQCAt
MTk2MSw2ICsxOTYyLDE0IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVs
ZW0KICAgICAgICAgd2hpbGUgKFtfdGV4dFRhYmxlcyBjb3VudF0gPCBbX3RleHRCbG9ja3MgY291
bnRdICsgMSkKICAgICAgICAgICAgIF9hZGRUYWJsZUZvckVsZW1lbnQobmlsKTsKICAgICAgICAg
X2FkZFRhYmxlQ2VsbEZvckVsZW1lbnQoJmVsZW1lbnQpOworI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisgICAgfSBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYXR0YWNobWVudFRh
ZykpIHsKKyAgICAgICAgTlNTdHJpbmcgKnVybFN0cmluZyA9IGRvd25jYXN0PEhUTUxBdHRhY2ht
ZW50RWxlbWVudD4oZWxlbWVudCkuZmlsZVBhdGgoKTsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVy
c0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1d
XTsKKyAgICAgICAgaWYgKHVybCkKKyAgICAgICAgICAgIF9hZGRBdHRhY2htZW50Rm9yRWxlbWVu
dChlbGVtZW50LCB1cmwsIGlzQmxvY2tMZXZlbCwgTk8pOworICAgICAgICByZXR2YWwgPSBOTzsK
KyNlbmRpZgogICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGltZ1RhZykpIHsKICAg
ICAgICAgTlNTdHJpbmcgKnVybFN0cmluZyA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKHNyY0F0dHIp
OwogICAgICAgICBpZiAodXJsU3RyaW5nICYmIFt1cmxTdHJpbmcgbGVuZ3RoXSA+IDApIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0JKHJldmlzaW9uIDE4MDYz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJFZGl0
b3IuaCIKIAorI2ltcG9ydCAiQXJjaGl2ZVJlc291cmNlLmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2Vw
dGlvbnMuaCIKICNpbXBvcnQgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbXBvcnQg
IkNTU1ZhbHVlUG9vbC5oIgpAQCAtMzcsMTUgKzM4LDE4IEBACiAjaW1wb3J0ICJEb2N1bWVudExv
YWRlci5oIgogI2ltcG9ydCAiRWRpdG9yLmgiCiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKKyNp
bXBvcnQgIkZpbGUuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCiAjaW1wb3J0ICJGcmFtZS5o
IgogI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbXBvcnQgIkZyYW1lVmlldy5oIgor
I2ltcG9ydCAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQ29udmVydGVy
LmgiCiAjaW1wb3J0ICJIVE1MRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1w
b3J0ICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisj
aW1wb3J0ICJOb2RlTGlzdC5oIgogI2ltcG9ydCAiTm9kZVRyYXZlcnNhbC5oIgogI2ltcG9ydCAi
UGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgpAQCAtNDk4LDEyICs1MDIsMzEgQEAgYm9v
bCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcgogICAgIGNvbnN0IFN0cmluZyYg
dHlwZSA9IG1haW5SZXNvdXJjZS0+bWltZVR5cGUoKTsKIAogICAgIGlmIChmcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpIHsKKyNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorICAgICAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+
IGF0dGFjaG1lbnRzOworI2VuZGlmCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgY29kZSBpbiBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBjYWxscyBzZXREZWZlcnNMb2FkaW5nKHRydWUpLiBE
b24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KLSAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQotICAgICAgICAgICAgbG9hZGVy
LT5hZGRBbGxBcmNoaXZlUmVzb3VyY2VzKGFyY2hpdmUuZ2V0KCkpOworICAgICAgICBpZiAoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpIHsK
KyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3VicmVzb3VyY2UgOiBhcmNoaXZlLT5zdWJy
ZXNvdXJjZXMoKSkgeworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgICAg
ICAgICAgaWYgKHN1YnJlc291cmNlLT51cmwoKS5wcm90b2NvbCgpID09IFN0cmluZygid2Via2l0
LWF0dGFjaG1lbnQiKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKHN1
YnJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgICAg
ICAgICAgbG9hZGVyLT5hZGRBcmNoaXZlUmVzb3VyY2Uoc3VicmVzb3VyY2UpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CiAKICAgICAgICAgU3RyaW5nIG1hcmt1cFN0cmluZyA9IFN0cmluZzo6
ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRh
KCktPnNpemUoKSk7CiAgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3Vw
KCpmcmFtZS5kb2N1bWVudCgpLCBtYXJrdXBTdHJpbmcsIG1haW5SZXNvdXJjZS0+dXJsKCksIERp
c2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKyAgICAgICAgUmVmUHRyPE5vZGVMaXN0PiBub2RlcyA9IGZyYWdtZW50LT5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYXR0YWNobWVudCIpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG5vZGVzLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBBU1NFUlQobm9kZXMt
Pmxlbmd0aCgpID09IGF0dGFjaG1lbnRzLnNpemUoKSk7CisgICAgICAgICAgICBIVE1MQXR0YWNo
bWVudEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpu
b2Rlcy0+aXRlbShpKSk7CisgICAgICAgICAgICBlbGVtZW50LnNldEZpbGUoJkZpbGU6OmNyZWF0
ZShTdHJpbmcoYXR0YWNobWVudHNbaV0tPmRhdGEoKS0+ZGF0YSgpLCBhdHRhY2htZW50c1tpXS0+
ZGF0YSgpLT5zaXplKCkpKS5nZXQoKSk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MDYzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUs
NyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiVVVJRC5oIgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKIApAQCAtNDAsNiArNDEsOCBAQCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OkhUTUxBdHRhY2ht
ZW50RWxlCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NF
UlQoaGFzVGFnTmFtZShhdHRhY2htZW50VGFnKSk7CisgICAgbV9yZXNvdXJjZVVSTC5zZXRQcm90
b2NvbChTdHJpbmcoIndlYmtpdC1hdHRhY2htZW50Oi8vIikpOworICAgIG1fcmVzb3VyY2VVUkwu
c2V0UGF0aChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOwogfQogCiBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6On5IVE1MQXR0YWNobWVudEVsZW1lbnQoKQpAQCAtNjQsNiArNjcsMTAgQEAgRmls
ZSogSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpmaWxlKCkKIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpzZXRGaWxlKEZpbGUqIGZpbGUpCiB7CiAgICAgbV9maWxlID0gZmlsZTsKKyAgICBpZiAo
ZmlsZSkKKyAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9maWxl
LT5wYXRoKCkuY2hhcmFjdGVyczgoKSwgbV9maWxlLT5wYXRoKCkubGVuZ3RoKCkpOworICAgIGVs
c2UKKyAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OnNldEZvY3VzKGJvb2wgc2hvdWxkQmVGb2N1c2VkKQpAQCAtODAsNiArODcs
MjAgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnNldEZvY3VzKGJvbwogICAgIGRvd25j
YXN0PFJlbmRlckF0dGFjaG1lbnQ+KCpyZW5kZXJlcikuZm9jdXNDaGFuZ2VkKCk7CiB9CiAKK3Zv
aWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKK3sKKyAgICBpZiAoIW1fZmlsZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1
cmxzKTsKKyAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCByZXNvdXJjZVVSTCgpKTsKK30KKwor
U2hhcmVkQnVmZmVyKiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlc291cmNlQnVmZmVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCShyZXZpc2lvbiAx
ODA2MzApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogCisjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcs
NyArMzksMTAgQEAgY2xhc3MgRmlsZTsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQXR0
YWNobWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
LQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdDsKKyAgICBVUkwgcmVz
b3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVVJMOyB9CisgICAgY29uc3QgU3Ry
aW5nIGZpbGVQYXRoKCkgeyByZXR1cm4gbV9maWxlID8gbV9maWxlLT5wYXRoKCkgOiBTdHJpbmco
KTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgRmlsZSogZmlsZSgpOwogICAgIHZvaWQgc2V0
RmlsZShGaWxlKik7CiAKQEAgLTQ2LDExICs1MSwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
fkhUTUxBdHRhY2htZW50RWxlbWVudCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2Fi
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dEZvY3VzKGJvb2wgc2hvdWxkQmVGb2N1c2VkKSBvdmVycmlkZTsKICAgICAKKyAgICBVUkwgbV9y
ZXNvdXJjZVVSTDsKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YUJ1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCShyZXZpc2lvbiAxODA2MzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJIVE1MQXR0YWNobWVudEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxG
cmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNTM4LDYgKzUz
OSwxNCBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyCiAKICAgICAg
ICAgICAgICAgICB1bmlxdWVTdWJyZXNvdXJjZXMuYWRkKHN1YnJlc291cmNlVVJMKTsKIAorI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxB
dHRhY2htZW50RWxlbWVudD4obm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgSFRNTEF0dGFj
aG1lbnRFbGVtZW50JiBhdHRjaG1lbnRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEF0dGFjaG1lbnRF
bGVtZW50Pihub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShhdHRjaG1lbnRFbGVtZW50LnJl
c291cmNlQnVmZmVyKCksIHN1YnJlc291cmNlVVJMLCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAg
ICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKFdURjo6bW92ZShyZXNvdXJjZSkp
OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBkb2N1bWVudExvYWRlci0+c3VicmVzb3VyY2Uoc3VicmVzb3VyY2VVUkwpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoV1RGOjptb3ZlKHJlc291cmNlKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwNjM2KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTUtMDItMjUgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGRpbmcgc3VwcG9ydCBmb3Igc2VyaWFsaXppbmcgSFRNTEF0dGFjaG1lbnQgZWxlbWVudHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwMjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRp
bmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1hdHRhY2htZW50Lmh0bWw6
IEFkZGVkLgorCiAyMDE1LTAyLTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBMYXlvdXQgdGVzdCBzdXBwb3J0IGZvciB1c2VyIGNvbnRlbnQgZmlsdGVycwpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYXR0YWNobWVu
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2NvcHktcGFzdGUtYXR0YWNobWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1hdHRhY2htZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitUaGVzZSB0ZXN0cyBjdXR0
aW5nIGNvbnRlbnQgd2l0aCBvbmUgYXR0YWNoZW1udCBhbmQgcGFzdGluZyBpdCBiYWNrCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDaGVja2luZyB0aGUgZmlsZSBuYW1lIGZvciB0
aGUgYXR0YWNobWVudCBlbGVtZW50CitQQVNTIGF0dGFjaG1lbnQuZmlsZS5uYW1lIGlzICdhYmUu
cG5nJworUGVyZm9ybSBDdXQgb24gdGhlIGVudGlyZSBzZWxlY3Rpb24gZm9sbG93ZWQgYnkgUGFz
dGUKK0NoZWNraW5nIHRoZSBmaWxlIG5hbWUgZm9yIHRoZSBwYXN0ZWQgYXR0YWNobWVudCBlbGVt
ZW50CitQQVNTIGF0dGFjaG1lbnQuZmlsZS5uYW1lIGlzICdhYmUucG5nJworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUaGlzIGlzIGEgcGFyYWdyYXBo
IHdpdGggYW4gYXR0YWNobWVudMKgwqBhbmQgc29tZSBvdGhlciB0ZXh0LgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYXR0YWNobWVudC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWF0dGFj
aG1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9jb3B5LXBhc3RlLWF0dGFjaG1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3
IEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwhLS08c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2Ny
aXB0Pi0tPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgaWQ9
InRlc3QxIj5UaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggYW4gYXR0YWNobWVudAorICAgIDxhdHRh
Y2htZW50IGlkPSdhdHRhY2htZW50Jz48L2F0dGFjaG1lbnQ+IGFuZCBzb21lIG90aGVyIHRleHQu
Cis8L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZmlsZTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgdmFyIGZpbGUgPSB3aW5kb3cuaW50ZXJuYWxzLmNyZWF0ZUZpbGUoIi4uL3Jlc291cmNlcy9h
YmUucG5nIik7CisgICAgdmFyIGF0dGFjaG1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YXR0YWNobWVudCcpOworICAgIGF0dGFjaG1lbnQuZmlsZSA9IGZpbGU7CisKKyAgICBkZXNjcmlw
dGlvbignVGhlc2UgdGVzdHMgY3V0dGluZyBjb250ZW50IHdpdGggb25lIGF0dGFjaGVtbnQgYW5k
IHBhc3RpbmcgaXQgYmFjaycpOworCisgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdDEiKTsKKyAgICB2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgIGRl
YnVnKCdDaGVja2luZyB0aGUgZmlsZSBuYW1lIGZvciB0aGUgYXR0YWNobWVudCBlbGVtZW50Jyk7
CisgICAgc2hvdWxkQmUoImF0dGFjaG1lbnQuZmlsZS5uYW1lIiwgIidhYmUucG5nJyIpOworICAg
IHMuc2V0UG9zaXRpb24oZSwgMCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFs
bCIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDdXQiKTsKKyAgICBkZWJ1ZygnUGVyZm9y
bSBDdXQgb24gdGhlIGVudGlyZSBzZWxlY3Rpb24gZm9sbG93ZWQgYnkgUGFzdGUnKTsKKyAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgiUGFzdGUiKTsKKyAgICBkZWJ1ZygnQ2hlY2tpbmcgdGhlIGZp
bGUgbmFtZSBmb3IgdGhlIHBhc3RlZCBhdHRhY2htZW50IGVsZW1lbnQnKTsKKyAgICBhdHRhY2ht
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F0dGFjaG1lbnQnKQorICAgIHNob3VsZEJl
KCJhdHRhY2htZW50LmZpbGUubmFtZSIsICInYWJlLnBuZyciKTsKK30KKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247454</attachid>
            <date>2015-02-26 15:45:14 -0800</date>
            <delta_ts>2015-02-27 11:55:35 -0800</delta_ts>
            <desc>Patch2</desc>
            <filename>attachment-serialization.txt</filename>
            <type>text/plain</type>
            <size>12716</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDYzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAyLTI1ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9y
IHNlcmlhbGl6aW5nIEhUTUxBdHRhY2htZW50IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDI2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2Nv
cHktcGFzdGUtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgdG8gY3Jl
YXRlIGEgV2ViQXJjaGl2ZSB3aXRoIHRoZSBjb3JyZWN0IHJlc291cmNlcworICAgICAgICBhcyB3
ZWxsIGNvZGUgdG8gY29udmVydCB0byBOU0F0dHJpYnV0ZWRTdHJpbmcuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpf
cHJvY2Vzc0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6c2V0RmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnJlc291cmNl
QnVmZmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKwogMjAxNS0wMi0yNSAgQmV0aCBEYWtp
biAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE4MDAxOCApOiBI
b2xkaW5nIGEgcnViYmVyLWJhbmQgaW4gcGxhY2UgY2FuIGdldCBzdHVjawpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQkocmV2aXNpb24gMTgw
NjMwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJGb250Q2FzY2FkZS5oIgog
I2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCisjaW1wb3J0ICJIVE1M
QXR0YWNobWVudEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJI
VE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVudC5oIgpAQCAt
MTk2MSw2ICsxOTYyLDE0IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KEVs
ZW0KICAgICAgICAgd2hpbGUgKFtfdGV4dFRhYmxlcyBjb3VudF0gPCBbX3RleHRCbG9ja3MgY291
bnRdICsgMSkKICAgICAgICAgICAgIF9hZGRUYWJsZUZvckVsZW1lbnQobmlsKTsKICAgICAgICAg
X2FkZFRhYmxlQ2VsbEZvckVsZW1lbnQoJmVsZW1lbnQpOworI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisgICAgfSBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoYXR0YWNobWVudFRh
ZykpIHsKKyAgICAgICAgTlNTdHJpbmcgKnVybFN0cmluZyA9IGRvd25jYXN0PEhUTUxBdHRhY2ht
ZW50RWxlbWVudD4oZWxlbWVudCkuZmlsZVBhdGgoKTsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVy
c0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1d
XTsKKyAgICAgICAgaWYgKHVybCkKKyAgICAgICAgICAgIF9hZGRBdHRhY2htZW50Rm9yRWxlbWVu
dChlbGVtZW50LCB1cmwsIGlzQmxvY2tMZXZlbCwgTk8pOworICAgICAgICByZXR2YWwgPSBOTzsK
KyNlbmRpZgogICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKGltZ1RhZykpIHsKICAg
ICAgICAgTlNTdHJpbmcgKnVybFN0cmluZyA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKHNyY0F0dHIp
OwogICAgICAgICBpZiAodXJsU3RyaW5nICYmIFt1cmxTdHJpbmcgbGVuZ3RoXSA+IDApIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0JKHJldmlzaW9uIDE4MDYz
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJFZGl0
b3IuaCIKIAorI2ltcG9ydCAiQXJjaGl2ZVJlc291cmNlLmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2Vw
dGlvbnMuaCIKICNpbXBvcnQgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbXBvcnQg
IkNTU1ZhbHVlUG9vbC5oIgpAQCAtMzcsMTUgKzM4LDE4IEBACiAjaW1wb3J0ICJEb2N1bWVudExv
YWRlci5oIgogI2ltcG9ydCAiRWRpdG9yLmgiCiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKKyNp
bXBvcnQgIkZpbGUuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCiAjaW1wb3J0ICJGcmFtZS5o
IgogI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbXBvcnQgIkZyYW1lVmlldy5oIgor
I2ltcG9ydCAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MQ29udmVydGVy
LmgiCiAjaW1wb3J0ICJIVE1MRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1w
b3J0ICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisj
aW1wb3J0ICJOb2RlTGlzdC5oIgogI2ltcG9ydCAiTm9kZVRyYXZlcnNhbC5oIgogI2ltcG9ydCAi
UGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgpAQCAtNDk4LDEyICs1MDIsMzIgQEAgYm9v
bCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcgogICAgIGNvbnN0IFN0cmluZyYg
dHlwZSA9IG1haW5SZXNvdXJjZS0+bWltZVR5cGUoKTsKIAogICAgIGlmIChmcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5jYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpIHsKKyNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorICAgICAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+
IGF0dGFjaG1lbnRzOworI2VuZGlmCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgY29kZSBpbiBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyBjYWxscyBzZXREZWZlcnNMb2FkaW5nKHRydWUpLiBE
b24ndCB3ZSBuZWVkIHRoYXQgaGVyZT8KLSAgICAgICAgaWYgKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQotICAgICAgICAgICAgbG9hZGVy
LT5hZGRBbGxBcmNoaXZlUmVzb3VyY2VzKGFyY2hpdmUuZ2V0KCkpOworICAgICAgICBpZiAoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpIHsK
KyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3VicmVzb3VyY2UgOiBhcmNoaXZlLT5zdWJy
ZXNvdXJjZXMoKSkgeworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgICAg
ICAgICAgaWYgKHN1YnJlc291cmNlLT51cmwoKS5wcm90b2NvbCgpID09IFN0cmluZygid2Via2l0
LWF0dGFjaG1lbnQiKSkgeworICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQo
c3VicmVzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNvdXJj
ZShzdWJyZXNvdXJjZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBTdHJp
bmcgbWFya3VwU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS0+c2l6ZSgpKTsKICAgICAgICAgZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cFN0cmlu
ZywgbWFpblJlc291cmNlLT51cmwoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICBSZWZQdHI8Tm9kZUxp
c3Q+IG5vZGVzID0gZnJhZ21lbnQtPmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhdHRhY2htZW50Iik7
CisgICAgICAgIEFTU0VSVChub2Rlcy0+bGVuZ3RoKCkgPT0gYXR0YWNobWVudHMuc2l6ZSgpKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2Rlcy0+bGVuZ3RoKCk7ICsraSkgewor
ICAgICAgICAgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRN
TEF0dGFjaG1lbnRFbGVtZW50Pigqbm9kZXMtPml0ZW0oaSkpOworICAgICAgICAgICAgZWxlbWVu
dC5zZXRGaWxlKCZGaWxlOjpjcmVhdGUoU3RyaW5nKGF0dGFjaG1lbnRzW2ldLT5kYXRhKCktPmRh
dGEoKSwgYXR0YWNobWVudHNbaV0tPmRhdGEoKS0+c2l6ZSgpKSkuZ2V0KCkpOworICAgICAgICB9
CisjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODA2MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDEyICsyNSwxNCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiVVVJRC5oIgogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJBdHRhY2htZW50LmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsNiArNDIsOCBA
QCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OkhUTUxBdHRhY2htZW50RWxlCiAgICAgOiBIVE1MRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShhdHRhY2ht
ZW50VGFnKSk7CisgICAgbV9yZXNvdXJjZVVSTC5zZXRQcm90b2NvbChTdHJpbmcoIndlYmtpdC1h
dHRhY2htZW50Oi8vIikpOworICAgIG1fcmVzb3VyY2VVUkwuc2V0UGF0aChjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpOwogfQogCiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6On5IVE1MQXR0YWNo
bWVudEVsZW1lbnQoKQpAQCAtNjQsNiArNjgsMTUgQEAgRmlsZSogSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpmaWxlKCkKIHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpzZXRGaWxlKEZpbGUqIGZp
bGUpCiB7CiAgICAgbV9maWxlID0gZmlsZTsKKyAgICBpZiAoZmlsZSkKKyAgICAgICAgbV9kYXRh
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9maWxlLT5wYXRoKCkuY2hhcmFjdGVyczgo
KSwgbV9maWxlLT5wYXRoKCkubGVuZ3RoKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9kYXRhQnVm
ZmVyID0gbnVsbHB0cjsKK30KKworY29uc3QgU3RyaW5nIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
ZmlsZVBhdGgoKQoreworICAgIHJldHVybiBtX2ZpbGUgPyBtX2ZpbGUtPnBhdGgoKSA6IFN0cmlu
ZygpOwogfQogCiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6c2V0Rm9jdXMoYm9vbCBzaG91
bGRCZUZvY3VzZWQpCkBAIC04MCw2ICs5MywyMCBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6c2V0Rm9jdXMoYm9vCiAgICAgZG93bmNhc3Q8UmVuZGVyQXR0YWNobWVudD4oKnJlbmRlcmVy
KS5mb2N1c0NoYW5nZWQoKTsKIH0KIAordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAorewor
ICAgIGlmICghbV9maWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBIVE1MRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOworICAgIGFkZFN1YnJlc291cmNlVVJMKHVy
bHMsIHJlc291cmNlVVJMKCkpOworfQorCitTaGFyZWRCdWZmZXIqIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6cmVzb3VyY2VCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGFCdWZmZXIu
Z2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgJKHJldmlzaW9uIDE4MDYzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywxNSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWxlOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1l
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Ci0KKyAgICBTaGFyZWRCdWZmZXIq
IHJlc291cmNlQnVmZmVyKCkgY29uc3Q7CisgICAgVVJMIHJlc291cmNlVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZVVSTDsgfQorICAgIGNvbnN0IFN0cmluZyBmaWxlUGF0aCgpOworICAg
IHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgRmlsZSogZmlsZSgpOwogICAgIHZvaWQgc2V0RmlsZShGaWxl
Kik7CiAKQEAgLTQ2LDExICs1MCwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgfkhUTUxBdHRh
Y2htZW50RWxlbWVudCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJv
b2wgc2hvdWxkQmVGb2N1c2VkKSBvdmVycmlkZTsKICAgICAKKyAgICBVUkwgbV9yZXNvdXJjZVVS
TDsKICAgICBSZWZQdHI8RmlsZT4gbV9maWxlOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YUJ1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CShyZXZpc2lvbiAxODA2MzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVy
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNTM4LDYgKzUzOSwxNCBAQCBQ
YXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyCiAKICAgICAgICAgICAgICAg
ICB1bmlxdWVTdWJyZXNvdXJjZXMuYWRkKHN1YnJlc291cmNlVVJMKTsKIAorI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgICAgICAgICAgaWYgKGlzPEhUTUxBdHRhY2htZW50
RWxlbWVudD4obm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50JiBhdHRjaG1lbnRFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEF0dGFjaG1lbnRFbGVtZW50Pihu
b2RlKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3Vy
Y2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShhdHRjaG1lbnRFbGVtZW50LnJlc291cmNlQnVm
ZmVyKCksIHN1YnJlc291cmNlVVJMLCBSZXNvdXJjZVJlc3BvbnNlKCkpOworICAgICAgICAgICAg
ICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKFdURjo6bW92ZShyZXNvdXJjZSkpOworICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisjZW5kaWYKICAgICAg
ICAgICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkb2N1bWVu
dExvYWRlci0+c3VicmVzb3VyY2Uoc3VicmVzb3VyY2VVUkwpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHN1YnJlc291cmNlcy5hcHBlbmQoV1RGOjptb3ZlKHJlc291cmNlKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwNjM2KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDIt
MjUgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRpbmcg
c3VwcG9ydCBmb3Igc2VyaWFsaXppbmcgSFRNTEF0dGFjaG1lbnQgZWxlbWVudHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwMjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9jb3B5LXBhc3RlLWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1hdHRhY2htZW50Lmh0bWw6IEFkZGVkLgor
CiAyMDE1LTAyLTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBMYXlvdXQgdGVzdCBzdXBwb3J0IGZvciB1c2VyIGNvbnRlbnQgZmlsdGVycwpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYXR0YWNobWVudC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHkt
cGFzdGUtYXR0YWNobWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1hdHRhY2htZW50LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitUaGVzZSB0ZXN0cyBjdXR0aW5nIGNvbnRl
bnQgd2l0aCBvbmUgYXR0YWNoZW1udCBhbmQgcGFzdGluZyBpdCBiYWNrCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitDaGVja2luZyB0aGUgZmlsZSBuYW1lIGZvciB0aGUgYXR0YWNo
bWVudCBlbGVtZW50CitQQVNTIGF0dGFjaG1lbnQuZmlsZS5uYW1lIGlzICdhYmUucG5nJworUGVy
Zm9ybSBDdXQgb24gdGhlIGVudGlyZSBzZWxlY3Rpb24gZm9sbG93ZWQgYnkgUGFzdGUKK0NoZWNr
aW5nIHRoZSBmaWxlIG5hbWUgZm9yIHRoZSBwYXN0ZWQgYXR0YWNobWVudCBlbGVtZW50CitQQVNT
IGF0dGFjaG1lbnQuZmlsZS5uYW1lIGlzICdhYmUucG5nJworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUaGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggYW4g
YXR0YWNobWVudMKgwqBhbmQgc29tZSBvdGhlciB0ZXh0LgpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUtYXR0YWNobWVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWF0dGFjaG1lbnQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBh
c3RlLWF0dGFjaG1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwhLS08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiPjwvc2NyaXB0Pi0tPgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgaWQ9InRlc3QxIj5U
aGlzIGlzIGEgcGFyYWdyYXBoIHdpdGggYW4gYXR0YWNobWVudAorICAgIDxhdHRhY2htZW50IGlk
PSdhdHRhY2htZW50Jz48L2F0dGFjaG1lbnQ+IGFuZCBzb21lIG90aGVyIHRleHQuCis8L2Rpdj4K
KzxzY3JpcHQ+Cit2YXIgZmlsZTsKK2lmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgdmFyIGZp
bGUgPSB3aW5kb3cuaW50ZXJuYWxzLmNyZWF0ZUZpbGUoIi4uL3Jlc291cmNlcy9hYmUucG5nIik7
CisgICAgdmFyIGF0dGFjaG1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXR0YWNobWVu
dCcpOworICAgIGF0dGFjaG1lbnQuZmlsZSA9IGZpbGU7CisKKyAgICBkZXNjcmlwdGlvbignVGhl
c2UgdGVzdHMgY3V0dGluZyBjb250ZW50IHdpdGggb25lIGF0dGFjaGVtbnQgYW5kIHBhc3Rpbmcg
aXQgYmFjaycpOworCisgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDEi
KTsKKyAgICB2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgIGRlYnVnKCdDaGVj
a2luZyB0aGUgZmlsZSBuYW1lIGZvciB0aGUgYXR0YWNobWVudCBlbGVtZW50Jyk7CisgICAgc2hv
dWxkQmUoImF0dGFjaG1lbnQuZmlsZS5uYW1lIiwgIidhYmUucG5nJyIpOworICAgIHMuc2V0UG9z
aXRpb24oZSwgMCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOworICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJDdXQiKTsKKyAgICBkZWJ1ZygnUGVyZm9ybSBDdXQgb24g
dGhlIGVudGlyZSBzZWxlY3Rpb24gZm9sbG93ZWQgYnkgUGFzdGUnKTsKKyAgICBkb2N1bWVudC5l
eGVjQ29tbWFuZCgiUGFzdGUiKTsKKyAgICBkZWJ1ZygnQ2hlY2tpbmcgdGhlIGZpbGUgbmFtZSBm
b3IgdGhlIHBhc3RlZCBhdHRhY2htZW50IGVsZW1lbnQnKTsKKyAgICBhdHRhY2htZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F0dGFjaG1lbnQnKQorICAgIHNob3VsZEJlKCJhdHRhY2ht
ZW50LmZpbGUubmFtZSIsICInYWJlLnBuZyciKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="review"
          id="272389"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247533</attachid>
            <date>2015-02-27 11:55:35 -0800</date>
            <delta_ts>2015-02-27 14:56:10 -0800</delta_ts>
            <desc>Patch2</desc>
            <filename>attachment-serialization.txt</filename>
            <type>text/plain</type>
            <size>10803</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDc2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAyLTI3ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9y
IHNlcmlhbGl6aW5nIEhUTUxBdHRhY2htZW50IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDI2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9wYXN0ZWJvYXJkL2Nv
cHktcGFzdGUtYXR0YWNobWVudC5odG1sCisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgdG8gc2Vy
aWFsaXplIHRoZSBhdHRhY2htZW50IGVsZW1lbnQKKyAgICAgICAgYW5kIHByb3Blcmx5IGhhbmRs
ZSBpdCB3aGVuIGNvbnZlcnRpbmcgYSBET00gcmFuZ2UKKyAgICAgICAgdG8gTlNBdHRyaWJ1dGVk
U3RyaW5nLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAg
ICAgICAoSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5n
L21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6
YXBwZW5kQ3VzdG9tQXR0cmlidXRlcyk6IENyZWF0ZSBuZXcgYXR0cmlidXRlCisgICAgICAgIGZv
ciBhdHRhY2htZW50IGVsZW1lbnQgd2hlbiBzZXJpYWxpemF0aW5nLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKTogUmVtb3ZlIHRoZSBhdHRyaWJ1dGUgZnJv
bSB0aGUgYXR0YWNobWVudCBlbGVtZW50CisgICAgICAgIHdoZW4gY3JlYXRpbmcgdGhlIGZyYWdt
ZW50LgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6ZmlsZSk6IEFkZGVkIGNvbnN0IHRvIGZp
bGUoKSB0bworICAgICAgICB1c2UgaXQgaW4gYXBwZW5kQ3VzdG9uQXR0cmlidXRlcyB3aGVyZSB0
aGUgZWxlbWVudCBpcyBhIGNvbnN0IHJlZmVyZW5jZS4KKyAgICAgICAgKiBodG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgor
CiAyMDE1LTAyLTI3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIGFmdGVyIGZyZWUgaW4gV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OnJlc3Rv
cmVSZWdpb25PYmplY3RzT3JpZ2luYWxTdHlsZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAkocmV2aXNpb24gMTgwNzY3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw5IEBACiAjaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKQEAgLTUxLDYgKzUzLDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1hcmt1cEFjY3VtdWxhdG9y
LmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUg
IlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTEzNSw2ICsxMzgsNyBA
QCBwcml2YXRlOgogICAgIFN0cmluZyBzdHJpbmdWYWx1ZUZvclJhbmdlKGNvbnN0IE5vZGUmLCBj
b25zdCBSYW5nZSopOwogCiAgICAgdm9pZCBhcHBlbmRFbGVtZW50KFN0cmluZ0J1aWxkZXImIG91
dCwgY29uc3QgRWxlbWVudCYsIGJvb2wgYWRkRGlzcGxheUlubGluZSwgUmFuZ2VGdWxseVNlbGVj
dHNOb2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ3VzdG9tQXR0cmlidXRlcyhTdHJpbmdC
dWlsZGVyJiwgY29uc3QgRWxlbWVudCYsIE5hbWVzcGFjZXMqKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRUZXh0KFN0cmluZ0J1aWxkZXImIG91dCwgY29uc3QgVGV4dCYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRFbGVtZW50KFN0cmluZ0J1aWxkZXImIG91
dCwgY29uc3QgRWxlbWVudCYgZWxlbWVudCwgTmFtZXNwYWNlcyopIG92ZXJyaWRlCkBAIC0yOTIs
MTEgKzI5NiwyOSBAQCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0cmluZ1ZhCiAg
ICAgcmV0dXJuIG5vZGVWYWx1ZTsKIH0KIAordm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6
YXBwZW5kQ3VzdG9tQXR0cmlidXRlcyhTdHJpbmdCdWlsZGVyJiBvdXQsIGNvbnN0IEVsZW1lbnQm
ZWxlbWVudCwgTmFtZXNwYWNlcyogbmFtZXNwYWNlcykKK3sKKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorICAgIGlmICghaXM8SFRNTEF0dGFjaG1lbnRFbGVtZW50PihlbGVtZW50KSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGNvbnN0IEhUTUxBdHRhY2htZW50RWxlbWVudCYg
YXR0YWNobWVudCA9IGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4oZWxlbWVudCk7Cisg
ICAgaWYgKGF0dGFjaG1lbnQuZmlsZSgpKQorICAgICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBl
bGVtZW50LCBBdHRyaWJ1dGUod2Via2l0YXR0YWNobWVudHBhdGhBdHRyLCBhdHRhY2htZW50LmZp
bGUoKS0+cGF0aCgpKSwgbmFtZXNwYWNlcyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvdXQp
OworICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKKyAgICBVTlVTRURfUEFSQU0obmFtZXNwYWNl
cyk7CisjZW5kaWYKK30KKwogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxl
bWVudChTdHJpbmdCdWlsZGVyJiBvdXQsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgYWRk
RGlzcGxheUlubGluZSwgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxlY3RzTm9k
ZSkKIHsKICAgICBjb25zdCBib29sIGRvY3VtZW50SXNIVE1MID0gZWxlbWVudC5kb2N1bWVudCgp
LmlzSFRNTERvY3VtZW50KCk7CiAgICAgYXBwZW5kT3BlblRhZyhvdXQsIGVsZW1lbnQsIDApOwog
CisgICAgYXBwZW5kQ3VzdG9tQXR0cmlidXRlcyhvdXQsIGVsZW1lbnQsIG51bGxwdHIpOworCiAg
ICAgY29uc3QgYm9vbCBzaG91bGRBbm5vdGF0ZU9yRm9yY2VJbmxpbmUgPSBlbGVtZW50LmlzSFRN
TEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5lKTsKICAg
ICBjb25zdCBib29sIHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyID0gc2hvdWxkQW5ub3RhdGVPckZv
cmNlSW5saW5lIHx8IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KTsKICAgICBpZiAo
ZWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpIHsKQEAgLTY1OCw2ICs2ODAsMTcgQEAgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbQogCiAgICAgZnJhZ21lbnQtPnBhcnNlSFRN
TChtYXJrdXAsIGZha2VCb2R5LmdldCgpLCBwYXJzZXJDb250ZW50UG9saWN5KTsKIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgLy8gV2hlbiBjcmVhdGluZyBhIGZyYWdtZW50
IHdlIG11c3Qgc3RyaXAgdGhlIHdlYmtpdC1hdHRhY2htZW50LXBhdGggYXR0cmlidXRlIGFmdGVy
IHJlc3RvcmluZyB0aGUgRmlsZSBvYmplY3QuCisgICAgUmVmUHRyPE5vZGVMaXN0PiBub2RlcyA9
IGZyYWdtZW50LT5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYXR0YWNobWVudCIpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbm9kZXMtPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFp
czxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCpub2Rlcy0+aXRlbShpKSkpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50JiBlbGVtZW50ID0gZG93bmNh
c3Q8SFRNTEF0dGFjaG1lbnRFbGVtZW50Pigqbm9kZXMtPml0ZW0oaSkpOworICAgICAgICBlbGVt
ZW50LnNldEZpbGUoRmlsZTo6Y3JlYXRlKGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZSh3ZWJraXRh
dHRhY2htZW50cGF0aEF0dHIpKS5wdHIoKSk7CisgICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmli
dXRlKHdlYmtpdGF0dGFjaG1lbnRwYXRoQXR0cik7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCFi
YXNlVVJMLmlzRW1wdHkoKSAmJiBiYXNlVVJMICE9IGJsYW5rVVJMKCkgJiYgYmFzZVVSTCAhPSBk
b2N1bWVudC5iYXNlVVJMKCkpCiAgICAgICAgIGNvbXBsZXRlVVJMcyhmcmFnbWVudC5nZXQoKSwg
YmFzZVVSTCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0JKHJldmlzaW9uIDE4MDc2NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcsMTEgQEAK
ICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW1wb3J0ICJFbGVtZW50LmgiCiAjaW1wb3J0
ICJFbGVtZW50VHJhdmVyc2FsLmgiCisjaW1wb3J0ICJGaWxlLmgiCiAjaW1wb3J0ICJGb250Q2Fz
Y2FkZS5oIgogI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCisjaW1w
b3J0ICJIVE1MQXR0YWNobWVudEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAj
aW1wb3J0ICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVu
dC5oIgpAQCAtMTk2MSw2ICsxOTYzLDE2IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X3Byb2Nlc3NF
bGVtZW50KEVsZW0KICAgICAgICAgd2hpbGUgKFtfdGV4dFRhYmxlcyBjb3VudF0gPCBbX3RleHRC
bG9ja3MgY291bnRdICsgMSkKICAgICAgICAgICAgIF9hZGRUYWJsZUZvckVsZW1lbnQobmlsKTsK
ICAgICAgICAgX2FkZFRhYmxlQ2VsbEZvckVsZW1lbnQoJmVsZW1lbnQpOworI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgfSBlbHNlIGlmIChpczxIVE1MQXR0YWNobWVudEVsZW1l
bnQ+KGVsZW1lbnQpKSB7CisgICAgICAgIEhUTUxBdHRhY2htZW50RWxlbWVudCYgYXR0YWNobWVu
dCA9IGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4oZWxlbWVudCk7CisgICAgICAgIGlm
IChhdHRhY2htZW50LmZpbGUoKSkgeworICAgICAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6YXR0YWNobWVudC5maWxlKCktPnBhdGgoKV07CisgICAgICAgICAgICBp
ZiAodXJsKQorICAgICAgICAgICAgICAgIF9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChlbGVtZW50
LCB1cmwsIGlzQmxvY2tMZXZlbCwgTk8pOworICAgICAgICB9CisgICAgICAgIHJldHZhbCA9IE5P
OworI2VuZGlmCiAgICAgfSBlbHNlIGlmIChlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKSkgewog
ICAgICAgICBOU1N0cmluZyAqdXJsU3RyaW5nID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoc3JjQXR0
cik7CiAgICAgICAgIGlmICh1cmxTdHJpbmcgJiYgW3VybFN0cmluZyBsZW5ndGhdID4gMCkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAko
cmV2aXNpb24gMTgwNzY3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEUKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyQXR0YWNobWVudD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwogfQogCi1GaWxlKiBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OmZpbGUoKQorRmlsZSogSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpm
aWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9maWxlLmdldCgpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCShyZXZpc2lvbiAxODA3Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIGNsYXNzIEZpbGU7CiBjbGFzcyBIVE1MQXR0YWNobWVu
dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7Ci0KLSAgICBGaWxlKiBmaWxlKCk7CisgICAgdmlydHVhbCBib29sIGNhbkNv
bnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBGaWxlKiBmaWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlKEZpbGUqKTsKIAogcHJpdmF0
ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZp
c2lvbiAxODA3NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDYgKzM0OSw3IEBAIHZlcnNpb24KIHZsaW5rCiB2c3Bh
Y2UKIHdlYmtpdGFsbG93ZnVsbHNjcmVlbgord2Via2l0YXR0YWNobWVudHBhdGgKIHdpZHRoCiB3
cmFwCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDc2NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTI1ICBFbnJpY2EgQ2Fz
dWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHNl
cmlhbGl6aW5nIEhUTUxBdHRhY2htZW50IGVsZW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0
ZS1hdHRhY2htZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0
ZWJvYXJkL2NvcHktcGFzdGUtYXR0YWNobWVudC5odG1sOiBBZGRlZC4KKwogMjAxNS0wMi0yNyAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhZnRlciBmcmVl
IGluIFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50OjpyZXN0b3JlUmVnaW9uT2JqZWN0
c09yaWdpbmFsU3R5bGUKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5
LXBhc3RlLWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2NvcHktcGFzdGUt
YXR0YWNobWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAor
VGhlc2UgdGVzdHMgY3V0dGluZyBjb250ZW50IHdpdGggb25lIGF0dGFjaGVtbnQgYW5kIHBhc3Rp
bmcgaXQgYmFjaworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hlY2tpbmcgdGhl
IGZpbGUgbmFtZSBmb3IgdGhlIGF0dGFjaG1lbnQgZWxlbWVudAorUEFTUyBhdHRhY2htZW50LmZp
bGUubmFtZSBpcyAnYWJlLnBuZycKK1BlcmZvcm0gQ3V0IG9uIHRoZSBlbnRpcmUgc2VsZWN0aW9u
IGZvbGxvd2VkIGJ5IFBhc3RlCitDaGVja2luZyB0aGUgZmlsZSBuYW1lIGZvciB0aGUgcGFzdGVk
IGF0dGFjaG1lbnQgZWxlbWVudAorUEFTUyBhdHRhY2htZW50LmZpbGUubmFtZSBpcyAnYWJlLnBu
ZycKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVGhp
cyBpcyBhIHBhcmFncmFwaCB3aXRoIGFuIGF0dGFjaG1lbnTCoMKgYW5kIHNvbWUgb3RoZXIgdGV4
dC4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBhc3RlLWF0dGFj
aG1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
Y29weS1wYXN0ZS1hdHRhY2htZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1wYXN0ZS1hdHRhY2htZW50Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNv
bnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8IS0tPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMt
bWFya3VwLmpzIj48L3NjcmlwdD4tLT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjb250ZW50ZWRp
dGFibGU9InRydWUiIGlkPSJ0ZXN0MSI+VGhpcyBpcyBhIHBhcmFncmFwaCB3aXRoIGFuIGF0dGFj
aG1lbnQKKyAgICA8YXR0YWNobWVudCBpZD0nYXR0YWNobWVudCc+PC9hdHRhY2htZW50PiBhbmQg
c29tZSBvdGhlciB0ZXh0LgorPC9kaXY+Cis8c2NyaXB0PgordmFyIGZpbGU7CitpZiAod2luZG93
LmludGVybmFscykgeworICAgIHZhciBmaWxlID0gd2luZG93LmludGVybmFscy5jcmVhdGVGaWxl
KCIuLi9yZXNvdXJjZXMvYWJlLnBuZyIpOworICAgIHZhciBhdHRhY2htZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2F0dGFjaG1lbnQnKTsKKyAgICBhdHRhY2htZW50LmZpbGUgPSBmaWxl
OworCisgICAgZGVzY3JpcHRpb24oJ1RoZXNlIHRlc3RzIGN1dHRpbmcgY29udGVudCB3aXRoIG9u
ZSBhdHRhY2hlbW50IGFuZCBwYXN0aW5nIGl0IGJhY2snKTsKKworICAgIHZhciBlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QxIik7CisgICAgdmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CisKKyAgICBkZWJ1ZygnQ2hlY2tpbmcgdGhlIGZpbGUgbmFtZSBmb3IgdGhlIGF0dGFj
aG1lbnQgZWxlbWVudCcpOworICAgIHNob3VsZEJlKCJhdHRhY2htZW50LmZpbGUubmFtZSIsICIn
YWJlLnBuZyciKTsKKyAgICBzLnNldFBvc2l0aW9uKGUsIDApOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiQ3V0Iik7Cisg
ICAgZGVidWcoJ1BlcmZvcm0gQ3V0IG9uIHRoZSBlbnRpcmUgc2VsZWN0aW9uIGZvbGxvd2VkIGJ5
IFBhc3RlJyk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3RlIik7CisgICAgZGVidWco
J0NoZWNraW5nIHRoZSBmaWxlIG5hbWUgZm9yIHRoZSBwYXN0ZWQgYXR0YWNobWVudCBlbGVtZW50
Jyk7CisgICAgYXR0YWNobWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdHRhY2htZW50
JykKKyAgICBzaG91bGRCZSgiYXR0YWNobWVudC5maWxlLm5hbWUiLCAiJ2FiZS5wbmcnIik7Cit9
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="272454"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>