<?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>71152</bug_id>
          
          <creation_ts>2011-10-28 15:47:03 -0700</creation_ts>
          <short_desc>selectors should match attribute name with case sensitivity based on element &amp; document type</short_desc>
          <delta_ts>2013-08-01 18:12:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Rafael Weinstein">rafaelw</reporter>
          <assigned_to name="Rob Buis">rwlbuis</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>ian</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>rwlbuis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>492735</commentid>
    <comment_count>0</comment_count>
    <who name="Rafael Weinstein">rafaelw</who>
    <bug_when>2011-10-28 15:47:03 -0700</bug_when>
    <thetext>E.G. in, the following document:

&lt;svg width=&quot;100%&quot; height=&quot;100%&quot; viewBox=&quot;0 0 100 1&quot;
  xmlns=&quot;http://www.w3.org/2000/svg&quot; version=&quot;1.1&quot;&gt;

	&lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
		path { fill:none; stroke:black; stroke-width:1 }
	]]&gt;&lt;/style&gt;

	&lt;path d=&quot;M0,0 L100,0&quot; pathLength=&quot;200&quot; stroke-dasharray=&quot;100,100&quot;/&gt;
&lt;/svg&gt;

   document.querySelector(&apos;*[pathLength]&apos;);

should return the path element. This currently only works if the document *isn&apos;t* html. If it is html then the above selector matches nothing because the selector parser grammar lower-cases the selectorAttributeName

From reading the spec &amp; talking with Hixie &amp; Ojan, the correct for matching attribute names appears to be:

-if html document &amp; html element: match case-insensitive
-otherwise match case-sensitive

FWIW, This is Gecko&apos;s current behavior.

I&apos;m happy to work on a patch for this if a likely reviewer agrees this is the correct behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492878</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-10-28 19:36:45 -0700</bug_when>
    <thetext>To clarify, the selectors spec says attribute matching is case-sensitive as per the document type and the HTML spec says HTML element attributes are case-insensitive but SVG element attributes are case-sensitive. So, attribute selectors need to be checked case-sensitively for SVG (and MATHML?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493130</commentid>
    <comment_count>2</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-10-30 19:20:15 -0700</bug_when>
    <thetext>The relevant commit that describes almost the behavior Rafael described. With the exception of class names and ids in standards mode documents:
&quot;Everything else (attribute values on HTML elements, IDs and classes in no-quirks mode and limited-quirks mode and element names, attribute names, and attribute values in XML documents) must be treated as case-sensitive for the purposes of selector matching.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493131</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-10-30 19:20:29 -0700</bug_when>
    <thetext>http://html5.org/tools/web-apps-tracker?from=6694&amp;to=6695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912964</commentid>
    <comment_count>4</comment_count>
      <attachid>207753</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-07-30 11:58:31 -0700</bug_when>
    <thetext>Created attachment 207753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912974</commentid>
    <comment_count>5</comment_count>
      <attachid>207753</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-07-30 12:19:48 -0700</bug_when>
    <thetext>Comment on attachment 207753
Patch

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

I was close to a review+ on this, but I think the really tricky changes to QualifiedName and Attribute::matches need at least some minor tweaks before this is OK to land.

&gt; Source/WebCore/dom/Attribute.h:54
&gt; +    bool matches(const QualifiedName&amp;, const AtomicString&amp;) const;

This second argument needs a argument name. It’s not at all clear what it is. And I think this function is now not self-explanatory any more, so we probably need a comment, now, too.

&gt; Source/WebCore/dom/Attribute.h:75
&gt; +inline bool Attribute::matches(const QualifiedName&amp; qualifiedName, const AtomicString&amp; lname) const

Please don’t use an abbreviation, “lname”. You could use localName and then write localName != this-&gt;localName(). Or some other non-abbreviation.

&gt; Source/WebCore/dom/QualifiedName.cpp:156
&gt;  const AtomicString&amp; QualifiedName::localNameUpper() const
&gt;  {
&gt; -    if (!m_impl-&gt;m_localNameUpper)
&gt; -        m_impl-&gt;m_localNameUpper = m_impl-&gt;m_localName.upper();
&gt; -    return m_impl-&gt;m_localNameUpper;
&gt; +    if (!m_impl-&gt;m_localNameUpperLower)
&gt; +        m_impl-&gt;m_localNameUpperLower = m_impl-&gt;m_localName.upper();
&gt; +    return m_impl-&gt;m_localNameUpperLower;
&gt; +}
&gt; +
&gt; +const AtomicString&amp; QualifiedName::localNameLower() const
&gt; +{
&gt; +    if (!m_impl-&gt;m_localNameUpperLower)
&gt; +        m_impl-&gt;m_localNameUpperLower = m_impl-&gt;m_localName.lower();
&gt; +    return m_impl-&gt;m_localNameUpperLower;
&gt;  }

How does this work? It seems that if you call localNameUpper and then localNameLower, you will get an uppercased copy. That seems like a very dangerous design, even if there is some crazy reason it works!

If we really are going to rely on people calling only one or the other on each QualifiedName, then I think we need a debug-only flag to catch if we ever do that wrong at runtime at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912975</commentid>
    <comment_count>6</comment_count>
      <attachid>207753</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-07-30 12:20:22 -0700</bug_when>
    <thetext>Comment on attachment 207753
Patch

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

&gt; LayoutTests/svg/custom/querySelector-attribute-selector-caseSensitive-expected.txt:4
&gt; +[object SVGPathElement]
&gt; +null
&gt; +[object HTMLDivElement]
&gt; +[object HTMLDivElement]

This test output is not at all clear. It’s much better when tests make it clear what their testing is rather than just dumping out some strings. The pass/fail style with expected values is much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912977</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-07-30 12:24:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 207753 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=207753&amp;action=review
&gt; 
&gt; &gt; LayoutTests/svg/custom/querySelector-attribute-selector-caseSensitive-expected.txt:4
&gt; &gt; +[object SVGPathElement]
&gt; &gt; +null
&gt; &gt; +[object HTMLDivElement]
&gt; &gt; +[object HTMLDivElement]
&gt; 
&gt; This test output is not at all clear. It’s much better when tests make it clear what their testing is rather than just dumping out some strings. The pass/fail style with expected values is much better.

You are right, I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912980</commentid>
    <comment_count>8</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-07-30 12:27:27 -0700</bug_when>
    <thetext>Hi Darin,

Thanks for the quick review!

(In reply to comment #5)
&gt; (From update of attachment 207753 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=207753&amp;action=review
&gt; 
&gt; I was close to a review+ on this, but I think the really tricky changes to QualifiedName and Attribute::matches need at least some minor tweaks before this is OK to land.

Yeah, my main objective was to check whether it causes any regressions and maybe to trigger some discussion.

&gt; &gt; Source/WebCore/dom/Attribute.h:54
&gt; &gt; +    bool matches(const QualifiedName&amp;, const AtomicString&amp;) const;
&gt; 
&gt; This second argument needs a argument name. It’s not at all clear what it is. And I think this function is now not self-explanatory any more, so we probably need a comment, now, too.

Agreed, I&apos;ll think about that one.

&gt; &gt; Source/WebCore/dom/Attribute.h:75
&gt; &gt; +inline bool Attribute::matches(const QualifiedName&amp; qualifiedName, const AtomicString&amp; lname) const
&gt; 
&gt; Please don’t use an abbreviation, “lname”. You could use localName and then write localName != this-&gt;localName(). Or some other non-abbreviation.

Yeah that was a bit lazy, will fix.

&gt; &gt; Source/WebCore/dom/QualifiedName.cpp:156
&gt; &gt;  const AtomicString&amp; QualifiedName::localNameUpper() const
&gt; &gt;  {
&gt; &gt; -    if (!m_impl-&gt;m_localNameUpper)
&gt; &gt; -        m_impl-&gt;m_localNameUpper = m_impl-&gt;m_localName.upper();
&gt; &gt; -    return m_impl-&gt;m_localNameUpper;
&gt; &gt; +    if (!m_impl-&gt;m_localNameUpperLower)
&gt; &gt; +        m_impl-&gt;m_localNameUpperLower = m_impl-&gt;m_localName.upper();
&gt; &gt; +    return m_impl-&gt;m_localNameUpperLower;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +const AtomicString&amp; QualifiedName::localNameLower() const
&gt; &gt; +{
&gt; &gt; +    if (!m_impl-&gt;m_localNameUpperLower)
&gt; &gt; +        m_impl-&gt;m_localNameUpperLower = m_impl-&gt;m_localName.lower();
&gt; &gt; +    return m_impl-&gt;m_localNameUpperLower;
&gt; &gt;  }
&gt; 
&gt; How does this work? It seems that if you call localNameUpper and then localNameLower, you will get an uppercased copy. That seems like a very dangerous design, even if there is some crazy reason it works!
&gt; 
&gt; If we really are going to rely on people calling only one or the other on each QualifiedName, then I think we need a debug-only flag to catch if we ever do that wrong at runtime at least.

Agreed, I verified that it works in theory because localNameUpper is only used for elements, not attributes. But you are right that asserting would be better, will try to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913025</commentid>
    <comment_count>9</comment_count>
      <attachid>207766</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-07-30 14:36:16 -0700</bug_when>
    <thetext>Created attachment 207766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913038</commentid>
    <comment_count>10</comment_count>
      <attachid>207766</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-07-30 14:59:56 -0700</bug_when>
    <thetext>Comment on attachment 207766
Patch

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

&gt; Source/WebCore/dom/QualifiedName.cpp:148
&gt; +    ASSERT(m_impl-&gt;m_localNameUpperLower.impl() == m_impl-&gt;m_localName.upper().impl());

This assertion will fail. You need to check if the strings are equal, not that they have the same StringImpl pointer. I think you should just remove the calls to impl().

&gt; Source/WebCore/dom/QualifiedName.cpp:156
&gt; +    ASSERT(m_impl-&gt;m_localNameUpperLower.impl() == m_impl-&gt;m_localName.lower().impl());

Same problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913059</commentid>
    <comment_count>11</comment_count>
      <attachid>207776</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-07-30 15:39:19 -0700</bug_when>
    <thetext>Created attachment 207776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913488</commentid>
    <comment_count>12</comment_count>
      <attachid>207875</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-07-31 14:19:26 -0700</bug_when>
    <thetext>Created attachment 207875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913498</commentid>
    <comment_count>13</comment_count>
      <attachid>207875</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-07-31 15:25:33 -0700</bug_when>
    <thetext>Comment on attachment 207875
Patch

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

I’m pretty sure that there is a problem sharing m_localNameUpperLower. The same QualifiedNameImpl can be used in a context where localNameUpper is called on it and another where localNameLower needs to be called on it. Not the same qualified name, but the same QualifiedNameImpl from the global table.

&gt; Source/WebCore/dom/QualifiedName.h:91
&gt; +    // Uppercased/lowercased localName, cached for efficiency

I wish this made it clear that you can only call one or the other, not both, on any given QualifiedName.

I still don’t understand how we can guarantee that. If the two qualified names are identical, won’t we share the same underlying QualifiedNameImpl? So can’t we use the equal qualified name in two separate contexts and make the assertions fire!?!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913499</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-07-31 15:26:13 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I verified that it works in theory because localNameUpper is only used for elements, not attributes.

But an element and an attribute could have the same qualified name, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913504</commentid>
    <comment_count>15</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-07-31 15:34:25 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #8)
&gt; &gt; I verified that it works in theory because localNameUpper is only used for elements, not attributes.
&gt; 
&gt; But an element and an attribute could have the same qualified name, right?

I see your point, that can happen :( This part was always hacky, I think I can spot a way to do it differently, will try to come up with a new patch, thanks again for the helpful reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913755</commentid>
    <comment_count>16</comment_count>
      <attachid>207930</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-08-01 08:59:44 -0700</bug_when>
    <thetext>Created attachment 207930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913810</commentid>
    <comment_count>17</comment_count>
      <attachid>207930</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-01 11:47:40 -0700</bug_when>
    <thetext>Comment on attachment 207930
Patch

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

&gt; Source/WebCore/css/CSSSelector.h:207
&gt; +        const AtomicString&amp; attributeLocalNameLower() const;

This is not the right name for the function, since the name is only lowercase for an HTML document. We need to find a different name. Maybe with the word “canonical” or something like that. Maybe attributeCanonicalLowerName?

&gt; Source/WebCore/css/CSSSelector.h:267
&gt; +            AtomicString m_attributeLocalNameLower;

Same comment as above.

&gt; Source/WebCore/css/SelectorChecker.cpp:363
&gt; +        if (!attributeItem-&gt;matches(selectorAttr.prefix(), element-&gt;isHTMLElement() ? selector-&gt;attributeLocalNameLower() : selectorAttr.localName(), selectorAttr.namespaceURI()))

Is the HTMLElement check here needed? Can’t we always use attributeLocalNameLower here?

&gt; Source/WebCore/css/SelectorChecker.cpp:393
&gt; +        const QualifiedName&amp; attr = selector-&gt;attribute();

I think the code would read better without this local variable.

&gt; Source/WebCore/css/SelectorChecker.h:135
&gt; +    const AtomicString&amp; localName = element-&gt;isHTMLElement() ? selector-&gt;attributeLocalNameLower() : selectorAttributeName.localName();

Can’t we use attributeLocalNameLower unconditionally?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913844</commentid>
    <comment_count>18</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-08-01 13:38:54 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 207930 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=207930&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSSelector.h:207
&gt; &gt; +        const AtomicString&amp; attributeLocalNameLower() const;
&gt; 
&gt; This is not the right name for the function, since the name is only lowercase for an HTML document. We need to find a different name. Maybe with the word “canonical” or something like that. Maybe attributeCanonicalLowerName?

You are right, that would be more clear. Note that it only does this for HTML documents only to avoid doing unnecessary work, that is the only reason.

&gt; &gt; Source/WebCore/css/CSSSelector.h:267
&gt; &gt; +            AtomicString m_attributeLocalNameLower;
&gt; 
&gt; Same comment as above.

Agreed, will fix.

&gt; &gt; Source/WebCore/css/SelectorChecker.cpp:363
&gt; &gt; +        if (!attributeItem-&gt;matches(selectorAttr.prefix(), element-&gt;isHTMLElement() ? selector-&gt;attributeLocalNameLower() : selectorAttr.localName(), selectorAttr.namespaceURI()))
&gt; 
&gt; Is the HTMLElement check here needed? Can’t we always use attributeLocalNameLower here?

I think it is needed, it is reflected in the bug title too. The case where this happens is having a HTML document with a foreign namespace element, i.e. SVG or MathML. It seems this behavior is chosen to match getElementsByTagName, see:

http://w3-org.9356.n7.nabble.com/selectors-Case-sensitivity-of-type-and-attribute-selectors-td240849.html

In particular this link on the thread details it best:

http://www.whatwg.org/specs/web-apps/current-work/multipage/selectors.html#selectors

The fact that FireFox results are the same on the testcases in the patch suggests it is the right approach.

&gt; &gt; Source/WebCore/css/SelectorChecker.cpp:393
&gt; &gt; +        const QualifiedName&amp; attr = selector-&gt;attribute();
&gt; 
&gt; I think the code would read better without this local variable.

I&apos;ll check.

&gt; &gt; Source/WebCore/css/SelectorChecker.h:135
&gt; &gt; +    const AtomicString&amp; localName = element-&gt;isHTMLElement() ? selector-&gt;attributeLocalNameLower() : selectorAttributeName.localName();
&gt; 
&gt; Can’t we use attributeLocalNameLower unconditionally?

See earlier explanation.
I would be loved to proven wrong on that since obviously it would be more efficient but I don&apos;t see a way around it given foreign elements/attribute names in HTML documents compare using case-sensitivity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913872</commentid>
    <comment_count>19</comment_count>
      <attachid>207954</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-08-01 14:36:23 -0700</bug_when>
    <thetext>Created attachment 207954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913919</commentid>
    <comment_count>20</comment_count>
      <attachid>207954</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-01 16:01:45 -0700</bug_when>
    <thetext>Comment on attachment 207954
Patch

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

r=me but I think we have the name wrong

&gt; Source/WebCore/css/CSSSelector.h:207
&gt; +        const AtomicString&amp; attributeCanonicalLowerName() const;

Did you mean attributeCanonicalLocalName?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913955</commentid>
    <comment_count>21</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-08-01 18:12:22 -0700</bug_when>
    <thetext>Committed r153631: &lt;http://trac.webkit.org/changeset/153631&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207753</attachid>
            <date>2013-07-30 11:58:31 -0700</date>
            <delta_ts>2013-07-30 14:36:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71152-20130730145822.patch</filename>
            <type>text/plain</type>
            <size>10032</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWViYWM2YWQwN2E5NmNh
YzViNjcyYjE3MzQ2ZGUxM2ExZGQwYzFlNS4uOTlhZGZkZGE3YzQ0YjYzODZkODRkMjQ1Mzc0MTQz
YWE0YzhmNjdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA3LTMwICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KKworICAgICAgICBzZWxlY3RvcnMgc2hvdWxkIG1h
dGNoIGF0dHJpYnV0ZSBuYW1lIHdpdGggY2FzZSBzZW5zaXRpdml0eSBiYXNlZCBvbiBlbGVtZW50
ICYgZG9jdW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IGNhc2Utc2Vuc2l0aXZlIGF0dHJpYnV0ZSBuYW1lIHNlbGVjdGluZyBm
b3Igbm9uIEhUTUwuIEluIG9yZGVyIHRvIGRvIHRoaXMgd2UgaGF2ZSB0bworICAgICAgICBzdG9y
ZSB0aGUgYXR0cmlidXRlIG5hbWUgaW4gdGhlIHNlbGVjdG9yIGFzLWlzIHdoZW4gY3NzIHBhcnNp
bmcsIGFuZCBnZXQgdGhlIGxvd2VyY2FzZSBsb2NhbE5hbWUKKyAgICAgICAgb24gZGVtYW5kIGZv
ciBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20v
cXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sCisKKyAg
ICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBkbyBub3QgbG93ZXJjYXNlIGF0dHJpYnV0ZSBz
ZWxlY3RvciBuYW1lLgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YW55QXR0cmlidXRlTWF0Y2hlcyk6IG9ubHkgdXNlIGxvd2VyY2FzZSBsb2Nh
bE5hbWUgZm9yIEhUTUwuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6IGFsd2F5cyB1c2UgbG93ZXJj
YXNlIGxvY2FsTmFtZSBmb3IgZmFzdCBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vQXR0cmlidXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1dGU6Om1hdGNoZXMpOiB0YWtlIGxvY2FsTmFtZSBh
cyBwYXJhbWV0ZXIuCisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuY3BwOiBhbGxvdyBnZXR0
aW5nIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIGxvY2FsTmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlF1
YWxpZmllZE5hbWU6OmxvY2FsTmFtZVVwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWU6OmxvY2FsTmFtZUxvd2VyKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgor
CiAyMDEzLTA3LTE4ICBSb2IgQnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBO
YW1lc3BhY2UgcHJlZml4IGlzIGJsaW5kbHkgZm9sbG93ZWQgd2hlbiBzZXJpYWxpemluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggNzM4NTM4Nzk3ZTZkYTI1OWZlMjAyZGEwNTg2
Yjg1MmMxMzAzZGFiZi4uOWQ1YjUwODIwNWM2YWE4ZjQ4NjE1ZGY0ZDIzZjEzODNmYzczNTBhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC0xMzQ3LDEwICsxMzQ3LDcgQEAgY2xh
c3M6CiAKIGF0dHJfbmFtZToKICAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1Bh
cnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hU
TUxEb2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICAkJCA9IHN0cjsK
KyAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwCmluZGV4IDcyZTA2YTE3NWNlNDI2ZDNiYWJhMjg2NTE0YTc0Y2E4Y2Q4MjZj
NzUuLmVkYzkwZWVhNTNkMDQ0Y2M4NDg2MDE0YWNhNmExZDNjOWEzYjdmY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgc3RhdGljIGJv
b2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6TWF0
Y2ggbWF0Y2gsIGNvbnMKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJp
YnV0ZUNvdW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0
ZW0gPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogCi0gICAgICAgIGlmICghYXR0cmlidXRl
SXRlbS0+bWF0Y2hlcyhzZWxlY3RvckF0dHIpKQorICAgICAgICBpZiAoIWF0dHJpYnV0ZUl0ZW0t
Pm1hdGNoZXMoc2VsZWN0b3JBdHRyLCBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgPyBzZWxlY3Rv
ckF0dHIubG9jYWxOYW1lTG93ZXIoKSA6IHNlbGVjdG9yQXR0ci5sb2NhbE5hbWUoKSkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoYXR0cmlidXRlVmFsdWVNYXRjaGVzKGF0
dHJpYnV0ZUl0ZW0sIG1hdGNoLCBzZWxlY3RvclZhbHVlLCBjYXNlU2Vuc2l0aXZlKSkKQEAgLTM4
NywxMSArMzg3LDEwIEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShjb25zdCBTZWxl
Y3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuIGVsZW1l
bnQtPmhhc0lEKCkgJiYgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSA9PSBzZWxlY3Rv
ci0+dmFsdWUoKTsKIAogICAgIGlmIChzZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7
Ci0gICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHIgPSBzZWxlY3Rvci0+YXR0cmlidXRl
KCk7Ci0KICAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ciA9IHNl
bGVjdG9yLT5hdHRyaWJ1dGUoKTsKICAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gIW1fZG9j
dW1lbnRJc0hUTUwgfHwgSFRNTERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoYXR0
cik7CiAKICAgICAgICAgaWYgKCFhbnlBdHRyaWJ1dGVNYXRjaGVzKGVsZW1lbnQsIHN0YXRpY19j
YXN0PENTU1NlbGVjdG9yOjpNYXRjaD4oc2VsZWN0b3ItPm1fbWF0Y2gpLCBhdHRyLCBzZWxlY3Rv
ci0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmgKaW5kZXggMGY2YjA0Y2JiYzcwOTM0OTRhYTNkNDViN2YwY2U3MTdlMDg4OThmMi4uY2U0Y2Iw
ZTg2MGI2MDE5MTU0YjA1NDkyNzg3MjVmNTI2NDcyMjk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuaApAQCAtMTM1LDcgKzEzNSw3IEBAIGlubGluZSBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBR
CiAgICAgdW5zaWduZWQgc2l6ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50KCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBBdHRyaWJ1
dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgIGlmIChh
dHRyaWJ1dGUtPm1hdGNoZXMoc2VsZWN0b3JBdHRyaWJ1dGVOYW1lKSAmJiAoIXZhbHVlIHx8IGF0
dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCkgPT0gdmFsdWUpKQorICAgICAgICBpZiAoYXR0cmlidXRl
LT5tYXRjaGVzKHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLmxv
Y2FsTmFtZUxvd2VyKCkpICYmICghdmFsdWUgfHwgYXR0cmlidXRlLT52YWx1ZSgpLmltcGwoKSA9
PSB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCmluZGV4IDRhMmZjYWQzZmQ3NmRmMjkwZmY0YmQ2ZTcw
ODQ0ODgxMzcxNWUwMTguLjdmYjc3NDNiOGE2ZTI1Y2E2ZTVlYmQ1YWM1ZjAwMWZlZGIyMDU2Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0cmlidXRlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNFbXB0eSgpOyB9Ci0gICAg
Ym9vbCBtYXRjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBib29sIG1hdGNo
ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogCiAg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSB7IG1fdmFsdWUgPSB2
YWx1ZTsgfQogICAgIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KSB7
IG1fbmFtZS5zZXRQcmVmaXgocHJlZml4KTsgfQpAQCAtNzIsOSArNzIsOSBAQCBwcml2YXRlOgog
ICAgIEF0b21pY1N0cmluZyBtX3ZhbHVlOwogfTsKIAotaW5saW5lIGJvb2wgQXR0cmlidXRlOjpt
YXRjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHF1YWxpZmllZE5hbWUpIGNvbnN0CitpbmxpbmUg
Ym9vbCBBdHRyaWJ1dGU6Om1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgcXVhbGlmaWVkTmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBsbmFtZSkgY29uc3QKIHsKLSAgICBpZiAocXVhbGlmaWVk
TmFtZS5sb2NhbE5hbWUoKSAhPSBsb2NhbE5hbWUoKSkKKyAgICBpZiAobG5hbWUgIT0gbG9jYWxO
YW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcXVhbGlmaWVkTmFtZS5w
cmVmaXgoKSA9PSBzdGFyQXRvbSB8fCBxdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgpID09IG5h
bWVzcGFjZVVSSSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmll
ZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IDM2
YWE5OTQ1N2VhZDRjZjVjNzBhYjQzMmY1ZDczNWEzYWViZDVkNTEuLmNhNzhjNWY0ZGJlYmJjMmU3
YmNiMTBhYjcwZGQ5NGM0NDRhNjQyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9R
dWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5j
cHAKQEAgLTE0Myw5ICsxNDMsMTYgQEAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbnVsbFFOYW1lKCkK
IAogY29uc3QgQXRvbWljU3RyaW5nJiBRdWFsaWZpZWROYW1lOjpsb2NhbE5hbWVVcHBlcigpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2ltcGwtPm1fbG9jYWxOYW1lVXBwZXIpCi0gICAgICAgIG1faW1w
bC0+bV9sb2NhbE5hbWVVcHBlciA9IG1faW1wbC0+bV9sb2NhbE5hbWUudXBwZXIoKTsKLSAgICBy
ZXR1cm4gbV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyOworICAgIGlmICghbV9pbXBsLT5tX2xvY2Fs
TmFtZVVwcGVyTG93ZXIpCisgICAgICAgIG1faW1wbC0+bV9sb2NhbE5hbWVVcHBlckxvd2VyID0g
bV9pbXBsLT5tX2xvY2FsTmFtZS51cHBlcigpOworICAgIHJldHVybiBtX2ltcGwtPm1fbG9jYWxO
YW1lVXBwZXJMb3dlcjsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBRdWFsaWZpZWROYW1lOjps
b2NhbE5hbWVMb3dlcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwtPm1fbG9jYWxOYW1lVXBw
ZXJMb3dlcikKKyAgICAgICAgbV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyTG93ZXIgPSBtX2ltcGwt
Pm1fbG9jYWxOYW1lLmxvd2VyKCk7CisgICAgcmV0dXJuIG1faW1wbC0+bV9sb2NhbE5hbWVVcHBl
ckxvd2VyOwogfQogCiB1bnNpZ25lZCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6
Y29tcHV0ZUhhc2goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxp
ZmllZE5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKaW5kZXggZTA4
MDJlZjMyYzk1NGQ3OWJmN2U4OGEzM2Y1OTdiY2Q2MDcyNGI0MC4uNzBmMzBhYWU5ZmJlMDQxNjRk
YjQxZDg2OTc1Nzg4ZDk0MzE2NWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1
YWxpZmllZE5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fcHJl
Zml4OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsKLSAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJp
bmcgbV9sb2NhbE5hbWVVcHBlcjsKKyAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJpbmcgbV9sb2Nh
bE5hbWVVcHBlckxvd2VyOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUXVhbGlmaWVkTmFtZUlt
cGwoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxO
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKQEAgLTg4LDggKzg4LDkgQEAg
cHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9pbXBsLT5tX2xvY2FsTmFtZTsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5tX25hbWVzcGFjZTsgfQogCi0gICAgLy8g
VXBwZXJjYXNlZCBsb2NhbE5hbWUsIGNhY2hlZCBmb3IgZWZmaWNpZW5jeQorICAgIC8vIFVwcGVy
Y2FzZWQvbG93ZXJjYXNlZCBsb2NhbE5hbWUsIGNhY2hlZCBmb3IgZWZmaWNpZW5jeQogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lVXBwZXIoKSBjb25zdDsKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsTmFtZUxvd2VyKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmco
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDA5ZTI2MjgxZDlkY2YwMGM4MTg3NjJmN2E2MGVjZjRiMTVhNjI5
N2IuLjJlZDdmNWIyMWEyZjhkZDI4MTRjODYxN2I5MjgxOTIzNjZhZTIzZTcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMy0wNy0zMCAgUm9iIEJ1aXMgIDxyd2xidWlzQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgc2VsZWN0b3JzIHNob3VsZCBtYXRjaCBhdHRyaWJ1dGUgbmFtZSB3aXRoIGNhc2Ug
c2Vuc2l0aXZpdHkgYmFzZWQgb24gZWxlbWVudCAmIGRvY3VtZW50IHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTUyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQgYXR0cmlidXRl
IG5hbWUgc2VsZWN0b3IgbWF0Y2hpbmcgaXMgY2FzZS1zZW5zaXRpdmUgZm9yIFNWRywgY2FzZS1p
bnNlbnNpdGl2ZSBmb3IgSFRNTC4KKworICAgICAgICAqIHN2Zy9jdXN0b20vcXVlcnlTZWxlY3Rv
ci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy9jdXN0b20vcXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2Fz
ZVNlbnNpdGl2ZS5odG1sOiBBZGRlZC4KKwogMjAxMy0wNy0xOCAgUm9iIEJ1aXMgIDxyd2xidWlz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTmFtZXNwYWNlIHByZWZpeCBpcyBibGluZGx5IGZvbGxv
d2VkIHdoZW4gc2VyaWFsaXppbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
cXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVj
dG9yLWNhc2VTZW5zaXRpdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNmIzNDA1ZTZkNzQ4
NzExYTgzZjJkMmEzOTlkNjdlZjgwNzJlNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9yLWNhc2VTZW5zaXRp
dmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorW29iamVjdCBTVkdQYXRoRWxlbWVudF0K
K251bGwKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmli
dXRlLXNlbGVjdG9yLWNhc2VTZW5zaXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
cXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE5ZjZmMDdhOTc0NDEyZjg4NzM4Y2Q2OTllMmQzMTE3ODVhY2JkY2MKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRl
LXNlbGVjdG9yLWNhc2VTZW5zaXRpdmUuaHRtbApAQCAtMCwwICsxLDIyIEBACis8aHRtbCB4bWxu
cz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+CisgIDxib2R5PgorICAgIDxkaXYgYmFS
PSIxMCI+PC9kaXY+CisgICAgPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKyAgICA8c3ZnIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgIDxwYXRoICBwYXRoTGVu
Z3RoPSIyMDAiLz4KKyAgICA8L3N2Zz4KKworICAgIDxzY3JpcHQ+CisgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB9
CisgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gIiI7CisgICAgICByZXN1bHRTdHJpbmcgKz0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcignKltwYXRoTGVuZ3RoXScpICsgIlxuIjsKKyAgICAgIHJlc3Vs
dFN0cmluZyArPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcqW3BhdGhsZW5ndGhdJykgKyAiXG4i
OworICAgICAgcmVzdWx0U3RyaW5nICs9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJypbYmFSXScp
ICsgIlxuIjsKKyAgICAgIHJlc3VsdFN0cmluZyArPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcq
W2JBcl0nKTsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikudGV4dENv
bnRlbnQgPSByZXN1bHRTdHJpbmc7CisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207766</attachid>
            <date>2013-07-30 14:36:16 -0700</date>
            <delta_ts>2013-07-30 15:39:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71152-20130730173607.patch</filename>
            <type>text/plain</type>
            <size>10787</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWViYWM2YWQwN2E5NmNh
YzViNjcyYjE3MzQ2ZGUxM2ExZGQwYzFlNS4uOTlhZGZkZGE3YzQ0YjYzODZkODRkMjQ1Mzc0MTQz
YWE0YzhmNjdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA3LTMwICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KKworICAgICAgICBzZWxlY3RvcnMgc2hvdWxkIG1h
dGNoIGF0dHJpYnV0ZSBuYW1lIHdpdGggY2FzZSBzZW5zaXRpdml0eSBiYXNlZCBvbiBlbGVtZW50
ICYgZG9jdW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IGNhc2Utc2Vuc2l0aXZlIGF0dHJpYnV0ZSBuYW1lIHNlbGVjdGluZyBm
b3Igbm9uIEhUTUwuIEluIG9yZGVyIHRvIGRvIHRoaXMgd2UgaGF2ZSB0bworICAgICAgICBzdG9y
ZSB0aGUgYXR0cmlidXRlIG5hbWUgaW4gdGhlIHNlbGVjdG9yIGFzLWlzIHdoZW4gY3NzIHBhcnNp
bmcsIGFuZCBnZXQgdGhlIGxvd2VyY2FzZSBsb2NhbE5hbWUKKyAgICAgICAgb24gZGVtYW5kIGZv
ciBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20v
cXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sCisKKyAg
ICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBkbyBub3QgbG93ZXJjYXNlIGF0dHJpYnV0ZSBz
ZWxlY3RvciBuYW1lLgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YW55QXR0cmlidXRlTWF0Y2hlcyk6IG9ubHkgdXNlIGxvd2VyY2FzZSBsb2Nh
bE5hbWUgZm9yIEhUTUwuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6IGFsd2F5cyB1c2UgbG93ZXJj
YXNlIGxvY2FsTmFtZSBmb3IgZmFzdCBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vQXR0cmlidXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1dGU6Om1hdGNoZXMpOiB0YWtlIGxvY2FsTmFtZSBh
cyBwYXJhbWV0ZXIuCisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuY3BwOiBhbGxvdyBnZXR0
aW5nIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIGxvY2FsTmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlF1
YWxpZmllZE5hbWU6OmxvY2FsTmFtZVVwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWU6OmxvY2FsTmFtZUxvd2VyKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgor
CiAyMDEzLTA3LTE4ICBSb2IgQnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBO
YW1lc3BhY2UgcHJlZml4IGlzIGJsaW5kbHkgZm9sbG93ZWQgd2hlbiBzZXJpYWxpemluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggNzM4NTM4Nzk3ZTZkYTI1OWZlMjAyZGEwNTg2
Yjg1MmMxMzAzZGFiZi4uOWQ1YjUwODIwNWM2YWE4ZjQ4NjE1ZGY0ZDIzZjEzODNmYzczNTBhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC0xMzQ3LDEwICsxMzQ3LDcgQEAgY2xh
c3M6CiAKIGF0dHJfbmFtZToKICAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1Bh
cnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hU
TUxEb2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICAkJCA9IHN0cjsK
KyAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwCmluZGV4IDcyZTA2YTE3NWNlNDI2ZDNiYWJhMjg2NTE0YTc0Y2E4Y2Q4MjZj
NzUuLmQ5MDNjNDA3ZGQ0YWYwYmFjMTgxNGM3YWFkMTMyYWM4NThhNDc4NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgc3RhdGljIGJv
b2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6TWF0
Y2ggbWF0Y2gsIGNvbnMKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJp
YnV0ZUNvdW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0
ZW0gPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogCi0gICAgICAgIGlmICghYXR0cmlidXRl
SXRlbS0+bWF0Y2hlcyhzZWxlY3RvckF0dHIpKQorICAgICAgICBpZiAoIWF0dHJpYnV0ZUl0ZW0t
Pm1hdGNoZXMoc2VsZWN0b3JBdHRyLnByZWZpeCgpLCBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkg
PyBzZWxlY3RvckF0dHIubG9jYWxOYW1lTG93ZXIoKSA6IHNlbGVjdG9yQXR0ci5sb2NhbE5hbWUo
KSwgc2VsZWN0b3JBdHRyLm5hbWVzcGFjZVVSSSgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMoYXR0cmlidXRlSXRlbSwgbWF0Y2gs
IHNlbGVjdG9yVmFsdWUsIGNhc2VTZW5zaXRpdmUpKQpAQCAtMzg3LDExICszODcsMTAgQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiBjb250ZXh0KSBjb25zdAogICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVt
ZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpID09IHNlbGVjdG9yLT52YWx1ZSgpOwogCiAgICAg
aWYgKHNlbGVjdG9yLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKLSAgICAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ciA9IHNlbGVjdG9yLT5hdHRyaWJ1dGUoKTsKLQogICAgICAgICBpZiAo
IWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyID0gc2VsZWN0b3ItPmF0dHJpYnV0ZSgp
OwogICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSAhbV9kb2N1bWVudElzSFRNTCB8fCBIVE1M
RG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShhdHRyKTsKIAogICAgICAgICBpZiAo
IWFueUF0dHJpYnV0ZU1hdGNoZXMoZWxlbWVudCwgc3RhdGljX2Nhc3Q8Q1NTU2VsZWN0b3I6Ok1h
dGNoPihzZWxlY3Rvci0+bV9tYXRjaCksIGF0dHIsIHNlbGVjdG9yLT52YWx1ZSgpLCBjYXNlU2Vu
c2l0aXZlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCAwZjZiMDRjYmJj
NzA5MzQ5NGFhM2Q0NWI3ZjBjZTcxN2UwODg5OGYyLi43ZjEyNzYzZTlhOTk1OTI5ZDAwNDMyYmIy
YzVhYzkyOWFmMGM4NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC0x
MzUsNyArMTM1LDcgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0
cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFEKICAgICB1bnNpZ25lZCBzaXpl
ID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxl
bWVudC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bWF0Y2hlcyhz
ZWxlY3RvckF0dHJpYnV0ZU5hbWUpICYmICghdmFsdWUgfHwgYXR0cmlidXRlLT52YWx1ZSgpLmlt
cGwoKSA9PSB2YWx1ZSkpCisgICAgICAgIGlmIChhdHRyaWJ1dGUtPm1hdGNoZXMoc2VsZWN0b3JB
dHRyaWJ1dGVOYW1lLnByZWZpeCgpLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lTG93
ZXIoKSwgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpKSAmJiAoIXZhbHVlIHx8
IGF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCkgPT0gdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAppbmRl
eCA0YTJmY2FkM2ZkNzZkZjI5MGZmNGJkNmU3MDg0NDg4MTM3MTVlMDE4Li42MWM5ZWM1YThmMjZk
ZTdkYzFmMDg0ZDVlNmIzMjI5MTk2MzQ2ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkkpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0
b21pY1N0cmluZyYgcHJlZml4KSB7IG1fbmFtZS5zZXRQcmVmaXgocHJlZml4KTsgfQpAQCAtNzIs
MTEgKzcyLDExIEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fdmFsdWU7CiB9OwogCi1p
bmxpbmUgYm9vbCBBdHRyaWJ1dGU6Om1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgcXVhbGlm
aWVkTmFtZSkgY29uc3QKK2lubGluZSBib29sIEF0dHJpYnV0ZTo6bWF0Y2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKSBjb25zdAogewotICAgIGlmIChxdWFsaWZpZWROYW1l
LmxvY2FsTmFtZSgpICE9IGxvY2FsTmFtZSgpKQorICAgIGlmIChsb2NhbE5hbWUgIT0gdGhpcy0+
bG9jYWxOYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcXVhbGlmaWVk
TmFtZS5wcmVmaXgoKSA9PSBzdGFyQXRvbSB8fCBxdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgp
ID09IG5hbWVzcGFjZVVSSSgpOworICAgIHJldHVybiBwcmVmaXggPT0gc3RhckF0b20gfHwgbmFt
ZXNwYWNlVVJJID09IHRoaXMtPm5hbWVzcGFjZVVSSSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggMzZhYTk5NDU3ZWFk
NGNmNWM3MGFiNDMyZjVkNzM1YTNhZWJkNWQ1MS4uY2Y4M2I3NDViZjcwODU1ZmU5ZDY3OWNhNjQy
MTFkMzgzZDBjYzEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMTQz
LDkgKzE0MywxOCBAQCBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFF1YWxpZmllZE5hbWU6OmxvY2FsTmFtZVVwcGVyKCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1faW1wbC0+bV9sb2NhbE5hbWVVcHBlcikKLSAgICAgICAgbV9pbXBsLT5tX2xvY2Fs
TmFtZVVwcGVyID0gbV9pbXBsLT5tX2xvY2FsTmFtZS51cHBlcigpOwotICAgIHJldHVybiBtX2lt
cGwtPm1fbG9jYWxOYW1lVXBwZXI7CisgICAgaWYgKCFtX2ltcGwtPm1fbG9jYWxOYW1lVXBwZXJM
b3dlcikKKyAgICAgICAgbV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyTG93ZXIgPSBtX2ltcGwtPm1f
bG9jYWxOYW1lLnVwcGVyKCk7CisgICAgQVNTRVJUKG1faW1wbC0+bV9sb2NhbE5hbWVVcHBlckxv
d2VyLmltcGwoKSA9PSBtX2ltcGwtPm1fbG9jYWxOYW1lLnVwcGVyKCkuaW1wbCgpKTsKKyAgICBy
ZXR1cm4gbV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyTG93ZXI7Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgUXVhbGlmaWVkTmFtZTo6bG9jYWxOYW1lTG93ZXIoKSBjb25zdAoreworICAgIGlmICgh
bV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyTG93ZXIpCisgICAgICAgIG1faW1wbC0+bV9sb2NhbE5h
bWVVcHBlckxvd2VyID0gbV9pbXBsLT5tX2xvY2FsTmFtZS5sb3dlcigpOworICAgIEFTU0VSVCht
X2ltcGwtPm1fbG9jYWxOYW1lVXBwZXJMb3dlci5pbXBsKCkgPT0gbV9pbXBsLT5tX2xvY2FsTmFt
ZS5sb3dlcigpLmltcGwoKSk7CisgICAgcmV0dXJuIG1faW1wbC0+bV9sb2NhbE5hbWVVcHBlckxv
d2VyOwogfQogCiB1bnNpZ25lZCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6Y29t
cHV0ZUhhc2goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmll
ZE5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKaW5kZXggZTA4MDJl
ZjMyYzk1NGQ3OWJmN2U4OGEzM2Y1OTdiY2Q2MDcyNGI0MC4uNzBmMzBhYWU5ZmJlMDQxNjRkYjQx
ZDg2OTc1Nzg4ZDk0MzE2NWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxp
ZmllZE5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fcHJlZml4
OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsKLSAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJpbmcg
bV9sb2NhbE5hbWVVcHBlcjsKKyAgICAgICAgbXV0YWJsZSBBdG9taWNTdHJpbmcgbV9sb2NhbE5h
bWVVcHBlckxvd2VyOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUXVhbGlmaWVkTmFtZUltcGwo
Y29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkKQEAgLTg4LDggKzg4LDkgQEAgcHVi
bGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9pbXBsLT5tX2xvY2FsTmFtZTsgfQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5tX25hbWVzcGFjZTsgfQogCi0gICAgLy8gVXBw
ZXJjYXNlZCBsb2NhbE5hbWUsIGNhY2hlZCBmb3IgZWZmaWNpZW5jeQorICAgIC8vIFVwcGVyY2Fz
ZWQvbG93ZXJjYXNlZCBsb2NhbE5hbWUsIGNhY2hlZCBmb3IgZWZmaWNpZW5jeQogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lVXBwZXIoKSBjb25zdDsKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZUxvd2VyKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDA5ZTI2MjgxZDlkY2YwMGM4MTg3NjJmN2E2MGVjZjRiMTVhNjI5N2Iu
LjJlZDdmNWIyMWEyZjhkZDI4MTRjODYxN2I5MjgxOTIzNjZhZTIzZTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMy0wNy0zMCAgUm9iIEJ1aXMgIDxyd2xidWlzQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgc2VsZWN0b3JzIHNob3VsZCBtYXRjaCBhdHRyaWJ1dGUgbmFtZSB3aXRoIGNhc2Ugc2Vu
c2l0aXZpdHkgYmFzZWQgb24gZWxlbWVudCAmIGRvY3VtZW50IHR5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQgYXR0cmlidXRlIG5h
bWUgc2VsZWN0b3IgbWF0Y2hpbmcgaXMgY2FzZS1zZW5zaXRpdmUgZm9yIFNWRywgY2FzZS1pbnNl
bnNpdGl2ZSBmb3IgSFRNTC4KKworICAgICAgICAqIHN2Zy9jdXN0b20vcXVlcnlTZWxlY3Rvci1h
dHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN2Zy9jdXN0b20vcXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNl
bnNpdGl2ZS5odG1sOiBBZGRlZC4KKwogMjAxMy0wNy0xOCAgUm9iIEJ1aXMgIDxyd2xidWlzQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgTmFtZXNwYWNlIHByZWZpeCBpcyBibGluZGx5IGZvbGxvd2Vk
IHdoZW4gc2VyaWFsaXppbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcXVl
cnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9y
LWNhc2VTZW5zaXRpdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiZjJjNGRlZmMyMmNiNDE2
NzlmYjI5MDk0YTk1YjI5NmQ3OTllYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9yLWNhc2VTZW5zaXRpdmUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorUEFTUyByZXN1bHQudG9TdHJpbmcoKSBpcyAi
W29iamVjdCBTVkdQYXRoRWxlbWVudF0iCitQQVNTIHJlc3VsdCBpcyBudWxsCitQQVNTIHJlc3Vs
dC50b1N0cmluZygpIGlzICJbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSIKK1BBU1MgcmVzdWx0LnRv
U3RyaW5nKCkgaXMgIltvYmplY3QgSFRNTERpdkVsZW1lbnRdIgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9yLWNhc2VT
ZW5zaXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcXVlcnlTZWxlY3Rvci1hdHRy
aWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0YTJjODExNmNl
NjgxMzhlZmYxMzQ1MWI5ZDM3MjZiYjNjYzgwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9yLWNhc2VTZW5z
aXRpdmUuaHRtbApAQCAtMCwwICsxLDI3IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPGRpdiBiYVI9IjEwIj48L2Rpdj4KKworICAg
IDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgPHBhdGgg
IHBhdGhMZW5ndGg9IjIwMCIvPgorICAgIDwvc3ZnPgorCisgICAgPHNjcmlwdD4KKyAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICAgIH0KKyAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcqW3Bh
dGhMZW5ndGhdJyk7CisgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlc3VsdC50b1N0cmlu
ZygpIiwgIltvYmplY3QgU1ZHUGF0aEVsZW1lbnRdIik7CisgICAgICByZXN1bHQgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCcqW3BhdGhsZW5ndGhdJyk7CisgICAgICBzaG91bGRCZU51bGwoInJl
c3VsdCIpOworICAgICAgcmVzdWx0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignKltiYVJdJyk7
CisgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInJlc3VsdC50b1N0cmluZygpIiwgIltvYmpl
Y3QgSFRNTERpdkVsZW1lbnRdIik7CisgICAgICByZXN1bHQgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCcqW2JBcl0nKTsKKyAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVzdWx0LnRvU3Ry
aW5nKCkiLCAiW29iamVjdCBIVE1MRGl2RWxlbWVudF0iKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207776</attachid>
            <date>2013-07-30 15:39:19 -0700</date>
            <delta_ts>2013-07-31 14:19:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71152-20130730183910.patch</filename>
            <type>text/plain</type>
            <size>10759</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU1YjNjZDkwOTkyOWM0
ZjNiNDM0ZTgyOTU2ZWViZTk2MzE0ODE3OS4uMGRlYjVkZjVjNzNmM2Q0NTg2MTJlYzAwZjZjMGEx
ZjQ1YzkxMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA3LTMwICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KKworICAgICAgICBzZWxlY3RvcnMgc2hvdWxkIG1h
dGNoIGF0dHJpYnV0ZSBuYW1lIHdpdGggY2FzZSBzZW5zaXRpdml0eSBiYXNlZCBvbiBlbGVtZW50
ICYgZG9jdW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IGNhc2Utc2Vuc2l0aXZlIGF0dHJpYnV0ZSBuYW1lIHNlbGVjdGluZyBm
b3Igbm9uIEhUTUwuIEluIG9yZGVyIHRvIGRvIHRoaXMgd2UgaGF2ZSB0bworICAgICAgICBzdG9y
ZSB0aGUgYXR0cmlidXRlIG5hbWUgaW4gdGhlIHNlbGVjdG9yIGFzLWlzIHdoZW4gY3NzIHBhcnNp
bmcsIGFuZCBnZXQgdGhlIGxvd2VyY2FzZSBsb2NhbE5hbWUKKyAgICAgICAgb24gZGVtYW5kIGZv
ciBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20v
cXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sCisKKyAg
ICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBkbyBub3QgbG93ZXJjYXNlIGF0dHJpYnV0ZSBz
ZWxlY3RvciBuYW1lLgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YW55QXR0cmlidXRlTWF0Y2hlcyk6IG9ubHkgdXNlIGxvd2VyY2FzZSBsb2Nh
bE5hbWUgZm9yIEhUTUwuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6IGFsd2F5cyB1c2UgbG93ZXJj
YXNlIGxvY2FsTmFtZSBmb3IgZmFzdCBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vQXR0cmlidXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1dGU6Om1hdGNoZXMpOiB0YWtlIGxvY2FsTmFtZSBh
cyBwYXJhbWV0ZXIuCisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuY3BwOiBhbGxvdyBnZXR0
aW5nIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIGxvY2FsTmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlF1
YWxpZmllZE5hbWU6OmxvY2FsTmFtZVVwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWU6OmxvY2FsTmFtZUxvd2VyKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgor
CiAyMDEzLTA3LTE4ICBSb2IgQnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBO
YW1lc3BhY2UgcHJlZml4IGlzIGJsaW5kbHkgZm9sbG93ZWQgd2hlbiBzZXJpYWxpemluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggNzM4NTM4Nzk3ZTZkYTI1OWZlMjAyZGEwNTg2
Yjg1MmMxMzAzZGFiZi4uOWQ1YjUwODIwNWM2YWE4ZjQ4NjE1ZGY0ZDIzZjEzODNmYzczNTBhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC0xMzQ3LDEwICsxMzQ3LDcgQEAgY2xh
c3M6CiAKIGF0dHJfbmFtZToKICAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1Bh
cnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hU
TUxEb2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICAkJCA9IHN0cjsK
KyAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwCmluZGV4IDcyZTA2YTE3NWNlNDI2ZDNiYWJhMjg2NTE0YTc0Y2E4Y2Q4MjZj
NzUuLmQ5MDNjNDA3ZGQ0YWYwYmFjMTgxNGM3YWFkMTMyYWM4NThhNDc4NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgc3RhdGljIGJv
b2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6TWF0
Y2ggbWF0Y2gsIGNvbnMKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJp
YnV0ZUNvdW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0
ZW0gPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogCi0gICAgICAgIGlmICghYXR0cmlidXRl
SXRlbS0+bWF0Y2hlcyhzZWxlY3RvckF0dHIpKQorICAgICAgICBpZiAoIWF0dHJpYnV0ZUl0ZW0t
Pm1hdGNoZXMoc2VsZWN0b3JBdHRyLnByZWZpeCgpLCBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkg
PyBzZWxlY3RvckF0dHIubG9jYWxOYW1lTG93ZXIoKSA6IHNlbGVjdG9yQXR0ci5sb2NhbE5hbWUo
KSwgc2VsZWN0b3JBdHRyLm5hbWVzcGFjZVVSSSgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMoYXR0cmlidXRlSXRlbSwgbWF0Y2gs
IHNlbGVjdG9yVmFsdWUsIGNhc2VTZW5zaXRpdmUpKQpAQCAtMzg3LDExICszODcsMTAgQEAgYm9v
bCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
JiBjb250ZXh0KSBjb25zdAogICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVt
ZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpID09IHNlbGVjdG9yLT52YWx1ZSgpOwogCiAgICAg
aWYgKHNlbGVjdG9yLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKLSAgICAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ciA9IHNlbGVjdG9yLT5hdHRyaWJ1dGUoKTsKLQogICAgICAgICBpZiAo
IWVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyID0gc2VsZWN0b3ItPmF0dHJpYnV0ZSgp
OwogICAgICAgICBib29sIGNhc2VTZW5zaXRpdmUgPSAhbV9kb2N1bWVudElzSFRNTCB8fCBIVE1M
RG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShhdHRyKTsKIAogICAgICAgICBpZiAo
IWFueUF0dHJpYnV0ZU1hdGNoZXMoZWxlbWVudCwgc3RhdGljX2Nhc3Q8Q1NTU2VsZWN0b3I6Ok1h
dGNoPihzZWxlY3Rvci0+bV9tYXRjaCksIGF0dHIsIHNlbGVjdG9yLT52YWx1ZSgpLCBjYXNlU2Vu
c2l0aXZlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCAwZjZiMDRjYmJj
NzA5MzQ5NGFhM2Q0NWI3ZjBjZTcxN2UwODg5OGYyLi43ZjEyNzYzZTlhOTk1OTI5ZDAwNDMyYmIy
YzVhYzkyOWFmMGM4NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JD
aGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC0x
MzUsNyArMTM1LDcgQEAgaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0
cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFEKICAgICB1bnNpZ25lZCBzaXpl
ID0gZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxl
bWVudC0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bWF0Y2hlcyhz
ZWxlY3RvckF0dHJpYnV0ZU5hbWUpICYmICghdmFsdWUgfHwgYXR0cmlidXRlLT52YWx1ZSgpLmlt
cGwoKSA9PSB2YWx1ZSkpCisgICAgICAgIGlmIChhdHRyaWJ1dGUtPm1hdGNoZXMoc2VsZWN0b3JB
dHRyaWJ1dGVOYW1lLnByZWZpeCgpLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lTG93
ZXIoKSwgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpKSAmJiAoIXZhbHVlIHx8
IGF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCkgPT0gdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyaWJ1dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAppbmRl
eCA0YTJmY2FkM2ZkNzZkZjI5MGZmNGJkNmU3MDg0NDg4MTM3MTVlMDE4Li42MWM5ZWM1YThmMjZk
ZTdkYzFmMDg0ZDVlNmIzMjI5MTk2MzQ2ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlLmlzRW1wdHkoKTsgfQotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkkpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0
b21pY1N0cmluZyYgcHJlZml4KSB7IG1fbmFtZS5zZXRQcmVmaXgocHJlZml4KTsgfQpAQCAtNzIs
MTEgKzcyLDExIEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fdmFsdWU7CiB9OwogCi1p
bmxpbmUgYm9vbCBBdHRyaWJ1dGU6Om1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgcXVhbGlm
aWVkTmFtZSkgY29uc3QKK2lubGluZSBib29sIEF0dHJpYnV0ZTo6bWF0Y2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKSBjb25zdAogewotICAgIGlmIChxdWFsaWZpZWROYW1l
LmxvY2FsTmFtZSgpICE9IGxvY2FsTmFtZSgpKQorICAgIGlmIChsb2NhbE5hbWUgIT0gdGhpcy0+
bG9jYWxOYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcXVhbGlmaWVk
TmFtZS5wcmVmaXgoKSA9PSBzdGFyQXRvbSB8fCBxdWFsaWZpZWROYW1lLm5hbWVzcGFjZVVSSSgp
ID09IG5hbWVzcGFjZVVSSSgpOworICAgIHJldHVybiBwcmVmaXggPT0gc3RhckF0b20gfHwgbmFt
ZXNwYWNlVVJJID09IHRoaXMtPm5hbWVzcGFjZVVSSSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKaW5kZXggMzZhYTk5NDU3ZWFk
NGNmNWM3MGFiNDMyZjVkNzM1YTNhZWJkNWQ1MS4uYTI4YWRlOGI2MDgyMzIxZWE1OTUyMzcxNWMy
N2I2YTY5MWRkMzZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcApAQCAtMTQz
LDkgKzE0MywxOCBAQCBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKQogCiBjb25zdCBB
dG9taWNTdHJpbmcmIFF1YWxpZmllZE5hbWU6OmxvY2FsTmFtZVVwcGVyKCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1faW1wbC0+bV9sb2NhbE5hbWVVcHBlcikKLSAgICAgICAgbV9pbXBsLT5tX2xvY2Fs
TmFtZVVwcGVyID0gbV9pbXBsLT5tX2xvY2FsTmFtZS51cHBlcigpOwotICAgIHJldHVybiBtX2lt
cGwtPm1fbG9jYWxOYW1lVXBwZXI7CisgICAgaWYgKCFtX2ltcGwtPm1fbG9jYWxOYW1lVXBwZXJM
b3dlcikKKyAgICAgICAgbV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyTG93ZXIgPSBtX2ltcGwtPm1f
bG9jYWxOYW1lLnVwcGVyKCk7CisgICAgQVNTRVJUKG1faW1wbC0+bV9sb2NhbE5hbWVVcHBlckxv
d2VyID09IG1faW1wbC0+bV9sb2NhbE5hbWUudXBwZXIoKSk7CisgICAgcmV0dXJuIG1faW1wbC0+
bV9sb2NhbE5hbWVVcHBlckxvd2VyOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFF1YWxpZmll
ZE5hbWU6OmxvY2FsTmFtZUxvd2VyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1wbC0+bV9sb2Nh
bE5hbWVVcHBlckxvd2VyKQorICAgICAgICBtX2ltcGwtPm1fbG9jYWxOYW1lVXBwZXJMb3dlciA9
IG1faW1wbC0+bV9sb2NhbE5hbWUubG93ZXIoKTsKKyAgICBBU1NFUlQobV9pbXBsLT5tX2xvY2Fs
TmFtZVVwcGVyTG93ZXIgPT0gbV9pbXBsLT5tX2xvY2FsTmFtZS5sb3dlcigpKTsKKyAgICByZXR1
cm4gbV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyTG93ZXI7CiB9CiAKIHVuc2lnbmVkIFF1YWxpZmll
ZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpjb21wdXRlSGFzaCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1F1YWxpZmllZE5hbWUuaAppbmRleCBlMDgwMmVmMzJjOTU0ZDc5YmY3ZTg4YTMzZjU5N2JjZDYw
NzI0YjQwLi43MGYzMGFhZTlmYmUwNDE2NGRiNDFkODY5NzU3ODhkOTQzMTY1ZWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcgbV9wcmVmaXg7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyBtX2xvY2FsTmFtZTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlOwot
ICAgICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZVVwcGVyOworICAgICAgICBt
dXRhYmxlIEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZVVwcGVyTG93ZXI7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBRdWFsaWZpZWROYW1lSW1wbChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNw
YWNlVVJJKQpAQCAtODgsOCArODgsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPm1fbG9jYWxOYW1lOyB9CiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCB7IHJldHVybiBtX2ltcGwt
Pm1fbmFtZXNwYWNlOyB9CiAKLSAgICAvLyBVcHBlcmNhc2VkIGxvY2FsTmFtZSwgY2FjaGVkIGZv
ciBlZmZpY2llbmN5CisgICAgLy8gVXBwZXJjYXNlZC9sb3dlcmNhc2VkIGxvY2FsTmFtZSwgY2Fj
aGVkIGZvciBlZmZpY2llbmN5CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWVVcHBl
cigpIGNvbnN0OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lTG93ZXIoKSBjb25z
dDsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmIxZGFhMjlmMjdi
YmY5NmJiNDY2YTdhNzhhYTY5ZTExMGY1NTgyNC4uNDQyODczOTc4ZjFmMmM5NTFhMDlhNDlkZDUz
Yzk1MWIzNzVjNDkxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA3LTMwICBSb2IgQnVp
cyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KKworICAgICAgICBzZWxlY3RvcnMgc2hvdWxkIG1hdGNo
IGF0dHJpYnV0ZSBuYW1lIHdpdGggY2FzZSBzZW5zaXRpdml0eSBiYXNlZCBvbiBlbGVtZW50ICYg
ZG9jdW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzExNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBWZXJpZnkgdGhhdCBhdHRyaWJ1dGUgbmFtZSBzZWxlY3RvciBtYXRjaGluZyBpcyBjYXNl
LXNlbnNpdGl2ZSBmb3IgU1ZHLCBjYXNlLWluc2Vuc2l0aXZlIGZvciBIVE1MLgorCisgICAgICAg
ICogc3ZnL2N1c3RvbS9xdWVyeVNlbGVjdG9yLWF0dHJpYnV0ZS1zZWxlY3Rvci1jYXNlU2Vuc2l0
aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2N1c3RvbS9xdWVyeVNlbGVj
dG9yLWF0dHJpYnV0ZS1zZWxlY3Rvci1jYXNlU2Vuc2l0aXZlLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTA3LTE4ICBSb2IgQnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBOYW1lc3Bh
Y2UgcHJlZml4IGlzIGJsaW5kbHkgZm9sbG93ZWQgd2hlbiBzZXJpYWxpemluZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9xdWVyeVNlbGVjdG9yLWF0dHJpYnV0ZS1zZWxlY3Rv
ci1jYXNlU2Vuc2l0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcXVl
cnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGJmMmM0ZGVmYzIyY2I0MTY3OWZiMjkwOTRhOTViMjk2ZDc5OWViZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcXVlcnlTZWxlY3Rvci1hdHRy
aWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CitQQVNTIHJlc3VsdC50b1N0cmluZygpIGlzICJbb2JqZWN0IFNWR1BhdGhFbGVtZW50XSIKK1BB
U1MgcmVzdWx0IGlzIG51bGwKK1BBU1MgcmVzdWx0LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgSFRN
TERpdkVsZW1lbnRdIgorUEFTUyByZXN1bHQudG9TdHJpbmcoKSBpcyAiW29iamVjdCBIVE1MRGl2
RWxlbWVudF0iCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcXVlcnlTZWxl
Y3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sIGIvTGF5b3V0VGVzdHMv
c3ZnL2N1c3RvbS9xdWVyeVNlbGVjdG9yLWF0dHJpYnV0ZS1zZWxlY3Rvci1jYXNlU2Vuc2l0aXZl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDRhMmM4MTE2Y2U2ODEzOGVmZjEzNDUxYjlkMzcyNmJiM2NjODAz
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcXVlcnlTZWxlY3Rv
ci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sCkBAIC0wLDAgKzEsMjcgQEAK
KzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICA8ZGl2IGJhUj0iMTAiPjwvZGl2PgorCisgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmciPgorICAgICAgICA8cGF0aCAgcGF0aExlbmd0aD0iMjAwIi8+CisgICAgPC9z
dmc+CisKKyAgICA8c2NyaXB0PgorICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgfQorICAgICAgdmFyIHJlc3VsdCA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJypbcGF0aExlbmd0aF0nKTsKKyAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygicmVzdWx0LnRvU3RyaW5nKCkiLCAiW29iamVjdCBTVkdQYXRoRWxlbWVu
dF0iKTsKKyAgICAgIHJlc3VsdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJypbcGF0aGxlbmd0
aF0nKTsKKyAgICAgIHNob3VsZEJlTnVsbCgicmVzdWx0Iik7CisgICAgICByZXN1bHQgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCcqW2JhUl0nKTsKKyAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygicmVzdWx0LnRvU3RyaW5nKCkiLCAiW29iamVjdCBIVE1MRGl2RWxlbWVudF0iKTsKKyAgICAg
IHJlc3VsdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJypbYkFyXScpOworICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJyZXN1bHQudG9TdHJpbmcoKSIsICJbb2JqZWN0IEhUTUxEaXZFbGVt
ZW50XSIpOworICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207875</attachid>
            <date>2013-07-31 14:19:26 -0700</date>
            <delta_ts>2013-08-01 08:59:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71152-20130731171916.patch</filename>
            <type>text/plain</type>
            <size>10789</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFmYzBkNzEwMTg0Yjg2
MzYyNTA0MjIxY2JkNjNmZTc2Yjc0Y2YwZi4uNGI4MjU5MTdiZWZmZDhiYzI5YmU5MWJmYTQ5MmE0
NTI5ZmUyZGEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA3LTMxICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KKworICAgICAgICBzZWxlY3RvcnMgc2hvdWxkIG1h
dGNoIGF0dHJpYnV0ZSBuYW1lIHdpdGggY2FzZSBzZW5zaXRpdml0eSBiYXNlZCBvbiBlbGVtZW50
ICYgZG9jdW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IGNhc2Utc2Vuc2l0aXZlIGF0dHJpYnV0ZSBuYW1lIHNlbGVjdGluZyBm
b3Igbm9uIEhUTUwuIEluIG9yZGVyIHRvIGRvIHRoaXMgd2UgaGF2ZSB0bworICAgICAgICBzdG9y
ZSB0aGUgYXR0cmlidXRlIG5hbWUgaW4gdGhlIHNlbGVjdG9yIGFzLWlzIHdoZW4gY3NzIHBhcnNp
bmcsIGFuZCBnZXQgdGhlIGxvd2VyY2FzZSBsb2NhbE5hbWUKKyAgICAgICAgb24gZGVtYW5kIGZv
ciBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nLgorCisgICAgICAgIFRlc3Q6IHN2Zy9jdXN0b20v
cXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sCisKKyAg
ICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBkbyBub3QgbG93ZXJjYXNlIGF0dHJpYnV0ZSBz
ZWxlY3RvciBuYW1lLgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YW55QXR0cmlidXRlTWF0Y2hlcyk6IG9ubHkgdXNlIGxvd2VyY2FzZSBsb2Nh
bE5hbWUgZm9yIEhUTUwuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6IGFsd2F5cyB1c2UgbG93ZXJj
YXNlIGxvY2FsTmFtZSBmb3IgZmFzdCBwYXRoLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKToKKyAgICAgICAgKiBkb20vQXR0cmlidXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1dGU6Om1hdGNoZXMpOiB0YWtlIGxvY2FsTmFtZSBh
cyBwYXJhbWV0ZXIuCisgICAgICAgICogZG9tL1F1YWxpZmllZE5hbWUuY3BwOiBhbGxvdyBnZXR0
aW5nIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIGxvY2FsTmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OlF1
YWxpZmllZE5hbWU6OmxvY2FsTmFtZVVwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1YWxpZmll
ZE5hbWU6OmxvY2FsTmFtZUxvd2VyKToKKyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOgor
CiAyMDEzLTA3LTMxICBSdXRoIEZvbmcgIDxydXRoX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IDxpbnB1dCB0eXBlPWNvbG9yPiBNYWMgVUkgYmVoYXZpb3VyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgppbmRleCA3Mzg1Mzg3OTdlNmRhMjU5ZmUyMDJkYTA1ODZiODUyYzEzMDNkYWJmLi45
ZDViNTA4MjA1YzZhYThmNDg2MTVkZjRkMjNmMTM4M2ZjNzM1MGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KQEAgLTEzNDcsMTAgKzEzNDcsNyBAQCBjbGFzczoKIAogYXR0cl9uYW1l
OgogICAgIElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIg
PSAkMTsKLSAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQotICAg
ICAgICAgICAgc3RyLmxvd2VyKCk7Ci0gICAgICAgICQkID0gc3RyOworICAgICAgICAkJCA9ICQx
OwogICAgIH0KICAgICA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3Rv
ckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5k
ZXggNzJlMDZhMTc1Y2U0MjZkM2JhYmEyODY1MTRhNzRjYThjZDgyNmM3NS4uZDkwM2M0MDdkZDRh
ZjBiYWMxODE0YzdhYWQxMzJhYzg1OGE0Nzg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlci5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCBzdGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVN
YXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpNYXRjaCBtYXRjaCwgY29ucwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRlQ291bnQoKTsgKytp
KSB7CiAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSA9IGVsZW1lbnQtPmF0
dHJpYnV0ZUl0ZW0oaSk7CiAKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVJdGVtLT5tYXRjaGVzKHNl
bGVjdG9yQXR0cikpCisgICAgICAgIGlmICghYXR0cmlidXRlSXRlbS0+bWF0Y2hlcyhzZWxlY3Rv
ckF0dHIucHJlZml4KCksIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSA/IHNlbGVjdG9yQXR0ci5s
b2NhbE5hbWVMb3dlcigpIDogc2VsZWN0b3JBdHRyLmxvY2FsTmFtZSgpLCBzZWxlY3RvckF0dHIu
bmFtZXNwYWNlVVJJKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGF0
dHJpYnV0ZVZhbHVlTWF0Y2hlcyhhdHRyaWJ1dGVJdGVtLCBtYXRjaCwgc2VsZWN0b3JWYWx1ZSwg
Y2FzZVNlbnNpdGl2ZSkpCkBAIC0zODcsMTEgKzM4NywxMCBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmUoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
CiAgICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNJRCgpICYmIGVsZW1lbnQtPmlkRm9yU3R5bGVS
ZXNvbHV0aW9uKCkgPT0gc2VsZWN0b3ItPnZhbHVlKCk7CiAKICAgICBpZiAoc2VsZWN0b3ItPmlz
QXR0cmlidXRlU2VsZWN0b3IoKSkgewotICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
ID0gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpOwotCiAgICAgICAgIGlmICghZWxlbWVudC0+aGFzQXR0
cmlidXRlcygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHIgPSBzZWxlY3Rvci0+YXR0cmlidXRlKCk7CiAgICAgICAgIGJvb2wg
Y2FzZVNlbnNpdGl2ZSA9ICFtX2RvY3VtZW50SXNIVE1MIHx8IEhUTUxEb2N1bWVudDo6aXNDYXNl
U2Vuc2l0aXZlQXR0cmlidXRlKGF0dHIpOwogCiAgICAgICAgIGlmICghYW55QXR0cmlidXRlTWF0
Y2hlcyhlbGVtZW50LCBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcjo6TWF0Y2g+KHNlbGVjdG9yLT5t
X21hdGNoKSwgYXR0ciwgc2VsZWN0b3ItPnZhbHVlKCksIGNhc2VTZW5zaXRpdmUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDBmNmIwNGNiYmM3MDkzNDk0YWEzZDQ1Yjdm
MGNlNzE3ZTA4ODk4ZjIuLjdmMTI3NjNlOWE5OTU5MjlkMDA0MzJiYjJjNWFjOTI5YWYwYzg1MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBp
bmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxl
bWVudCogZWxlbWVudCwgY29uc3QgUQogICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50LT5hdHRy
aWJ1dGVDb3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
ICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVJ
dGVtKGkpOwotICAgICAgICBpZiAoYXR0cmlidXRlLT5tYXRjaGVzKHNlbGVjdG9yQXR0cmlidXRl
TmFtZSkgJiYgKCF2YWx1ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCkuaW1wbCgpID09IHZhbHVlKSkK
KyAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bWF0Y2hlcyhzZWxlY3RvckF0dHJpYnV0ZU5hbWUucHJl
Zml4KCksIHNlbGVjdG9yQXR0cmlidXRlTmFtZS5sb2NhbE5hbWVMb3dlcigpLCBzZWxlY3RvckF0
dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkpICYmICghdmFsdWUgfHwgYXR0cmlidXRlLT52YWx1
ZSgpLmltcGwoKSA9PSB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCmluZGV4IDRhMmZjYWQzZmQ3NmRm
MjkwZmY0YmQ2ZTcwODQ0ODgxMzcxNWUwMTguLjYxYzllYzVhOGYyNmRlN2RjMWYwODRkNWU2YjMy
MjkxOTYzNDZkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNFbXB0
eSgpOyB9Ci0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAg
ICBib29sIG1hdGNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkgY29uc3Q7
CiAKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV92YWx1
ZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVm
aXgpIHsgbV9uYW1lLnNldFByZWZpeChwcmVmaXgpOyB9CkBAIC03MiwxMSArNzIsMTEgQEAgcHJp
dmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV92YWx1ZTsKIH07CiAKLWlubGluZSBib29sIEF0dHJp
YnV0ZTo6bWF0Y2hlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBxdWFsaWZpZWROYW1lKSBjb25zdAor
aW5saW5lIGJvb2wgQXR0cmlidXRlOjptYXRjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4
LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
c3BhY2VVUkkpIGNvbnN0CiB7Ci0gICAgaWYgKHF1YWxpZmllZE5hbWUubG9jYWxOYW1lKCkgIT0g
bG9jYWxOYW1lKCkpCisgICAgaWYgKGxvY2FsTmFtZSAhPSB0aGlzLT5sb2NhbE5hbWUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBxdWFsaWZpZWROYW1lLnByZWZpeCgpID09
IHN0YXJBdG9tIHx8IHF1YWxpZmllZE5hbWUubmFtZXNwYWNlVVJJKCkgPT0gbmFtZXNwYWNlVVJJ
KCk7CisgICAgcmV0dXJuIHByZWZpeCA9PSBzdGFyQXRvbSB8fCBuYW1lc3BhY2VVUkkgPT0gdGhp
cy0+bmFtZXNwYWNlVVJJKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmNwcAppbmRleCAzNmFhOTk0NTdlYWQ0Y2Y1YzcwYWI0MzJmNWQ3
MzVhM2FlYmQ1ZDUxLi5hMjhhZGU4YjYwODIzMjFlYTU5NTIzNzE1YzI3YjZhNjkxZGQzNmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwCkBAIC0xNDMsOSArMTQzLDE4IEBAIGNv
bnN0IFF1YWxpZmllZE5hbWUmIG51bGxRTmFtZSgpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgUXVh
bGlmaWVkTmFtZTo6bG9jYWxOYW1lVXBwZXIoKSBjb25zdAogewotICAgIGlmICghbV9pbXBsLT5t
X2xvY2FsTmFtZVVwcGVyKQotICAgICAgICBtX2ltcGwtPm1fbG9jYWxOYW1lVXBwZXIgPSBtX2lt
cGwtPm1fbG9jYWxOYW1lLnVwcGVyKCk7Ci0gICAgcmV0dXJuIG1faW1wbC0+bV9sb2NhbE5hbWVV
cHBlcjsKKyAgICBpZiAoIW1faW1wbC0+bV9sb2NhbE5hbWVVcHBlckxvd2VyKQorICAgICAgICBt
X2ltcGwtPm1fbG9jYWxOYW1lVXBwZXJMb3dlciA9IG1faW1wbC0+bV9sb2NhbE5hbWUudXBwZXIo
KTsKKyAgICBBU1NFUlQobV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyTG93ZXIgPT0gbV9pbXBsLT5t
X2xvY2FsTmFtZS51cHBlcigpKTsKKyAgICByZXR1cm4gbV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVy
TG93ZXI7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgUXVhbGlmaWVkTmFtZTo6bG9jYWxOYW1l
TG93ZXIoKSBjb25zdAoreworICAgIGlmICghbV9pbXBsLT5tX2xvY2FsTmFtZVVwcGVyTG93ZXIp
CisgICAgICAgIG1faW1wbC0+bV9sb2NhbE5hbWVVcHBlckxvd2VyID0gbV9pbXBsLT5tX2xvY2Fs
TmFtZS5sb3dlcigpOworICAgIEFTU0VSVChtX2ltcGwtPm1fbG9jYWxOYW1lVXBwZXJMb3dlciA9
PSBtX2ltcGwtPm1fbG9jYWxOYW1lLmxvd2VyKCkpOworICAgIHJldHVybiBtX2ltcGwtPm1fbG9j
YWxOYW1lVXBwZXJMb3dlcjsKIH0KIAogdW5zaWduZWQgUXVhbGlmaWVkTmFtZTo6UXVhbGlmaWVk
TmFtZUltcGw6OmNvbXB1dGVIYXNoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5o
CmluZGV4IGUwODAyZWYzMmM5NTRkNzliZjdlODhhMzNmNTk3YmNkNjA3MjRiNDAuLjcwZjMwYWFl
OWZiZTA0MTY0ZGI0MWQ4Njk3NTc4OGQ5NDMxNjVlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmll
ZE5hbWUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyBtX3ByZWZpeDsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbG9jYWxOYW1lOwog
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2U7Ci0gICAgICAgIG11dGFibGUg
QXRvbWljU3RyaW5nIG1fbG9jYWxOYW1lVXBwZXI7CisgICAgICAgIG11dGFibGUgQXRvbWljU3Ry
aW5nIG1fbG9jYWxOYW1lVXBwZXJMb3dlcjsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFF1YWxp
ZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCkBAIC04OCw4
ICs4OCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW1wbC0+bV9sb2NhbE5hbWU7IH0KICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+bV9uYW1lc3BhY2U7IH0K
IAotICAgIC8vIFVwcGVyY2FzZWQgbG9jYWxOYW1lLCBjYWNoZWQgZm9yIGVmZmljaWVuY3kKKyAg
ICAvLyBVcHBlcmNhc2VkL2xvd2VyY2FzZWQgbG9jYWxOYW1lLCBjYWNoZWQgZm9yIGVmZmljaWVu
Y3kKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZVVwcGVyKCkgY29uc3Q7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWVMb3dlcigpIGNvbnN0OwogCiAgICAgU3RyaW5n
IHRvU3RyaW5nKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzOTQ0OGQ4MjcyZWQwZDQwZTI0NzIzN2UyMmVm
YjAzYmQ5YWUwODFmLi45ZTk0ZmI0NmIyNWYxNjIyOWMwZmQ0Njg3ZTJkMDJmYTFmMmUyZjZkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTMtMDctMzEgIFJvYiBCdWlzICA8cndsYnVpc0B3ZWJr
aXQub3JnPgogCisgICAgICAgIHNlbGVjdG9ycyBzaG91bGQgbWF0Y2ggYXR0cmlidXRlIG5hbWUg
d2l0aCBjYXNlIHNlbnNpdGl2aXR5IGJhc2VkIG9uIGVsZW1lbnQgJiBkb2N1bWVudCB0eXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTE1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZlcmlmeSB0aGF0
IGF0dHJpYnV0ZSBuYW1lIHNlbGVjdG9yIG1hdGNoaW5nIGlzIGNhc2Utc2Vuc2l0aXZlIGZvciBT
VkcsIGNhc2UtaW5zZW5zaXRpdmUgZm9yIEhUTUwuCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL3F1
ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9yLWNhc2VTZW5zaXRpdmUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNl
bGVjdG9yLWNhc2VTZW5zaXRpdmUuaHRtbDogQWRkZWQuCisKKzIwMTMtMDctMzEgIFJvYiBCdWlz
ICA8cndsYnVpc0B3ZWJraXQub3JnPgorCiAgICAgICAgIENvbnZlcnQgU1ZHIHRlc3QgZnJvbSBy
MTUzNDMzIHRvIGEgcmVmdGVzdAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE5MzQ2CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9jdXN0b20v
cXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVj
dG9yLWNhc2VTZW5zaXRpdmUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiZjJjNGRlZmMyMmNi
NDE2NzlmYjI5MDk0YTk1YjI5NmQ3OTllYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9yLWNhc2VTZW5zaXRp
dmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorUEFTUyByZXN1bHQudG9TdHJpbmcoKSBp
cyAiW29iamVjdCBTVkdQYXRoRWxlbWVudF0iCitQQVNTIHJlc3VsdCBpcyBudWxsCitQQVNTIHJl
c3VsdC50b1N0cmluZygpIGlzICJbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSIKK1BBU1MgcmVzdWx0
LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgSFRNTERpdkVsZW1lbnRdIgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9yLWNh
c2VTZW5zaXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9jdXN0b20vcXVlcnlTZWxlY3Rvci1h
dHRyaWJ1dGUtc2VsZWN0b3ItY2FzZVNlbnNpdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjNTc3MTdm
ZDNlMzYzYTY1YWVmZDg3YmY2Yzc1YjkzZjI3NDFhZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdmcvY3VzdG9tL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLXNlbGVjdG9yLWNhc2VT
ZW5zaXRpdmUuaHRtbApAQCAtMCwwICsxLDI3IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPGRpdiBiYVI9IjEwIj48L2Rpdj4KKwor
ICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgPHBh
dGggcGF0aExlbmd0aD0iMjAwIi8+CisgICAgPC9zdmc+CisKKyAgICA8c2NyaXB0PgorICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgfQorICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJypb
cGF0aExlbmd0aF0nKTsKKyAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVzdWx0LnRvU3Ry
aW5nKCkiLCAiW29iamVjdCBTVkdQYXRoRWxlbWVudF0iKTsKKyAgICAgIHJlc3VsdCA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJypbcGF0aGxlbmd0aF0nKTsKKyAgICAgIHNob3VsZEJlTnVsbCgi
cmVzdWx0Iik7CisgICAgICByZXN1bHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcqW2JhUl0n
KTsKKyAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygicmVzdWx0LnRvU3RyaW5nKCkiLCAiW29i
amVjdCBIVE1MRGl2RWxlbWVudF0iKTsKKyAgICAgIHJlc3VsdCA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJypbYkFyXScpOworICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyZXN1bHQudG9T
dHJpbmcoKSIsICJbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSIpOworICAgIDwvc2NyaXB0PgorICA8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207930</attachid>
            <date>2013-08-01 08:59:44 -0700</date>
            <delta_ts>2013-08-01 14:36:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71152-20130801115933.patch</filename>
            <type>text/plain</type>
            <size>25338</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFmYzBkNzEwMTg0Yjg2
MzYyNTA0MjIxY2JkNjNmZTc2Yjc0Y2YwZi4uNmUzYzQ5MWZlNzhhMTFhYzlhNTIxM2NjYmE2Y2I3
MmUyYzk1NzJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA4LTAxICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KKworICAgICAgICBzZWxlY3RvcnMgc2hvdWxkIG1h
dGNoIGF0dHJpYnV0ZSBuYW1lIHdpdGggY2FzZSBzZW5zaXRpdml0eSBiYXNlZCBvbiBlbGVtZW50
ICYgZG9jdW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IGNhc2Utc2Vuc2l0aXZlIGF0dHJpYnV0ZSBuYW1lIHNlbGVjdGluZyBm
b3Igbm9uIEhUTUwuIEluIG9yZGVyIHRvIGRvIHRoaXMgd2UgaGF2ZSB0bworICAgICAgICBzdG9y
ZSB0aGUgYXR0cmlidXRlIG5hbWUgaW4gdGhlIHNlbGVjdG9yIGFzLWlzIHdoZW4gY3NzIHBhcnNp
bmcsIGFuZCBnZXQgdGhlIGxvd2VyY2FzZSBsb2NhbE5hbWUKKyAgICAgICAgb24gZGVtYW5kIGZv
ciBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nLiBUaGUgb25seSB0aW1lIHdlIHdhbnQgY2FzZS1p
bnNlbnNpdGl2ZSBtYXRjaGluZyBpcyB3aGVuCisgICAgICAgIHdlIHRyeSB0byBtYXRjaCBhIEhU
TUwgZWxlbWVudCBpbiBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9t
L1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNhc2UtaW5zZW5zaXRpdmUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9kb20vU2VsZWN0b3JBUEkvYXR0cm5hbWUtY2FzZS1zZW5zaXRpdmUueGh0bWwKKyAg
ICAgICAgICAgICAgIHN2Zy9jc3MvY2FzZS1zZW5zaXRpdmUtYXR0cm5hbWUtc2VsZWN0b3JzLmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46IGRvIG5vdCBsb3dlcmNhc2UgYXR0
cmlidXRlIHNlbGVjdG9yIG5hbWUuCisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldEF0dHJpYnV0ZSk6CisgICAg
ICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOiBhbGxvdyBhY2Nl
c3MgdG8gbG93ZXJlZCB2ZXJzaW9uIG9mIGF0dHJpYnV0ZSBsb2NhbE5hbWUgaWYgbmVlZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmF0dHJpYnV0ZUxvY2FsTmFtZUxvd2VyKToK
KyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFu
eUF0dHJpYnV0ZU1hdGNoZXMpOiBkbyBvbmx5IGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgZm9y
IEhUTUwuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAg
ICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUpOiBkbyBvbmx5IGNhc2UtaW5zZW5zaXRpdmUg
bWF0Y2hpbmcgZm9yIEhUTUwuCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxOYW1lczo6Y2hlY2tFeGFjdEF0dHJpYnV0ZVZh
bHVlKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoOjptYXRjaGVzUmlnaHRtb3N0QXR0cmli
dXRlU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9BdHRyaWJ1dGUuaDogIAorICAgICAgICAoV2Vi
Q29yZTo6QXR0cmlidXRlOjptYXRjaGVzKTogdXNlIG1vcmUgY29udmVuaWVudCBwYXJhbWV0ZXJz
LgorCiAyMDEzLTA3LTMxICBSdXRoIEZvbmcgIDxydXRoX2ZvbmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIDxpbnB1dCB0eXBlPWNvbG9yPiBNYWMgVUkgYmVoYXZpb3VyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueS5pbgppbmRleCA3Mzg1Mzg3OTdlNmRhMjU5ZmUyMDJkYTA1ODZiODUyYzEzMDNkYWJm
Li40ZTEzZGZlMGQ0MzRhMDhiZjE4MDA2OGRmZmViZjkwYjNlM2NlMTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW4KQEAgLTEzNDcsMzMgKzEzNDcsMzAgQEAgY2xhc3M6CiAKIGF0dHJf
bmFtZToKICAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlclN0cmluZyYg
c3RyID0gJDE7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkK
LSAgICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICAkJCA9IHN0cjsKKyAgICAgICAgJCQg
PSAkMTsKICAgICB9CiAgICAgOwogCiBhdHRyaWI6CiAgICAgJ1snIG1heWJlX3NwYWNlIGF0dHJf
bmFtZSAnXScgewogICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rvcigp
OwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQzLCBu
dWxsQXRvbSkpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0
b20sICQzLCBudWxsQXRvbSksIHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KTsKICAg
ICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpTZXQpOwogICAgIH0KICAgICB8ICdbJyBt
YXliZV9zcGFjZSBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1h
eWJlX3NwYWNlICddJyB7CiAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVj
dG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwg
JDMsIG51bGxBdG9tKSk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSwgJDMsIG51bGxBdG9tKSwgcGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQp
OwogICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkkNCk7CiAgICAgICAg
ICQkLT5zZXRWYWx1ZSgkNik7CiAgICAgfQogICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFj
ZV9zZWxlY3RvciBhdHRyX25hbWUgJ10nIHsKICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVy
bWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpKTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShw
YXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpLCBwYXJzZXItPm1fY29udGV4
dC5pc0hUTUxEb2N1bWVudCk7CiAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0
KTsKICAgICB9CiAgICAgfCAnWycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJf
bmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsK
ICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAg
JCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQp
KTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVz
cGFjZSgkMywgJDQpLCBwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCk7CiAgICAgICAg
ICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ1KTsKICAgICAgICAgJCQtPnNldFZh
bHVlKCQ3KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
VmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5kZXggYjg5
OWUxY2M4MWMzZGU5MjQ3MmVjNTRiZGE3NDBmMDA5MWM3M2EwYy4uOTk0NjZiZjAyNDUwNTIzY2Nh
MTQyNzFmOWNhMTQxYjc0MTM1MzAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMu
aApAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBQYXNzT3duUHRyPENTU1NlbGVjdG9y
PiByZWxlYXNlU2VsZWN0b3IoKSB7IHJldHVybiBtX3NlbGVjdG9yLnJlbGVhc2UoKTsgfQogCiAg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKSB7IG1fc2VsZWN0b3It
PnNldFZhbHVlKHZhbHVlKTsgfQotICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldEF0dHJpYnV0ZSh2YWx1ZSk7IH0KKyAgICB2
b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSwgYm9vbCBpbkhUTUxE
b2N1bWVudCkgeyBtX3NlbGVjdG9yLT5zZXRBdHRyaWJ1dGUodmFsdWUsIGluSFRNTERvY3VtZW50
KTsgfQogICAgIHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBt
X3NlbGVjdG9yLT5zZXRBcmd1bWVudCh2YWx1ZSk7IH0KICAgICB2b2lkIHNldE1hdGNoKENTU1Nl
bGVjdG9yOjpNYXRjaCB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX21hdGNoID0gdmFsdWU7IH0KICAg
ICB2b2lkIHNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVj
dG9yLT5tX3JlbGF0aW9uID0gdmFsdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmlu
ZGV4IDFkOTYzZmVmYjZkODI5YTNkYzU1MDliY2Q1ZGVjMDkzMWY3NjU5Y2EuLjE5YWUxNjM0MDEy
NmM0YzgxZDg2NjViYjVlYTJkYmRmOTY1NzBjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcApAQCAtNzEyLDEwICs3MTIsMTIgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRl
eHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0ci50b1N0cmlu
ZygpICsgcmlnaHRTaWRlOwogfQogCi12b2lkIENTU1NlbGVjdG9yOjpzZXRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUpCit2b2lkIENTU1NlbGVjdG9yOjpzZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUsIGJvb2wgaXNIVE1MRG9jdW1lbnQpCiB7CiAgICAg
Y3JlYXRlUmFyZURhdGEoKTsKICAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGUgPSB2
YWx1ZTsKKyAgICBpZiAoIWlzSFRNTERvY3VtZW50KQorICAgICAgICBtX2RhdGEubV9yYXJlRGF0
YS0+bV9hdHRyaWJ1dGVMb2NhbE5hbWVMb3dlciA9IHZhbHVlLmxvY2FsTmFtZSgpOwogfQogCiB2
b2lkIENTU1NlbGVjdG9yOjpzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCAwZDc5NDg0YzJlOGE5NmNhM2VlZDdkMTJhOGIy
MDM0NTM4ZDc3YWE0Li44Njk0Y2ZiZDM0ODRhODI3NjZhNmE2MzgyN2Q3ODM5YjNhMjliOTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtMjA0LDExICsyMDQsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSgpIGNvbnN0
OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKCkgY29uc3Q7CiAgICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0OworICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZUxvY2FsTmFtZUxvd2VyKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8g
bV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBudWxsQXRvbTsgfQogICAgICAgICBjb25z
dCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFy
ZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiAwOyB9CiAK
ICAgICAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICAgICAgdm9p
ZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2b2lkIHNldEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgYm9vbCBpc0hUTUxEb2N1bWVudCk7CiAgICAg
ICAgIHZvaWQgc2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQg
c2V0U2VsZWN0b3JMaXN0KFBhc3NPd25QdHI8Q1NTU2VsZWN0b3JMaXN0Pik7CiAKQEAgLTI2Myw2
ICsyNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBpbnQgbV9hOyAvLyBV
c2VkIGZvciA6bnRoLSoKICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgtKgog
ICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0cmli
dXRlIHNlbGVjdG9yCisgICAgICAgICAgICBBdG9taWNTdHJpbmcgbV9hdHRyaWJ1dGVMb2NhbE5h
bWVMb3dlcjsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZv
ciA6Y29udGFpbnMsIDpsYW5nIGFuZCA6bnRoLSoKICAgICAgICAgICAgIE93blB0cjxDU1NTZWxl
Y3Rvckxpc3Q+IG1fc2VsZWN0b3JMaXN0OyAvLyBVc2VkIGZvciA6LXdlYmtpdC1hbnkgYW5kIDpu
b3QKICAgICAgICAgCkBAIC0yODYsNiArMjg4LDE1IEBAIGlubGluZSBjb25zdCBRdWFsaWZpZWRO
YW1lJiBDU1NTZWxlY3Rvcjo6YXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLm1f
cmFyZURhdGEtPm1fYXR0cmlidXRlOwogfQogCitpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBD
U1NTZWxlY3Rvcjo6YXR0cmlidXRlTG9jYWxOYW1lTG93ZXIoKSBjb25zdAoreworICAgIEFTU0VS
VChpc0F0dHJpYnV0ZVNlbGVjdG9yKCkpOworICAgIEFTU0VSVChtX2hhc1JhcmVEYXRhKTsKKyAg
ICBpZiAobV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlTG9jYWxOYW1lTG93ZXIuaXNOdWxs
KCkpCisgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZUxvY2FsTmFtZUxvd2Vy
ID0gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlLmxvY2FsTmFtZSgpLmxvd2VyKCk7Cisg
ICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZUxvY2FsTmFtZUxvd2VyOwor
fQorCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSBjb25z
dAogewogICAgIGlmIChtX3BzZXVkb1R5cGUgPT0gUHNldWRvVW5rbm93bikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggNzJlMDZhMTc1Y2U0MjZkM2JhYmEyODY1MTRh
NzRjYThjZDgyNmM3NS4uY2I3YTBiYTdhNGU3YTEwMjEyZmQyMzRmOTVhMDIxNjA3YTQxNTg5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTM1NCwxNiArMzU0LDE2
IEBAIHN0YXRpYyBib29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hlcyhjb25zdCBBdHRyaWJ1dGUqIGF0
dHJpYnV0ZUl0ZW0sIENTU1NlbGVjdG9yOjpNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIGFueUF0dHJpYnV0ZU1hdGNoZXMoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6
Ok1hdGNoIG1hdGNoLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHIsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2VsZWN0b3JWYWx1ZSwgYm9vbCBjYXNlU2Vuc2l0aXZlKQorc3RhdGljIGJv
b2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rv
ciogc2VsZWN0b3IsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0ciwgYm9vbCBjYXNl
U2Vuc2l0aXZlKQogewogICAgIEFTU0VSVChlbGVtZW50LT5oYXNBdHRyaWJ1dGVzV2l0aG91dFVw
ZGF0ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnQtPmF0dHJpYnV0ZUNv
dW50KCk7ICsraSkgewogICAgICAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZUl0ZW0gPSBl
bGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkpOwogCi0gICAgICAgIGlmICghYXR0cmlidXRlSXRlbS0+
bWF0Y2hlcyhzZWxlY3RvckF0dHIpKQorICAgICAgICBpZiAoIWF0dHJpYnV0ZUl0ZW0tPm1hdGNo
ZXMoc2VsZWN0b3JBdHRyLnByZWZpeCgpLCBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgPyBzZWxl
Y3Rvci0+YXR0cmlidXRlTG9jYWxOYW1lTG93ZXIoKSA6IHNlbGVjdG9yQXR0ci5sb2NhbE5hbWUo
KSwgc2VsZWN0b3JBdHRyLm5hbWVzcGFjZVVSSSgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMoYXR0cmlidXRlSXRlbSwgbWF0Y2gs
IHNlbGVjdG9yVmFsdWUsIGNhc2VTZW5zaXRpdmUpKQorICAgICAgICBpZiAoYXR0cmlidXRlVmFs
dWVNYXRjaGVzKGF0dHJpYnV0ZUl0ZW0sIHN0YXRpY19jYXN0PENTU1NlbGVjdG9yOjpNYXRjaD4o
c2VsZWN0b3ItPm1fbWF0Y2gpLCBzZWxlY3Rvci0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM4NywxNCArMzg3LDEzIEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCYgY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0lEKCkgJiYgZWxl
bWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSA9PSBzZWxlY3Rvci0+dmFsdWUoKTsKIAogICAg
IGlmIChzZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7Ci0gICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHIgPSBzZWxlY3Rvci0+YXR0cmlidXRlKCk7Ci0KICAgICAgICAgaWYg
KCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ciA9IHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KTsKICAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gIW1fZG9jdW1lbnRJc0hUTUwgfHwgSFRN
TERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoYXR0cik7CiAKLSAgICAgICAgaWYg
KCFhbnlBdHRyaWJ1dGVNYXRjaGVzKGVsZW1lbnQsIHN0YXRpY19jYXN0PENTU1NlbGVjdG9yOjpN
YXRjaD4oc2VsZWN0b3ItPm1fbWF0Y2gpLCBhdHRyLCBzZWxlY3Rvci0+dmFsdWUoKSwgY2FzZVNl
bnNpdGl2ZSkpCisgICAgICAgIGlmICghYW55QXR0cmlidXRlTWF0Y2hlcyhlbGVtZW50LCBzZWxl
Y3RvciwgYXR0ciwgY2FzZVNlbnNpdGl2ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMGY2YjA0Y2JiYzcw
OTM0OTRhYTNkNDViN2YwY2U3MTdlMDg4OThmMi4uZDBiZDgwNzQzMjNjMTQzNWNhNjJlYjU1ZGIx
NjhkNTI5ZDZlOTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtOTEs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgdGFnTWF0Y2hlcyhjb25zdCBFbGVt
ZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHN0YXRpYyBib29sIGlzQ29tbW9uUHNl
dWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwogICAgIHN0YXRpYyBib29sIG1h
dGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgYm9vbCBj
aGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBz
ZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKTsKKyAg
ICBzdGF0aWMgYm9vbCBjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBD
U1NTZWxlY3RvciosIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpOwogCiAgICAgZW51bSBMaW5rTWF0Y2hNYXNr
IHsgTWF0Y2hMaW5rID0gMSwgTWF0Y2hWaXNpdGVkID0gMiwgTWF0Y2hBbGwgPSBNYXRjaExpbmsg
fCBNYXRjaFZpc2l0ZWQgfTsKICAgICBzdGF0aWMgdW5zaWduZWQgZGV0ZXJtaW5lTGlua01hdGNo
VHlwZShjb25zdCBDU1NTZWxlY3RvciopOwpAQCAtMTI4LDE0ICsxMjgsMTUgQEAgaW5saW5lIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFF1YWxpZmllZE4KICAgICByZXR1cm4gbmFtZXNwYWNlVVJJID09IHN0YXJBdG9tIHx8IG5h
bWVzcGFjZVVSSSA9PSBlbGVtZW50LT5uYW1lc3BhY2VVUkkoKTsKIH0KIAotaW5saW5lIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nSW1wbCogdmFsdWUpCitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
RXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKQogewogICAgIGlmICghZWxlbWVudC0+aGFzQXR0
cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpID8gc2Vs
ZWN0b3ItPmF0dHJpYnV0ZUxvY2FsTmFtZUxvd2VyKCkgOiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUu
bG9jYWxOYW1lKCk7CiAgICAgdW5zaWduZWQgc2l6ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUNvdW50
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBj
b25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnQtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0g
ICAgICAgIGlmIChhdHRyaWJ1dGUtPm1hdGNoZXMoc2VsZWN0b3JBdHRyaWJ1dGVOYW1lKSAmJiAo
IXZhbHVlIHx8IGF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCkgPT0gdmFsdWUpKQorICAgICAgICBp
ZiAoYXR0cmlidXRlLT5tYXRjaGVzKHNlbGVjdG9yQXR0cmlidXRlTmFtZS5wcmVmaXgoKSwgbG9j
YWxOYW1lLCBzZWxlY3RvckF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkpICYmICghdmFsdWUg
fHwgYXR0cmlidXRlLT52YWx1ZSgpLmltcGwoKSA9PSB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5jcHAKaW5kZXggODRmY2FlZTM1ODY0NmQzNGMxNjVj
M2M0MTRkNTMzYjMzMmE5MmZkYy4uYmRjNTE0NGFkMzExZDRlNThjNzU4YTU1ZDlkNTU5NDBjYWE2
YTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQ
YXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGgu
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIGlubGluZSBib29sIGNoZWNrSURWYWx1ZShjb25zdCBFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCiAKIGlubGluZSBib29s
IGNoZWNrRXhhY3RBdHRyaWJ1dGVWYWx1ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBD
U1NTZWxlY3Rvciogc2VsZWN0b3IpCiB7Ci0gICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tFeGFjdEF0dHJpYnV0ZShlbGVtZW50LCBzZWxlY3Rvci0+YXR0cmlidXRlKCksIHNlbGVjdG9y
LT52YWx1ZSgpLmltcGwoKSk7CisgICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tFeGFj
dEF0dHJpYnV0ZShlbGVtZW50LCBzZWxlY3Rvciwgc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLCBzZWxl
Y3Rvci0+dmFsdWUoKS5pbXBsKCkpOwogfQogCiBpbmxpbmUgYm9vbCBjaGVja1RhZ1ZhbHVlKGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmgKaW5kZXggNmM4ZTNjYzNk
OTg0OTNjYWNlODkxOGI4MmJmNDViNzEwOTZmM2MyYi4uZjFkMTA0NTU1ZjE2ZDBjM2IyMWQzNzE3
ZTM3Y2Y5YWY1NzgxMmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlckZhc3RQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tl
ckZhc3RQYXRoLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIGlubGluZSBib29sIFNlbGVj
dG9yQ2hlY2tlckZhc3RQYXRoOjptYXRjaGVzUmlnaHRtb3N0QXR0cmlidXRlU2VsZWN0b3IoKSBj
b25zdAogewogICAgIGlmIChtX3NlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpFeGFj
dCB8fCBtX3NlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpTZXQpCi0gICAgICAgIHJl
dHVybiBTZWxlY3RvckNoZWNrZXI6OmNoZWNrRXhhY3RBdHRyaWJ1dGUobV9lbGVtZW50LCBtX3Nl
bGVjdG9yLT5hdHRyaWJ1dGUoKSwgbV9zZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOworICAgICAg
ICByZXR1cm4gU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKG1fZWxlbWVudCwg
bV9zZWxlY3RvciwgbV9zZWxlY3Rvci0+YXR0cmlidXRlKCksIG1fc2VsZWN0b3ItPnZhbHVlKCku
aW1wbCgpKTsKICAgICBBU1NFUlQoIW1fc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
cmlidXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmgKaW5kZXggNGEyZmNhZDNm
ZDc2ZGYyOTBmZjRiZDZlNzA4NDQ4ODEzNzE1ZTAxOC4uNjFjOWVjNWE4ZjI2ZGU3ZGMxZjA4NGQ1
ZTZiMzIyOTE5NjM0NmQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaApAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZTsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5p
c0VtcHR5KCk7IH0KLSAgICBib29sIG1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
OworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKSBj
b25zdDsKIAogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBt
X3ZhbHVlID0gdmFsdWU7IH0KICAgICB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCkgeyBtX25hbWUuc2V0UHJlZml4KHByZWZpeCk7IH0KQEAgLTcyLDExICs3MiwxMSBA
QCBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX3ZhbHVlOwogfTsKIAotaW5saW5lIGJvb2wg
QXR0cmlidXRlOjptYXRjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIHF1YWxpZmllZE5hbWUpIGNv
bnN0CitpbmxpbmUgYm9vbCBBdHRyaWJ1dGU6Om1hdGNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSkgY29uc3QKIHsKLSAgICBpZiAocXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUo
KSAhPSBsb2NhbE5hbWUoKSkKKyAgICBpZiAobG9jYWxOYW1lICE9IHRoaXMtPmxvY2FsTmFtZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHF1YWxpZmllZE5hbWUucHJlZml4
KCkgPT0gc3RhckF0b20gfHwgcXVhbGlmaWVkTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBuYW1lc3Bh
Y2VVUkkoKTsKKyAgICByZXR1cm4gcHJlZml4ID09IHN0YXJBdG9tIHx8IG5hbWVzcGFjZVVSSSA9
PSB0aGlzLT5uYW1lc3BhY2VVUkkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDM5NDQ4ZDgyNzJlZDBkNDBlMjQ3MjM3ZTIyZWZiMDNiZDlhZTA4MWYuLmFjNDJlZGRhMmU3
OWQ4NmM3NDk1OGM3MDUwNTQ3YmY2NzU5YTAyMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
My0wOC0wMSAgUm9iIEJ1aXMgIDxyd2xidWlzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgc2VsZWN0
b3JzIHNob3VsZCBtYXRjaCBhdHRyaWJ1dGUgbmFtZSB3aXRoIGNhc2Ugc2Vuc2l0aXZpdHkgYmFz
ZWQgb24gZWxlbWVudCAmIGRvY3VtZW50IHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRybmFtZS1jYXNl
LWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vU2Vs
ZWN0b3JBUEkvYXR0cm5hbWUtY2FzZS1pbnNlbnNpdGl2ZS5odG1sOiBDaGVjayB0aGF0IGluIEhU
TUwgZG9jdW1lbnRzIENTUyBzZWxlY3RvcnMKKyAgICAgICAgdXNlIGNhc2UtaW5zZW5zaXRpdmUg
YXR0cmlidXRlIG5hbWUgbWF0Y2hpbmcgZm9yIEhUTUwgZWxlbWVudHMsIGNhc2Utc2Vuc2l0aXZl
IG90aGVyd2lzZS4KKyAgICAgICAgKiBmYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRybmFtZS1jYXNl
LXNlbnNpdGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1NlbGVj
dG9yQVBJL2F0dHJuYW1lLWNhc2Utc2Vuc2l0aXZlLnhodG1sOiBDaGVjayB0aGF0IGluIFhIVE1M
IGRvY3VtZW50cyBDU1Mgc2VsZWN0b3JzCisgICAgICAgIGFsd2F5cyB1c2UgY2FzZS1zZW5zaXRp
dmUgYXR0cmlidXRlIG5hbWUgbWF0Y2hpbmcuCisgICAgICAgICogc3ZnL2Nzcy9jYXNlLXNlbnNp
dGl2ZS1hdHRybmFtZS1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvY3NzL2Nhc2Utc2Vuc2l0aXZlLWF0dHJuYW1lLXNlbGVjdG9ycy5odG1sOiBDaGVjayB0aGF0
IGluIEhUTUwgZG9jdW1lbnRzIENTUyBzZWxlY3RvcnMgaW4gc3R5bGVzaGVldHMKKyAgICAgICAg
dXNlIGNhc2UtaW5zZW5zaXRpdmUgYXR0cmlidXRlIG5hbWUgbWF0Y2hpbmcgZm9yIEhUTUwgZWxl
bWVudHMsIGNhc2Utc2Vuc2l0aXZlIG90aGVyd2lzZS4KKwogMjAxMy0wNy0zMSAgUm9iIEJ1aXMg
IDxyd2xidWlzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29udmVydCBTVkcgdGVzdCBmcm9tIHIx
NTM0MzMgdG8gYSByZWZ0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxl
Y3RvckFQSS9hdHRybmFtZS1jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNhc2UtaW5zZW5zaXRpdmUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUwMGM3Y2M4ZGNjYmE0NTczZDA2MTk0NjVlYjVhYWU5ODM4MTcz
YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9h
dHRybmFtZS1jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitQ
QVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltiYVJdJykgaXMgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JhcicpCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXInKS53ZWJr
aXRNYXRjaGVzU2VsZWN0b3IoJ2RpdltiYVJdJykgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdkaXZbYmFyXScpIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXInKQor
UEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFyJykud2Via2l0TWF0Y2hlc1NlbGVjdG9y
KCdkaXZbYmFyXScpIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W0JB
Ul0nKSBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFyJykKK1BBU1MgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2JhcicpLndlYmtpdE1hdGNoZXNTZWxlY3RvcignZGl2W0JBUl0nKSBpcyB0
cnVlCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltiQVJdJykgaXMgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2JhcicpCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXIn
KS53ZWJraXRNYXRjaGVzU2VsZWN0b3IoJ2RpdltiQVJdJykgaXMgdHJ1ZQorUEFTUyBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdwYXRoW3BhdGhMZW5ndGhdJykgaXMgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3BhJykKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhJykud2Via2l0TWF0
Y2hlc1NlbGVjdG9yKCdwYXRoW3BhdGhMZW5ndGhdJykgaXMgdHJ1ZQorUEFTUyBjb250ZW50LnF1
ZXJ5U2VsZWN0b3IoJ3BhdGhbcGF0aGxlbmd0aF0nKSBpcyBudWxsCitQQVNTIGNvbnRlbnQucXVl
cnlTZWxlY3RvcigncGF0aFtwYXRoTGVuZ1RoXScpIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRybmFtZS1jYXNlLWluc2Vuc2l0aXZlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRybmFtZS1jYXNlLWluc2Vuc2l0aXZl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2ZjMzU5YTk2NDFiZGM3ZTU5NTBhMDAzMjI2Zjg0MTQzMzA0ODAy
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2F0
dHJuYW1lLWNhc2UtaW5zZW5zaXRpdmUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDwhLS0gQ2hlY2sg
dGhhdCBpbiBIVE1MIGRvY3VtZW50cyBDU1Mgc2VsZWN0b3JzIHVzZSBjYXNlLWluc2Vuc2l0aXZl
IGF0dHJpYnV0ZSBuYW1lIG1hdGNoaW5nIGZvciBIVE1MIGVsZW1lbnRzLCBjYXNlLXNlbnNpdGl2
ZSBvdGhlcndpc2UuIC0tPgorICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJkaXNwbGF5OiBub25lIj4KKyAgICAgICAgICAgIDxkaXYgYmFSPSIxMCIgaWQ9ImJhciI+
PC9kaXY+CisKKyAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIj4KKyAgICAgICAgICAgICAgICA8cGF0aCBpZD0icGEiIHBhdGhMZW5ndGg9IjIwMCIvPgor
ICAgICAgICAgICAgPC9zdmc+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRl
bnQiKTsKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tNYXRjaGluZ1NlbGVjdG9yKHNlbGVjdG9yLCBl
bGVtZW50SWQpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCciICsgc2VsZWN0b3IgKyAiJykiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyBlbGVt
ZW50SWQgKyAiJykiKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJyIgKyBlbGVtZW50SWQgKyAiJykud2Via2l0TWF0Y2hlc1NlbGVjdG9yKCciICsg
c2VsZWN0b3IgKyAiJykiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrTm9u
TWF0Y2hpbmdTZWxlY3RvcihzZWxlY3RvcikgeworICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCJj
b250ZW50LnF1ZXJ5U2VsZWN0b3IoJyIgKyBzZWxlY3RvciArICInKSIpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gSFRNTCBzaG91bGQgYmUgbWF0Y2hlZCBjYXNlLWluc2Vuc2l0aXZlCisgICAg
ICAgIGNoZWNrTWF0Y2hpbmdTZWxlY3RvcigiZGl2W2JhUl0iLCAiYmFyIik7CisgICAgICAgIGNo
ZWNrTWF0Y2hpbmdTZWxlY3RvcigiZGl2W2Jhcl0iLCAiYmFyIik7CisgICAgICAgIGNoZWNrTWF0
Y2hpbmdTZWxlY3RvcigiZGl2W0JBUl0iLCAiYmFyIik7CisgICAgICAgIGNoZWNrTWF0Y2hpbmdT
ZWxlY3RvcigiZGl2W2JBUl0iLCAiYmFyIik7CisKKyAgICAgICAgLy8gbm9uIEhUTUwgc2hvdWxk
IGJlIG1hdGNoZWQgY2FzZS1zZW5zaXRpdmUKKyAgICAgICAgY2hlY2tNYXRjaGluZ1NlbGVjdG9y
KCJwYXRoW3BhdGhMZW5ndGhdIiwgInBhIik7CisgICAgICAgIGNoZWNrTm9uTWF0Y2hpbmdTZWxl
Y3RvcigicGF0aFtwYXRobGVuZ3RoXSIpOworICAgICAgICBjaGVja05vbk1hdGNoaW5nU2VsZWN0
b3IoInBhdGhbcGF0aExlbmdUaF0iKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRy
bmFtZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9T
ZWxlY3RvckFQSS9hdHRybmFtZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTNkMDJiYTU0YjJiNGNmOTZjMjRlOWZjYTQ1YThlYTQ0NDkyOTg1YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNhc2Utc2Vu
c2l0aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitQQVNTIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2RpdltiYVJdJykgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhcicpCitQ
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXInKS53ZWJraXRNYXRjaGVzU2VsZWN0b3Io
J2RpdltiYVJdJykgaXMgdHJ1ZQorUEFTUyBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltiYXJd
JykgaXMgbnVsbAorUEFTUyBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltCQVJdJykgaXMgbnVs
bAorUEFTUyBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltiQVJdJykgaXMgbnVsbAorUEFTUyBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdwYXRoW3BhdGhMZW5ndGhdJykgaXMgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3BhJykKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhJykud2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKCdwYXRoW3BhdGhMZW5ndGhdJykgaXMgdHJ1ZQorUEFTUyBjb250
ZW50LnF1ZXJ5U2VsZWN0b3IoJ3BhdGhbcGF0aGxlbmd0aF0nKSBpcyBudWxsCitQQVNTIGNvbnRl
bnQucXVlcnlTZWxlY3RvcigncGF0aFtwYXRoTGVuZ1RoXScpIGlzIG51bGwKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRybmFtZS1jYXNlLXNlbnNpdGl2ZS54aHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNhc2Utc2Vuc2l0
aXZlLnhodG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNmZkZGQxNjViYTYyZmM3N2M4NzBhNWQ4YTg2YWZiZGYw
ZjRkY2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQ
SS9hdHRybmFtZS1jYXNlLXNlbnNpdGl2ZS54aHRtbApAQCAtMCwwICsxLDQyIEBACis8P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGh0bWwgCisgICAgIFBV
QkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4xIFN0cmljdC8vRU4iCisgICAgICJodHRwOi8vd3d3
LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8IS0tIENoZWNrIHRoYXQgaW4gWEhUTUwgZG9j
dW1lbnRzIENTUyBzZWxlY3RvcnMgYWx3YXlzIHVzZSBjYXNlLXNlbnNpdGl2ZSBhdHRyaWJ1dGUg
bmFtZSBtYXRjaGluZy4gLS0+CisgICAgPGRpdiBpZD0iY29udGVudCI+CisgICAgICAgIDxkaXYg
c3R5bGU9ImRpc3BsYXk6IG5vbmUiPgorICAgICAgICAgICAgPGRpdiBiYVI9IjEwIiBpZD0iYmFy
Ij48L2Rpdj4KKworICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciPgorICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJwYSIgcGF0aExlbmd0aD0iMjAwIi8+
CisgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
dGVudCIpOworICAgICAgICBmdW5jdGlvbiBjaGVja01hdGNoaW5nU2VsZWN0b3Ioc2VsZWN0b3Is
IGVsZW1lbnRJZCkgeworICAgICAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJyIgKyBzZWxlY3RvciArICInKSIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIGVs
ZW1lbnRJZCArICInKSIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnIiArIGVsZW1lbnRJZCArICInKS53ZWJraXRNYXRjaGVzU2VsZWN0b3IoJyIg
KyBzZWxlY3RvciArICInKSIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tO
b25NYXRjaGluZ1NlbGVjdG9yKHNlbGVjdG9yKSB7CisgICAgICAgICAgICBzaG91bGRCZU51bGwo
ImNvbnRlbnQucXVlcnlTZWxlY3RvcignIiArIHNlbGVjdG9yICsgIicpIik7CisgICAgICAgIH0K
KworICAgICAgICBjaGVja01hdGNoaW5nU2VsZWN0b3IoImRpdltiYVJdIiwgImJhciIpOworICAg
ICAgICBjaGVja05vbk1hdGNoaW5nU2VsZWN0b3IoImRpdltiYXJdIiwgImJhciIpOworICAgICAg
ICBjaGVja05vbk1hdGNoaW5nU2VsZWN0b3IoImRpdltCQVJdIiwgImJhciIpOworICAgICAgICBj
aGVja05vbk1hdGNoaW5nU2VsZWN0b3IoImRpdltiQVJdIiwgImJhciIpOworCisgICAgICAgIGNo
ZWNrTWF0Y2hpbmdTZWxlY3RvcigicGF0aFtwYXRoTGVuZ3RoXSIsICJwYSIpOworICAgICAgICBj
aGVja05vbk1hdGNoaW5nU2VsZWN0b3IoInBhdGhbcGF0aGxlbmd0aF0iKTsKKyAgICAgICAgY2hl
Y2tOb25NYXRjaGluZ1NlbGVjdG9yKCJwYXRoW3BhdGhMZW5nVGhdIik7CisgICAgPC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2Nz
cy9jYXNlLXNlbnNpdGl2ZS1hdHRybmFtZS1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3ZnL2Nzcy9jYXNlLXNlbnNpdGl2ZS1hdHRybmFtZS1zZWxlY3RvcnMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY1MzBjNzM1ZDAzNjc2NmJhYTlhYWU5ODNlNWE3NWIzZWRmNmE1NTYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvY3NzL2Nhc2Utc2Vuc2l0aXZlLWF0
dHJuYW1lLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitQQVNTIHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYxIikpLmNvbG9y
IGlzICJyZ2IoMCwgMTI4LCAwKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBhdGgxIikpLmNvbG9yIGlzICJyZ2IoMCwgMTI4LCAwKSIKK1BB
U1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhdGgy
IikpLmNvbG9yIGlzICJyZ2IoMCwgMTI4LCAwKSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvY3Nz
L2Nhc2Utc2Vuc2l0aXZlLWF0dHJuYW1lLXNlbGVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvc3Zn
L2Nzcy9jYXNlLXNlbnNpdGl2ZS1hdHRybmFtZS1zZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
OWM2MzNmMTY2YmIyNDc3NWIzOTMyMDkyMmVkOTdjMDU5ZmNmMzM1Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3ZnL2Nzcy9jYXNlLXNlbnNpdGl2ZS1hdHRybmFtZS1zZWxlY3RvcnMu
aHRtbApAQCAtMCwwICsxLDQ4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBkaXZbQkFSXSB7CisgICAgICAgICAgICAg
ICAgY29sb3I6IGdyZWVuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwYXRoIHsKKyAg
ICAgICAgICAgICAgICBjb2xvcjogcmVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKltw
YXRoTGVuZ3RoXSB7CisgICAgICAgICAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgKltwYXRobGVuZ3RoXSB7CisgICAgICAgICAgICAgICAgY29sb3I6IHJl
ZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpbcGF0aExlbmd0aD0iMTAwIl0geworICAg
ICAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpb
cGF0aGxlbmd0aD0iMTAwIl0geworICAgICAgICAgICAgICAgIGNvbG9yOiByZWQ7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJjb250YWluZXIiPgorICAgICAgICAgICAgPGRpdiBp
ZD0iZGl2MSIgYmFSPSIxMCI+PC9kaXY+CisKKyAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAgICAgICA8cGF0aCBpZD0icGF0aDEi
IHBhdGhMZW5ndGg9IjIwMCIvPgorICAgICAgICAgICAgICAgIDxwYXRoIGlkPSJwYXRoMiIgcGF0
aExlbmd0aD0iMTAwIi8+CisgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgPC9kaXY+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1N0eWxlKHByZWZpeCwgY291
bnQsIHByb3BlcnR5LCB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBp
IDw9IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIiIgKyBwcmVmaXggKyBpICsg
IlwiKSkuIiArIHByb3BlcnR5LCAiXCIiICsgdmFsdWUgKyAiXCIiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNoZWNrU3R5bGUoImRpdiIsIDEsICJjb2xvciIsICJyZ2IoMCwgMTI4LCAw
KSIpOworICAgICAgICAgICAgY2hlY2tTdHlsZSgicGF0aCIsIDIsICJjb2xvciIsICJyZ2IoMCwg
MTI4LCAwKSIpOworCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFp
bmVyIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207954</attachid>
            <date>2013-08-01 14:36:23 -0700</date>
            <delta_ts>2013-08-01 16:01:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71152-20130801173612.patch</filename>
            <type>text/plain</type>
            <size>27739</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFmYzBkNzEwMTg0Yjg2
MzYyNTA0MjIxY2JkNjNmZTc2Yjc0Y2YwZi4uYWIwZDlmMTI3MjU5ZDdhYmFkN2FmNjQ1N2RiNWU1
MDkxN2MzNmIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA4LTAxICBSb2Ig
QnVpcyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KKworICAgICAgICBzZWxlY3RvcnMgc2hvdWxkIG1h
dGNoIGF0dHJpYnV0ZSBuYW1lIHdpdGggY2FzZSBzZW5zaXRpdml0eSBiYXNlZCBvbiBlbGVtZW50
ICYgZG9jdW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExNTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTdXBwb3J0IGNhc2Utc2Vuc2l0aXZlIGF0dHJpYnV0ZSBuYW1lIHNlbGVjdGluZyBm
b3Igbm9uIEhUTUwuIEluIG9yZGVyIHRvIGRvIHRoaXMgd2UgaGF2ZSB0bworICAgICAgICBzdG9y
ZSB0aGUgYXR0cmlidXRlIG5hbWUgaW4gdGhlIHNlbGVjdG9yIGFzLWlzIHdoZW4gY3NzIHBhcnNp
bmcsIGFuZCBnZXQgdGhlIGxvd2VyY2FzZSBsb2NhbE5hbWUKKyAgICAgICAgb24gZGVtYW5kIGZv
ciBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nLiBUaGUgb25seSB0aW1lIHdlIHdhbnQgY2FzZS1p
bnNlbnNpdGl2ZSBtYXRjaGluZyBpcyB3aGVuCisgICAgICAgIHdlIHRyeSB0byBtYXRjaCBhIEhU
TUwgZWxlbWVudCBpbiBhIEhUTUwgZG9jdW1lbnQuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9t
L1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNhc2UtaW5zZW5zaXRpdmUuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9kb20vU2VsZWN0b3JBUEkvYXR0cm5hbWUtY2FzZS1zZW5zaXRpdmUueGh0bWwKKyAg
ICAgICAgICAgICAgIHN2Zy9jc3MvY2FzZS1zZW5zaXRpdmUtYXR0cm5hbWUtc2VsZWN0b3JzLmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46IGRvIG5vdCBsb3dlcmNhc2UgYXR0
cmlidXRlIHNlbGVjdG9yIG5hbWUuCisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNldEF0dHJpYnV0ZSk6CisgICAg
ICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOiBhbGxvdyBhY2Nl
c3MgdG8gbG93ZXJlZCB2ZXJzaW9uIG9mIGF0dHJpYnV0ZSBsb2NhbE5hbWUgaWYgbmVlZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmF0dHJpYnV0ZUNhbm9uaWNhbExvd2VyTmFt
ZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphbnlBdHRyaWJ1dGVNYXRjaGVzKTogZG8gb25seSBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5n
IGZvciBIVE1MLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZSk6
CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKTogZG8gb25seSBjYXNlLWluc2Vuc2l0
aXZlIG1hdGNoaW5nIGZvciBIVE1MLgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXJGYXN0
UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZXM6OmNoZWNrRXhhY3RBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXJGYXN0UGF0aDo6bWF0Y2hlc1JpZ2h0bW9zdEF0
dHJpYnV0ZVNlbGVjdG9yKToKKyAgICAgICAgKiBkb20vQXR0cmlidXRlLmg6ICAKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHJpYnV0ZTo6bWF0Y2hlcyk6IHVzZSBtb3JlIGNvbnZlbmllbnQgcGFyYW1l
dGVycy4KKwogMjAxMy0wNy0zMSAgUnV0aCBGb25nICA8cnV0aF9mb25nQGFwcGxlLmNvbT4KIAog
ICAgICAgICA8aW5wdXQgdHlwZT1jb2xvcj4gTWFjIFVJIGJlaGF2aW91cgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KaW5kZXggNzM4NTM4Nzk3ZTZkYTI1OWZlMjAyZGEwNTg2Yjg1MmMxMzAz
ZGFiZi4uNGUxM2RmZTBkNDM0YTA4YmYxODAwNjhkZmZlYmY5MGIzZTNjZTE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC0xMzQ3LDMzICsxMzQ3LDMwIEBAIGNsYXNzOgogCiBh
dHRyX25hbWU6CiAgICAgSURFTlQgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJTdHJp
bmcmIHN0ciA9ICQxOwotICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1l
bnQpCi0gICAgICAgICAgICBzdHIubG93ZXIoKTsKLSAgICAgICAgJCQgPSBzdHI7CisgICAgICAg
ICQkID0gJDE7CiAgICAgfQogICAgIDsKIAogYXR0cmliOgogICAgICdbJyBtYXliZV9zcGFjZSBh
dHRyX25hbWUgJ10nIHsKICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3IoKTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAk
MywgbnVsbEF0b20pKTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51
bGxBdG9tLCAkMywgbnVsbEF0b20pLCBwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCk7
CiAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0KTsKICAgICB9CiAgICAgfCAn
WycgbWF5YmVfc3BhY2UgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmlu
ZyBtYXliZV9zcGFjZSAnXScgewogICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0
b20sICQzLCBudWxsQXRvbSkpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5h
bWUobnVsbEF0b20sICQzLCBudWxsQXRvbSksIHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3Vt
ZW50KTsKICAgICAgICAgJCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDQpOwogICAg
ICAgICAkJC0+c2V0VmFsdWUoJDYpOwogICAgIH0KICAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1l
c3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1lICddJyB7CiAgICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5k
ZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1
dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSwgcGFyc2VyLT5tX2Nv
bnRleHQuaXNIVE1MRG9jdW1lbnQpOwogICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6
OlNldCk7CiAgICAgfQogICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxlY3RvciBh
dHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNlICdd
JyB7CiAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAg
ICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMs
ICQ0KSk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5O
YW1lc3BhY2UoJDMsICQ0KSwgcGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQpOwogICAg
ICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkkNSk7CiAgICAgICAgICQkLT5z
ZXRWYWx1ZSgkNyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5oCmluZGV4
IGI4OTllMWNjODFjM2RlOTI0NzJlYzU0YmRhNzQwZjAwOTFjNzNhMGMuLmYyOGI4ZjUzNDkyNDBl
MzUwNjgxMjQ3NGY1ZWZhOTEwYmRkOTA1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFs
dWVzLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc093blB0cjxDU1NTZWxl
Y3Rvcj4gcmVsZWFzZVNlbGVjdG9yKCkgeyByZXR1cm4gbV9zZWxlY3Rvci5yZWxlYXNlKCk7IH0K
IAogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkgeyBtX3NlbGVj
dG9yLT5zZXRWYWx1ZSh2YWx1ZSk7IH0KLSAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5zZXRBdHRyaWJ1dGUodmFsdWUpOyB9Cisg
ICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUsIGJvb2wgaXND
YXNlSW5zZW5zaXRpdmUpIHsgbV9zZWxlY3Rvci0+c2V0QXR0cmlidXRlKHZhbHVlLCBpc0Nhc2VJ
bnNlbnNpdGl2ZSk7IH0KICAgICB2b2lkIHNldEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0QXJndW1lbnQodmFsdWUpOyB9CiAgICAgdm9pZCBzZXRN
YXRjaChDU1NTZWxlY3Rvcjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxlY3Rvci0+bV9tYXRjaCA9IHZh
bHVlOyB9CiAgICAgdm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6UmVsYXRpb24gdmFsdWUp
IHsgbV9zZWxlY3Rvci0+bV9yZWxhdGlvbiA9IHZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmNwcAppbmRleCAxZDk2M2ZlZmI2ZDgyOWEzZGM1NTA5YmNkNWRlYzA5MzFmNzY1OWNhLi42
M2NjZmQ5NGU2YzQ1OTdlMzJkM2Y5ZTY2ODQyMDFlYWU4ZTc5NDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAKQEAgLTcxMiwxMCArNzEyLDExIEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6
c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgcmlnaHRTaWRlKSBjb25zdAogICAgIHJldHVybiBz
dHIudG9TdHJpbmcoKSArIHJpZ2h0U2lkZTsKIH0KIAotdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlKQordm9pZCBDU1NTZWxlY3Rvcjo6c2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVlLCBib29sIGlzQ2FzZUluc2Vuc2l0
aXZlKQogewogICAgIGNyZWF0ZVJhcmVEYXRhKCk7CiAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1f
YXR0cmlidXRlID0gdmFsdWU7CisgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlQ2Fu
b25pY2FsTG93ZXJOYW1lID0gaXNDYXNlSW5zZW5zaXRpdmUgPyB2YWx1ZS5sb2NhbE5hbWUoKS5s
b3dlcigpIDogdmFsdWUubG9jYWxOYW1lKCk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEFy
Z3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
CmluZGV4IDBkNzk0ODRjMmU4YTk2Y2EzZWVkN2QxMmE4YjIwMzQ1MzhkNzdhYTQuLmE5YTVkZmEz
ODY5YzYzOWRjZTI0OTU3ZDhiYzU5OTg0ZTgwN2I2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oCkBAIC0yMDQsMTEgKzIwNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUoKSBjb25zdDsKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlQ2Fu
b25pY2FsTG93ZXJOYW1lKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJn
dW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEt
Pm1fYXJndW1lbnQgOiBudWxsQXRvbTsgfQogICAgICAgICBjb25zdCBDU1NTZWxlY3Rvckxpc3Qq
IHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9y
YXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiAwOyB9CiAKICAgICAgICAgdm9pZCBzZXRW
YWx1ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgYm9vbCBpc0Nhc2VJbnNlbnNpdGl2ZSk7CiAgICAgICAgIHZvaWQgc2V0QXJn
dW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgICAgIHZvaWQgc2V0U2VsZWN0b3JMaXN0
KFBhc3NPd25QdHI8Q1NTU2VsZWN0b3JMaXN0Pik7CiAKQEAgLTI2Myw2ICsyNjQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBpbnQgbV9hOyAvLyBVc2VkIGZvciA6bnRoLSoK
ICAgICAgICAgICAgIGludCBtX2I7IC8vIFVzZWQgZm9yIDpudGgtKgogICAgICAgICAgICAgUXVh
bGlmaWVkTmFtZSBtX2F0dHJpYnV0ZTsgLy8gdXNlZCBmb3IgYXR0cmlidXRlIHNlbGVjdG9yCisg
ICAgICAgICAgICBBdG9taWNTdHJpbmcgbV9hdHRyaWJ1dGVDYW5vbmljYWxMb3dlck5hbWU7CiAg
ICAgICAgICAgICBBdG9taWNTdHJpbmcgbV9hcmd1bWVudDsgLy8gVXNlZCBmb3IgOmNvbnRhaW5z
LCA6bGFuZyBhbmQgOm50aC0qCiAgICAgICAgICAgICBPd25QdHI8Q1NTU2VsZWN0b3JMaXN0PiBt
X3NlbGVjdG9yTGlzdDsgLy8gVXNlZCBmb3IgOi13ZWJraXQtYW55IGFuZCA6bm90CiAgICAgICAg
IApAQCAtMjg2LDYgKzI4OCwxMyBAQCBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2Vs
ZWN0b3I6OmF0dHJpYnV0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5t
X2F0dHJpYnV0ZTsKIH0KIAoraW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU2VsZWN0b3I6
OmF0dHJpYnV0ZUNhbm9uaWNhbExvd2VyTmFtZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzQXR0
cmlidXRlU2VsZWN0b3IoKSk7CisgICAgQVNTRVJUKG1faGFzUmFyZURhdGEpOworICAgIHJldHVy
biBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGVDYW5vbmljYWxMb3dlck5hbWU7Cit9CisK
IGlubGluZSBib29sIENTU1NlbGVjdG9yOjptYXRjaGVzUHNldWRvRWxlbWVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fcHNldWRvVHlwZSA9PSBQc2V1ZG9Vbmtub3duKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCA3MmUwNmExNzVjZTQyNmQzYmFiYTI4NjUxNGE3NGNh
OGNkODI2Yzc1Li4wYzdjMGI2YWVjOTBjNzhjZDA3MDU4Y2IwNDVlZjk2ZDQwOTEzYTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMzU0LDE2ICszNTQsMTYgQEAg
c3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVNYXRjaGVzKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmli
dXRlSXRlbSwgQ1NTU2VsZWN0b3I6Ok0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJv
b2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6TWF0
Y2ggbWF0Y2gsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0ciwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzZWxlY3RvclZhbHVlLCBib29sIGNhc2VTZW5zaXRpdmUpCitzdGF0aWMgYm9vbCBh
bnlBdHRyaWJ1dGVNYXRjaGVzKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBz
ZWxlY3RvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgc2VsZWN0b3JBdHRyLCBib29sIGNhc2VTZW5z
aXRpdmUpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQtPmhhc0F0dHJpYnV0ZXNXaXRob3V0VXBkYXRl
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudC0+YXR0cmlidXRlQ291bnQo
KTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlSXRlbSA9IGVsZW1l
bnQtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVJdGVtLT5tYXRj
aGVzKHNlbGVjdG9yQXR0cikpCisgICAgICAgIGlmICghYXR0cmlidXRlSXRlbS0+bWF0Y2hlcyhz
ZWxlY3RvckF0dHIucHJlZml4KCksIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSA/IHNlbGVjdG9y
LT5hdHRyaWJ1dGVDYW5vbmljYWxMb3dlck5hbWUoKSA6IHNlbGVjdG9yQXR0ci5sb2NhbE5hbWUo
KSwgc2VsZWN0b3JBdHRyLm5hbWVzcGFjZVVSSSgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZU1hdGNoZXMoYXR0cmlidXRlSXRlbSwgbWF0Y2gs
IHNlbGVjdG9yVmFsdWUsIGNhc2VTZW5zaXRpdmUpKQorICAgICAgICBpZiAoYXR0cmlidXRlVmFs
dWVNYXRjaGVzKGF0dHJpYnV0ZUl0ZW0sIHN0YXRpY19jYXN0PENTU1NlbGVjdG9yOjpNYXRjaD4o
c2VsZWN0b3ItPm1fbWF0Y2gpLCBzZWxlY3Rvci0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM4NywxNCArMzg3LDEzIEBAIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCYgY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0lEKCkgJiYgZWxl
bWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSA9PSBzZWxlY3Rvci0+dmFsdWUoKTsKIAogICAg
IGlmIChzZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7Ci0gICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHIgPSBzZWxlY3Rvci0+YXR0cmlidXRlKCk7Ci0KICAgICAgICAgaWYg
KCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ciA9IHNlbGVjdG9yLT5hdHRyaWJ1dGUo
KTsKICAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gIW1fZG9jdW1lbnRJc0hUTUwgfHwgSFRN
TERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoYXR0cik7CiAKLSAgICAgICAgaWYg
KCFhbnlBdHRyaWJ1dGVNYXRjaGVzKGVsZW1lbnQsIHN0YXRpY19jYXN0PENTU1NlbGVjdG9yOjpN
YXRjaD4oc2VsZWN0b3ItPm1fbWF0Y2gpLCBhdHRyLCBzZWxlY3Rvci0+dmFsdWUoKSwgY2FzZVNl
bnNpdGl2ZSkpCisgICAgICAgIGlmICghYW55QXR0cmlidXRlTWF0Y2hlcyhlbGVtZW50LCBzZWxl
Y3RvciwgYXR0ciwgY2FzZVNlbnNpdGl2ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKaW5kZXggMGY2YjA0Y2JiYzcw
OTM0OTRhYTNkNDViN2YwY2U3MTdlMDg4OThmMi4uNGNkOTYwZjhlZDNjZmIyYWRjYmI2YmZmNjhl
ODE2ZjhkNTNmOWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaApAQCAtOTEs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgdGFnTWF0Y2hlcyhjb25zdCBFbGVt
ZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHN0YXRpYyBib29sIGlzQ29tbW9uUHNl
dWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwogICAgIHN0YXRpYyBib29sIG1h
dGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgYm9vbCBj
aGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBz
ZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKTsKKyAg
ICBzdGF0aWMgYm9vbCBjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBD
U1NTZWxlY3RvciosIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nSW1wbCogdmFsdWUpOwogCiAgICAgZW51bSBMaW5rTWF0Y2hNYXNr
IHsgTWF0Y2hMaW5rID0gMSwgTWF0Y2hWaXNpdGVkID0gMiwgTWF0Y2hBbGwgPSBNYXRjaExpbmsg
fCBNYXRjaFZpc2l0ZWQgfTsKICAgICBzdGF0aWMgdW5zaWduZWQgZGV0ZXJtaW5lTGlua01hdGNo
VHlwZShjb25zdCBDU1NTZWxlY3RvciopOwpAQCAtMTI4LDE0ICsxMjgsMTUgQEAgaW5saW5lIGJv
b2wgU2VsZWN0b3JDaGVja2VyOjp0YWdNYXRjaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFF1YWxpZmllZE4KICAgICByZXR1cm4gbmFtZXNwYWNlVVJJID09IHN0YXJBdG9tIHx8IG5h
bWVzcGFjZVVSSSA9PSBlbGVtZW50LT5uYW1lc3BhY2VVUkkoKTsKIH0KIAotaW5saW5lIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nSW1wbCogdmFsdWUpCitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
RXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yLCBjb25zdCBRdWFsaWZpZWROYW1lJiBzZWxlY3RvckF0dHJpYnV0ZU5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZ0ltcGwqIHZhbHVlKQogewogICAgIGlmICghZWxlbWVudC0+aGFzQXR0
cmlidXRlc1dpdGhvdXRVcGRhdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpID8gc2Vs
ZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvd2VyTmFtZSgpIDogc2VsZWN0b3JBdHRyaWJ1dGVO
YW1lLmxvY2FsTmFtZSgpOwogICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50LT5hdHRyaWJ1dGVD
b3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAg
ICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVJdGVtKGkp
OwotICAgICAgICBpZiAoYXR0cmlidXRlLT5tYXRjaGVzKHNlbGVjdG9yQXR0cmlidXRlTmFtZSkg
JiYgKCF2YWx1ZSB8fCBhdHRyaWJ1dGUtPnZhbHVlKCkuaW1wbCgpID09IHZhbHVlKSkKKyAgICAg
ICAgaWYgKGF0dHJpYnV0ZS0+bWF0Y2hlcyhzZWxlY3RvckF0dHJpYnV0ZU5hbWUucHJlZml4KCks
IGxvY2FsTmFtZSwgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpKSAmJiAoIXZh
bHVlIHx8IGF0dHJpYnV0ZS0+dmFsdWUoKS5pbXBsKCkgPT0gdmFsdWUpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguY3BwCmluZGV4IDg0ZmNhZWUzNTg2NDZkMzRj
MTY1YzNjNDE0ZDUzM2IzMzJhOTJmZGMuLmJkYzUxNDRhZDMxMWQ0ZTU4Yzc1OGE1NWQ5ZDU1OTQw
Y2FhNmE3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJG
YXN0UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlckZhc3RQ
YXRoLmNwcApAQCAtODUsNyArODUsNyBAQCBpbmxpbmUgYm9vbCBjaGVja0lEVmFsdWUoY29uc3Qg
RWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogCiBpbmxpbmUg
Ym9vbCBjaGVja0V4YWN0QXR0cmlidXRlVmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29u
c3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogewotICAgIHJldHVybiBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrRXhhY3RBdHRyaWJ1dGUoZWxlbWVudCwgc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLCBzZWxl
Y3Rvci0+dmFsdWUoKS5pbXBsKCkpOworICAgIHJldHVybiBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
RXhhY3RBdHRyaWJ1dGUoZWxlbWVudCwgc2VsZWN0b3IsIHNlbGVjdG9yLT5hdHRyaWJ1dGUoKSwg
c2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKIH0KIAogaW5saW5lIGJvb2wgY2hlY2tUYWdWYWx1
ZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyRmFzdFBhdGguaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJGYXN0UGF0aC5oCmluZGV4IDZjOGUz
Y2MzZDk4NDkzY2FjZTg5MThiODJiZjQ1YjcxMDk2ZjNjMmIuLmYxZDEwNDU1NWYxNmQwYzNiMjFk
MzcxN2UzN2NmOWFmNTc4MTJiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXJGYXN0UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXJGYXN0UGF0aC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiBpbmxpbmUgYm9vbCBT
ZWxlY3RvckNoZWNrZXJGYXN0UGF0aDo6bWF0Y2hlc1JpZ2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9y
KCkgY29uc3QKIHsKICAgICBpZiAobV9zZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
RXhhY3QgfHwgbV9zZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6U2V0KQotICAgICAg
ICByZXR1cm4gU2VsZWN0b3JDaGVja2VyOjpjaGVja0V4YWN0QXR0cmlidXRlKG1fZWxlbWVudCwg
bV9zZWxlY3Rvci0+YXR0cmlidXRlKCksIG1fc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKKyAg
ICAgICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tFeGFjdEF0dHJpYnV0ZShtX2VsZW1l
bnQsIG1fc2VsZWN0b3IsIG1fc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLCBtX3NlbGVjdG9yLT52YWx1
ZSgpLmltcGwoKSk7CiAgICAgQVNTRVJUKCFtX3NlbGVjdG9yLT5pc0F0dHJpYnV0ZVNlbGVjdG9y
KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHJpYnV0ZS5oCmluZGV4IDRhMmZj
YWQzZmQ3NmRmMjkwZmY0YmQ2ZTcwODQ0ODgxMzcxNWUwMTguLjYxYzllYzVhOGYyNmRlN2RjMWYw
ODRkNWU2YjMyMjkxOTYzNDZkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRy
aWJ1dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWUuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVS
SSkgY29uc3Q7CiAKICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
IHsgbV92YWx1ZSA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRQcmVmaXgoY29uc3QgQXRvbWljU3Ry
aW5nJiBwcmVmaXgpIHsgbV9uYW1lLnNldFByZWZpeChwcmVmaXgpOyB9CkBAIC03MiwxMSArNzIs
MTEgQEAgcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV92YWx1ZTsKIH07CiAKLWlubGluZSBi
b29sIEF0dHJpYnV0ZTo6bWF0Y2hlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBxdWFsaWZpZWROYW1l
KSBjb25zdAoraW5saW5lIGJvb2wgQXR0cmlidXRlOjptYXRjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkkpIGNvbnN0CiB7Ci0gICAgaWYgKHF1YWxpZmllZE5hbWUubG9jYWxO
YW1lKCkgIT0gbG9jYWxOYW1lKCkpCisgICAgaWYgKGxvY2FsTmFtZSAhPSB0aGlzLT5sb2NhbE5h
bWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBxdWFsaWZpZWROYW1lLnBy
ZWZpeCgpID09IHN0YXJBdG9tIHx8IHF1YWxpZmllZE5hbWUubmFtZXNwYWNlVVJJKCkgPT0gbmFt
ZXNwYWNlVVJJKCk7CisgICAgcmV0dXJuIHByZWZpeCA9PSBzdGFyQXRvbSB8fCBuYW1lc3BhY2VV
UkkgPT0gdGhpcy0+bmFtZXNwYWNlVVJJKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzOTQ0OGQ4MjcyZWQwZDQwZTI0NzIzN2UyMmVmYjAzYmQ5YWUwODFmLi41OThkYThj
YTQyM2VmZGMyYTQxODY2NDM0NTExNzA4ZjE4ZWU0MGM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTMtMDgtMDEgIFJvYiBCdWlzICA8cndsYnVpc0B3ZWJraXQub3JnPgorCisgICAgICAgIHNl
bGVjdG9ycyBzaG91bGQgbWF0Y2ggYXR0cmlidXRlIG5hbWUgd2l0aCBjYXNlIHNlbnNpdGl2aXR5
IGJhc2VkIG9uIGVsZW1lbnQgJiBkb2N1bWVudCB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTE1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc3VsdHMgbWF0Y2hlcyBGaXJlRm94IG5pZ2h0bHku
CisKKyAgICAgICAgKiBmYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRybmFtZS1jYXNlLWluc2Vuc2l0
aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vU2VsZWN0b3JBUEkv
YXR0cm5hbWUtY2FzZS1pbnNlbnNpdGl2ZS5odG1sOiBDaGVjayB0aGF0IGluIEhUTUwgZG9jdW1l
bnRzIENTUyBzZWxlY3RvcnMKKyAgICAgICAgdXNlIGNhc2UtaW5zZW5zaXRpdmUgYXR0cmlidXRl
IG5hbWUgbWF0Y2hpbmcgZm9yIEhUTUwgZWxlbWVudHMsIGNhc2Utc2Vuc2l0aXZlIG90aGVyd2lz
ZS4KKyAgICAgICAgKiBmYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRybmFtZS1jYXNlLXNlbnNpdGl2
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL1NlbGVjdG9yQVBJL2F0
dHJuYW1lLWNhc2Utc2Vuc2l0aXZlLnhodG1sOiBDaGVjayB0aGF0IGluIFhIVE1MIGRvY3VtZW50
cyBDU1Mgc2VsZWN0b3JzCisgICAgICAgIGFsd2F5cyB1c2UgY2FzZS1zZW5zaXRpdmUgYXR0cmli
dXRlIG5hbWUgbWF0Y2hpbmcuCisgICAgICAgICogc3ZnL2Nzcy9jYXNlLXNlbnNpdGl2ZS1hdHRy
bmFtZS1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3NzL2Nh
c2Utc2Vuc2l0aXZlLWF0dHJuYW1lLXNlbGVjdG9ycy5odG1sOiBDaGVjayB0aGF0IGluIEhUTUwg
ZG9jdW1lbnRzIENTUyBzZWxlY3RvcnMgaW4gc3R5bGVzaGVldHMKKyAgICAgICAgdXNlIGNhc2Ut
aW5zZW5zaXRpdmUgYXR0cmlidXRlIG5hbWUgbWF0Y2hpbmcgZm9yIEhUTUwgZWxlbWVudHMsIGNh
c2Utc2Vuc2l0aXZlIG90aGVyd2lzZS4KKwogMjAxMy0wNy0zMSAgUm9iIEJ1aXMgIDxyd2xidWlz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29udmVydCBTVkcgdGVzdCBmcm9tIHIxNTM0MzMgdG8g
YSByZWZ0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9h
dHRybmFtZS1jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNhc2UtaW5zZW5zaXRpdmUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNkMDY1MzQ5ZGU3NTdjOWNhOTU2NzExYTA4MzgzYWY3NDRiZmE2M2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3RvckFQSS9hdHRybmFtZS1j
YXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI4IEBACitQQVNTIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltiYVJdJykgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2JhcicpCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXInKS53ZWJraXRNYXRjaGVz
U2VsZWN0b3IoJ2RpdltiYVJdJykgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCdkaXZbYmFyXScpIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXInKQorUEFTUyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYmFyJykud2Via2l0TWF0Y2hlc1NlbGVjdG9yKCdkaXZbYmFy
XScpIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W0JBUl0nKSBpcyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFyJykKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JhcicpLndlYmtpdE1hdGNoZXNTZWxlY3RvcignZGl2W0JBUl0nKSBpcyB0cnVlCitQQVNT
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdltiQVJdJykgaXMgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2JhcicpCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXInKS53ZWJraXRN
YXRjaGVzU2VsZWN0b3IoJ2RpdltiQVJdJykgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdkaXZbYmFSPSIxMCJdJykgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jhcicp
CitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXInKS53ZWJraXRNYXRjaGVzU2VsZWN0
b3IoJ2RpdltiYVI9IjEwIl0nKSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2RpdltiYXI9IjEwIl0nKSBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFyJykKK1BBU1Mg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhcicpLndlYmtpdE1hdGNoZXNTZWxlY3RvcignZGl2
W2Jhcj0iMTAiXScpIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W0JB
Uj0iMTAiXScpIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYXInKQorUEFTUyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYmFyJykud2Via2l0TWF0Y2hlc1NlbGVjdG9yKCdkaXZbQkFSPSIx
MCJdJykgaXMgdHJ1ZQorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXZbYkFSPSIxMCJd
JykgaXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhcicpCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdiYXInKS53ZWJraXRNYXRjaGVzU2VsZWN0b3IoJ2RpdltiQVI9IjEwIl0nKSBp
cyB0cnVlCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3BhdGhbcGF0aExlbmd0aF0nKSBp
cyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGEnKQorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncGEnKS53ZWJraXRNYXRjaGVzU2VsZWN0b3IoJ3BhdGhbcGF0aExlbmd0aF0nKSBpcyB0
cnVlCitQQVNTIGNvbnRlbnQucXVlcnlTZWxlY3RvcigncGF0aFtwYXRobGVuZ3RoXScpIGlzIG51
bGwKK1BBU1MgY29udGVudC5xdWVyeVNlbGVjdG9yKCdwYXRoW3BhdGhMZW5nVGhdJykgaXMgbnVs
bAorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdwYXRoW3BhdGhMZW5ndGg9IjIwMCJdJykg
aXMgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhJykKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3BhJykud2Via2l0TWF0Y2hlc1NlbGVjdG9yKCdwYXRoW3BhdGhMZW5ndGg9IjIwMCJd
JykgaXMgdHJ1ZQorUEFTUyBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJ3BhdGhbcGF0aGxlbmd0aD0i
MjAwIl0nKSBpcyBudWxsCitQQVNTIGNvbnRlbnQucXVlcnlTZWxlY3RvcigncGF0aFtwYXRoTGVu
Z1RoPSIyMDAiXScpIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9TZWxlY3Rv
ckFQSS9hdHRybmFtZS1jYXNlLWluc2Vuc2l0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9TZWxlY3RvckFQSS9hdHRybmFtZS1jYXNlLWluc2Vuc2l0aXZlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjBhMmFmZDg5OTAyOWVkNjVjMDcxZGE4NGM4ZTAxNmU2ZWQzOGU3YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNhc2UtaW5zZW5z
aXRpdmUuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDwhLS0gQ2hlY2sgdGhhdCBpbiBIVE1MIGRvY3Vt
ZW50cyBDU1Mgc2VsZWN0b3JzIHVzZSBjYXNlLWluc2Vuc2l0aXZlIGF0dHJpYnV0ZSBuYW1lIG1h
dGNoaW5nIGZvciBIVE1MIGVsZW1lbnRzLCBjYXNlLXNlbnNpdGl2ZSBvdGhlcndpc2UuIC0tPgor
ICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgorICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25l
Ij4KKyAgICAgICAgICAgIDxkaXYgYmFSPSIxMCIgaWQ9ImJhciI+PC9kaXY+CisKKyAgICAgICAg
ICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgICAgICAgICAg
ICAgICA8cGF0aCBpZD0icGEiIHBhdGhMZW5ndGg9IjIwMCIvPgorICAgICAgICAgICAgPC9zdmc+
CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBj
b250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tNYXRjaGluZ1NlbGVjdG9yKHNlbGVjdG9yLCBlbGVtZW50SWQpIHsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCciICsgc2VsZWN0b3IgKyAi
JykiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyBlbGVtZW50SWQgKyAiJykiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyBlbGVt
ZW50SWQgKyAiJykud2Via2l0TWF0Y2hlc1NlbGVjdG9yKCciICsgc2VsZWN0b3IgKyAiJykiKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrTm9uTWF0Y2hpbmdTZWxlY3Rvcihz
ZWxlY3RvcikgeworICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCJjb250ZW50LnF1ZXJ5U2VsZWN0
b3IoJyIgKyBzZWxlY3RvciArICInKSIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSFRNTCBz
aG91bGQgYmUgbWF0Y2hlZCBjYXNlLWluc2Vuc2l0aXZlCisgICAgICAgIGNoZWNrTWF0Y2hpbmdT
ZWxlY3RvcignZGl2W2JhUl0nLCAiYmFyIik7CisgICAgICAgIGNoZWNrTWF0Y2hpbmdTZWxlY3Rv
cignZGl2W2Jhcl0nLCAiYmFyIik7CisgICAgICAgIGNoZWNrTWF0Y2hpbmdTZWxlY3RvcignZGl2
W0JBUl0nLCAiYmFyIik7CisgICAgICAgIGNoZWNrTWF0Y2hpbmdTZWxlY3RvcignZGl2W2JBUl0n
LCAiYmFyIik7CisgICAgICAgIGNoZWNrTWF0Y2hpbmdTZWxlY3RvcignZGl2W2JhUj0iMTAiXScs
ICJiYXIiKTsKKyAgICAgICAgY2hlY2tNYXRjaGluZ1NlbGVjdG9yKCdkaXZbYmFyPSIxMCJdJywg
ImJhciIpOworICAgICAgICBjaGVja01hdGNoaW5nU2VsZWN0b3IoJ2RpdltCQVI9IjEwIl0nLCAi
YmFyIik7CisgICAgICAgIGNoZWNrTWF0Y2hpbmdTZWxlY3RvcignZGl2W2JBUj0iMTAiXScsICJi
YXIiKTsKKworICAgICAgICAvLyBub24gSFRNTCBzaG91bGQgYmUgbWF0Y2hlZCBjYXNlLXNlbnNp
dGl2ZQorICAgICAgICBjaGVja01hdGNoaW5nU2VsZWN0b3IoJ3BhdGhbcGF0aExlbmd0aF0nLCAi
cGEiKTsKKyAgICAgICAgY2hlY2tOb25NYXRjaGluZ1NlbGVjdG9yKCdwYXRoW3BhdGhsZW5ndGhd
Jyk7CisgICAgICAgIGNoZWNrTm9uTWF0Y2hpbmdTZWxlY3RvcigncGF0aFtwYXRoTGVuZ1RoXScp
OworICAgICAgICBjaGVja01hdGNoaW5nU2VsZWN0b3IoJ3BhdGhbcGF0aExlbmd0aD0iMjAwIl0n
LCAicGEiKTsKKyAgICAgICAgY2hlY2tOb25NYXRjaGluZ1NlbGVjdG9yKCdwYXRoW3BhdGhsZW5n
dGg9IjIwMCJdJyk7CisgICAgICAgIGNoZWNrTm9uTWF0Y2hpbmdTZWxlY3RvcigncGF0aFtwYXRo
TGVuZ1RoPSIyMDAiXScpOworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNh
c2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9y
QVBJL2F0dHJuYW1lLWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjFk
YWJlMGU1Yjc2YzU4MjY4OGEzMDMwNmNhZTE1NjkyZGExMTgxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvYXR0cm5hbWUtY2FzZS1zZW5zaXRpdmUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignZGl2W2JhUl0nKSBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFyJykKK1BBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhcicpLndlYmtpdE1hdGNoZXNTZWxlY3RvcignZGl2W2Jh
Ul0nKSBpcyB0cnVlCitQQVNTIGNvbnRlbnQucXVlcnlTZWxlY3RvcignZGl2W2Jhcl0nKSBpcyBu
dWxsCitQQVNTIGNvbnRlbnQucXVlcnlTZWxlY3RvcignZGl2W0JBUl0nKSBpcyBudWxsCitQQVNT
IGNvbnRlbnQucXVlcnlTZWxlY3RvcignZGl2W2JBUl0nKSBpcyBudWxsCitQQVNTIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ2RpdltiYVI9IjEwIl0nKSBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYmFyJykKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhcicpLndlYmtpdE1hdGNo
ZXNTZWxlY3RvcignZGl2W2JhUj0iMTAiXScpIGlzIHRydWUKK1BBU1MgY29udGVudC5xdWVyeVNl
bGVjdG9yKCdkaXZbYmFyPSIxMCJdJykgaXMgbnVsbAorUEFTUyBjb250ZW50LnF1ZXJ5U2VsZWN0
b3IoJ2RpdltCQVI9IjEwIl0nKSBpcyBudWxsCitQQVNTIGNvbnRlbnQucXVlcnlTZWxlY3Rvcign
ZGl2W2JBUj0iMTAiXScpIGlzIG51bGwKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigncGF0
aFtwYXRoTGVuZ3RoXScpIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYScpCitQQVNTIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYScpLndlYmtpdE1hdGNoZXNTZWxlY3RvcigncGF0aFtw
YXRoTGVuZ3RoXScpIGlzIHRydWUKK1BBU1MgY29udGVudC5xdWVyeVNlbGVjdG9yKCdwYXRoW3Bh
dGhsZW5ndGhdJykgaXMgbnVsbAorUEFTUyBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJ3BhdGhbcGF0
aExlbmdUaF0nKSBpcyBudWxsCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3BhdGhbcGF0
aExlbmd0aD0iMjAwIl0nKSBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGEnKQorUEFTUyBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGEnKS53ZWJraXRNYXRjaGVzU2VsZWN0b3IoJ3BhdGhb
cGF0aExlbmd0aD0iMjAwIl0nKSBpcyB0cnVlCitQQVNTIGNvbnRlbnQucXVlcnlTZWxlY3Rvcign
cGF0aFtwYXRobGVuZ3RoPSIyMDAiXScpIGlzIG51bGwKK1BBU1MgY29udGVudC5xdWVyeVNlbGVj
dG9yKCdwYXRoW3BhdGhMZW5nVGg9IjIwMCJdJykgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2F0dHJuYW1lLWNhc2Utc2Vuc2l0aXZlLnhodG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vU2VsZWN0b3JBUEkvYXR0cm5hbWUtY2FzZS1zZW5zaXRpdmUueGh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTVmZTVhY2ViZDY1MWJkZWYyMWY3MWI3NGVlOTI5NGM2ZWQ3MzhhMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1NlbGVjdG9yQVBJL2F0dHJu
YW1lLWNhc2Utc2Vuc2l0aXZlLnhodG1sCkBAIC0wLDAgKzEsNTAgQEAKKzw/eG1sIHZlcnNpb249
IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgaHRtbCAKKyAgICAgUFVCTElDICIt
Ly9XM0MvL0RURCBYSFRNTCAxLjEgU3RyaWN0Ly9FTiIKKyAgICAgImh0dHA6Ly93d3cudzMub3Jn
L1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDwhLS0gQ2hlY2sgdGhhdCBpbiBYSFRNTCBkb2N1bWVudHMg
Q1NTIHNlbGVjdG9ycyBhbHdheXMgdXNlIGNhc2Utc2Vuc2l0aXZlIGF0dHJpYnV0ZSBuYW1lIG1h
dGNoaW5nLiAtLT4KKyAgICA8ZGl2IGlkPSJjb250ZW50Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
ZGlzcGxheTogbm9uZSI+CisgICAgICAgICAgICA8ZGl2IGJhUj0iMTAiIGlkPSJiYXIiPjwvZGl2
PgorCisgICAgICAgICAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+
CisgICAgICAgICAgICAgICAgPHBhdGggaWQ9InBhIiBwYXRoTGVuZ3RoPSIyMDAiLz4KKyAgICAg
ICAgICAgIDwvc3ZnPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iik7
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrTWF0Y2hpbmdTZWxlY3RvcihzZWxlY3RvciwgZWxlbWVu
dElkKSB7CisgICAgICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignIiAr
IHNlbGVjdG9yICsgIicpIiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgZWxlbWVudElk
ICsgIicpIik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCciICsgZWxlbWVudElkICsgIicpLndlYmtpdE1hdGNoZXNTZWxlY3RvcignIiArIHNlbGVj
dG9yICsgIicpIik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja05vbk1hdGNo
aW5nU2VsZWN0b3Ioc2VsZWN0b3IpIHsKKyAgICAgICAgICAgIHNob3VsZEJlTnVsbCgiY29udGVu
dC5xdWVyeVNlbGVjdG9yKCciICsgc2VsZWN0b3IgKyAiJykiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIGV2ZXJ5dGhpbmcgc2hvdWxkIG1hdGNoIGNhc2Utc2Vuc2l0aXZlCisgICAgICAgIGNo
ZWNrTWF0Y2hpbmdTZWxlY3RvcignZGl2W2JhUl0nLCAiYmFyIik7CisgICAgICAgIGNoZWNrTm9u
TWF0Y2hpbmdTZWxlY3RvcignZGl2W2Jhcl0nLCAiYmFyIik7CisgICAgICAgIGNoZWNrTm9uTWF0
Y2hpbmdTZWxlY3RvcignZGl2W0JBUl0nLCAiYmFyIik7CisgICAgICAgIGNoZWNrTm9uTWF0Y2hp
bmdTZWxlY3RvcignZGl2W2JBUl0nLCAiYmFyIik7CisgICAgICAgIGNoZWNrTWF0Y2hpbmdTZWxl
Y3RvcignZGl2W2JhUj0iMTAiXScsICJiYXIiKTsKKyAgICAgICAgY2hlY2tOb25NYXRjaGluZ1Nl
bGVjdG9yKCdkaXZbYmFyPSIxMCJdJywgImJhciIpOworICAgICAgICBjaGVja05vbk1hdGNoaW5n
U2VsZWN0b3IoJ2RpdltCQVI9IjEwIl0nLCAiYmFyIik7CisgICAgICAgIGNoZWNrTm9uTWF0Y2hp
bmdTZWxlY3RvcignZGl2W2JBUj0iMTAiXScsICJiYXIiKTsKKworICAgICAgICBjaGVja01hdGNo
aW5nU2VsZWN0b3IoJ3BhdGhbcGF0aExlbmd0aF0nLCAicGEiKTsKKyAgICAgICAgY2hlY2tOb25N
YXRjaGluZ1NlbGVjdG9yKCdwYXRoW3BhdGhsZW5ndGhdJyk7CisgICAgICAgIGNoZWNrTm9uTWF0
Y2hpbmdTZWxlY3RvcigncGF0aFtwYXRoTGVuZ1RoXScpOworICAgICAgICBjaGVja01hdGNoaW5n
U2VsZWN0b3IoJ3BhdGhbcGF0aExlbmd0aD0iMjAwIl0nLCAicGEiKTsKKyAgICAgICAgY2hlY2tO
b25NYXRjaGluZ1NlbGVjdG9yKCdwYXRoW3BhdGhsZW5ndGg9IjIwMCJdJyk7CisgICAgICAgIGNo
ZWNrTm9uTWF0Y2hpbmdTZWxlY3RvcigncGF0aFtwYXRoTGVuZ1RoPSIyMDAiXScpOworICAgIDwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N2Zy9jc3MvY2FzZS1zZW5zaXRpdmUtYXR0cm5hbWUtc2VsZWN0b3JzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3N2Zy9jc3MvY2FzZS1zZW5zaXRpdmUtYXR0cm5hbWUtc2VsZWN0b3JzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTMwYzczNWQwMzY3NjZiYWE5YWFlOTgzZTVhNzViM2Vk
ZjZhNTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2Nzcy9jYXNlLXNlbnNp
dGl2ZS1hdHRybmFtZS1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorUEFT
UyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2MSIp
KS5jb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXRoMSIpKS5jb2xvciBpcyAicmdiKDAsIDEyOCwg
MCkiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwYXRoMiIpKS5jb2xvciBpcyAicmdiKDAsIDEyOCwgMCkiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3ZnL2Nzcy9jYXNlLXNlbnNpdGl2ZS1hdHRybmFtZS1zZWxlY3RvcnMuaHRtbCBiL0xheW91dFRl
c3RzL3N2Zy9jc3MvY2FzZS1zZW5zaXRpdmUtYXR0cm5hbWUtc2VsZWN0b3JzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTljNjMzZjE2NmJiMjQ3NzViMzkzMjA5MjJlZDk3YzA1OWZjZjMzNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9jc3MvY2FzZS1zZW5zaXRpdmUtYXR0cm5hbWUtc2Vs
ZWN0b3JzLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgZGl2W0JBUl0geworICAgICAg
ICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGF0
aCB7CisgICAgICAgICAgICAgICAgY29sb3I6IHJlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICpbcGF0aExlbmd0aF0geworICAgICAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICpbcGF0aGxlbmd0aF0geworICAgICAgICAgICAgICAgIGNv
bG9yOiByZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqW3BhdGhMZW5ndGg9IjEwMCJd
IHsKKyAgICAgICAgICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAqW3BhdGhsZW5ndGg9IjEwMCJdIHsKKyAgICAgICAgICAgICAgICBjb2xvcjogcmVkOwor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImRpdjEiIGJhUj0iMTAiPjwvZGl2PgorCisgICAgICAgICAgICA8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICAgICAgICAgICAgPHBhdGggaWQ9
InBhdGgxIiBwYXRoTGVuZ3RoPSIyMDAiLz4KKyAgICAgICAgICAgICAgICA8cGF0aCBpZD0icGF0
aDIiIHBhdGhMZW5ndGg9IjEwMCIvPgorICAgICAgICAgICAgPC9zdmc+CisgICAgICAgIDwvZGl2
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tTdHlsZShwcmVm
aXgsIGNvdW50LCBwcm9wZXJ0eSwgdmFsdWUpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMTsgaSA8PSBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgid2lu
ZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIiICsgcHJlZml4
ICsgaSArICJcIikpLiIgKyBwcm9wZXJ0eSwgIlwiIiArIHZhbHVlICsgIlwiIik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjaGVja1N0eWxlKCJkaXYiLCAxLCAiY29sb3IiLCAicmdiKDAs
IDEyOCwgMCkiKTsKKyAgICAgICAgICAgIGNoZWNrU3R5bGUoInBhdGgiLCAyLCAiY29sb3IiLCAi
cmdiKDAsIDEyOCwgMCkiKTsKKworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRhaW5lciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="229810"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>