<?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>73156</bug_id>
          
          <creation_ts>2011-11-25 22:37:13 -0800</creation_ts>
          <short_desc>[Microdata] Implement HTMLPropertiesCollection collection.namedItem()</short_desc>
          <delta_ts>2012-03-07 23:22:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68609</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Arko Saha">arko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>code.vineet</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>dynastpsh</cc>
    
    <cc>gur.trio</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>mike</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>sh919.park</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509328</commentid>
    <comment_count>0</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-11-25 22:37:13 -0800</bug_when>
    <thetext>Support for:
1. collection.namedItem()
2. collection(name)
3. collection[name]
4. collection(index)
5. collection[index]

Specification: http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#htmlpropertiescollection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509329</commentid>
    <comment_count>1</comment_count>
      <attachid>116650</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-11-25 22:46:50 -0800</bug_when>
    <thetext>Created attachment 116650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509330</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-25 22:52:51 -0800</bug_when>
    <thetext>Why do we need custom bindings?  All custom bindings are very buggy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509403</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-26 21:14:53 -0800</bug_when>
    <thetext>Please don&apos;t implement the CustomCall aspect of HTMLProprtiesCollection.  We have much of our other call support on collections and don&apos;t want to add it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509404</commentid>
    <comment_count>4</comment_count>
      <attachid>116650</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-26 21:16:15 -0800</bug_when>
    <thetext>Comment on attachment 116650
Patch

r-ing for removing Call support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509685</commentid>
    <comment_count>5</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-11-28 02:34:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Why do we need custom bindings?  All custom bindings are very buggy.

1. HTMLPropertiesCollection is derived from HTMLCollection. namedItem() method is virtual and returns Node* in HTMLCollection. But as per the specification HTMLPropertiesCollection namedItem() should return PropertyNodeList, which is a different hierarchy i.e, its a simple standalone structure. So I implemented namedItem() method as custom to return NodeList for now.

2. The patch also adds NameGetter support for HTMLPropertiesCollection. So we need to implement this as custom bindings.

Please let me know your thoughts on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509686</commentid>
    <comment_count>6</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-11-28 02:35:45 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 116650 [details])
&gt; r-ing for removing Call support.

Ok. I will remove the CustomCall support for HTMLProprtiesCollection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509694</commentid>
    <comment_count>7</comment_count>
      <attachid>116721</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-11-28 03:03:22 -0800</bug_when>
    <thetext>Created attachment 116721
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509912</commentid>
    <comment_count>8</comment_count>
      <attachid>116721</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 10:05:36 -0800</bug_when>
    <thetext>Comment on attachment 116721
Updated patch

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

We should be able to do this without custom bindings code.

&gt; Source/WebCore/bindings/v8/custom/V8HTMLPropertiesCollectionCustom.cpp:64
&gt; +    if (!info.Holder()-&gt;GetRealNamedPropertyInPrototypeChain(name).IsEmpty())
&gt; +        return notHandledByInterceptor();
&gt; +    if (info.Holder()-&gt;HasRealNamedCallbackProperty(name))
&gt; +        return notHandledByInterceptor();

This pattern is very subtle.  Are you sure you&apos;ve got it right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510769</commentid>
    <comment_count>9</comment_count>
      <attachid>116969</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-11-29 07:56:05 -0800</bug_when>
    <thetext>Created attachment 116969
Updated patch

1. Removed custom bindings code for namedItem() method.
2. Removed V8 custom binding code for NameGetter as V8binding takes care of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542007</commentid>
    <comment_count>10</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-01-24 22:13:56 -0800</bug_when>
    <thetext>Hi Adam Barth, can you please review the patch? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542013</commentid>
    <comment_count>11</comment_count>
      <attachid>116969</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-24 22:25:24 -0800</bug_when>
    <thetext>Comment on attachment 116969
Updated patch

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

This patch confused me.  It looks like there&apos;s a bunch of extra code in here that we don&apos;t need anymore.  Am I confused?

&gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:202
&gt; +    // FIXME: HTML5 specifies that this should return PropertyNodeList.
&gt; +    return !namedItems.isEmpty() ? StaticNodeList::adopt(namedItems) : 0;

So, the nodelist this returns isn&apos;t live?  It&apos;s just static?

&gt; Source/WebCore/html/HTMLPropertiesCollection.h:54
&gt; +    bool canGetItemsForName(const String&amp; name) const;

I&apos;m confused.  Who calls this function?

&gt; Source/WebCore/html/HTMLPropertiesCollection.idl:44
&gt; +        NodeList namedItem(in DOMString name);

This isn&apos;t marked Custom anymore, but you still have the custom bindings code in your patch.  Can we remove that code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544986</commentid>
    <comment_count>12</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-01-30 03:33:40 -0800</bug_when>
    <thetext>(In reply to comment #11)
My comments are inline.

&gt; (From update of attachment 116969 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116969&amp;action=review
&gt; 
&gt; This patch confused me.  It looks like there&apos;s a bunch of extra code in here that we don&apos;t need anymore.  Am I confused?
&gt; 
&gt; &gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:202
&gt; &gt; +    // FIXME: HTML5 specifies that this should return PropertyNodeList.
&gt; &gt; +    return !namedItems.isEmpty() ? StaticNodeList::adopt(namedItems) : 0;
&gt; 
&gt; So, the nodelist this returns isn&apos;t live?  It&apos;s just static?
 
Yes. currently its static, similar as HTMLCollection::namedItem() implementation. HTML5 specifies that this should return PropertyNodeList which is yet to be implemented and will be covered in the upcoming patch.

&gt; &gt; Source/WebCore/html/HTMLPropertiesCollection.idl:44
&gt; &gt; +        NodeList namedItem(in DOMString name);
&gt; 
&gt; This isn&apos;t marked Custom anymore, but you still have the custom bindings code in your patch.  Can we remove that code?

namedItem() method is not custom here and I have removed the related code. The JS custom bindings code is needed for HasNameGetter support for HTMLPropertiesCollection.
example: element.properties[&apos;foo&apos;]

&gt; &gt; Source/WebCore/html/HTMLPropertiesCollection.h:54
&gt; &gt; +    bool canGetItemsForName(const String&amp; name) const;
&gt; 
&gt; I&apos;m confused.  Who calls this function?

This function is getting called from JS custom bindings. 

While retrieving collection[name] (element.properties[&apos;foo&apos;]) in JavaScript -&gt; 
JSHTMLPropertiesCollection::getOwnPropertySlot() calls canGetItemsForName()[JSHTMLPropertiesCollectionCustom.cpp] to check if the items can be retrieved or not based on the name argument passed.

if (canGetItemsForName(exec, static_cast&lt;HTMLPropertiesCollection*&gt;(thisObject-&gt;impl()), propertyName)) {
    slot.setCustom(thisObject, thisObject-&gt;nameGetter);
    return true;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544998</commentid>
    <comment_count>13</comment_count>
      <attachid>124521</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-01-30 04:08:07 -0800</bug_when>
    <thetext>Created attachment 124521
Updated patch

Resolving merge conflicts. Adding JSHTMLPropertiesCollectionCustom.cpp file in xcode project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555210</commentid>
    <comment_count>14</comment_count>
      <attachid>126761</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-13 05:54:04 -0800</bug_when>
    <thetext>Created attachment 126761
Updated patch

Modified code generator to generate code for HTMLPropertiesCollection NamedGetter property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565407</commentid>
    <comment_count>15</comment_count>
      <attachid>126761</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-26 23:52:45 -0800</bug_when>
    <thetext>Comment on attachment 126761
Updated patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

Please describe what the patch is doing.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2235
&gt; +    if ($interfaceName eq &quot;HTMLPropertiesCollection&quot;) {

Maybe you can remove the hard-coding by using [CustomNamedGetter] (or [JSCustomNamedGetter]). https://trac.webkit.org/wiki/WebKitIDL#CustomNamedGetter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565471</commentid>
    <comment_count>16</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-27 01:43:21 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 126761 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126761&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; Please describe what the patch is doing.

Ok, I will update the Changelog.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2235
&gt; &gt; +    if ($interfaceName eq &quot;HTMLPropertiesCollection&quot;) {
&gt; 
&gt; Maybe you can remove the hard-coding by using [CustomNamedGetter] (or [JSCustomNamedGetter]). https://trac.webkit.org/wiki/WebKitIDL#CustomNamedGetter

To use [CustomNamedGetter] or [NamedGetter] we need to define JSPropertiesCollection::canGetItemsForName() and JSPropertiesCollection::nameGetter() in JSPropertiesCollectionCustom.cpp

Please check my previous patch https://bugs.webkit.org/attachment.cgi?id=124521&amp;action=prettypatch. Here I have used [NamedGetter] and defined above functions in JSPropertiesCollection.cpp. Is this approach is correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565545</commentid>
    <comment_count>17</comment_count>
      <attachid>126761</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-27 03:29:53 -0800</bug_when>
    <thetext>Comment on attachment 126761
Updated patch

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

&gt;&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2235
&gt;&gt;&gt; +    if ($interfaceName eq &quot;HTMLPropertiesCollection&quot;) {
&gt;&gt; 
&gt;&gt; Maybe you can remove the hard-coding by using [CustomNamedGetter] (or [JSCustomNamedGetter]). https://trac.webkit.org/wiki/WebKitIDL#CustomNamedGetter
&gt; 
&gt; To use [CustomNamedGetter] or [NamedGetter] we need to define JSPropertiesCollection::canGetItemsForName() and JSPropertiesCollection::nameGetter() in JSPropertiesCollectionCustom.cpp
&gt; 
&gt; Please check my previous patch https://bugs.webkit.org/attachment.cgi?id=124521&amp;action=prettypatch. Here I have used [NamedGetter] and defined above functions in JSPropertiesCollection.cpp. Is this approach is correct?

Sorry, I was confused. You are doing the right thing.

The core problem would be that CodeGeneratorJS.pm does not yet implement non-custom named getters. Currently, no matter if it is [NamedGetter] or [CustomNamedGetter], we need to write custom bindings to WebCore/bindings/js/JS*Custom.cpp. And your patch is trying to avoid the custom bindings (only) for HTMLPropertiesCollection... right? In that case, hard-coding &quot;HTMLPropertiesCollection&quot; would make sense as a first step. (Eventually we should fix CodeGeneratorJS.pm so that it generates the bindings code automatically for [NamedGetter].)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566456</commentid>
    <comment_count>18</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-28 00:22:03 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 126761 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126761&amp;action=review
&gt; The core problem would be that CodeGeneratorJS.pm does not yet implement non-custom named getters. Currently, no matter if it is [NamedGetter] or [CustomNamedGetter], we need to write custom bindings to WebCore/bindings/js/JS*Custom.cpp. And your patch is trying to avoid the custom bindings (only) for HTMLPropertiesCollection... right? In that case, hard-coding &quot;HTMLPropertiesCollection&quot; would make sense as a first step. (Eventually we should fix CodeGeneratorJS.pm so that it generates the bindings code automatically for [NamedGetter].)

Yes, currently CodeGeneratorJS.pm does not generate JS bindings code for [NamedGetter]. In my current patch I have modified the CodeGeneratorJS.pm to avoid JS custom bindings code only for HTMLPropertiesCollection. I will log a separate bug and will fix CodeGeneratorJS.pm.  So that bindings code for [NamedGetter] should get generated automatically for all the interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566457</commentid>
    <comment_count>19</comment_count>
      <attachid>129205</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-28 00:23:09 -0800</bug_when>
    <thetext>Created attachment 129205
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566469</commentid>
    <comment_count>20</comment_count>
      <attachid>129205</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-28 00:45:09 -0800</bug_when>
    <thetext>Comment on attachment 129205
Updated patch

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

Almost looks good to me. Thanks for the patch.

&gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:202
&gt; +    return !namedItems.isEmpty() ? StaticNodeList::adopt(namedItems) : 0;

Nit: return namedItem.isEmpty() ? 0 : StaticNodeList::adopt(namedItems);

&gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:208
&gt; +    getNamedItems(namedItems, name);

Just an out-of-curious question: Don&apos;t you have any concern about the performance of hasNamedItem()? It is a bit wasteful to completely get all named items just to know whether there is at least one item. If you have any concern, maybe you can optimize it (e.g. std::sort would not be necessary). If you do not have the concern, the current patch looks good to me.

&gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:210
&gt; +    return !namedItems.isEmpty() ? true : false;

Nit: return namedItems.isEmpty()? false : true;

&gt; Source/WebCore/html/HTMLPropertiesCollection.h:54
&gt; +    bool hasNamedItem(const AtomicString&amp; name) const;

Nit: &apos;name&apos; is not necessary.

&gt; LayoutTests/fast/dom/MicroData/nameditem-must-be-case-sensitive.html:13
&gt; +shouldBeTrue(&quot;element.properties.namedItem(&apos;foo&apos;).length == &apos;2&apos;&quot;);

shouldBe(&quot;element.properties.namedItem(&apos;foo&apos;).length&quot;, &apos;2&apos;) might be better. It&apos;s up to you, but if you want to use shouldBeTrue(...), please use === instead of ==. The semantics of JavaScript == is really chaos.

The same comment for other test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566479</commentid>
    <comment_count>21</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-28 00:56:38 -0800</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #20)
&gt; (From update of attachment 129205 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129205&amp;action=review
&gt; 
&gt; Almost looks good to me. Thanks for the patch.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:202
&gt; &gt; +    return !namedItems.isEmpty() ? StaticNodeList::adopt(namedItems) : 0;
&gt; 
&gt; Nit: return namedItem.isEmpty() ? 0 : StaticNodeList::adopt(namedItems);

Ok.

&gt; &gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:208
&gt; &gt; +    getNamedItems(namedItems, name);
&gt; 
&gt; Just an out-of-curious question: Don&apos;t you have any concern about the performance of hasNamedItem()? It is a bit wasteful to completely get all named items just to know whether there is at least one item. If you have any concern, maybe you can optimize it (e.g. std::sort would not be necessary). If you do not have the concern, the current patch looks good to me.
&gt; 

Good point. I will optimize hasNamedItem() as you suggested.

&gt; &gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:210
&gt; &gt; +    return !namedItems.isEmpty() ? true : false;
&gt; 
&gt; Nit: return namedItems.isEmpty()? false : true;

Ok, will modify.

&gt; &gt; Source/WebCore/html/HTMLPropertiesCollection.h:54
&gt; &gt; +    bool hasNamedItem(const AtomicString&amp; name) const;
&gt; 
&gt; Nit: &apos;name&apos; is not necessary.

Ok.
 
&gt; &gt; LayoutTests/fast/dom/MicroData/nameditem-must-be-case-sensitive.html:13
&gt; &gt; +shouldBeTrue(&quot;element.properties.namedItem(&apos;foo&apos;).length == &apos;2&apos;&quot;);
&gt; 
&gt; shouldBe(&quot;element.properties.namedItem(&apos;foo&apos;).length&quot;, &apos;2&apos;) might be better. It&apos;s up to you, but if you want to use shouldBeTrue(...), please use === instead of ==. The semantics of JavaScript == is really chaos.
&gt; 
&gt; The same comment for other test cases.

Ok. I will use shouldBeTrue(...) in the test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566480</commentid>
    <comment_count>22</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-28 00:59:44 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; shouldBe(&quot;element.properties.namedItem(&apos;foo&apos;).length&quot;, &apos;2&apos;) might be better. It&apos;s up to you, but if you want to use shouldBeTrue(...), please use === instead of ==. The semantics of JavaScript == is really chaos.
&gt; &gt; 
&gt; &gt; The same comment for other test cases.
&gt; 
&gt; Ok. I will use shouldBeTrue(...) in the test cases.

(Maybe just your typo but for clarification...) I meant shouldBe(...) is better than shouldBeTrue(...) because shouldBe(...) uses === internally. If you want to use shouldBeTrue(...) for some reason, please use === instead of ==.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566483</commentid>
    <comment_count>23</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-28 01:02:44 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; (Maybe just your typo but for clarification...) I meant shouldBe(...) is better than shouldBeTrue(...) because shouldBe(...) uses === internally. If you want to use shouldBeTrue(...) for some reason, please use === instead of ==.

Sorry for the typo, I will use shouldBe(...) in the test cases as per your suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566610</commentid>
    <comment_count>24</comment_count>
      <attachid>129238</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-28 06:34:42 -0800</bug_when>
    <thetext>Created attachment 129238
Updated patch

Incorporating review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566672</commentid>
    <comment_count>25</comment_count>
      <attachid>129238</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-28 07:45:14 -0800</bug_when>
    <thetext>Comment on attachment 129238
Updated patch

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

&gt; Source/WebCore/html/HTMLPropertiesCollection.cpp:210
&gt; +bool HTMLPropertiesCollection::hasNamedItem(const AtomicString&amp; name) const

Thanks for the optimization! But I am a bit afraid that the optimization might be too complicated and error-prone. Now hasNamedItem() looks like a copy &amp; paste of findPropertiesOfAnItem().

How about the following, more &quot;modest&quot; optimization? (I know this is less optimized than your patch though.)

bool HTMLPropertiesCollection::hasNamedItem(const AtomicString&amp; name) const
{
    if (!base()-&gt;isHTMLElement() || !toHTMLElement(base())-&gt;fastHasAttribute(itemscopeAttr))
        return false;

    m_properties.clear();
    findPropetiesOfAnItem(base());
    for (size_t i = 0; i &lt; m_properties.size(); ++i) {
        DOMSettableTokenList* itemProperty = m_properties[i]-&gt;itemProp();
        if (itemProperty-&gt;tokens().contains(name))
            return true;
    }
    return false
}

Anyway, it might be a good idea to split the patch for implementing the named getter and the patch for optimizing it. How about committing this patch with the &quot;modest&quot; optimization for now? If you found that the hasNamedItem() performance is _really_ critical, you can try to optimize hasNamedItem() in another patch. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567375</commentid>
    <comment_count>26</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-28 22:21:31 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 129238 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129238&amp;action=review

&gt; Anyway, it might be a good idea to split the patch for implementing the named getter and the patch for optimizing it. How about committing this patch with the &quot;modest&quot; optimization for now? If you found that the hasNamedItem() performance is _really_ critical, you can try to optimize hasNamedItem() in another patch. WDYT?

Yes, its more modest optimization. For now we can commit the patch with this change. We will optimize hasNamedItem() in another patch as you suggested. Thanks for the guidance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567378</commentid>
    <comment_count>27</comment_count>
      <attachid>129388</attachid>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-28 22:26:29 -0800</bug_when>
    <thetext>Created attachment 129388
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567386</commentid>
    <comment_count>28</comment_count>
      <attachid>129388</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-28 22:30:10 -0800</bug_when>
    <thetext>Comment on attachment 129388
Updated patch

Thank you very much for the iterative improvement!

I am not sure if we really need further optimization. If you want to try it, I would recommend you to measure the performance using DROMAEO or SunSpider and see if hasNamedItem() has impact on the practical performance, before you start the optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567396</commentid>
    <comment_count>29</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2012-02-28 22:46:57 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 129388 [details])
&gt; Thank you very much for the iterative improvement!
&gt; 
&gt; I am not sure if we really need further optimization. If you want to try it, I would recommend you to measure the performance using DROMAEO or SunSpider and see if hasNamedItem() has impact on the practical performance, before you start the optimization.

Sure. I will start the optimization only if I found some performance improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567417</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 23:23:07 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 129388:

css3/filters/effect-invert-hw.html bug 79639 (author: cmarrin@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567419</commentid>
    <comment_count>31</comment_count>
      <attachid>129388</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 23:26:09 -0800</bug_when>
    <thetext>Comment on attachment 129388
Updated patch

Clearing flags on attachment: 129388

Committed r109200: &lt;http://trac.webkit.org/changeset/109200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567420</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 23:26:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570563</commentid>
    <comment_count>33</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2012-03-05 04:03:48 -0800</bug_when>
    <thetext>Please add the equivalent for CodeGeneratorV8.pm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573650</commentid>
    <comment_count>34</comment_count>
    <who name="">gur.trio</who>
    <bug_when>2012-03-07 23:22:02 -0800</bug_when>
    <thetext>Please ignore the Comment #33. Not required</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116650</attachid>
            <date>2011-11-25 22:46:50 -0800</date>
            <delta_ts>2011-11-28 03:03:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch_73156.diff</filename>
            <type>text/plain</type>
            <size>31754</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDExLTExLTI1ICAgQXJrbyBT
YWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBI
VE1MUHJvcHJ0aWVzQ29sbGVjdGlvbiBjb2xsZWN0aW9uLm5hbWVkSXRlbSgpLgorICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzE1NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgZm9yIDogY29sbGVj
dGlvbi5uYW1lZEl0ZW0oKSwgY29sbGVjdGlvbihuYW1lKSwgY29sbGVjdGlvbltuYW1lXSwKKyAg
ICAgICAgY29sbGVjdGlvbihpbmRleCksIGNvbGxlY3Rpb25baW5kZXhdLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJl
dHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Rv
bS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0Lmh0bWwKKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBVc2VWOC5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmdldE5hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpjYWxs
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTFByb3Bl
cnRpZXNDb2xsZWN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZWRQcm9w
ZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MUHJvcGVydGll
c0NvbGxlY3Rpb246OmNhbGxBc0Z1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGh0bWwvSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtcyk6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGll
c0NvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBodG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5p
ZGw6CisKIDIwMTEtMTEtMjUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgSW1wbGVtZW50IGFkZEN1ZSBhbmQgcmVtb3ZlQ3VlIGluIFRleHRUcmFjawpJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDExNzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC03OTgs
NiArNzk4LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU3R5bGVFbGVtZW50Q3Vz
dG9tLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwMTE3MykKKysrIFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw2ICsyMDEsNyBAQCB2OCB7
CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4UFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCBcCkBAIC0zMDAsNiAr
MzAxLDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE91dHB1dEVsZW1lbnRDdXN0b20u
Y3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0
b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20uY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Vc2VWOC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5j
bWFrZQkocmV2aXNpb24gMTAxMTczKQorKysgU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwCisg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNw
cAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gMTAxMTczKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC0xODkwLDYgKzE4OTAsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE9i
amVjdEVsZW1lbnRDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hU
TUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20uY3BwJywKQEAgLTIyMTIsNiArMjIxMyw3IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1
dEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDEwMTE3MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MjEwOSw2ICs2MjEwOSw1OCBAQAogCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIK
KwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
IgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAor
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgor
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIgogCQkJCQk+CiAJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyAqIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yCisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQorICogYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dAorICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUlDUk9EQVRBKQorCisjaW5jbHVk
ZSAiSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIkpTTm9kZUxp
c3QuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKKyNp
bmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgSlNWYWx1ZSBnZXROYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24qIGpzUHJvcGVydGllc0NvbGxlY3Rpb24sIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsK
KyAgICBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24qIHByb3BlcnRpZXNDb2xsZWN0aW9uID0gc3Rh
dGljX2Nhc3Q8SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKj4oanNQcm9wZXJ0aWVzQ29sbGVjdGlv
bi0+aW1wbCgpKTsKKyAgICBwcm9wZXJ0aWVzQ29sbGVjdGlvbi0+bmFtZWRJdGVtcyhpZGVudGlm
aWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7CisKKyAgICBpZiAo
bmFtZWRJdGVtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisg
ICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRoaXMgc2hvdWxkIGJlIGEgUHJvcGVy
dHlOb2RlTGlzdC4KKyAgICByZXR1cm4gdG9KUyhleGVjLCBqc1Byb3BlcnRpZXNDb2xsZWN0aW9u
LT5nbG9iYWxPYmplY3QoKSwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgp
KTsKK30KKworYm9vbCBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JO
YW1lKEV4ZWNTdGF0ZSosIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiogcHJvcGVydGllc0NvbGxl
Y3Rpb24sIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3sKKyAgICBWZWN0b3I8UmVm
UHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBwcm9wZXJ0aWVzQ29sbGVjdGlvbi0+bmFtZWRJ
dGVtcyhpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSwgbmFtZWRJdGVtcyk7
CisgICAgcmV0dXJuICFuYW1lZEl0ZW1zLmlzRW1wdHkoKTsKK30KKworSlNWYWx1ZSBKU0hUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
c2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3sKKyAgICBKU0hUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbiogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICByZXR1cm4gZ2V0TmFtZWRJ
dGVtcyhleGVjLCB0aGlzT2JqLCBwcm9wZXJ0eU5hbWUpOworfQorCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTSFRNTFByb3Bl
cnRpZXNDb2xsZWN0aW9uKiBqc1Byb3BlcnRpZXNDb2xsZWN0aW9uID0gc3RhdGljX2Nhc3Q8SlNI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CisgICAgSFRNTFByb3Bl
cnRpZXNDb2xsZWN0aW9uKiBwcm9wZXJ0aWVzQ29sbGVjdGlvbiA9IHN0YXRpY19jYXN0PEhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbio+KGpzUHJvcGVydGllc0NvbGxlY3Rpb24tPmltcGwoKSk7CisK
KyAgICBib29sIG9rOworICAgIFVTdHJpbmcgc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyk7CisgICAgdW5zaWduZWQgaW5kZXggPSBJZGVudGlmaWVyOjp0b1VJbnQzMihz
dHJpbmcsIG9rKTsKKyAgICBpZiAob2spCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUyhleGVjLCBqc1Byb3BlcnRpZXNDb2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVy
dGllc0NvbGxlY3Rpb24tPml0ZW0oaW5kZXgpKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGdldE5hbWVkSXRlbXMoZXhlYywganNQcm9wZXJ0aWVzQ29sbGVjdGlvbiwgSWRlbnRpZmll
cihleGVjLCBzdHJpbmcpKSk7Cit9CisKK0NhbGxUeXBlIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2Fs
bERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjsKKyAg
ICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCitKU1ZhbHVlIEpTSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBnZXROYW1l
ZEl0ZW1zKGV4ZWMsIHRoaXMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYykpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmls
aXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmlj
YXRpb24sCisgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vcgorICogb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1JQ1JPREFUQSkKKworI2luY2x1ZGUgIlY4SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKKyNpbmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhO
b2RlLmgiCisjaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5h
bWVkSXRlbXMoSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBBdG9taWNTdHJp
bmcgbmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBj
b2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOworCisgICAgaWYgKCFuYW1l
ZEl0ZW1zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
CisgICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5hbWVkSXRl
bXMpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRJdGVtKEhUTUxQcm9w
ZXJ0aWVzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3Vt
ZW50KQoreworICAgIHY4OjpMb2NhbDx2ODo6VWludDMyPiBpbmRleCA9IGFyZ3VtZW50LT5Ub0Fy
cmF5SW5kZXgoKTsKKyAgICBpZiAoaW5kZXguSXNFbXB0eSgpKSB7CisgICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGNvbGxlY3Rpb24sIHRvV2ViQ29y
ZVN0cmluZyhhcmd1bWVudC0+VG9TdHJpbmcoKSkpOworCisgICAgICAgIGlmIChyZXN1bHQuSXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBjb2xsZWN0
aW9uLT5pdGVtKGluZGV4LT5VaW50MzJWYWx1ZSgpKTsKKyAgICByZXR1cm4gdG9WOChyZXN1bHQu
cmVsZWFzZSgpKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CisKKyAgICBpZiAo
IWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1l
KS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwor
ICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUp
KQorICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKworICAgIEhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdjhT
dHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSkpOworfQorCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uLm5hbWVkSXRlbSgpIik7CisgICAgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
KiBpbXAgPSBWOEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1w
LCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSkpOworCisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OmNh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS5IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY2FsbEFzRnVuY3Rpb24oKSIp
OworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKKworICAgIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworCisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuIGdldEl0ZW0oaW1wLCBhcmdzWzBdKTsKKwor
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNSUNST0RBVEEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMDExNzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3Miw2ICsxNzIsMjYgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBI
VE1MUHJvcGVydGllcwogICAgIHJldHVybiBtX3Byb3BlcnR5TmFtZXM7CiB9CiAKK3ZvaWQgSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiByZXN1bHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHJl
c3VsdC5pc0VtcHR5KCkpOworCisgICAgbV9wcm9wZXJ0aWVzLmNsZWFyKCk7CisKKyAgICBpZiAo
IWJhc2UoKS0+aXNIVE1MRWxlbWVudCgpIHx8ICF0b0hUTUxFbGVtZW50KGJhc2UoKSktPmZhc3RI
YXNBdHRyaWJ1dGUoaXRlbXNjb3BlQXR0cikpCisgICAgICAgIHJldHVybjsKKworICAgIGZpbmRQ
cm9wZXRpZXNPZkFuSXRlbShiYXNlKCkpOworCisgICAgc3RkOjpzb3J0KG1fcHJvcGVydGllcy5i
ZWdpbigpLCBtX3Byb3BlcnRpZXMuZW5kKCksIGNvbXBhcmVUcmVlT3JkZXIpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
RE9NU2V0dGFibGVUb2tlbkxpc3QqIGl0ZW1Qcm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpXS0+aXRl
bVByb3AoKTsKKyAgICAgICAgaWYgKGl0ZW1Qcm9wZXJ0eS0+dG9rZW5zKCkuY29udGFpbnMobmFt
ZSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fcHJvcGVydGllc1tpXSk7CisgICAgfQor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUlDUk9EQVRB
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bi5oCShyZXZpc2lvbiAxMDExNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBuYW1lcygpIGNvbnN0OworICAgIHZvaWQgbmFtZWRJ
dGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbihQYXNzUmVmUHRy
PE5vZGU+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDEwMTE3MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMy
LDE0IEBAIG1vZHVsZSBodG1sIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlv
bmFsPU1JQ1JPREFUQSwKLSAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAgICAgICAgSGFzSW5kZXhH
ZXR0ZXIsCisgICAgICAgIEhhc05hbWVHZXR0ZXIsCisgICAgICAgIEN1c3RvbUNhbGwKICAgICBd
IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAgICBOb2RlIGl0ZW0o
aW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZ0xpc3QgbmFtZXM7Ci0KLSAgICAgICAgLy8gRklYTUU6IG92ZXJyaWRlIGluaGVyaXRl
ZCBuYW1lZEl0ZW0oKQorICAgICAgICBbQ3VzdG9tXSBOb2RlIG5hbWVkSXRlbShpbiBET01TdHJp
bmcgbmFtZSk7CiAgICAgfTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTE4NykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTEx
LTI1ICAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTWljcm9kYXRh
OiBJbXBsZW1lbnQgSFRNTFByb3BydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0ZW0o
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTU2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
dGVzdCBjYXNlcyBmb3IgY29sbGVjdGlvbi5uYW1lZEl0ZW0oKSwgY29sbGVjdGlvbihuYW1lKSwg
Y29sbGVjdGlvbltuYW1lXSwKKyAgICAgICAgY29sbGVjdGlvbihpbmRleCksIGNvbGxlY3Rpb25b
aW5kZXhdLgorCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJl
LWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
TWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVj
dC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNv
bGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0Lmh0
bWw6IEFkZGVkLgorCiAyMDExLTExLTI1ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBhZGRDdWUgYW5kIHJlbW92ZUN1ZSBpbiBUZXh0
VHJhY2sKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVz
dC1iZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0
YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgbmFtZWRJdGVtIG11
c3QgYmUgY2FzZSBzZW5zaXRpdmUuCisKK0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKK1Nl
dCBhdHRyaWJ1dGU6IGl0ZW1zY29wZSwgdmFsdWU6IGl0ZW1zY29wZQorUEFTUyBlbGVtZW50LnBy
b3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1MgZWxl
bWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQ
QVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPbycpLmxlbmd0aCA9PSAnMScgaXMg
dHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSA9PSBlbGVt
ZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVt
KCdmb28nKVsxXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIGlzIHRydWUKK1BB
U1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJylbMF0gPT0gZWxlbWVudC5jaGls
ZE5vZGVzWzFdLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFt
ZWRJdGVtKCdGT28nKVswXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIGlzIHRy
dWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2Fz
ZS1zZW5zaXRpdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNy
b0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNl
LXNlbnNpdGl2ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRh
LWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1
cmVzIHRoYXQgbmFtZWRJdGVtIG11c3QgYmUgY2FzZSBzZW5zaXRpdmUuPC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdk
aXYnLCB7aXRlbXNjb3BlOiAnaXRlbXNjb3BlJ30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iPjwvZGl2
PjxkaXYgaXRlbXByb3A9ImJhciI+PGRpdiBpdGVtcHJvcD0iRk9PIj48L2Rpdj48ZGl2IGl0ZW1w
cm9wPSJmb28gRk9vIGZvbyI+PC9kaXY+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmF6IHF1eCI+PC9k
aXY+Jyk7CisKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9v
JykubGVuZ3RoID09ICcyJyIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFt
ZWRJdGVtKCdGT08nKS5sZW5ndGggPT0gJzEnIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJv
cGVydGllcy5uYW1lZEl0ZW0oJ0ZPbycpLmxlbmd0aCA9PSAnMSciKTsKKworc2hvdWxkQmVUcnVl
KCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSA9PSBlbGVtZW50LmZpcnN0
Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9v
JylbMV0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVl
KCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT08nKVswXSA9PSBlbGVtZW50LmNoaWxk
Tm9kZXNbMV0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMu
bmFtZWRJdGVtKCdGT28nKVswXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIik7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVy
dGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWlj
cm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEv
bmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBu
YW1lZEl0ZW0gbXVzdCByZXR1cm4gdGhlIGNvcnJlY3QgaXRlbSBwcm9wZXJ0aWVzLgorCitDcmVh
dGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CisKK1Rlc3QgcHJvcGVydGllcy5uYW1lZEl0ZW0obmFt
ZSkuCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCA9PSAnMicg
aXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKS5sZW5ndGggPT0g
JzEnIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmF6JykubGVuZ3Ro
ID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ3F1eCcpLmxl
bmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28n
KVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMu
bmFtZWRJdGVtKCdmb28nKVsxXSA9PSBpdGVtLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVt
LnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKVswXSA9PSBpdGVtLmZpcnN0Q2hpbGQgaXMgdHJ1
ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXonKVswXSA9PSBlbGVtZW50Lmxh
c3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ3F1eCcpWzBd
ID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorCitUZXN0IHByb3BlcnRp
ZXMobmFtZSkuCitQQVNTIGl0ZW0ucHJvcGVydGllcygnZm9vJykubGVuZ3RoID09ICcyJyBpcyB0
cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcygnYmFyJykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQ
QVNTIGl0ZW0ucHJvcGVydGllcygnYmF6JykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0
ZW0ucHJvcGVydGllcygncXV4JykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJv
cGVydGllcygnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRl
bS5wcm9wZXJ0aWVzKCdmb28nKVsxXSA9PSBpdGVtLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBp
dGVtLnByb3BlcnRpZXMoJ2JhcicpWzBdID09IGl0ZW0uZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNT
IGl0ZW0ucHJvcGVydGllcygnYmF6JylbMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQgaXMgdHJ1ZQor
UEFTUyBpdGVtLnByb3BlcnRpZXMoJ3F1eCcpWzBdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0
Q2hpbGQgaXMgdHJ1ZQorCitUZXN0IHByb3BlcnRpZXNbbmFtZV0uCitQQVNTIGl0ZW0ucHJvcGVy
dGllc1snZm9vJ10ubGVuZ3RoID09ICcyJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1sn
YmFyJ10ubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snYmF6J10u
bGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1sncXV4J10ubGVuZ3Ro
ID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snZm9vJ11bMF0gPT0gZWxlbWVu
dC5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydmb28nXVsxXSA9PSBp
dGVtLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2JhciddWzBdID09
IGl0ZW0uZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snYmF6J11bMF0g
PT0gZWxlbWVudC5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ3F1eCdd
WzBdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorCitUZXN0IHByb3Bl
cnRpZXMoaW5kZXgpLgorUEFTUyBpdGVtLnByb3BlcnRpZXMoMCkgPT0gZWxlbWVudC5maXJzdENo
aWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzKDEpID09IGl0ZW0uZmlyc3RDaGlsZCBp
cyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcygyKSA9PSBlbGVtZW50Lmxhc3RDaGlsZCBpcyB0
cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcygzKSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENo
aWxkIGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzW2luZGV4XS4KK1BBU1MgaXRlbS5wcm9wZXJ0
aWVzWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGll
c1sxXSA9PSBpdGVtLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbMl0g
PT0gZWxlbWVudC5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbM10gPT0g
ZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGll
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1l
ZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1
cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IHJldHVybiB0aGUgY29ycmVj
dCBpdGVtIHByb3BlcnRpZXMuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgordmFyIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7fSwgJzxkaXYgaXRlbXByb3A9
ImZvbyIgaWQ9ImlkMSI+PC9kaXY+PGRpdiBpdGVtc2NvcGUgaXRlbXJlZj0iaWQyIGlkMSI+PGRp
diBpdGVtcHJvcD0iZm9vIGJhciI+PC9kaXY+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmF6IiBpZD0i
aWQyIj48ZGl2IGl0ZW1wcm9wPSJxdXgiPicpOwordmFyIGl0ZW0gPSBlbGVtZW50LmNoaWxkTm9k
ZXNbMV07Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworCitkZWJ1ZygiPGJy
PlRlc3QgcHJvcGVydGllcy5uYW1lZEl0ZW0obmFtZSkuIik7CitzaG91bGRCZVRydWUoIml0ZW0u
cHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCA9PSAnMiciKTsKK3Nob3VsZEJlVHJ1
ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmFyJykubGVuZ3RoID09ICcxJyIpOworc2hv
dWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXonKS5sZW5ndGggPT0gJzEn
Iik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ3F1eCcpLmxlbmd0
aCA9PSAnMSciKTsKKworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdm
b28nKVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9w
ZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMV0gPT0gaXRlbS5maXJzdENoaWxkIik7CitzaG91bGRC
ZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2JhcicpWzBdID09IGl0ZW0uZmlyc3RD
aGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXonKVsw
XSA9PSBlbGVtZW50Lmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMu
bmFtZWRJdGVtKCdxdXgnKVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIik7CisK
K2RlYnVnKCI8YnI+VGVzdCBwcm9wZXJ0aWVzKG5hbWUpLiIpOworc2hvdWxkQmVUcnVlKCJpdGVt
LnByb3BlcnRpZXMoJ2ZvbycpLmxlbmd0aCA9PSAnMiciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5w
cm9wZXJ0aWVzKCdiYXInKS5sZW5ndGggPT0gJzEnIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJv
cGVydGllcygnYmF6JykubGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3Bl
cnRpZXMoJ3F1eCcpLmxlbmd0aCA9PSAnMSciKTsKKworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3Bl
cnRpZXMoJ2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJp
dGVtLnByb3BlcnRpZXMoJ2ZvbycpWzFdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVU
cnVlKCJpdGVtLnByb3BlcnRpZXMoJ2JhcicpWzBdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hv
dWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMoJ2JheicpWzBdID09IGVsZW1lbnQubGFzdENoaWxk
Iik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcygncXV4JylbMF0gPT0gZWxlbWVudC5s
YXN0Q2hpbGQuZmlyc3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllc1tuYW1l
XS4iKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGggPT0gJzIn
Iik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snYmFyJ10ubGVuZ3RoID09ICcxJyIp
Oworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2JheiddLmxlbmd0aCA9PSAnMSciKTsK
K3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydxdXgnXS5sZW5ndGggPT0gJzEnIik7CisK
K3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50LmZpcnN0
Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXVsxXSA9PSBpdGVt
LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXInXVswXSA9
PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXon
XVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRp
ZXNbJ3F1eCddWzBdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQiKTsKKworZGVidWco
Ijxicj5UZXN0IHByb3BlcnRpZXMoaW5kZXgpLiIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3Bl
cnRpZXMoMCkgPT0gZWxlbWVudC5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJv
cGVydGllcygxKSA9PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9w
ZXJ0aWVzKDIpID09IGVsZW1lbnQubGFzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJv
cGVydGllcygzKSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIikKKworZGVidWcoIjxi
cj5UZXN0IHByb3BlcnRpZXNbaW5kZXhdLiIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRp
ZXNbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVy
dGllc1sxXSA9PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0
aWVzWzJdID09IGVsZW1lbnQubGFzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVy
dGllc1szXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIikKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEv
cHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0
aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRl
c3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACitQcm9wZXJ0aWVz
IGNvbGxlY3Rpb24ncyBuYW1lZEl0ZW0gcHJvcGVydHkgc2ltcGxlIHRlc3QuCisKK0NyZWF0ZWQg
ZWxlbWVudCBvZiB0eXBlOiBkaXYKK1NldCBhdHRyaWJ1dGU6IGl0ZW1zY29wZSwgdmFsdWU6IGl0
ZW1zY29wZQorCitUZXN0IHByb3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLgorUEFTUyBlbGVtZW50
LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKSBpcyBkZWZpbmVkLgorUEFTUyBlbGVtZW50LnBy
b3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxl
bWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxk
IGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzKG5hbWUpLgorUEFTUyBlbGVtZW50LnByb3BlcnRp
ZXMoJ2ZvbycpIGlzIGRlZmluZWQuCitQQVNTIGVsZW1lbnQucHJvcGVydGllcygnZm9vJykubGVu
Z3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllcygnZm9vJylbMF0gPT0g
ZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzW25hbWVdLgorUEFT
UyBlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddIGlzIGRlZmluZWQuCitQQVNTIGVsZW1lbnQucHJv
cGVydGllc1snZm9vJ10ubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVy
dGllc1snZm9vJ11bMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKKworVGVzdCBwcm9w
ZXJ0aWVzKGluZGV4KS4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzKDApIGlzIGRlZmluZWQuCitQ
QVNTIGVsZW1lbnQucHJvcGVydGllcygwKSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQor
CitUZXN0IHByb3BlcnRpZXNbaW5kZXhdLgorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbMF0gaXMg
ZGVmaW5lZC4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWzBdID09IGVsZW1lbnQuZmlyc3RDaGls
ZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29s
bGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0
aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cD5Qcm9wZXJ0aWVzIGNvbGxlY3Rpb24ncyBuYW1lZEl0ZW0gcHJvcGVydHkgc2ltcGxlIHRl
c3QuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGVsZW1lbnQg
PSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7aXRlbXNjb3BlOiAnaXRlbXNjb3BlJ30sICc8ZGl2IGl0
ZW1wcm9wPSJmb28iPjwvZGl2PicpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllcy5uYW1l
ZEl0ZW0obmFtZSkuIik7CitzaG91bGRCZURlZmluZWQoImVsZW1lbnQucHJvcGVydGllcy5uYW1l
ZEl0ZW0oJ2ZvbycpIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0
ZW0oJ2ZvbycpLmxlbmd0aCA9PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0
aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CisKK2RlYnVn
KCI8YnI+VGVzdCBwcm9wZXJ0aWVzKG5hbWUpLiIpOworc2hvdWxkQmVEZWZpbmVkKCJlbGVtZW50
LnByb3BlcnRpZXMoJ2ZvbycpIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcygn
Zm9vJykubGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMo
J2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJv
cGVydGllc1tuYW1lXS4iKTsKK3Nob3VsZEJlRGVmaW5lZCgiZWxlbWVudC5wcm9wZXJ0aWVzWydm
b28nXSIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddLmxlbmd0aCA9
PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBl
bGVtZW50LmZpcnN0Q2hpbGQiKTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXMoaW5kZXgp
LiIpOworc2hvdWxkQmVEZWZpbmVkKCJlbGVtZW50LnByb3BlcnRpZXMoMCkiKTsKK3Nob3VsZEJl
VHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzKDApID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworCitk
ZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllc1tpbmRleF0uIik7CitzaG91bGRCZURlZmluZWQoImVs
ZW1lbnQucHJvcGVydGllc1swXSIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNb
MF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="review"
          id="115869"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116721</attachid>
            <date>2011-11-28 03:03:22 -0800</date>
            <delta_ts>2011-11-29 07:56:05 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_73156.diff</filename>
            <type>text/plain</type>
            <size>28177</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDExLTExLTI4ICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBI
VE1MUHJvcHJ0aWVzQ29sbGVjdGlvbiBjb2xsZWN0aW9uLm5hbWVkSXRlbSgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxNTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IGZvciA6IGNvbGxl
Y3Rpb24ubmFtZWRJdGVtKCksIGNvbGxlY3Rpb25bbmFtZV0sIGNvbGxlY3Rpb25baW5kZXhdLgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2Fz
ZS1zZW5zaXRpdmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vTWljcm9EYXRhL25hbWVk
aXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10
ZXN0Lmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBVc2VWOC5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNh
bGxiYWNrKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Om5hbWVkSXRlbXMpOgor
ICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmg6CisgICAgICAgICogaHRt
bC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsOgorCiAyMDExLTExLTI4ICBMdWtlIE1hY3Bo
ZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IENT
UyBib3JkZXIgaW1hZ2UgcHJvcGVydGllcyBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwMTI0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTc5OCw2ICs3
OTgsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20u
Y3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTAxMjQwKQorKysgU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIwMSw3IEBAIHY4IHsKICAg
ICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92
OC9jdXN0b20vVjhQZXJmb3JtYW5jZUN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhQUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAogICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIFwKQEAgLTMwMCw2ICszMDEs
NyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHAg
XAorICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTFN0eWxlRWxlbWVudEN1c3RvbS5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1VzZVY4LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtl
CShyZXZpc2lvbiAxMDEyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAKKyAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAx
MDEyNDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTE4OTAsNiArMTg5MCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0
RWxlbWVudEN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25z
Q29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRNTE91
dHB1dEVsZW1lbnRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0hUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTSFRNTFN0eWxlRWxlbWVudEN1c3RvbS5jcHAnLApAQCAtMjIxMiw2ICsyMjEzLDcgQEAKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3V0cHV0RWxl
bWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQ
bHVnSW5FbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcCcsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNp
b24gMTAxMjQwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTYyMTA5LDYgKzYyMTA5LDU4IEBACiAJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwIgorCQkJ
CQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4z
MiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wK
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19D
YWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxQcm9w
ZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29w
eXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisgKiBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlLAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vcgorICogb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkKKyAqIGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQK
KyAqIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1JQ1JPREFUQSkKKworI2luY2x1ZGUgIkpT
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgiCisKKyNpbmNsdWRlICJIVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNpbmNsdWRlICJKU05vZGVMaXN0Lmgi
CisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCisjaW5jbHVk
ZSA8cnVudGltZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IEpTVmFsdWUgZ2V0TmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uKiBqc1Byb3BlcnRpZXNDb2xsZWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCit7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5hbWVkSXRlbXM7CisgICAg
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKiBwcm9wZXJ0aWVzQ29sbGVjdGlvbiA9IHN0YXRpY19j
YXN0PEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbio+KGpzUHJvcGVydGllc0NvbGxlY3Rpb24tPmlt
cGwoKSk7CisgICAgcHJvcGVydGllc0NvbGxlY3Rpb24tPm5hbWVkSXRlbXMoaWRlbnRpZmllclRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOworCisgICAgaWYgKG5hbWVk
SXRlbXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIC8v
IEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0aGlzIHNob3VsZCBiZSBhIFByb3BlcnR5Tm9k
ZUxpc3QuCisgICAgcmV0dXJuIHRvSlMoZXhlYywganNQcm9wZXJ0aWVzQ29sbGVjdGlvbi0+Z2xv
YmFsT2JqZWN0KCksIFN0YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7Cit9
CisKK2Jvb2wgSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShF
eGVjU3RhdGUqLCBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24qIHByb3BlcnRpZXNDb2xsZWN0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgVmVjdG9yPFJlZlB0cjxO
b2RlPiA+IG5hbWVkSXRlbXM7CisgICAgcHJvcGVydGllc0NvbGxlY3Rpb24tPm5hbWVkSXRlbXMo
aWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSksIG5hbWVkSXRlbXMpOworICAg
IHJldHVybiAhbmFtZWRJdGVtcy5pc0VtcHR5KCk7Cit9CisKK0pTVmFsdWUgSlNIVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNIVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24qIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU0hUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMo
ZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKTsKK30KKworSlNWYWx1ZSBKU0hUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4g
Z2V0TmFtZWRJdGVtcyhleGVjLCB0aGlzLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShNSUNST0RBVEEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xh
IE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBt
b2RpZmljYXRpb24sCisgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vcgorICogb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkKKyAqIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAqIHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcK
KyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKE1JQ1JPREFUQSkKKworI2luY2x1ZGUgIlY4SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
LmgiCisKKyNpbmNsdWRlICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOE5hbWVkTm9kZXNDb2xsZWN0aW9uLmgiCisjaW5jbHVk
ZSAiVjhOb2RlLmgiCisjaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlY4UHJveHku
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGdldE5hbWVkSXRlbXMoSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBBdG9t
aWNTdHJpbmcgbmFtZSkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsK
KyAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOworCisgICAgaWYg
KCFuYW1lZEl0ZW1zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpOworCisgICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6Y3JlYXRlKG5h
bWVkSXRlbXMpKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLkhU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CisKKyAgICBpZiAo
IWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1l
KS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwor
ICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUp
KQorICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKworICAgIEhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdjhT
dHJpbmdUb0F0b21pY1dlYkNvcmVTdHJpbmcobmFtZSkpOworfQorCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uLm5hbWVkSXRlbSgpIik7CisgICAgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
KiBpbXAgPSBWOEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1w
LCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSkpOworCisgICAgaWYgKHJlc3VsdC5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUlDUk9EQVRB
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uLmNwcAkocmV2aXNpb24gMTAxMjQwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJv
cGVydGllc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDI2IEBA
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSFRNTFByb3BlcnRpZXMKICAgICByZXR1cm4gbV9w
cm9wZXJ0eU5hbWVzOwogfQogCit2b2lkIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgcmVz
dWx0KSBjb25zdAoreworICAgIEFTU0VSVChyZXN1bHQuaXNFbXB0eSgpKTsKKworICAgIG1fcHJv
cGVydGllcy5jbGVhcigpOworCisgICAgaWYgKCFiYXNlKCktPmlzSFRNTEVsZW1lbnQoKSB8fCAh
dG9IVE1MRWxlbWVudChiYXNlKCkpLT5mYXN0SGFzQXR0cmlidXRlKGl0ZW1zY29wZUF0dHIpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmaW5kUHJvcGV0aWVzT2ZBbkl0ZW0oYmFzZSgpKTsKKwor
ICAgIHN0ZDo6c29ydChtX3Byb3BlcnRpZXMuYmVnaW4oKSwgbV9wcm9wZXJ0aWVzLmVuZCgpLCBj
b21wYXJlVHJlZU9yZGVyKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0
aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVtUHJv
cGVydHkgPSBtX3Byb3BlcnRpZXNbaV0tPml0ZW1Qcm9wKCk7CisgICAgICAgIGlmIChpdGVtUHJv
cGVydHktPnRva2VucygpLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChtX3Byb3BlcnRpZXNbaV0pOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTAxMjQwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2ln
bmVkKSBjb25zdCBPVkVSUklERTsKIAogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbmFt
ZXMoKSBjb25zdDsKKyAgICB2b2lkIG5hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIVE1MUHJv
cGVydGllc0NvbGxlY3Rpb24oUGFzc1JlZlB0cjxOb2RlPik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAxMDEy
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICBp
bnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1NSUNST0RBVEEsCi0gICAgICAgIEhhc0lu
ZGV4R2V0dGVyCisgICAgICAgIEhhc0luZGV4R2V0dGVyLAorICAgICAgICBIYXNOYW1lR2V0dGVy
CiAgICAgXSBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlvbiB7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgICAgTm9k
ZSBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmdMaXN0IG5hbWVzOwotCi0gICAgICAgIC8vIEZJWE1FOiBvdmVycmlkZSBp
bmhlcml0ZWQgbmFtZWRJdGVtKCkKKyAgICAgICAgW0N1c3RvbV0gTm9kZSBuYW1lZEl0ZW0oaW4g
RE9NU3RyaW5nIG5hbWUpOwogICAgIH07CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDEyNDApCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAor
MjAxMS0xMS0yOCAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgTWlj
cm9kYXRhOiBJbXBsZW1lbnQgSFRNTFByb3BydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1l
ZEl0ZW0oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgdGVzdCBjYXNlcyBmb3IgY29sbGVjdGlvbi5uYW1lZEl0ZW0obmFtZSksIGNvbGxlY3Rp
b25bbmFtZV0sIGNvbGxlY3Rpb25baW5kZXhdLgorCisgICAgICAgICogZmFzdC9kb20vTWljcm9E
YXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vu
c2l0aXZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0
ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNv
cnJlY3QtaXRlbS1wcm9wZXJ0aWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01p
Y3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0
aW9uLW5hbWVkaXRlbS10ZXN0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTI4ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDb252ZXJ0IHNvbWUgcGxhY2Vob2xk
ZXItcmVsYXRlZCB0ZXN0cyB0byByZWZ0ZXN0cwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
TWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11
c3QtYmUtY2FzZS1zZW5zaXRpdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorVGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCBuYW1lZEl0ZW0gbXVzdCBiZSBjYXNlIHNlbnNpdGl2ZS4KKworQ3JlYXRlZCBl
bGVtZW50IG9mIHR5cGU6IGRpdgorU2V0IGF0dHJpYnV0ZTogaXRlbXNjb3BlLCB2YWx1ZTogaXRl
bXNjb3BlCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCA9
PSAnMicgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT08nKS5s
ZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgn
Rk9vJykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1l
ZEl0ZW0oJ2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGVsZW1l
bnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sx
XS5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdG
T08nKVswXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0uZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNT
IGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPbycpWzBdID09IGVsZW1lbnQuY2hpbGRO
b2Rlc1sxXS5sYXN0Q2hpbGQgaXMgdHJ1ZQorCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9v
J10ubGVuZ3RoID09ICcyJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snRk9PJ10u
bGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snRk9vJ10ubGVu
Z3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMF0gPT0g
ZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydmb28n
XVsxXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIGlzIHRydWUKK1BBU1MgZWxl
bWVudC5wcm9wZXJ0aWVzWydGT08nXVswXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0uZmlyc3RD
aGlsZCBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snRk9vJ11bMF0gPT0gZWxlbWVu
dC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
TWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNh
c2Utc2Vuc2l0aXZlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9N
aWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IGJl
IGNhc2Ugc2Vuc2l0aXZlLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
K3ZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge2l0ZW1zY29wZTogJ2l0ZW1zY29w
ZSd9LCAnPGRpdiBpdGVtcHJvcD0iZm9vIj48L2Rpdj48ZGl2IGl0ZW1wcm9wPSJiYXIiPjxkaXYg
aXRlbXByb3A9IkZPTyI+PC9kaXY+PGRpdiBpdGVtcHJvcD0iZm9vIEZPbyBmb28iPjwvZGl2Pjwv
ZGl2PjxkaXYgaXRlbXByb3A9ImJheiBxdXgiPjwvZGl2PicpOworCitzaG91bGRCZVRydWUoImVs
ZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCA9PSAnMiciKTsKK3Nob3Vs
ZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJykubGVuZ3RoID09ICcx
JyIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT28nKS5s
ZW5ndGggPT0gJzEnIik7CisKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVk
SXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoImVs
ZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFdID09IGVsZW1lbnQuY2hpbGROb2Rl
c1sxXS5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVk
SXRlbSgnRk9PJylbMF0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmZpcnN0Q2hpbGQiKTsKK3No
b3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9vJylbMF0gPT0gZWxl
bWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCIpOworZGVidWcoJycpOworCitzaG91bGRCZVRy
dWUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ10ubGVuZ3RoID09ICcyJyIpOworc2hvdWxkQmVU
cnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPTyddLmxlbmd0aCA9PSAnMSciKTsKK3Nob3VsZEJl
VHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydGT28nXS5sZW5ndGggPT0gJzEnIik7CisKK3Nob3Vs
ZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50LmZpcnN0Q2hp
bGQiKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXVsxXSA9PSBlbGVt
ZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJv
cGVydGllc1snRk9PJ11bMF0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmZpcnN0Q2hpbGQiKTsK
K3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydGT28nXVswXSA9PSBlbGVtZW50LmNo
aWxkTm9kZXNbMV0ubGFzdENoaWxkIik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJl
dHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3Jy
ZWN0LWl0ZW0tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRl
bS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAor
VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBuYW1lZEl0ZW0gbXVzdCByZXR1cm4gdGhlIGNvcnJlY3Qg
aXRlbSBwcm9wZXJ0aWVzLgorCitDcmVhdGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CisKK1Rlc3Qg
cHJvcGVydGllcy5uYW1lZEl0ZW0obmFtZSkuCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0
ZW0oJ2ZvbycpLmxlbmd0aCA9PSAnMicgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFt
ZWRJdGVtKCdiYXInKS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgnYmF6JykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVy
dGllcy5uYW1lZEl0ZW0oJ3F1eCcpLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnBy
b3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1
ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsxXSA9PSBpdGVtLmZpcnN0
Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKVswXSA9
PSBpdGVtLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVt
KCdiYXonKVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVy
dGllcy5uYW1lZEl0ZW0oJ3F1eCcpWzBdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQg
aXMgdHJ1ZQorCitUZXN0IHByb3BlcnRpZXNbbmFtZV0uCitQQVNTIGl0ZW0ucHJvcGVydGllc1sn
Zm9vJ10ubGVuZ3RoID09ICcyJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snYmFyJ10u
bGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snYmF6J10ubGVuZ3Ro
ID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1sncXV4J10ubGVuZ3RoID09ICcx
JyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snZm9vJ11bMF0gPT0gZWxlbWVudC5maXJz
dENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydmb28nXVsxXSA9PSBpdGVtLmZp
cnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2JhciddWzBdID09IGl0ZW0u
Zmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snYmF6J11bMF0gPT0gZWxl
bWVudC5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ3F1eCddWzBdID09
IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorCitUZXN0IHByb3BlcnRpZXNb
aW5kZXhdLgorUEFTUyBpdGVtLnByb3BlcnRpZXNbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIGlz
IHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWzFdID09IGl0ZW0uZmlyc3RDaGlsZCBpcyB0cnVl
CitQQVNTIGl0ZW0ucHJvcGVydGllc1syXSA9PSBlbGVtZW50Lmxhc3RDaGlsZCBpcyB0cnVlCitQ
QVNTIGl0ZW0ucHJvcGVydGllc1szXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0
dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0t
cHJvcGVydGllcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWlj
cm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1vbi5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgbmFtZWRJ
dGVtIG11c3QgcmV0dXJuIHRoZSBjb3JyZWN0IGl0ZW0gcHJvcGVydGllcy48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQo
J2RpdicsIHt9LCAnPGRpdiBpdGVtcHJvcD0iZm9vIiBpZD0iaWQxIj48L2Rpdj48ZGl2IGl0ZW1z
Y29wZSBpdGVtcmVmPSJpZDIgaWQxIj48ZGl2IGl0ZW1wcm9wPSJmb28gYmFyIj48L2Rpdj48L2Rp
dj48ZGl2IGl0ZW1wcm9wPSJiYXoiIGlkPSJpZDIiPjxkaXYgaXRlbXByb3A9InF1eCI+Jyk7Cit2
YXIgaXRlbSA9IGVsZW1lbnQuY2hpbGROb2Rlc1sxXTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZWxlbWVudCk7CisKK2RlYnVnKCI8YnI+VGVzdCBwcm9wZXJ0aWVzLm5hbWVkSXRlbShuYW1l
KS4iKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVu
Z3RoID09ICcyJyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdi
YXInKS5sZW5ndGggPT0gJzEnIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1l
ZEl0ZW0oJ2JheicpLmxlbmd0aCA9PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0
aWVzLm5hbWVkSXRlbSgncXV4JykubGVuZ3RoID09ICcxJyIpOworCitzaG91bGRCZVRydWUoIml0
ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIp
Oworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsxXSA9PSBp
dGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRl
bSgnYmFyJylbMF0gPT0gaXRlbS5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJv
cGVydGllcy5uYW1lZEl0ZW0oJ2JheicpWzBdID09IGVsZW1lbnQubGFzdENoaWxkIik7CitzaG91
bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ3F1eCcpWzBdID09IGVsZW1lbnQu
bGFzdENoaWxkLmZpcnN0Q2hpbGQiKTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbbmFt
ZV0uIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snZm9vJ10ubGVuZ3RoID09ICcy
JyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2JhciddLmxlbmd0aCA9PSAnMSci
KTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXonXS5sZW5ndGggPT0gJzEnIik7
CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1sncXV4J10ubGVuZ3RoID09ICcxJyIpOwor
CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snZm9vJ11bMF0gPT0gZWxlbWVudC5maXJz
dENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snZm9vJ11bMV0gPT0gaXRl
bS5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snYmFyJ11bMF0g
PT0gaXRlbS5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snYmF6
J11bMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0
aWVzWydxdXgnXVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIik7CisKK2RlYnVn
KCI8YnI+VGVzdCBwcm9wZXJ0aWVzW2luZGV4XS4iKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9w
ZXJ0aWVzWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnBy
b3BlcnRpZXNbMV0gPT0gaXRlbS5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJv
cGVydGllc1syXSA9PSBlbGVtZW50Lmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnBy
b3BlcnRpZXNbM10gPT0gZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCIpCisKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9E
YXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29s
bGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRl
bS10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorUHJvcGVy
dGllcyBjb2xsZWN0aW9uJ3MgbmFtZWRJdGVtIHByb3BlcnR5IHNpbXBsZSB0ZXN0LgorCitDcmVh
dGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CitTZXQgYXR0cmlidXRlOiBpdGVtc2NvcGUsIHZhbHVl
OiBpdGVtc2NvcGUKKworVGVzdCBwcm9wZXJ0aWVzLm5hbWVkSXRlbShuYW1lKS4KK1BBU1MgZWxl
bWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykgaXMgZGVmaW5lZC4KK1BBU1MgZWxlbWVu
dC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNT
IGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RD
aGlsZCBpcyB0cnVlCisKK1Rlc3QgcHJvcGVydGllc1tuYW1lXS4KK1BBU1MgZWxlbWVudC5wcm9w
ZXJ0aWVzWydmb28nXSBpcyBkZWZpbmVkLgorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ2Zvbydd
Lmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzBd
ID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCisKK1Rlc3QgcHJvcGVydGllc1tpbmRleF0u
CitQQVNTIGVsZW1lbnQucHJvcGVydGllc1swXSBpcyBkZWZpbmVkLgorUEFTUyBlbGVtZW50LnBy
b3BlcnRpZXNbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRp
ZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0t
dGVzdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1v
bi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlByb3BlcnRpZXMgY29sbGVjdGlv
bidzIG5hbWVkSXRlbSBwcm9wZXJ0eSBzaW1wbGUgdGVzdC48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtp
dGVtc2NvcGU6ICdpdGVtc2NvcGUnfSwgJzxkaXYgaXRlbXByb3A9ImZvbyI+PC9kaXY+Jyk7CisK
K2RlYnVnKCI8YnI+VGVzdCBwcm9wZXJ0aWVzLm5hbWVkSXRlbShuYW1lKS4iKTsKK3Nob3VsZEJl
RGVmaW5lZCgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykiKTsKK3Nob3VsZEJl
VHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3RoID09ICcxJyIp
Oworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSA9
PSBlbGVtZW50LmZpcnN0Q2hpbGQiKTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbbmFt
ZV0uIik7CitzaG91bGRCZURlZmluZWQoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ10iKTsKK3No
b3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGggPT0gJzEnIik7Citz
aG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMF0gPT0gZWxlbWVudC5maXJz
dENoaWxkIik7CisKK2RlYnVnKCI8YnI+VGVzdCBwcm9wZXJ0aWVzW2luZGV4XS4iKTsKK3Nob3Vs
ZEJlRGVmaW5lZCgiZWxlbWVudC5wcm9wZXJ0aWVzWzBdIik7CitzaG91bGRCZVRydWUoImVsZW1l
bnQucHJvcGVydGllc1swXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQiKTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="115965"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116969</attachid>
            <date>2011-11-29 07:56:05 -0800</date>
            <delta_ts>2012-01-30 04:08:07 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_73156.diff</filename>
            <type>text/plain</type>
            <size>23499</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTM3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDExLTExLTI5ICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0ZW0oKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL01p
Y3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRl
bS1wcm9wZXJ0aWVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9w
ZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OmNhbkdldEl0
ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bjo6bmFtZUdldHRlcik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpuYW1lcyk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OmdldE5hbWVkSXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpuYW1lZEl0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpjYW5HZXRJ
dGVtc0Zvck5hbWUpOgorICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmg6
CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsOgorCiAyMDExLTEx
LTI5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAg
ICBbUXRdIE1ha2UgV2ViQ29yZSBjb21waWxlIHdpdGggUXQgNSBhbmQgVjgKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTAxMzc1KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNzk4LDYgKzc5OCw3IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
T2JqZWN0RWxlbWVudEN1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmggXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFN0eWxlRWxlbWVudEN1c3RvbS5jcHAgXApJ
bmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDEzNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNiArMjAxLDcgQEAgdjggewogICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFBlcmZvcm1hbmNlQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFBQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAgXApAQCAtMzAwLDYgKzMwMSw3IEBAIHY4
IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCBcCisgICAg
ICAgIGJpbmRpbmdzL2pzL0pTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvanMvSlNIVE1MU3R5bGVFbGVtZW50Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gMTAxMzc1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0xODk1LDYgKzE4OTUsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTSFRN
TE9iamVjdEVsZW1lbnRDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U0hUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDEzNzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjIwODUsNiArNjIwODUsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRv
b2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxl
YXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hUTUxT
ZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisg
KiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yCisgKiBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMgY29udHJpYnV0b3JzIG1heQorICogYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICogc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTUlDUk9EQVRBKQorCisjaW5jbHVkZSAiSlNIVE1MUHJvcGVydGll
c0NvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oIgor
I2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJO
b2RlLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uKiBwcm9wZXJ0aWVzQ29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQoreworICAgIHJldHVybiBwcm9wZXJ0aWVzQ29sbGVjdGlvbi0+Y2FuR2V0SXRlbXNGb3JO
YW1lKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKK30KKworSlNWYWx1ZSBKU0hU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3sKKyAgICBKU0hU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTSFRNTFByb3Bl
cnRpZXNDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBIVE1MUHJvcGVydGll
c0NvbGxlY3Rpb24qIHByb3BlcnRpZXNDb2xsZWN0aW9uID0gc3RhdGljX2Nhc3Q8SFRNTFByb3Bl
cnRpZXNDb2xsZWN0aW9uKj4odGhpc09iai0+aW1wbCgpKTsKKyAgICByZXR1cm4gdG9KUyhleGVj
LCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydGllc0NvbGxlY3Rpb24tPm5hbWVkSXRl
bShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUlDUk9EQVRBKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24g
MTAxMzc1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVk
ZSAiU3RhdGljTm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzIsNiAr
MTczLDQzIEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSFRNTFByb3BlcnRpZXMKICAgICBy
ZXR1cm4gbV9wcm9wZXJ0eU5hbWVzOwogfQogCit2b2lkIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bjo6Z2V0TmFtZWRJdGVtcyhWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5hbWVkSXRlbXMsIGNvbnN0
IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsKKworICAg
IGlmICghYmFzZSgpLT5pc0hUTUxFbGVtZW50KCkgfHwgIXRvSFRNTEVsZW1lbnQoYmFzZSgpKS0+
ZmFzdEhhc0F0dHJpYnV0ZShpdGVtc2NvcGVBdHRyKSkKKyAgICAgIHJldHVybjsKKworICAgIGZp
bmRQcm9wZXRpZXNPZkFuSXRlbShiYXNlKCkpOworCisgICAgc3RkOjpzb3J0KG1fcHJvcGVydGll
cy5iZWdpbigpLCBtX3Byb3BlcnRpZXMuZW5kKCksIGNvbXBhcmVUcmVlT3JkZXIpOworCisgICAg
Ly8gRm9yIGVhY2ggaXRlbSBwcm9wZXJ0aWVzLCBzcGxpdCB0aGUgdmFsdWUgb2YgdGhhdCBpdGVt
cHJvcCBhdHRyaWJ1dGUgb24gc3BhY2VzLgorICAgIC8vIEFkZCBlbGVtZW50IHRvIG5hbWVkSXRl
bSB0aGF0IGNvbnRhaW5zIGEgcHJvcGVydHkgbmFtZWQgbmFtZSwgd2l0aCB0aGUgb3JkZXIgcHJl
c2VydmVkLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0aWVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVtUHJvcGVydHkgPSBtX3By
b3BlcnRpZXNbaV0tPml0ZW1Qcm9wKCk7CisgICAgICAgIGlmIChpdGVtUHJvcGVydHktPnRva2Vu
cygpLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICAgICAgbmFtZWRJdGVtcy5hcHBlbmQobV9wcm9w
ZXJ0aWVzW2ldKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBnZXROYW1lZEl0ZW1zKG5h
bWVkSXRlbXMsIG5hbWUpOworCisgICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRo
aXMgc2hvdWxkIHJldHVybiBQcm9wZXJ0eU5vZGVMaXN0LgorICAgIHJldHVybiAhbmFtZWRJdGVt
cy5pc0VtcHR5KCkgPyBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcykgOiAwOworfQor
Citib29sIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJ
dGVtczsKKyAgICBnZXROYW1lZEl0ZW1zKG5hbWVkSXRlbXMsIG5hbWUpOworCisgICAgcmV0dXJu
ICFuYW1lZEl0ZW1zLmlzRW1wdHkoKSA/IHRydWUgOiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTAx
Mzc1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDE0IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gbmFtZXMoKSBjb25zdDsKIAorICAgIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IG5hbWVkSXRlbShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIGNhbkdldEl0ZW1z
Rm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbihQYXNzUmVmUHRyPE5vZGU+KTsKIAogICAgIHZvaWQgZmluZFBy
b3BldGllc09mQW5JdGVtKE5vZGUqIGN1cnJlbnQpIGNvbnN0OworICAgIHZvaWQgZ2V0TmFtZWRJ
dGVtcyhWZWN0b3I8UmVmUHRyPE5vZGU+ID4mLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogICAg
IG11dGFibGUgVmVjdG9yPE5vZGUqPiBtX3Byb3BlcnRpZXM7CiAgICAgbXV0YWJsZSBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gbV9wcm9wZXJ0eU5hbWVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbAkocmV2aXNpb24gMTAxMzc1KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTUgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgaW50ZXJm
YWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9TUlDUk9EQVRBLAotICAgICAgICBIYXNJbmRleEdl
dHRlcgorICAgICAgICBIYXNJbmRleEdldHRlciwKKyAgICAgICAgSGFzTmFtZUdldHRlcgogICAg
IF0gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIDogSFRNTENvbGxlY3Rpb24gewogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIE5vZGUgaXRl
bShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nTGlzdCBuYW1lczsKIAotICAgICAgICAvLyBGSVhNRTogb3ZlcnJpZGUgaW5oZXJp
dGVkIG5hbWVkSXRlbSgpCisgICAgICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0
aGlzIHNob3VsZCByZXR1cm4gUHJvcGVydHlOb2RlTGlzdC4KKyAgICAgICAgTm9kZUxpc3QgbmFt
ZWRJdGVtKGluIERPTVN0cmluZyBuYW1lKTsKICAgICB9OwogfQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTAxMzc4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTEtMTEtMjkgIEFya28gU2FoYSAgPGFya29AbW90b3JvbGEuY29tPgorCisg
ICAgICAgIE1pY3JvZGF0YTogSW1wbGVtZW50IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiBjb2xs
ZWN0aW9uLm5hbWVkSXRlbSgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzMxNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNl
bnNpdGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0
YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vTWljcm9E
YXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9u
LW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
TWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC5odG1sOiBBZGRl
ZC4KKwogMjAxMS0xMS0yOSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQ7IG5ldyBiYXNlbGluZXMgZm9yIG5l
dyB0ZXN0IGFkZGVkIGluIHIxMDEzMjUuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNy
b0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1i
ZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUaGlzIHRlc3QgZW5zdXJl
cyB0aGF0IG5hbWVkSXRlbSBtdXN0IGJlIGNhc2Ugc2Vuc2l0aXZlLgorCitDcmVhdGVkIGVsZW1l
bnQgb2YgdHlwZTogZGl2CitTZXQgYXR0cmlidXRlOiBpdGVtc2NvcGUsIHZhbHVlOiBpdGVtc2Nv
cGUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3RoID09ICcy
JyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPTycpLmxlbmd0
aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT28n
KS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRl
bSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgZWxlbWVudC5w
cm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMV0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxh
c3RDaGlsZCBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPTycp
WzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgZWxl
bWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9vJylbMF0gPT0gZWxlbWVudC5jaGlsZE5vZGVz
WzFdLmxhc3RDaGlsZCBpcyB0cnVlCisKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXS5s
ZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydGT08nXS5sZW5n
dGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydGT28nXS5sZW5ndGgg
PT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVt
ZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzFd
ID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50
LnByb3BlcnRpZXNbJ0ZPTyddWzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5maXJzdENoaWxk
IGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydGT28nXVswXSA9PSBlbGVtZW50LmNo
aWxkTm9kZXNbMV0ubGFzdENoaWxkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNy
b0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1z
ZW5zaXRpdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3Jv
RGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgbmFtZWRJdGVtIG11c3QgYmUgY2Fz
ZSBzZW5zaXRpdmUuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFy
IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7aXRlbXNjb3BlOiAnaXRlbXNjb3BlJ30s
ICc8ZGl2IGl0ZW1wcm9wPSJmb28iPjwvZGl2PjxkaXYgaXRlbXByb3A9ImJhciI+PGRpdiBpdGVt
cHJvcD0iRk9PIj48L2Rpdj48ZGl2IGl0ZW1wcm9wPSJmb28gRk9vIGZvbyI+PC9kaXY+PC9kaXY+
PGRpdiBpdGVtcHJvcD0iYmF6IHF1eCI+PC9kaXY+Jyk7CisKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVu
dC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3RoID09ICcyJyIpOworc2hvdWxkQmVU
cnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT08nKS5sZW5ndGggPT0gJzEnIik7
CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPbycpLmxlbmd0
aCA9PSAnMSciKTsKKworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVt
KCdmb28nKVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVu
dC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMV0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFd
Lmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVt
KCdGT08nKVswXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0uZmlyc3RDaGlsZCIpOworc2hvdWxk
QmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT28nKVswXSA9PSBlbGVtZW50
LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIik7CitkZWJ1ZygnJyk7CisKK3Nob3VsZEJlVHJ1ZSgi
ZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGggPT0gJzInIik7CitzaG91bGRCZVRydWUo
ImVsZW1lbnQucHJvcGVydGllc1snRk9PJ10ubGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVl
KCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddLmxlbmd0aCA9PSAnMSciKTsKKworc2hvdWxkQmVU
cnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIp
Oworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzFdID09IGVsZW1lbnQu
Y2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0
aWVzWydGT08nXVswXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0uZmlyc3RDaGlsZCIpOworc2hv
dWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddWzBdID09IGVsZW1lbnQuY2hpbGRO
b2Rlc1sxXS5sYXN0Q2hpbGQiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJu
LWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3Qt
aXRlbS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACitUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IHJldHVybiB0aGUgY29ycmVjdCBpdGVt
IHByb3BlcnRpZXMuCisKK0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKKworVGVzdCBwcm9w
ZXJ0aWVzLm5hbWVkSXRlbShuYW1lKS4KK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgn
Zm9vJykubGVuZ3RoID09ICcyJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0
ZW0oJ2JhcicpLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFt
ZWRJdGVtKCdiYXonKS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgncXV4JykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVy
dGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQ
QVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFdID09IGl0ZW0uZmlyc3RDaGls
ZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2JhcicpWzBdID09IGl0
ZW0uZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2Jh
eicpWzBdID09IGVsZW1lbnQubGFzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgncXV4JylbMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCBpcyB0
cnVlCisKK1Rlc3QgcHJvcGVydGllc1tuYW1lXS4KK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydmb28n
XS5sZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydiYXInXS5sZW5n
dGggPT0gJzEnIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydiYXonXS5sZW5ndGggPT0g
JzEnIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydxdXgnXS5sZW5ndGggPT0gJzEnIGlz
IHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50LmZpcnN0Q2hp
bGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2ZvbyddWzFdID09IGl0ZW0uZmlyc3RD
aGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snYmFyJ11bMF0gPT0gaXRlbS5maXJz
dENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydiYXonXVswXSA9PSBlbGVtZW50
Lmxhc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1sncXV4J11bMF0gPT0gZWxl
bWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCBpcyB0cnVlCisKK1Rlc3QgcHJvcGVydGllc1tpbmRl
eF0uCitQQVNTIGl0ZW0ucHJvcGVydGllc1swXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1
ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbMV0gPT0gaXRlbS5maXJzdENoaWxkIGlzIHRydWUKK1BB
U1MgaXRlbS5wcm9wZXJ0aWVzWzJdID09IGVsZW1lbnQubGFzdENoaWxkIGlzIHRydWUKK1BBU1Mg
aXRlbS5wcm9wZXJ0aWVzWzNdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQgaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4t
Y29ycmVjdC1pdGVtLXByb3BlcnRpZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9w
ZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0Rh
dGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBuYW1lZEl0ZW0g
bXVzdCByZXR1cm4gdGhlIGNvcnJlY3QgaXRlbSBwcm9wZXJ0aWVzLjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudCgnZGl2
Jywge30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iIGlkPSJpZDEiPjwvZGl2PjxkaXYgaXRlbXNjb3Bl
IGl0ZW1yZWY9ImlkMiBpZDEiPjxkaXYgaXRlbXByb3A9ImZvbyBiYXIiPjwvZGl2PjwvZGl2Pjxk
aXYgaXRlbXByb3A9ImJheiIgaWQ9ImlkMiI+PGRpdiBpdGVtcHJvcD0icXV4Ij4nKTsKK3ZhciBp
dGVtID0gZWxlbWVudC5jaGlsZE5vZGVzWzFdOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChl
bGVtZW50KTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLiIp
Oworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGgg
PT0gJzInIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2Jhcicp
Lmxlbmd0aCA9PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRl
bSgnYmF6JykubGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMu
bmFtZWRJdGVtKCdxdXgnKS5sZW5ndGggPT0gJzEnIik7CisKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5w
cm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7Citz
aG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFdID09IGl0ZW0u
Zmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdi
YXInKVswXSA9PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0
aWVzLm5hbWVkSXRlbSgnYmF6JylbMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJl
VHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgncXV4JylbMF0gPT0gZWxlbWVudC5sYXN0
Q2hpbGQuZmlyc3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllc1tuYW1lXS4i
KTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGggPT0gJzInIik7
CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snYmFyJ10ubGVuZ3RoID09ICcxJyIpOwor
c2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2JheiddLmxlbmd0aCA9PSAnMSciKTsKK3No
b3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydxdXgnXS5sZW5ndGggPT0gJzEnIik7CisKK3No
b3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50LmZpcnN0Q2hp
bGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXVsxXSA9PSBpdGVtLmZp
cnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXInXVswXSA9PSBp
dGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXonXVsw
XSA9PSBlbGVtZW50Lmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNb
J3F1eCddWzBdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQiKTsKKworZGVidWcoIjxi
cj5UZXN0IHByb3BlcnRpZXNbaW5kZXhdLiIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRp
ZXNbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVy
dGllc1sxXSA9PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0
aWVzWzJdID09IGVsZW1lbnQubGFzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVy
dGllc1szXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIikKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEv
cHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0
aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRl
c3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACitQcm9wZXJ0aWVz
IGNvbGxlY3Rpb24ncyBuYW1lZEl0ZW0gcHJvcGVydHkgc2ltcGxlIHRlc3QuCisKK0NyZWF0ZWQg
ZWxlbWVudCBvZiB0eXBlOiBkaXYKK1NldCBhdHRyaWJ1dGU6IGl0ZW1zY29wZSwgdmFsdWU6IGl0
ZW1zY29wZQorCitUZXN0IHByb3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLgorUEFTUyBlbGVtZW50
LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKSBpcyBkZWZpbmVkLgorUEFTUyBlbGVtZW50LnBy
b3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxl
bWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxk
IGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzW25hbWVdLgorUEFTUyBlbGVtZW50LnByb3BlcnRp
ZXNbJ2ZvbyddIGlzIGRlZmluZWQuCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9vJ10ubGVu
Z3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMF0gPT0g
ZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzW2luZGV4XS4KK1BB
U1MgZWxlbWVudC5wcm9wZXJ0aWVzWzBdIGlzIGRlZmluZWQuCitQQVNTIGVsZW1lbnQucHJvcGVy
dGllc1swXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1j
b2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+UHJvcGVydGllcyBjb2xsZWN0aW9uJ3Mg
bmFtZWRJdGVtIHByb3BlcnR5IHNpbXBsZSB0ZXN0LjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdD4KK3ZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge2l0ZW1z
Y29wZTogJ2l0ZW1zY29wZSd9LCAnPGRpdiBpdGVtcHJvcD0iZm9vIj48L2Rpdj4nKTsKKworZGVi
dWcoIjxicj5UZXN0IHByb3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLiIpOworc2hvdWxkQmVEZWZp
bmVkKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKSIpOworc2hvdWxkQmVUcnVl
KCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0gJzEnIik7Citz
aG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzBdID09IGVs
ZW1lbnQuZmlyc3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllc1tuYW1lXS4i
KTsKK3Nob3VsZEJlRGVmaW5lZCgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXSIpOworc2hvdWxk
QmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddLmxlbmd0aCA9PSAnMSciKTsKK3Nob3Vs
ZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50LmZpcnN0Q2hp
bGQiKTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbaW5kZXhdLiIpOworc2hvdWxkQmVE
ZWZpbmVkKCJlbGVtZW50LnByb3BlcnRpZXNbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5w
cm9wZXJ0aWVzWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworCis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="116273"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124521</attachid>
            <date>2012-01-30 04:08:07 -0800</date>
            <delta_ts>2012-02-13 05:54:04 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_73156_modified.diff</filename>
            <type>text/plain</type>
            <size>26714</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjIyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAxLTMwICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0ZW0oKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL01p
Y3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRl
bS1wcm9wZXJ0aWVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9w
ZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246
OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvbjo6bmFtZUdldHRlcik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
OjpuYW1lcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9w
ZXJ0aWVzQ29sbGVjdGlvbjo6Z2V0TmFtZWRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZSk6CisgICAgICAgICogaHRt
bC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsOgor
CiAyMDEyLTAxLTMwICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgog
CiAgICAgICAgIE5vdCByZXZpZXdlZC4gRml4IENsYW5nIGJ1aWxkIGZvciByZWFsIGFmdGVyIHIx
MDYyMTguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwNjIy
OSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTExMDYsNiArMTEwNiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1l
bnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RF
bGVtZW50Q3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFN0eWxl
RWxlbWVudEN1c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDYyMjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsNiArMzAz
LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9t
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9t
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3Bw
IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCShyZXZpc2lvbiAxMDYyMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdv
cmtpbmcgY29weSkKQEAgLTE1MjgsNiArMTUyOCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTSFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0hUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTSFRNTFN0eWxlRWxlbWVudEN1c3RvbS5jcHAnLApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEw
NjIyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC02NTAwOSw2ICs2NTAwOSw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNwcCIKKwkJCQkJPgor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA2MjI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzksNiArMjc5
LDcgQEAKIAkJMEZGNTAyNkExMDJCQTk0MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNTAyNjgxMDJCQTk0
MzAwNjZGMzlBIC8qIEpTU3R5bGVNZWRpYS5oICovOyB9OwogCQkwRkY1MDI3MTEwMkJBOTZBMDA2
NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAg
Ki87IH07CiAJCTBGRjUwMjcyMTAyQkE5NkEwMDY2RjM5QSAvKiBTdHlsZU1lZGlhLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY1MDI2RjEwMkJBOTZB
MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5oICovOyB9OworCQkxMDk2NkZGRjE0RDZCQUQ1MDAwNTkx
OTQgLyogSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTA5NjZGRkUxNEQ2QkFENTAwMDU5MTk0
IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMTQwMjY0
NUUwQUZEQzE5QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5RTIgLyogTG9n
Z2luZ01hYy5tbSAqLzsgfTsKIAkJMTQwM0I5OTcwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRv
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwM0I5
OTUwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDNCOTk4MDlFQjEzQUYwMDc5N0M3RiAvKiBE
T01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQwM0I5OTYwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRvdy5jcHAgKi87IH07CkBAIC02
OTY5LDYgKzY5NzAsNyBAQAogCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRp
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZU1lZGlhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNTAyNkYxMDJCQTk2QTAwNjZGMzlB
IC8qIFN0eWxlTWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVN
ZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY1MDI3MDEwMkJBOTZBMDA2
NkYzOUEgLyogU3R5bGVNZWRpYS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3R5bGVNZWRp
YS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTEwOTY2RkZFMTRENkJBRDUwMDA1
OTE5NCAvKiBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDI2NDVEMEFGREMxOUIwMDU5
MTlFMiAvKiBMb2dnaW5nTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IExvZ2dpbmdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNC
OTBDMDlFQjEyNDUwMDc5N0M3RiAvKiBET01XaW5kb3cuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTVdpbmRvdy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MDNCOTk1
MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTIz
NSw2ICsxOTIzNyw3IEBACiAJCQkJRTFBRDE0MjQxMjk1RUE5NTAwQUNBOTg5IC8qIEpTSFRNTE9i
amVjdEVsZW1lbnRDdXN0b20uaCAqLywKIAkJCQk0NDhBRDI3QTBBNDgxMzc5MDAyM0QxNzkgLyog
SlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICovLAogCQkJCTRBRDAwRkZGMTI3RTYz
MTAwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCAqLywKKwkJCQkxMDk2
NkZGRTE0RDZCQUQ1MDAwNTkxOTQgLyogSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DdXN0b20u
Y3BwICovLAogCQkJCUJDMTdGOTY1MEI2NEVCQjgwMDRBNjVDQiAvKiBKU0hUTUxTZWxlY3RFbGVt
ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlBQjRDQjRFQTBCOEJEQTNEMDA5RjQwQjAgLyogSlNIVE1M
U2VsZWN0RWxlbWVudEN1c3RvbS5oICovLAogCQkJCUUxQUQxMzlEMTI5NUQ5NjEwMEFDQTk4OSAv
KiBKU0hUTUxTdHlsZUVsZW1lbnRDdXN0b20uY3BwICovLApAQCAtMjcwMzAsNiArMjcwMzMsNyBA
QAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyMEIwQTAxNEQzMzIzNTAwNjQyOTU1IC8qIEdl
bmVyaWNFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTEwOTY2RkZGMTRENkJBRDUw
MDA1OTE5NCAvKiBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkN1
c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UsCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICoKKyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
CisgKiBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQorICogYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dAorICogc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUlDUk9EQVRBKQorCisjaW5jbHVkZSAiSlNIVE1MUHJv
cGVydGllc0NvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKKyNpbmNs
dWRlICJOb2RlLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pT
VmFsdWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uKiBwcm9wZXJ0aWVzQ29sbGVjdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQoreworICAgIHJldHVybiBwcm9wZXJ0aWVzQ29sbGVjdGlvbi0+Y2FuR2V0SXRl
bXNGb3JOYW1lKGlkZW50aWZpZXJUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKK30KKworSlNWYWx1
ZSBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3sKKyAg
ICBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBIVE1MUHJv
cGVydGllc0NvbGxlY3Rpb24qIHByb3BlcnRpZXNDb2xsZWN0aW9uID0gc3RhdGljX2Nhc3Q8SFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uKj4odGhpc09iai0+aW1wbCgpKTsKKyAgICByZXR1cm4gdG9K
UyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydGllc0NvbGxlY3Rpb24tPm5h
bWVkSXRlbShpZGVudGlmaWVyVG9TdHJpbmcocHJvcGVydHlOYW1lKSkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUlDUk9EQVRBKQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcAkocmV2
aXNpb24gMTA2MjI5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCisj
aW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
NzIsNiArMTczLDQzIEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSFRNTFByb3BlcnRpZXMK
ICAgICByZXR1cm4gbV9wcm9wZXJ0eU5hbWVzOwogfQogCit2b2lkIEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbjo6Z2V0TmFtZWRJdGVtcyhWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5hbWVkSXRlbXMs
IGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsK
KworICAgIGlmICghYmFzZSgpLT5pc0hUTUxFbGVtZW50KCkgfHwgIXRvSFRNTEVsZW1lbnQoYmFz
ZSgpKS0+ZmFzdEhhc0F0dHJpYnV0ZShpdGVtc2NvcGVBdHRyKSkKKyAgICAgIHJldHVybjsKKwor
ICAgIGZpbmRQcm9wZXRpZXNPZkFuSXRlbShiYXNlKCkpOworCisgICAgc3RkOjpzb3J0KG1fcHJv
cGVydGllcy5iZWdpbigpLCBtX3Byb3BlcnRpZXMuZW5kKCksIGNvbXBhcmVUcmVlT3JkZXIpOwor
CisgICAgLy8gRm9yIGVhY2ggaXRlbSBwcm9wZXJ0aWVzLCBzcGxpdCB0aGUgdmFsdWUgb2YgdGhh
dCBpdGVtcHJvcCBhdHRyaWJ1dGUgb24gc3BhY2VzLgorICAgIC8vIEFkZCBlbGVtZW50IHRvIG5h
bWVkSXRlbSB0aGF0IGNvbnRhaW5zIGEgcHJvcGVydHkgbmFtZWQgbmFtZSwgd2l0aCB0aGUgb3Jk
ZXIgcHJlc2VydmVkLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0aWVzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVtUHJvcGVydHkg
PSBtX3Byb3BlcnRpZXNbaV0tPml0ZW1Qcm9wKCk7CisgICAgICAgIGlmIChpdGVtUHJvcGVydHkt
PnRva2VucygpLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICAgICAgbmFtZWRJdGVtcy5hcHBlbmQo
bV9wcm9wZXJ0aWVzW2ldKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QK
K3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBnZXROYW1lZEl0
ZW1zKG5hbWVkSXRlbXMsIG5hbWUpOworCisgICAgLy8gRklYTUU6IEhUTUw1IHNwZWNpZmllcyB0
aGF0IHRoaXMgc2hvdWxkIHJldHVybiBQcm9wZXJ0eU5vZGVMaXN0LgorICAgIHJldHVybiAhbmFt
ZWRJdGVtcy5pc0VtcHR5KCkgPyBTdGF0aWNOb2RlTGlzdDo6YWRvcHQobmFtZWRJdGVtcykgOiAw
OworfQorCitib29sIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4g
bmFtZWRJdGVtczsKKyAgICBnZXROYW1lZEl0ZW1zKG5hbWVkSXRlbXMsIG5hbWUpOworCisgICAg
cmV0dXJuICFuYW1lZEl0ZW1zLmlzRW1wdHkoKSA/IHRydWUgOiBmYWxzZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkocmV2aXNp
b24gMTA2MjI5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDE0IEBAIHB1YmxpYzoKIAogICAgIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbmFtZXMoKSBjb25zdDsKIAorICAgIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IG5hbWVkSXRlbShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIGNhbkdl
dEl0ZW1zRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OworCiBwcml2YXRlOgogICAg
IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbihOb2RlKik7CiAKICAgICB2b2lkIGZpbmRQcm9wZXRp
ZXNPZkFuSXRlbShOb2RlKiBjdXJyZW50KSBjb25zdDsKKyAgICB2b2lkIGdldE5hbWVkSXRlbXMo
VmVjdG9yPFJlZlB0cjxOb2RlPiA+JiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBtdXRh
YmxlIFZlY3RvcjxOb2RlKj4gbV9wcm9wZXJ0aWVzOwogICAgIG11dGFibGUgUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IG1fcHJvcGVydHlOYW1lczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwJKHJldmlzaW9uIDEwNjIyOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTMgKzMyLDE1IEBAIG1vZHVsZSBodG1sIHsKIAogICAgIGludGVyZmFjZSBb
CiAgICAgICAgIENvbmRpdGlvbmFsPU1JQ1JPREFUQSwKLSAgICAgICAgSGFzSW5kZXhHZXR0ZXIK
KyAgICAgICAgSGFzSW5kZXhHZXR0ZXIsCisgICAgICAgIEhhc05hbWVHZXR0ZXIKICAgICBdIEhU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAgICBOb2RlIGl0ZW0oaW4g
dW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZ0xpc3QgbmFtZXM7CiAKLSAgICAgICAgLy8gRklYTUU6IG92ZXJyaWRlIGluaGVyaXRlZCBu
YW1lZEl0ZW0oKQorICAgICAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBz
aG91bGQgcmV0dXJuIFByb3BlcnR5Tm9kZUxpc3QuCisgICAgICAgIE5vZGVMaXN0IG5hbWVkSXRl
bShpbiBET01TdHJpbmcgbmFtZSk7CiAgICAgfTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjIy
OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTAxLTMwICBBcmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAg
ICBNaWNyb2RhdGE6IEltcGxlbWVudCBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24gY29sbGVjdGlv
bi5uYW1lZEl0ZW0oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczMTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRp
dmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvbmFt
ZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVy
dGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9u
YW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1l
ZGl0ZW0tdGVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3Jv
RGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbDogQWRkZWQuCisK
IDIwMTItMDEtMzAgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9uIGNoYW5nZS4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNp
dGl2ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWlj
cm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVz
dC1iZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjMgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgbmFtZWRJdGVtIG11c3QgYmUgY2FzZSBzZW5z
aXRpdmUuCisKK0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKK1NldCBhdHRyaWJ1dGU6IGl0
ZW1zY29wZSwgdmFsdWU6IGl0ZW1zY29wZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJ
dGVtKCdmb28nKS5sZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgnRk9PJykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJv
cGVydGllcy5uYW1lZEl0ZW0oJ0ZPbycpLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVt
ZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQg
aXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsxXSA9PSBl
bGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9w
ZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJylbMF0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmZpcnN0
Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT28nKVsw
XSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIGlzIHRydWUKKworUEFTUyBlbGVt
ZW50LnByb3BlcnRpZXNbJ2ZvbyddLmxlbmd0aCA9PSAnMicgaXMgdHJ1ZQorUEFTUyBlbGVtZW50
LnByb3BlcnRpZXNbJ0ZPTyddLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnBy
b3BlcnRpZXNbJ0ZPbyddLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3Bl
cnRpZXNbJ2ZvbyddWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGVsZW1l
bnQucHJvcGVydGllc1snZm9vJ11bMV0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGls
ZCBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snRk9PJ11bMF0gPT0gZWxlbWVudC5j
aGlsZE5vZGVzWzFdLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNb
J0ZPbyddWzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNp
dGl2ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9u
YW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0
aXZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEtY29tbW9u
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhh
dCBuYW1lZEl0ZW0gbXVzdCBiZSBjYXNlIHNlbnNpdGl2ZS48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtp
dGVtc2NvcGU6ICdpdGVtc2NvcGUnfSwgJzxkaXYgaXRlbXByb3A9ImZvbyI+PC9kaXY+PGRpdiBp
dGVtcHJvcD0iYmFyIj48ZGl2IGl0ZW1wcm9wPSJGT08iPjwvZGl2PjxkaXYgaXRlbXByb3A9ImZv
byBGT28gZm9vIj48L2Rpdj48L2Rpdj48ZGl2IGl0ZW1wcm9wPSJiYXogcXV4Ij48L2Rpdj4nKTsK
Kworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5n
dGggPT0gJzInIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0o
J0ZPTycpLmxlbmd0aCA9PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgnRk9vJykubGVuZ3RoID09ICcxJyIpOworCitzaG91bGRCZVRydWUoImVsZW1l
bnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIp
Oworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsxXSA9
PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIik7CitzaG91bGRCZVRydWUoImVsZW1l
bnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPTycpWzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sx
XS5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0
ZW0oJ0ZPbycpWzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQiKTsKK2RlYnVn
KCcnKTsKKworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddLmxlbmd0aCA9
PSAnMiciKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydGT08nXS5sZW5ndGgg
PT0gJzEnIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snRk9vJ10ubGVuZ3Ro
ID09ICcxJyIpOworCitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMF0g
PT0gZWxlbWVudC5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGll
c1snZm9vJ11bMV0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCIpOworc2hvdWxk
QmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPTyddWzBdID09IGVsZW1lbnQuY2hpbGROb2Rl
c1sxXS5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snRk9v
J11bMF0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCIpOworCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0
YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0
ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0
LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzUgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgbmFtZWRJdGVtIG11c3Qg
cmV0dXJuIHRoZSBjb3JyZWN0IGl0ZW0gcHJvcGVydGllcy4KKworQ3JlYXRlZCBlbGVtZW50IG9m
IHR5cGU6IGRpdgorCitUZXN0IHByb3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLgorUEFTUyBpdGVt
LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1Mg
aXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmFyJykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQ
QVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2JheicpLmxlbmd0aCA9PSAnMScgaXMgdHJ1
ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdxdXgnKS5sZW5ndGggPT0gJzEnIGlz
IHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVu
dC5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9v
JylbMV0gPT0gaXRlbS5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5h
bWVkSXRlbSgnYmFyJylbMF0gPT0gaXRlbS5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5w
cm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmF6JylbMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQgaXMgdHJ1
ZQorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdxdXgnKVswXSA9PSBlbGVtZW50Lmxh
c3RDaGlsZC5maXJzdENoaWxkIGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzW25hbWVdLgorUEFT
UyBpdGVtLnByb3BlcnRpZXNbJ2ZvbyddLmxlbmd0aCA9PSAnMicgaXMgdHJ1ZQorUEFTUyBpdGVt
LnByb3BlcnRpZXNbJ2JhciddLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3Bl
cnRpZXNbJ2JheiddLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNb
J3F1eCddLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2Zvbydd
WzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1sn
Zm9vJ11bMV0gPT0gaXRlbS5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVz
WydiYXInXVswXSA9PSBpdGVtLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRp
ZXNbJ2JheiddWzBdID09IGVsZW1lbnQubGFzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9w
ZXJ0aWVzWydxdXgnXVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIGlzIHRydWUK
KworVGVzdCBwcm9wZXJ0aWVzW2luZGV4XS4KK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWzBdID09IGVs
ZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1sxXSA9PSBpdGVt
LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbMl0gPT0gZWxlbWVudC5s
YXN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbM10gPT0gZWxlbWVudC5sYXN0
Q2hpbGQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRh
L25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1y
ZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1p
dGVtLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21pY3Jv
ZGF0YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IHJldHVybiB0aGUgY29ycmVjdCBpdGVtIHByb3Bl
cnRpZXMuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGVsZW1l
bnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7fSwgJzxkaXYgaXRlbXByb3A9ImZvbyIgaWQ9Imlk
MSI+PC9kaXY+PGRpdiBpdGVtc2NvcGUgaXRlbXJlZj0iaWQyIGlkMSI+PGRpdiBpdGVtcHJvcD0i
Zm9vIGJhciI+PC9kaXY+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmF6IiBpZD0iaWQyIj48ZGl2IGl0
ZW1wcm9wPSJxdXgiPicpOwordmFyIGl0ZW0gPSBlbGVtZW50LmNoaWxkTm9kZXNbMV07Citkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVy
dGllcy5uYW1lZEl0ZW0obmFtZSkuIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5u
YW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCA9PSAnMiciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9w
ZXJ0aWVzLm5hbWVkSXRlbSgnYmFyJykubGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVlKCJp
dGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXonKS5sZW5ndGggPT0gJzEnIik7CitzaG91bGRC
ZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ3F1eCcpLmxlbmd0aCA9PSAnMSciKTsK
Kworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSA9PSBl
bGVtZW50LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVk
SXRlbSgnZm9vJylbMV0gPT0gaXRlbS5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0u
cHJvcGVydGllcy5uYW1lZEl0ZW0oJ2JhcicpWzBdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hv
dWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXonKVswXSA9PSBlbGVtZW50
Lmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdx
dXgnKVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIik7CisKK2RlYnVnKCI8YnI+
VGVzdCBwcm9wZXJ0aWVzW25hbWVdLiIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNb
J2ZvbyddLmxlbmd0aCA9PSAnMiciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydi
YXInXS5sZW5ndGggPT0gJzEnIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snYmF6
J10ubGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ3F1eCdd
Lmxlbmd0aCA9PSAnMSciKTsKKworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2Zvbydd
WzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRp
ZXNbJ2ZvbyddWzFdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnBy
b3BlcnRpZXNbJ2JhciddWzBdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJp
dGVtLnByb3BlcnRpZXNbJ2JheiddWzBdID09IGVsZW1lbnQubGFzdENoaWxkIik7CitzaG91bGRC
ZVRydWUoIml0ZW0ucHJvcGVydGllc1sncXV4J11bMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQuZmly
c3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllc1tpbmRleF0uIik7CitzaG91
bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1swXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQiKTsKK3No
b3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWzFdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hv
dWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbMl0gPT0gZWxlbWVudC5sYXN0Q2hpbGQiKTsKK3No
b3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWzNdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0
Q2hpbGQiKQorCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRl
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3Jv
RGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMt
Y29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjIgQEAKK1Byb3BlcnRpZXMgY29sbGVjdGlvbidzIG5hbWVkSXRlbSBwcm9wZXJ0eSBz
aW1wbGUgdGVzdC4KKworQ3JlYXRlZCBlbGVtZW50IG9mIHR5cGU6IGRpdgorU2V0IGF0dHJpYnV0
ZTogaXRlbXNjb3BlLCB2YWx1ZTogaXRlbXNjb3BlCisKK1Rlc3QgcHJvcGVydGllcy5uYW1lZEl0
ZW0obmFtZSkuCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpIGlzIGRl
ZmluZWQuCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCA9
PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsw
XSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorCitUZXN0IHByb3BlcnRpZXNbbmFtZV0u
CitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9vJ10gaXMgZGVmaW5lZC4KK1BBU1MgZWxlbWVu
dC5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5w
cm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorCitUZXN0
IHByb3BlcnRpZXNbaW5kZXhdLgorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbMF0gaXMgZGVmaW5l
ZC4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0
cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlv
bi1uYW1lZGl0ZW0tdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNv
bGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5Q
cm9wZXJ0aWVzIGNvbGxlY3Rpb24ncyBuYW1lZEl0ZW0gcHJvcGVydHkgc2ltcGxlIHRlc3QuPC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGVsZW1lbnQgPSBjcmVh
dGVFbGVtZW50KCdkaXYnLCB7aXRlbXNjb3BlOiAnaXRlbXNjb3BlJ30sICc8ZGl2IGl0ZW1wcm9w
PSJmb28iPjwvZGl2PicpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllcy5uYW1lZEl0ZW0o
bmFtZSkuIik7CitzaG91bGRCZURlZmluZWQoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0o
J2ZvbycpIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2Zv
bycpLmxlbmd0aCA9PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5h
bWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CisKK2RlYnVnKCI8YnI+
VGVzdCBwcm9wZXJ0aWVzW25hbWVdLiIpOworc2hvdWxkQmVEZWZpbmVkKCJlbGVtZW50LnByb3Bl
cnRpZXNbJ2ZvbyddIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ10u
bGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2Zvbydd
WzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGll
c1tpbmRleF0uIik7CitzaG91bGRCZURlZmluZWQoImVsZW1lbnQucHJvcGVydGllc1swXSIpOwor
c2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbMF0gPT0gZWxlbWVudC5maXJzdENoaWxk
Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126761</attachid>
            <date>2012-02-13 05:54:04 -0800</date>
            <delta_ts>2012-02-28 00:23:09 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_73156_modified.diff</filename>
            <type>text/plain</type>
            <size>18209</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzU2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTAyLTEzICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0ZW0oKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vTWlj
cm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVt
LXByb3BlcnRpZXMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vTWljcm9EYXRhL3Byb3Bl
cnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTogTW9kaWZpZWQgY29kZSBnZW5lcmF0b3IgdG8g
Z2VuZXJhdGUKKyAgICAgICAgY29kZSBmb3IgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIE5hbWVk
R2V0dGVyIHByb3BlcnR5LgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAg
ICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpuYW1lcyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Z2V0TmFtZWRJdGVt
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Om5hbWVkSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Omhhc05hbWVk
SXRlbSk6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaDoKKyAgICAg
ICAgKEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24uaWRsOgorCiAyMDEyLTAyLTA2ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEg
IDxrdWJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIERyb3Agc3VwcG9ydCBmb3Ig
dGhlIEN1cmwgbmV0d29yayBiYWNrZW5kLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEwNzU2MykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjMyLDYgKzIyMzIsMjIgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiSFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uIikgeworICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIifSkgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJib29sICR7Y2xhc3NOYW1lfTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosICRp
bXBsQ2xhc3NOYW1lKiBjb2xsZWN0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVt
KGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICB9CisgICAgICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9KSB7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2Jq
ID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmot
PmltcGwoKSktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICBpZiAoKCEkaGFzUGFyZW50ICYmICEkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUlzUmVhY2hhYmxlIn0pfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSlNHZW5lcmF0ZUlzUmVhY2hhYmxlIn0gfHwgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQWN0aXZlRE9NT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJzdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxlKEpTJHtpbXBsQ2xh
c3NOYW1lfSoganMke2ltcGxDbGFzc05hbWV9KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMDc1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3Miw2ICsxNzMsNDMgQEAgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBIVE1MUHJvcGVydGllcwogICAgIHJldHVybiBtX3Byb3BlcnR5TmFtZXM7CiB9CiAK
K3ZvaWQgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpnZXROYW1lZEl0ZW1zKFZlY3RvcjxSZWZQ
dHI8Tm9kZT4gPiYgbmFtZWRJdGVtcywgY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAg
IG1fcHJvcGVydGllcy5jbGVhcigpOworCisgICAgaWYgKCFiYXNlKCktPmlzSFRNTEVsZW1lbnQo
KSB8fCAhdG9IVE1MRWxlbWVudChiYXNlKCkpLT5mYXN0SGFzQXR0cmlidXRlKGl0ZW1zY29wZUF0
dHIpKQorICAgICAgcmV0dXJuOworCisgICAgZmluZFByb3BldGllc09mQW5JdGVtKGJhc2UoKSk7
CisKKyAgICBzdGQ6OnNvcnQobV9wcm9wZXJ0aWVzLmJlZ2luKCksIG1fcHJvcGVydGllcy5lbmQo
KSwgY29tcGFyZVRyZWVPcmRlcik7CisKKyAgICAvLyBGb3IgZWFjaCBpdGVtIHByb3BlcnRpZXMs
IHNwbGl0IHRoZSB2YWx1ZSBvZiB0aGF0IGl0ZW1wcm9wIGF0dHJpYnV0ZSBvbiBzcGFjZXMuCisg
ICAgLy8gQWRkIGVsZW1lbnQgdG8gbmFtZWRJdGVtIHRoYXQgY29udGFpbnMgYSBwcm9wZXJ0eSBu
YW1lZCBuYW1lLCB3aXRoIHRoZSBvcmRlciBwcmVzZXJ2ZWQuCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3Byb3BlcnRpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRE9NU2V0dGFibGVU
b2tlbkxpc3QqIGl0ZW1Qcm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpXS0+aXRlbVByb3AoKTsKKyAg
ICAgICAgaWYgKGl0ZW1Qcm9wZXJ0eS0+dG9rZW5zKCkuY29udGFpbnMobmFtZSkpCisgICAgICAg
ICAgICBuYW1lZEl0ZW1zLmFwcGVuZChtX3Byb3BlcnRpZXNbaV0pOworICAgIH0KK30KKworUGFz
c1JlZlB0cjxOb2RlTGlzdD4gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29u
c3QgU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1l
ZEl0ZW1zOworICAgIGdldE5hbWVkSXRlbXMobmFtZWRJdGVtcywgbmFtZSk7CisKKyAgICAvLyBG
SVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBzaG91bGQgcmV0dXJuIFByb3BlcnR5Tm9k
ZUxpc3QuCisgICAgcmV0dXJuICFuYW1lZEl0ZW1zLmlzRW1wdHkoKSA/IFN0YXRpY05vZGVMaXN0
OjphZG9wdChuYW1lZEl0ZW1zKSA6IDA7Cit9CisKK2Jvb2wgSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uOjpoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAg
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOworICAgIGdldE5hbWVkSXRlbXMobmFt
ZWRJdGVtcywgbmFtZSk7CisKKyAgICByZXR1cm4gIW5hbWVkSXRlbXMuaXNFbXB0eSgpID8gdHJ1
ZSA6IGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoTUlDUk9EQVRBKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMDc1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMCArNTAs
MTQgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBuYW1lcygpIGNv
bnN0OwogCisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbmFtZWRJdGVtKGNvbnN0IFN0cmluZyYp
IGNvbnN0OworICAgIGJvb2wgaGFzTmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKE5vZGUqKTsK
IAogICAgIHZvaWQgZmluZFByb3BldGllc09mQW5JdGVtKE5vZGUqIGN1cnJlbnQpIGNvbnN0Owor
ICAgIHZvaWQgZ2V0TmFtZWRJdGVtcyhWZWN0b3I8UmVmUHRyPE5vZGU+ID4mLCBjb25zdCBTdHJp
bmcmKSBjb25zdDsKIAogICAgIG11dGFibGUgVmVjdG9yPE5vZGUqPiBtX3Byb3BlcnRpZXM7CiAg
ICAgbXV0YWJsZSBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbV9wcm9wZXJ0eU5hbWVzOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbAko
cmV2aXNpb24gMTA3NTYzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTUgQEAgbW9kdWxlIGh0
bWwgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9TUlDUk9EQVRBLAot
ICAgICAgICBJbmRleGVkR2V0dGVyCisgICAgICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgICAgIE5h
bWVkR2V0dGVyCiAgICAgXSBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24gOiBIVE1MQ29sbGVjdGlv
biB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAg
ICAgICAgTm9kZSBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IG5hbWVzOwogCi0gICAgICAgIC8vIEZJWE1FOiBv
dmVycmlkZSBpbmhlcml0ZWQgbmFtZWRJdGVtKCkKKyAgICAgICAgLy8gRklYTUU6IEhUTUw1IHNw
ZWNpZmllcyB0aGF0IHRoaXMgc2hvdWxkIHJldHVybiBQcm9wZXJ0eU5vZGVMaXN0LgorICAgICAg
ICBOb2RlTGlzdCBuYW1lZEl0ZW0oaW4gRE9NU3RyaW5nIG5hbWUpOwogICAgIH07CiB9CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDc1NjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0xMyAgQXJrbyBTYWhhICA8YXJrb0Btb3Rv
cm9sYS5jb20+CisKKyAgICAgICAgTWljcm9kYXRhOiBJbXBsZW1lbnQgSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uIGNvbGxlY3Rpb24ubmFtZWRJdGVtKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzE1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1t
dXN0LWJlLWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4t
Y29ycmVjdC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9w
ZXJ0aWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0
aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10
ZXN0Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTEzICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmls
b3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZCAiSU1BR0UiIHRvIHR3
byBzdmcvY2FydG8ubmV0IHRlc3RzIGV4cGVjdGF0aW9ucy4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVk
aXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNl
bnNpdGl2ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1RoaXMg
dGVzdCBlbnN1cmVzIHRoYXQgbmFtZWRJdGVtIG11c3QgYmUgY2FzZSBzZW5zaXRpdmUuCisKK0Ny
ZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKK1NldCBhdHRyaWJ1dGU6IGl0ZW1zY29wZSwgdmFs
dWU6IGl0ZW1zY29wZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5s
ZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgn
Rk9PJykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1l
ZEl0ZW0oJ0ZPbycpLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRp
ZXMubmFtZWRJdGVtKCdmb28nKVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFT
UyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsxXSA9PSBlbGVtZW50LmNoaWxk
Tm9kZXNbMV0ubGFzdENoaWxkIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVk
SXRlbSgnRk9PJylbMF0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmZpcnN0Q2hpbGQgaXMgdHJ1
ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT28nKVswXSA9PSBlbGVtZW50
LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIGlzIHRydWUKKworUEFTUyBlbGVtZW50LnByb3BlcnRp
ZXNbJ2ZvbyddLmxlbmd0aCA9PSAnMicgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNb
J0ZPTyddLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ0ZP
byddLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ2Zvbydd
WzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGll
c1snZm9vJ11bMV0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCBpcyB0cnVlCitQ
QVNTIGVsZW1lbnQucHJvcGVydGllc1snRk9PJ11bMF0gPT0gZWxlbWVudC5jaGlsZE5vZGVzWzFd
LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddWzBdID09
IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVz
dC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBuYW1lZEl0ZW0g
bXVzdCBiZSBjYXNlIHNlbnNpdGl2ZS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQ+Cit2YXIgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtpdGVtc2NvcGU6ICdp
dGVtc2NvcGUnfSwgJzxkaXYgaXRlbXByb3A9ImZvbyI+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmFy
Ij48ZGl2IGl0ZW1wcm9wPSJGT08iPjwvZGl2PjxkaXYgaXRlbXByb3A9ImZvbyBGT28gZm9vIj48
L2Rpdj48L2Rpdj48ZGl2IGl0ZW1wcm9wPSJiYXogcXV4Ij48L2Rpdj4nKTsKKworc2hvdWxkQmVU
cnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0gJzInIik7
CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPTycpLmxlbmd0
aCA9PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgn
Rk9vJykubGVuZ3RoID09ICcxJyIpOworCitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGll
cy5uYW1lZEl0ZW0oJ2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworc2hvdWxkQmVU
cnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsxXSA9PSBlbGVtZW50LmNo
aWxkTm9kZXNbMV0ubGFzdENoaWxkIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGll
cy5uYW1lZEl0ZW0oJ0ZPTycpWzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5maXJzdENoaWxk
Iik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPbycpWzBd
ID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQiKTsKK2RlYnVnKCcnKTsKKworc2hv
dWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddLmxlbmd0aCA9PSAnMiciKTsKK3No
b3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydGT08nXS5sZW5ndGggPT0gJzEnIik7Citz
aG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snRk9vJ10ubGVuZ3RoID09ICcxJyIpOwor
CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMF0gPT0gZWxlbWVudC5m
aXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMV0g
PT0gZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJlbGVt
ZW50LnByb3BlcnRpZXNbJ0ZPTyddWzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5maXJzdENo
aWxkIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snRk9vJ11bMF0gPT0gZWxl
bWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0t
bXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1
cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3Jy
ZWN0LWl0ZW0tcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzUgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgbmFtZWRJdGVtIG11c3QgcmV0dXJuIHRoZSBj
b3JyZWN0IGl0ZW0gcHJvcGVydGllcy4KKworQ3JlYXRlZCBlbGVtZW50IG9mIHR5cGU6IGRpdgor
CitUZXN0IHByb3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLgorUEFTUyBpdGVtLnByb3BlcnRpZXMu
bmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0
aWVzLm5hbWVkSXRlbSgnYmFyJykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJv
cGVydGllcy5uYW1lZEl0ZW0oJ2JheicpLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVt
LnByb3BlcnRpZXMubmFtZWRJdGVtKCdxdXgnKS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1Mg
aXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxk
IGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMV0gPT0gaXRl
bS5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmFy
JylbMF0gPT0gaXRlbS5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5h
bWVkSXRlbSgnYmF6JylbMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVt
LnByb3BlcnRpZXMubmFtZWRJdGVtKCdxdXgnKVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJz
dENoaWxkIGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzW25hbWVdLgorUEFTUyBpdGVtLnByb3Bl
cnRpZXNbJ2ZvbyddLmxlbmd0aCA9PSAnMicgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNb
J2JhciddLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2Jheidd
Lmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ3F1eCddLmxlbmd0
aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2ZvbyddWzBdID09IGVsZW1l
bnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snZm9vJ11bMV0gPT0g
aXRlbS5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydiYXInXVswXSA9
PSBpdGVtLmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2JheiddWzBd
ID09IGVsZW1lbnQubGFzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydxdXgn
XVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIGlzIHRydWUKKworVGVzdCBwcm9w
ZXJ0aWVzW2luZGV4XS4KK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWzBdID09IGVsZW1lbnQuZmlyc3RD
aGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1sxXSA9PSBpdGVtLmZpcnN0Q2hpbGQg
aXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbMl0gPT0gZWxlbWVudC5sYXN0Q2hpbGQgaXMg
dHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbM10gPT0gZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RD
aGlsZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1t
dXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVj
dC1pdGVtLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRp
ZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24u
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgZW5zdXJlcyB0aGF0
IG5hbWVkSXRlbSBtdXN0IHJldHVybiB0aGUgY29ycmVjdCBpdGVtIHByb3BlcnRpZXMuPC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGVsZW1lbnQgPSBjcmVhdGVF
bGVtZW50KCdkaXYnLCB7fSwgJzxkaXYgaXRlbXByb3A9ImZvbyIgaWQ9ImlkMSI+PC9kaXY+PGRp
diBpdGVtc2NvcGUgaXRlbXJlZj0iaWQyIGlkMSI+PGRpdiBpdGVtcHJvcD0iZm9vIGJhciI+PC9k
aXY+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmF6IiBpZD0iaWQyIj48ZGl2IGl0ZW1wcm9wPSJxdXgi
PicpOwordmFyIGl0ZW0gPSBlbGVtZW50LmNoaWxkTm9kZXNbMV07Citkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGVsZW1lbnQpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllcy5uYW1lZEl0
ZW0obmFtZSkuIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2Zv
bycpLmxlbmd0aCA9PSAnMiciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVk
SXRlbSgnYmFyJykubGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRp
ZXMubmFtZWRJdGVtKCdiYXonKS5sZW5ndGggPT0gJzEnIik7CitzaG91bGRCZVRydWUoIml0ZW0u
cHJvcGVydGllcy5uYW1lZEl0ZW0oJ3F1eCcpLmxlbmd0aCA9PSAnMSciKTsKKworc2hvdWxkQmVU
cnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSA9PSBlbGVtZW50LmZpcnN0
Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylb
MV0gPT0gaXRlbS5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5u
YW1lZEl0ZW0oJ2JhcicpWzBdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJp
dGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXonKVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZCIp
Oworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdxdXgnKVswXSA9PSBl
bGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIik7CisKK2RlYnVnKCI8YnI+VGVzdCBwcm9wZXJ0
aWVzW25hbWVdLiIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2ZvbyddLmxlbmd0
aCA9PSAnMiciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXInXS5sZW5ndGgg
PT0gJzEnIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snYmF6J10ubGVuZ3RoID09
ICcxJyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ3F1eCddLmxlbmd0aCA9PSAn
MSciKTsKKworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2ZvbyddWzBdID09IGVsZW1l
bnQuZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2ZvbyddWzFd
ID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2Jh
ciddWzBdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRp
ZXNbJ2JheiddWzBdID09IGVsZW1lbnQubGFzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0u
cHJvcGVydGllc1sncXV4J11bMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCIpOwor
CitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllc1tpbmRleF0uIik7CitzaG91bGRCZVRydWUoIml0
ZW0ucHJvcGVydGllc1swXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgi
aXRlbS5wcm9wZXJ0aWVzWzFdID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJp
dGVtLnByb3BlcnRpZXNbMl0gPT0gZWxlbWVudC5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgi
aXRlbS5wcm9wZXJ0aWVzWzNdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQiKQorCis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0
aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1u
YW1lZGl0ZW0tdGVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAK
K1Byb3BlcnRpZXMgY29sbGVjdGlvbidzIG5hbWVkSXRlbSBwcm9wZXJ0eSBzaW1wbGUgdGVzdC4K
KworQ3JlYXRlZCBlbGVtZW50IG9mIHR5cGU6IGRpdgorU2V0IGF0dHJpYnV0ZTogaXRlbXNjb3Bl
LCB2YWx1ZTogaXRlbXNjb3BlCisKK1Rlc3QgcHJvcGVydGllcy5uYW1lZEl0ZW0obmFtZSkuCitQ
QVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpIGlzIGRlZmluZWQuCitQQVNT
IGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCA9PSAnMScgaXMgdHJ1
ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSA9PSBlbGVtZW50
LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorCitUZXN0IHByb3BlcnRpZXNbbmFtZV0uCitQQVNTIGVsZW1l
bnQucHJvcGVydGllc1snZm9vJ10gaXMgZGVmaW5lZC4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVz
Wydmb28nXS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydm
b28nXVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorCitUZXN0IHByb3BlcnRpZXNb
aW5kZXhdLgorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbMF0gaXMgZGVmaW5lZC4KK1BBU1MgZWxl
bWVudC5wcm9wZXJ0aWVzWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0t
dGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9w
cm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFt
ZWRpdGVtLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21pY3JvZGF0
YS1jb21tb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5Qcm9wZXJ0aWVzIGNv
bGxlY3Rpb24ncyBuYW1lZEl0ZW0gcHJvcGVydHkgc2ltcGxlIHRlc3QuPC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdk
aXYnLCB7aXRlbXNjb3BlOiAnaXRlbXNjb3BlJ30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iPjwvZGl2
PicpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllcy5uYW1lZEl0ZW0obmFtZSkuIik7Citz
aG91bGRCZURlZmluZWQoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpIik7Citz
aG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCA9
PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9v
JylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CisKK2RlYnVnKCI8YnI+VGVzdCBwcm9wZXJ0
aWVzW25hbWVdLiIpOworc2hvdWxkQmVEZWZpbmVkKCJlbGVtZW50LnByb3BlcnRpZXNbJ2Zvbydd
Iik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ10ubGVuZ3RoID09ICcx
JyIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzBdID09IGVsZW1l
bnQuZmlyc3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGllc1tpbmRleF0uIik7
CitzaG91bGRCZURlZmluZWQoImVsZW1lbnQucHJvcGVydGllc1swXSIpOworc2hvdWxkQmVUcnVl
KCJlbGVtZW50LnByb3BlcnRpZXNbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="128671"
          type_id="1"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129205</attachid>
            <date>2012-02-28 00:23:09 -0800</date>
            <delta_ts>2012-02-28 06:34:42 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_73156_fix.diff</filename>
            <type>text/plain</type>
            <size>18606</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTA4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAyLTI4ICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0ZW0oKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL01p
Y3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRl
bS1wcm9wZXJ0aWVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9w
ZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IE1vZGlmaWVkIGNvZGUgZ2VuZXJhdG9yIHRv
IGdlbmVyYXRlCisgICAgICAgIEpTIGJpbmRpbmdzIGNvZGUgZm9yIEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbiBOYW1lZEdldHRlciBwcm9wZXJ0eS4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZXMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246
OmdldE5hbWVkSXRlbXMpOiBBZGQgZWxlbWVudCB0byBuYW1lZEl0ZW0KKyAgICAgICAgdGhhdCBj
b250YWlucyBhIHByb3BlcnR5IG5hbWVkIG5hbWUsIHdpdGggdGhlIG9yZGVyIHByZXNlcnZlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKTog
UmV0dXJucyBhIE5vZGVMaXN0IG9iamVjdAorICAgICAgICBjb250YWluaW5nIGFueSBlbGVtZW50
cyB0aGF0IGFkZCBhIHByb3BlcnR5IG5hbWVkIG5hbWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb246Omhhc05hbWVkSXRlbSk6IENoZWNrcyBpZiB0aGUgaXRlbXMg
Y2FuCisgICAgICAgIGJlIHJldHJpZXZlZCBvciBub3QgYmFzZWQgb24gdGhlIHByb3BlcnR5IG5h
bWVkIG5hbWUuCisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaDogQWRk
ZWQgbmFtZWRJdGVtKCksIGdldE5hbWVkSXRlbXMoKSBhbmQKKyAgICAgICAgaGFzTmFtZWRJdGVt
KCkgbWV0aG9kcy4KKyAgICAgICAgKEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbik6CisgICAgICAg
ICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsOiBBZGRlZCBuYW1lZEl0ZW0oKSBJ
REwgbWV0aG9kLgorCiAyMDEyLTAyLTI3ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkgYW5kIHNldFNo
YWRvd1Jvb3QoKSBzaG91bGQgYmUgbW92ZWQgaW50byBTaGFkb3dUcmVlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDEwOTA4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMjI0LDYgKzIyMjQsMjAgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIikgeworICAgICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRHZXR0ZXIifSkgeworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Y2FuR2V0SXRlbXNGb3JO
YW1lKEV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NOYW1lKiBjb2xsZWN0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY29sbGVj
dGlvbi0+aGFzTmFtZWRJdGVtKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09i
aiA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0aGlz
T2JqLT5nbG9iYWxPYmplY3QoKSwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2Jq
LT5pbXBsKCkpLT5uYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAg
ICAgICB9CisgICAgfQorCiAgICAgaWYgKCghJGhhc1BhcmVudCAmJiAhJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21Jc1JlYWNoYWJsZSJ9KXx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVJc1JlYWNoYWJsZSJ9IHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFjdGl2ZURPTU9iamVjdCJ9KSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZShKUyR7aW1wbENs
YXNzTmFtZX0qIGpzJHtpbXBsQ2xhc3NOYW1lfSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3Bl
cnRpZXNDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTA5MDgzKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzIsNiArMTczLDQzIEBAIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gSFRNTFByb3BlcnRpZXMKICAgICByZXR1cm4gbV9wcm9wZXJ0eU5hbWVzOwogfQog
Cit2b2lkIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Z2V0TmFtZWRJdGVtcyhWZWN0b3I8UmVm
UHRyPE5vZGU+ID4mIG5hbWVkSXRlbXMsIGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAg
ICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsKKworICAgIGlmICghYmFzZSgpLT5pc0hUTUxFbGVtZW50
KCkgfHwgIXRvSFRNTEVsZW1lbnQoYmFzZSgpKS0+ZmFzdEhhc0F0dHJpYnV0ZShpdGVtc2NvcGVB
dHRyKSkKKyAgICAgIHJldHVybjsKKworICAgIGZpbmRQcm9wZXRpZXNPZkFuSXRlbShiYXNlKCkp
OworCisgICAgc3RkOjpzb3J0KG1fcHJvcGVydGllcy5iZWdpbigpLCBtX3Byb3BlcnRpZXMuZW5k
KCksIGNvbXBhcmVUcmVlT3JkZXIpOworCisgICAgLy8gRm9yIGVhY2ggaXRlbSBwcm9wZXJ0aWVz
LCBzcGxpdCB0aGUgdmFsdWUgb2YgdGhhdCBpdGVtcHJvcCBhdHRyaWJ1dGUgb24gc3BhY2VzLgor
ICAgIC8vIEFkZCBlbGVtZW50IHRvIG5hbWVkSXRlbSB0aGF0IGNvbnRhaW5zIGEgcHJvcGVydHkg
bmFtZWQgbmFtZSwgd2l0aCB0aGUgb3JkZXIgcHJlc2VydmVkLgorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIERPTVNldHRhYmxl
VG9rZW5MaXN0KiBpdGVtUHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaV0tPml0ZW1Qcm9wKCk7Cisg
ICAgICAgIGlmIChpdGVtUHJvcGVydHktPnRva2VucygpLmNvbnRhaW5zKG5hbWUpKQorICAgICAg
ICAgICAgbmFtZWRJdGVtcy5hcHBlbmQobV9wcm9wZXJ0aWVzW2ldKTsKKyAgICB9Cit9CisKK1Bh
c3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFt
ZWRJdGVtczsKKyAgICBnZXROYW1lZEl0ZW1zKG5hbWVkSXRlbXMsIG5hbWUpOworCisgICAgLy8g
RklYTUU6IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRoaXMgc2hvdWxkIHJldHVybiBQcm9wZXJ0eU5v
ZGVMaXN0LgorICAgIHJldHVybiAhbmFtZWRJdGVtcy5pc0VtcHR5KCkgPyBTdGF0aWNOb2RlTGlz
dDo6YWRvcHQobmFtZWRJdGVtcykgOiAwOworfQorCitib29sIEhUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbjo6aGFzTmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAg
ICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbmFtZWRJdGVtczsKKyAgICBnZXROYW1lZEl0ZW1zKG5h
bWVkSXRlbXMsIG5hbWUpOworCisgICAgcmV0dXJuICFuYW1lZEl0ZW1zLmlzRW1wdHkoKSA/IHRy
dWUgOiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTA5MDgzKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUw
LDE0IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbmFtZXMoKSBj
b25zdDsKIAorICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5hbWVkSXRlbShjb25zdCBTdHJpbmcm
KSBjb25zdDsKKyAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbihOb2RlKik7
CiAKICAgICB2b2lkIGZpbmRQcm9wZXRpZXNPZkFuSXRlbShOb2RlKiBjdXJyZW50KSBjb25zdDsK
KyAgICB2b2lkIGdldE5hbWVkSXRlbXMoVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiwgY29uc3QgU3Ry
aW5nJikgY29uc3Q7CiAKICAgICBtdXRhYmxlIFZlY3RvcjxOb2RlKj4gbV9wcm9wZXJ0aWVzOwog
ICAgIG11dGFibGUgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG1fcHJvcGVydHlOYW1lczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwJ
KHJldmlzaW9uIDEwOTA4MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMyLDE1IEBAIG1vZHVsZSBo
dG1sIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPU1JQ1JPREFUQSwK
LSAgICAgICAgSW5kZXhlZEdldHRlcgorICAgICAgICBJbmRleGVkR2V0dGVyLAorICAgICAgICBO
YW1lZEdldHRlcgogICAgIF0gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIDogSFRNTENvbGxlY3Rp
b24gewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAg
ICAgICAgIE5vZGUgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKIAogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBuYW1lczsKIAotICAgICAgICAvLyBGSVhNRTog
b3ZlcnJpZGUgaW5oZXJpdGVkIG5hbWVkSXRlbSgpCisgICAgICAgIC8vIEZJWE1FOiBIVE1MNSBz
cGVjaWZpZXMgdGhhdCB0aGlzIHNob3VsZCByZXR1cm4gUHJvcGVydHlOb2RlTGlzdC4KKyAgICAg
ICAgTm9kZUxpc3QgbmFtZWRJdGVtKGluIERPTVN0cmluZyBuYW1lKTsKICAgICB9OwogfQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTA5MDg1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDItMjggIEFya28gU2FoYSAgPGFya29AbW90
b3JvbGEuY29tPgorCisgICAgICAgIE1pY3JvZGF0YTogSW1wbGVtZW50IEhUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvbiBjb2xsZWN0aW9uLm5hbWVkSXRlbSgpLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxNTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0LWNhc2VzIGZvciBjb2xsZWN0aW9u
Lm5hbWVkSXRlbSgpLgorCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1t
dXN0LWJlLWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4t
Y29ycmVjdC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9w
ZXJ0aWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0
aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10
ZXN0Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTI4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBHVEsgdGVzdF9leHBlY3RhdGlv
bnMgdXBkYXRlLCBza2lwcGluZyAyIG5ldyBmYWlsaW5nCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0
ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5z
aXRpdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUaGlzIHRl
c3QgZW5zdXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IGJlIGNhc2Ugc2Vuc2l0aXZlLgorCitDcmVh
dGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CitTZXQgYXR0cmlidXRlOiBpdGVtc2NvcGUsIHZhbHVl
OiBpdGVtc2NvcGUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVu
Z3RoID09ICcyJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZP
TycpLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJ
dGVtKCdGT28nKS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKK1BBU1Mg
ZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMV0gPT0gZWxlbWVudC5jaGlsZE5v
ZGVzWzFdLmxhc3RDaGlsZCBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0
ZW0oJ0ZPTycpWzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5maXJzdENoaWxkIGlzIHRydWUK
K1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9vJylbMF0gPT0gZWxlbWVudC5j
aGlsZE5vZGVzWzFdLmxhc3RDaGlsZCBpcyB0cnVlCisKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVz
Wydmb28nXS5sZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydG
T08nXS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydGT28n
XS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXVsw
XSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNb
J2ZvbyddWzFdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQgaXMgdHJ1ZQorUEFT
UyBlbGVtZW50LnByb3BlcnRpZXNbJ0ZPTyddWzBdID09IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5m
aXJzdENoaWxkIGlzIHRydWUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydGT28nXVswXSA9PSBl
bGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3Qt
YmUtY2FzZS1zZW5zaXRpdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWljcm9kYXRhLWNvbW1vbi5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgbmFtZWRJdGVtIG11
c3QgYmUgY2FzZSBzZW5zaXRpdmUuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0PgordmFyIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7aXRlbXNjb3BlOiAnaXRl
bXNjb3BlJ30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iPjwvZGl2PjxkaXYgaXRlbXByb3A9ImJhciI+
PGRpdiBpdGVtcHJvcD0iRk9PIj48L2Rpdj48ZGl2IGl0ZW1wcm9wPSJmb28gRk9vIGZvbyI+PC9k
aXY+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmF6IHF1eCI+PC9kaXY+Jyk7CisKK3Nob3VsZEJlVHJ1
ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3RoID09ICcyJyIpOwor
c2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT08nKS5sZW5ndGgg
PT0gJzEnIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZP
bycpLmxlbmd0aCA9PSAnMSciKTsKKworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMu
bmFtZWRJdGVtKCdmb28nKVswXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1
ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMV0gPT0gZWxlbWVudC5jaGls
ZE5vZGVzWzFdLmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMu
bmFtZWRJdGVtKCdGT08nKVswXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0uZmlyc3RDaGlsZCIp
Oworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT28nKVswXSA9
PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0ubGFzdENoaWxkIik7CitkZWJ1ZygnJyk7CisKK3Nob3Vs
ZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGggPT0gJzInIik7CitzaG91
bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllc1snRk9PJ10ubGVuZ3RoID09ICcxJyIpOworc2hv
dWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddLmxlbmd0aCA9PSAnMSciKTsKKwor
c2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzBdID09IGVsZW1lbnQuZmly
c3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzFdID09
IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVu
dC5wcm9wZXJ0aWVzWydGT08nXVswXSA9PSBlbGVtZW50LmNoaWxkTm9kZXNbMV0uZmlyc3RDaGls
ZCIpOworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddWzBdID09IGVsZW1l
bnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11
c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJu
LWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVj
dC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1
IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IHJldHVybiB0aGUgY29y
cmVjdCBpdGVtIHByb3BlcnRpZXMuCisKK0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKKwor
VGVzdCBwcm9wZXJ0aWVzLm5hbWVkSXRlbShuYW1lKS4KK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5h
bWVkSXRlbSgnZm9vJykubGVuZ3RoID09ICcyJyBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGll
cy5uYW1lZEl0ZW0oJ2JhcicpLmxlbmd0aCA9PSAnMScgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3Bl
cnRpZXMubmFtZWRJdGVtKCdiYXonKS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgaXRlbS5w
cm9wZXJ0aWVzLm5hbWVkSXRlbSgncXV4JykubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGl0
ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCBp
cyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFdID09IGl0ZW0u
Zmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2Jhcicp
WzBdID09IGl0ZW0uZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllcy5uYW1l
ZEl0ZW0oJ2JheicpWzBdID09IGVsZW1lbnQubGFzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5w
cm9wZXJ0aWVzLm5hbWVkSXRlbSgncXV4JylbMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RD
aGlsZCBpcyB0cnVlCisKK1Rlc3QgcHJvcGVydGllc1tuYW1lXS4KK1BBU1MgaXRlbS5wcm9wZXJ0
aWVzWydmb28nXS5sZW5ndGggPT0gJzInIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydi
YXInXS5sZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydiYXonXS5s
ZW5ndGggPT0gJzEnIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydxdXgnXS5sZW5ndGgg
PT0gJzEnIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50
LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2ZvbyddWzFdID09IGl0
ZW0uZmlyc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1snYmFyJ11bMF0gPT0g
aXRlbS5maXJzdENoaWxkIGlzIHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydiYXonXVswXSA9
PSBlbGVtZW50Lmxhc3RDaGlsZCBpcyB0cnVlCitQQVNTIGl0ZW0ucHJvcGVydGllc1sncXV4J11b
MF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCBpcyB0cnVlCisKK1Rlc3QgcHJvcGVy
dGllc1tpbmRleF0uCitQQVNTIGl0ZW0ucHJvcGVydGllc1swXSA9PSBlbGVtZW50LmZpcnN0Q2hp
bGQgaXMgdHJ1ZQorUEFTUyBpdGVtLnByb3BlcnRpZXNbMV0gPT0gaXRlbS5maXJzdENoaWxkIGlz
IHRydWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWzJdID09IGVsZW1lbnQubGFzdENoaWxkIGlzIHRy
dWUKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWzNdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hp
bGQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVz
dC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3Qt
aXRlbS1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVz
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBu
YW1lZEl0ZW0gbXVzdCByZXR1cm4gdGhlIGNvcnJlY3QgaXRlbSBwcm9wZXJ0aWVzLjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBlbGVtZW50ID0gY3JlYXRlRWxl
bWVudCgnZGl2Jywge30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iIGlkPSJpZDEiPjwvZGl2PjxkaXYg
aXRlbXNjb3BlIGl0ZW1yZWY9ImlkMiBpZDEiPjxkaXYgaXRlbXByb3A9ImZvbyBiYXIiPjwvZGl2
PjwvZGl2PjxkaXYgaXRlbXByb3A9ImJheiIgaWQ9ImlkMiI+PGRpdiBpdGVtcHJvcD0icXV4Ij4n
KTsKK3ZhciBpdGVtID0gZWxlbWVudC5jaGlsZE5vZGVzWzFdOworZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChlbGVtZW50KTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXMubmFtZWRJdGVt
KG5hbWUpLiIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28n
KS5sZW5ndGggPT0gJzInIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0
ZW0oJ2JhcicpLmxlbmd0aCA9PSAnMSciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgnYmF6JykubGVuZ3RoID09ICcxJyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnBy
b3BlcnRpZXMubmFtZWRJdGVtKCdxdXgnKS5sZW5ndGggPT0gJzEnIik7CisKK3Nob3VsZEJlVHJ1
ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5maXJzdENo
aWxkIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFd
ID09IGl0ZW0uZmlyc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXMubmFt
ZWRJdGVtKCdiYXInKVswXSA9PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRl
bS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmF6JylbMF0gPT0gZWxlbWVudC5sYXN0Q2hpbGQiKTsK
K3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgncXV4JylbMF0gPT0gZWxl
bWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGll
c1tuYW1lXS4iKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGgg
PT0gJzInIik7CitzaG91bGRCZVRydWUoIml0ZW0ucHJvcGVydGllc1snYmFyJ10ubGVuZ3RoID09
ICcxJyIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnByb3BlcnRpZXNbJ2JheiddLmxlbmd0aCA9PSAn
MSciKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydxdXgnXS5sZW5ndGggPT0gJzEn
Iik7CisKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50
LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXVsxXSA9
PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXIn
XVswXSA9PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRlbS5wcm9wZXJ0aWVz
WydiYXonXVswXSA9PSBlbGVtZW50Lmxhc3RDaGlsZCIpOworc2hvdWxkQmVUcnVlKCJpdGVtLnBy
b3BlcnRpZXNbJ3F1eCddWzBdID09IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQiKTsKKwor
ZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbaW5kZXhdLiIpOworc2hvdWxkQmVUcnVlKCJpdGVt
LnByb3BlcnRpZXNbMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0
ZW0ucHJvcGVydGllc1sxXSA9PSBpdGVtLmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlVHJ1ZSgiaXRl
bS5wcm9wZXJ0aWVzWzJdID09IGVsZW1lbnQubGFzdENoaWxkIik7CitzaG91bGRCZVRydWUoIml0
ZW0ucHJvcGVydGllc1szXSA9PSBlbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIikKKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9N
aWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGll
cy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFt
ZWRpdGVtLXRlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACitQ
cm9wZXJ0aWVzIGNvbGxlY3Rpb24ncyBuYW1lZEl0ZW0gcHJvcGVydHkgc2ltcGxlIHRlc3QuCisK
K0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKK1NldCBhdHRyaWJ1dGU6IGl0ZW1zY29wZSwg
dmFsdWU6IGl0ZW1zY29wZQorCitUZXN0IHByb3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLgorUEFT
UyBlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKSBpcyBkZWZpbmVkLgorUEFTUyBl
bGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0gJzEnIGlzIHRydWUK
K1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gPT0gZWxlbWVudC5m
aXJzdENoaWxkIGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzW25hbWVdLgorUEFTUyBlbGVtZW50
LnByb3BlcnRpZXNbJ2ZvbyddIGlzIGRlZmluZWQuCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1sn
Zm9vJ10ubGVuZ3RoID09ICcxJyBpcyB0cnVlCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9v
J11bMF0gPT0gZWxlbWVudC5maXJzdENoaWxkIGlzIHRydWUKKworVGVzdCBwcm9wZXJ0aWVzW2lu
ZGV4XS4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWzBdIGlzIGRlZmluZWQuCitQQVNTIGVsZW1l
bnQucHJvcGVydGllc1swXSA9PSBlbGVtZW50LmZpcnN0Q2hpbGQgaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRl
c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJv
cGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVk
aXRlbS10ZXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEt
Y29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+UHJvcGVydGllcyBjb2xs
ZWN0aW9uJ3MgbmFtZWRJdGVtIHByb3BlcnR5IHNpbXBsZSB0ZXN0LjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudCgnZGl2
Jywge2l0ZW1zY29wZTogJ2l0ZW1zY29wZSd9LCAnPGRpdiBpdGVtcHJvcD0iZm9vIj48L2Rpdj4n
KTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLiIpOworc2hv
dWxkQmVEZWZpbmVkKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKSIpOworc2hv
dWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKS5sZW5ndGggPT0g
JzEnIik7CitzaG91bGRCZVRydWUoImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2Zvbycp
WzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJvcGVydGll
c1tuYW1lXS4iKTsKK3Nob3VsZEJlRGVmaW5lZCgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXSIp
Oworc2hvdWxkQmVUcnVlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddLmxlbmd0aCA9PSAnMSci
KTsKK3Nob3VsZEJlVHJ1ZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXVswXSA9PSBlbGVtZW50
LmZpcnN0Q2hpbGQiKTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbaW5kZXhdLiIpOwor
c2hvdWxkQmVEZWZpbmVkKCJlbGVtZW50LnByb3BlcnRpZXNbMF0iKTsKK3Nob3VsZEJlVHJ1ZSgi
ZWxlbWVudC5wcm9wZXJ0aWVzWzBdID09IGVsZW1lbnQuZmlyc3RDaGlsZCIpOworCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="131821"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129238</attachid>
            <date>2012-02-28 06:34:42 -0800</date>
            <delta_ts>2012-02-28 22:26:29 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_73156_fix.diff</filename>
            <type>text/plain</type>
            <size>19991</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTEwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAyLTI4ICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0ZW0oKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL01p
Y3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRl
bS1wcm9wZXJ0aWVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9w
ZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IE1vZGlmaWVkIGNvZGUgZ2VuZXJhdG9yIHRv
IGdlbmVyYXRlCisgICAgICAgIEpTIGJpbmRpbmdzIGNvZGUgZm9yIEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbiBbTmFtZWRHZXR0ZXJdIHByb3BlcnR5LgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpuYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKTogUmV0dXJucyBhIE5vZGVMaXN0IG9iamVjdAorICAgICAgICBjb250YWlu
aW5nIGFueSBlbGVtZW50cyB0aGF0IGFkZCBhIHByb3BlcnR5IG5hbWVkIG5hbWUuCisgICAgICAg
IChXZWJDb3JlOjpoYXNQcm9wZXJ0eSk6IFJldHVybnMgdHJ1ZSBpZiBlbGVtZW50IGhhcyBhbiBp
dGVtcHJvcCBhdHRyaWJ1dGUKKyAgICAgICAgc3BlY2lmaWVkLCBhbmQgaGFzIGEgcHJvcGVydHkg
bmFtZWQgbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6
aGFzTmFtZWRJdGVtKTogQ2hlY2tzIGlmIHRoZSBpdGVtcyBjYW4KKyAgICAgICAgYmUgcmV0cmll
dmVkIG9yIG5vdCBiYXNlZCBvbiB0aGUgcHJvcGVydHkgbmFtZWQgbmFtZS4KKyAgICAgICAgKiBo
dG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oOiBBZGRlZCBuYW1lZEl0ZW0oKSwgaGFzUHJv
cGVydHkoKSwKKyAgICAgICAgaGFzTmFtZWRJdGVtKCkgbWV0aG9kcy4KKyAgICAgICAgKEhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb24uaWRsOiBBZGRlZCBuYW1lZEl0ZW0oKSBJREwgbWV0aG9kLgorCiAyMDEyLTAyLTI4ICBZ
dXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHNob3cgcmVzb3VyY2UgZGl2aWRlcnMgb24gbWVtb3J5IGNvdW50ZXIgZ3JhcGhzCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkocmV2aXNpb24gMTA5MTAyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTIyMjQsNiArMjIyNCwy
MCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAgICAgfQogCisgICAg
aWYgKCRpbnRlcmZhY2VOYW1lIGVxICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24iKSB7CisgICAg
ICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9KSB7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpjYW5H
ZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqIGNvbGxlY3Rpb24sIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9
OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNl
KSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pT
KGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFt
ZSo+KHRoaXNPYmotPmltcGwoKSktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAoKCEkaGFzUGFyZW50ICYmICEkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbUlzUmVhY2hhYmxlIn0pfHwgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNHZW5lcmF0ZUlzUmVhY2hhYmxlIn0gfHwg
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQWN0aXZlRE9NT2JqZWN0In0pIHsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxl
KEpTJHtpbXBsQ2xhc3NOYW1lfSoganMke2ltcGxDbGFzc05hbWV9KVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMDkxMDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlz
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3Miw2ICsxNzMsOTAgQEAgUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBIVE1MUHJvcGVydGllcwogICAgIHJldHVybiBtX3Byb3BlcnR5
TmFtZXM7CiB9CiAKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBpZiAoIWJhc2Uo
KS0+aXNIVE1MRWxlbWVudCgpIHx8ICF0b0hUTUxFbGVtZW50KGJhc2UoKSktPmZhc3RIYXNBdHRy
aWJ1dGUoaXRlbXNjb3BlQXR0cikpCisgICAgICByZXR1cm4gMDsKKworICAgIG1fcHJvcGVydGll
cy5jbGVhcigpOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOworICAgIGZp
bmRQcm9wZXRpZXNPZkFuSXRlbShiYXNlKCkpOworCisgICAgc3RkOjpzb3J0KG1fcHJvcGVydGll
cy5iZWdpbigpLCBtX3Byb3BlcnRpZXMuZW5kKCksIGNvbXBhcmVUcmVlT3JkZXIpOworCisgICAg
Ly8gRm9yIGVhY2ggaXRlbSBwcm9wZXJ0aWVzLCBzcGxpdCB0aGUgdmFsdWUgb2YgdGhhdCBpdGVt
cHJvcCBhdHRyaWJ1dGUgb24gc3BhY2VzLgorICAgIC8vIEFkZCBlbGVtZW50IHRvIG5hbWVkSXRl
bSB0aGF0IGNvbnRhaW5zIGEgcHJvcGVydHkgbmFtZWQgbmFtZSwgd2l0aCB0aGUgb3JkZXIgcHJl
c2VydmVkLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0aWVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVtUHJvcGVydHkgPSBtX3By
b3BlcnRpZXNbaV0tPml0ZW1Qcm9wKCk7CisgICAgICAgIGlmIChpdGVtUHJvcGVydHktPnRva2Vu
cygpLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICAgICAgbmFtZWRJdGVtcy5hcHBlbmQobV9wcm9w
ZXJ0aWVzW2ldKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQg
dGhpcyBzaG91bGQgcmV0dXJuIFByb3BlcnR5Tm9kZUxpc3QuCisgICAgcmV0dXJuIG5hbWVkSXRl
bXMuaXNFbXB0eSgpID8gMCA6IFN0YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKTsKK30K
Kworc3RhdGljIGJvb2wgaGFzUHJvcGVydHkoTm9kZSogbm9kZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQoreworICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkpIHsKKyAgICAgICAgSFRN
TEVsZW1lbnQqIGh0bWxFbGVtZW50ID0gdG9IVE1MRWxlbWVudChub2RlKTsKKyAgICAgICAgLy8g
UmV0dXJuIHRydWUgaWYgZWxlbWVudCBoYXMgYW4gaXRlbXByb3AgYXR0cmlidXRlIHNwZWNpZmll
ZCwgYW5kIGhhcyBhIHByb3BlcnR5IG5hbWVkIG5hbWUuCisgICAgICAgIGlmIChodG1sRWxlbWVu
dC0+ZmFzdEhhc0F0dHJpYnV0ZShpdGVtcHJvcEF0dHIpICYmIGh0bWxFbGVtZW50LT5pdGVtUHJv
cCgpLT50b2tlbnMoKS5jb250YWlucyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uOjpoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAg
IGlmICghYmFzZSgpLT5pc0hUTUxFbGVtZW50KCkgfHwgIXRvSFRNTEVsZW1lbnQoYmFzZSgpKS0+
ZmFzdEhhc0F0dHJpYnV0ZShpdGVtc2NvcGVBdHRyKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFZlY3RvcjxOb2RlKj4gcGVuZGluZzsKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gYmFzZSgp
LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Cisg
ICAgICAgIGlmIChoYXNQcm9wZXJ0eShjaGlsZCwgbmFtZSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICAvLyBBZGQgdGhlIGNoaWxkIGVsZW1lbnQgb2YgYmFzZSwgdG8gcGVu
ZGluZy4KKyAgICAgICAgcGVuZGluZy5hcHBlbmQoY2hpbGQpOworICAgIH0KKworICAgIC8vIElm
IHJvb3QgaGFzIGFuIGl0ZW1yZWYgYXR0cmlidXRlLCBzcGxpdCB0aGUgdmFsdWUgb2YgdGhhdCBp
dGVtcmVmIGF0dHJpYnV0ZSBvbiBzcGFjZXMuCisgICAgLy8gRm9yIGVhY2ggcmVzdWx0aW5nIHRv
a2VuIElELCBpZiB0aGVyZSBpcyBhbiBlbGVtZW50IGluIHRoZSBob21lIHN1YnRyZWUgb2Ygcm9v
dCB3aXRoIHRoZSBJRCBJRCwKKyAgICAvLyB0aGVuOiByZXR1cm4gdHJ1ZSBpZiBlbGVtZW50IGhh
cyBhbiBpdGVtcHJvcCBhdHRyaWJ1dGUgc3BlY2lmaWVkIHdpdGggcHJvcGVydHkgbmFtZWQgbmFt
ZSBlbHNlCisgICAgLy8gYWRkIGZpcnN0IHN1Y2ggZWxlbWVudCB0byBwZW5kaW5nLgorICAgIGlm
ICh0b0hUTUxFbGVtZW50KGJhc2UoKSktPmZhc3RIYXNBdHRyaWJ1dGUoaXRlbXJlZkF0dHIpKSB7
CisgICAgICAgIERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVtUmVmID0gYmFzZSgpLT5pdGVtUmVm
KCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtUmVmLT5sZW5ndGgoKTsg
KytpKSB7CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgaWQgPSBpdGVtUmVmLT5pdGVtKGkpOwor
CisgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gYmFzZSgpLT5kb2N1bWVudCgpLT5nZXRF
bGVtZW50QnlJZChpZCk7CisgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkoZWxlbWVudCwgbmFt
ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBwZW5kaW5nLmFw
cGVuZChlbGVtZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdoaWxlICghcGVuZGluZy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgTm9kZSogY3VycmVudCA9IHBlbmRpbmdbMF07CisgICAgICAg
IHBlbmRpbmcucmVtb3ZlKDApOworCisgICAgICAgIC8vIElmIGN1cnJlbnQgZG9lcyBub3QgaGF2
ZSBhbiBpdGVtc2NvcGUgYXR0cmlidXRlLCB0aGVuOiByZXR1cm4gdHJ1ZSBpZiBlbGVtZW50IGhh
cyBhbiBpdGVtcHJvcAorICAgICAgICAvLyBhdHRyaWJ1dGUgc3BlY2lmaWVkIHdpdGggcHJvcGVy
dHkgbmFtZWQgbmFtZSBlbHNlIGFkZCBjaGlsZCBlbGVtZW50cyBvZiBjdXJyZW50IHRvIHBlbmRp
bmcuCisgICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChjdXJyZW50
KTsKKyAgICAgICAgaWYgKCFlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGl0ZW1zY29wZUF0dHIp
KSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gY3VycmVudC0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgICAg
IGlmIChoYXNQcm9wZXJ0eShjaGlsZCwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIHBlbmRpbmcuYXBwZW5kKGNoaWxkKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkocmV2aXNp
b24gMTA5MTAyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUwLDE0IEBAIHB1YmxpYzoKIAogICAgIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbmFtZXMoKSBjb25zdDsKIAorICAgIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IG5hbWVkSXRlbShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIGhhc05h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb24oTm9kZSopOwogCiAgICAgdm9pZCBmaW5kUHJvcGV0aWVzT2ZB
bkl0ZW0oTm9kZSogY3VycmVudCkgY29uc3Q7CisgICAgdm9pZCBnZXROYW1lZEl0ZW1zKFZlY3Rv
cjxSZWZQdHI8Tm9kZT4gPiYsIGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiAgICAgbXV0YWJsZSBW
ZWN0b3I8Tm9kZSo+IG1fcHJvcGVydGllczsKICAgICBtdXRhYmxlIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBtX3Byb3BlcnR5TmFtZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9w
ZXJ0aWVzQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsCShyZXZpc2lvbiAxMDkxMDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDEzICszMiwxNSBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICBpbnRlcmZhY2UgWwogICAg
ICAgICBDb25kaXRpb25hbD1NSUNST0RBVEEsCi0gICAgICAgIEluZGV4ZWRHZXR0ZXIKKyAgICAg
ICAgSW5kZXhlZEdldHRlciwKKyAgICAgICAgTmFtZWRHZXR0ZXIKICAgICBdIEhUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAgICBOb2RlIGl0ZW0oaW4gdW5zaWduZWQg
bG9uZyBpbmRleCk7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3Qg
bmFtZXM7CiAKLSAgICAgICAgLy8gRklYTUU6IG92ZXJyaWRlIGluaGVyaXRlZCBuYW1lZEl0ZW0o
KQorICAgICAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBzaG91bGQgcmV0
dXJuIFByb3BlcnR5Tm9kZUxpc3QuCisgICAgICAgIE5vZGVMaXN0IG5hbWVkSXRlbShpbiBET01T
dHJpbmcgbmFtZSk7CiAgICAgfTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTEwMikKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEy
LTAyLTI4ICBBcmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2Rh
dGE6IEltcGxlbWVudCBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0
ZW0oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
MTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgdGVzdC1jYXNlcyBmb3IgY29sbGVjdGlvbi5uYW1lZEl0ZW0oKS4KKworICAgICAgICAqIGZh
c3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVz
dC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNy
b0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL25hbWVkaXRlbS1t
dXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vTWljcm9EYXRhL3Byb3Bl
cnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMi0y
OCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBS
ZWJhc2VsaW5lIEd0ayByZXN1bHRzIGFmdGVyIHIxMDkwOTcuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1l
ZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1z
ZW5zaXRpdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IGJlIGNhc2Ugc2Vuc2l0aXZlLgorCitD
cmVhdGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CitTZXQgYXR0cmlidXRlOiBpdGVtc2NvcGUsIHZh
bHVlOiBpdGVtc2NvcGUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJyku
bGVuZ3RoIGlzIDIKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJykubGVu
Z3RoIGlzIDEKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9vJykubGVuZ3Ro
IGlzIDEKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gaXMgZWxl
bWVudC5maXJzdENoaWxkCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2Zvbycp
WzFdIGlzIGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQKK1BBU1MgZWxlbWVudC5wcm9w
ZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJylbMF0gaXMgZWxlbWVudC5jaGlsZE5vZGVzWzFdLmZpcnN0
Q2hpbGQKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9vJylbMF0gaXMgZWxl
bWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZAorCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1sn
Zm9vJ10ubGVuZ3RoIGlzIDIKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydGT08nXS5sZW5ndGgg
aXMgMQorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddLmxlbmd0aCBpcyAxCitQQVNTIGVs
ZW1lbnQucHJvcGVydGllc1snZm9vJ11bMF0gaXMgZWxlbWVudC5maXJzdENoaWxkCitQQVNTIGVs
ZW1lbnQucHJvcGVydGllc1snZm9vJ11bMV0gaXMgZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RD
aGlsZAorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ0ZPTyddWzBdIGlzIGVsZW1lbnQuY2hpbGRO
b2Rlc1sxXS5maXJzdENoaWxkCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snRk9vJ11bMF0gaXMg
ZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01p
Y3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNl
LXNlbnNpdGl2ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWlj
cm9EYXRhL25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBuYW1lZEl0ZW0gbXVzdCBiZSBj
YXNlIHNlbnNpdGl2ZS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2
YXIgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtpdGVtc2NvcGU6ICdpdGVtc2NvcGUn
fSwgJzxkaXYgaXRlbXByb3A9ImZvbyI+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmFyIj48ZGl2IGl0
ZW1wcm9wPSJGT08iPjwvZGl2PjxkaXYgaXRlbXByb3A9ImZvbyBGT28gZm9vIj48L2Rpdj48L2Rp
dj48ZGl2IGl0ZW1wcm9wPSJiYXogcXV4Ij48L2Rpdj4nKTsKKworc2hvdWxkQmUoImVsZW1lbnQu
cHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCIsICcyJyk7CitzaG91bGRCZSgiZWxl
bWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJykubGVuZ3RoIiwgJzEnKTsKK3Nob3VsZEJl
KCJlbGVtZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT28nKS5sZW5ndGgiLCAnMScpOworCitz
aG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0iLCAnZWxlbWVu
dC5maXJzdENoaWxkJyk7CitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgn
Zm9vJylbMV0iLCAnZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCcpOworc2hvdWxkQmUo
ImVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPTycpWzBdIiwgJ2VsZW1lbnQuY2hpbGRO
b2Rlc1sxXS5maXJzdENoaWxkJyk7CitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVk
SXRlbSgnRk9vJylbMF0iLCAnZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCcpOworZGVi
dWcoJycpOworCitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGgiLCAn
MicpOworc2hvdWxkQmUoImVsZW1lbnQucHJvcGVydGllc1snRk9PJ10ubGVuZ3RoIiwgJzEnKTsK
K3Nob3VsZEJlKCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddLmxlbmd0aCIsICcxJyk7CisKK3No
b3VsZEJlKCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzBdIiwgJ2VsZW1lbnQuZmlyc3RDaGls
ZCcpOworc2hvdWxkQmUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMV0iLCAnZWxlbWVudC5j
aGlsZE5vZGVzWzFdLmxhc3RDaGlsZCcpOworc2hvdWxkQmUoImVsZW1lbnQucHJvcGVydGllc1sn
Rk9PJ11bMF0iLCAnZWxlbWVudC5jaGlsZE5vZGVzWzFdLmZpcnN0Q2hpbGQnKTsKK3Nob3VsZEJl
KCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddWzBdIiwgJ2VsZW1lbnQuY2hpbGROb2Rlc1sxXS5s
YXN0Q2hpbGQnKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3Qt
aXRlbS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACitUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IHJldHVybiB0aGUgY29ycmVjdCBpdGVtIHByb3BlcnRp
ZXMuCisKK0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKKworVGVzdCBwcm9wZXJ0aWVzLm5h
bWVkSXRlbShuYW1lKS4KK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVu
Z3RoIGlzIDIKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmFyJykubGVuZ3RoIGlz
IDEKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmF6JykubGVuZ3RoIGlzIDEKK1BB
U1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgncXV4JykubGVuZ3RoIGlzIDEKK1BBU1MgaXRl
bS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gaXMgZWxlbWVudC5maXJzdENoaWxkCitQ
QVNTIGl0ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFdIGlzIGl0ZW0uZmlyc3RDaGls
ZAorUEFTUyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKVswXSBpcyBpdGVtLmZpcnN0
Q2hpbGQKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmF6JylbMF0gaXMgZWxlbWVu
dC5sYXN0Q2hpbGQKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgncXV4JylbMF0gaXMg
ZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZAorCitUZXN0IHByb3BlcnRpZXNbbmFtZV0uCitQ
QVNTIGl0ZW0ucHJvcGVydGllc1snZm9vJ10ubGVuZ3RoIGlzIDIKK1BBU1MgaXRlbS5wcm9wZXJ0
aWVzWydiYXInXS5sZW5ndGggaXMgMQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2JheiddLmxlbmd0
aCBpcyAxCitQQVNTIGl0ZW0ucHJvcGVydGllc1sncXV4J10ubGVuZ3RoIGlzIDEKK1BBU1MgaXRl
bS5wcm9wZXJ0aWVzWydmb28nXVswXSBpcyBlbGVtZW50LmZpcnN0Q2hpbGQKK1BBU1MgaXRlbS5w
cm9wZXJ0aWVzWydmb28nXVsxXSBpcyBpdGVtLmZpcnN0Q2hpbGQKK1BBU1MgaXRlbS5wcm9wZXJ0
aWVzWydiYXInXVswXSBpcyBpdGVtLmZpcnN0Q2hpbGQKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydi
YXonXVswXSBpcyBlbGVtZW50Lmxhc3RDaGlsZAorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ3F1eCdd
WzBdIGlzIGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQKKworVGVzdCBwcm9wZXJ0aWVzW2lu
ZGV4XS4KK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWzBdIGlzIGVsZW1lbnQuZmlyc3RDaGlsZAorUEFT
UyBpdGVtLnByb3BlcnRpZXNbMV0gaXMgaXRlbS5maXJzdENoaWxkCitQQVNTIGl0ZW0ucHJvcGVy
dGllc1syXSBpcyBlbGVtZW50Lmxhc3RDaGlsZAorUEFTUyBpdGVtLnByb3BlcnRpZXNbM10gaXMg
ZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3Jv
RGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11
c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJl
Y3QtaXRlbS1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9t
aWNyb2RhdGEtY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0
ZXN0IGVuc3VyZXMgdGhhdCBuYW1lZEl0ZW0gbXVzdCByZXR1cm4gdGhlIGNvcnJlY3QgaXRlbSBw
cm9wZXJ0aWVzLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBl
bGVtZW50ID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iIGlk
PSJpZDEiPjwvZGl2PjxkaXYgaXRlbXNjb3BlIGl0ZW1yZWY9ImlkMiBpZDEiPjxkaXYgaXRlbXBy
b3A9ImZvbyBiYXIiPjwvZGl2PjwvZGl2PjxkaXYgaXRlbXByb3A9ImJheiIgaWQ9ImlkMiI+PGRp
diBpdGVtcHJvcD0icXV4Ij4nKTsKK3ZhciBpdGVtID0gZWxlbWVudC5jaGlsZE5vZGVzWzFdOwor
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKworZGVidWcoIjxicj5UZXN0IHBy
b3BlcnRpZXMubmFtZWRJdGVtKG5hbWUpLiIpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllcy5u
YW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCIsICcyJyk7CitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgnYmFyJykubGVuZ3RoIiwgJzEnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRp
ZXMubmFtZWRJdGVtKCdiYXonKS5sZW5ndGgiLCAnMScpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVy
dGllcy5uYW1lZEl0ZW0oJ3F1eCcpLmxlbmd0aCIsICcxJyk7CisKK3Nob3VsZEJlKCJpdGVtLnBy
b3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSIsICdlbGVtZW50LmZpcnN0Q2hpbGQnKTsKK3No
b3VsZEJlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsxXSIsICdpdGVtLmZpcnN0
Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKVswXSIs
ICdpdGVtLmZpcnN0Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVt
KCdiYXonKVswXSIsICdlbGVtZW50Lmxhc3RDaGlsZCcpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVy
dGllcy5uYW1lZEl0ZW0oJ3F1eCcpWzBdIiwgJ2VsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQn
KTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbbmFtZV0uIik7CitzaG91bGRCZSgiaXRl
bS5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGgiLCAnMicpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVy
dGllc1snYmFyJ10ubGVuZ3RoIiwgJzEnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXNbJ2Jh
eiddLmxlbmd0aCIsICcxJyk7CitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzWydxdXgnXS5sZW5n
dGgiLCAnMScpOworCitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXVswXSIsICdlbGVt
ZW50LmZpcnN0Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXNbJ2ZvbyddWzFdIiwg
J2l0ZW0uZmlyc3RDaGlsZCcpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllc1snYmFyJ11bMF0i
LCAnaXRlbS5maXJzdENoaWxkJyk7CitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXonXVsw
XSIsICdlbGVtZW50Lmxhc3RDaGlsZCcpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllc1sncXV4
J11bMF0iLCAnZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCcpOworCitkZWJ1ZygiPGJyPlRl
c3QgcHJvcGVydGllc1tpbmRleF0uIik7CitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzWzBdIiwg
J2VsZW1lbnQuZmlyc3RDaGlsZCcpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllc1sxXSIsICdp
dGVtLmZpcnN0Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXNbMl0iLCAnZWxlbWVu
dC5sYXN0Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXNbM10iLCAnZWxlbWVudC5s
YXN0Q2hpbGQuZmlyc3RDaGlsZCcpCisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlv
bi1uYW1lZGl0ZW0tdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0Rh
dGEvcHJvcGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorUHJvcGVydGllcyBjb2xsZWN0aW9uJ3MgbmFtZWRJ
dGVtIHByb3BlcnR5IHNpbXBsZSB0ZXN0LgorCitDcmVhdGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2
CitTZXQgYXR0cmlidXRlOiBpdGVtc2NvcGUsIHZhbHVlOiBpdGVtc2NvcGUKKworVGVzdCBwcm9w
ZXJ0aWVzLm5hbWVkSXRlbShuYW1lKS4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRl
bSgnZm9vJykgaXMgZGVmaW5lZC4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgn
Zm9vJykubGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9v
JylbMF0gaXMgZWxlbWVudC5maXJzdENoaWxkCisKK1Rlc3QgcHJvcGVydGllc1tuYW1lXS4KK1BB
U1MgZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXSBpcyBkZWZpbmVkLgorUEFTUyBlbGVtZW50LnBy
b3BlcnRpZXNbJ2ZvbyddLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9v
J11bMF0gaXMgZWxlbWVudC5maXJzdENoaWxkCisKK1Rlc3QgcHJvcGVydGllc1tpbmRleF0uCitQ
QVNTIGVsZW1lbnQucHJvcGVydGllc1swXSBpcyBkZWZpbmVkLgorUEFTUyBlbGVtZW50LnByb3Bl
cnRpZXNbMF0gaXMgZWxlbWVudC5maXJzdENoaWxkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWlj
cm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rp
b24tbmFtZWRpdGVtLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5Qcm9wZXJ0aWVzIGNvbGxlY3Rpb24ncyBuYW1lZEl0
ZW0gcHJvcGVydHkgc2ltcGxlIHRlc3QuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgordmFyIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7aXRlbXNjb3BlOiAn
aXRlbXNjb3BlJ30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iPjwvZGl2PicpOworCitkZWJ1ZygiPGJy
PlRlc3QgcHJvcGVydGllcy5uYW1lZEl0ZW0obmFtZSkuIik7CitzaG91bGRCZURlZmluZWQoImVs
ZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpIik7CitzaG91bGRCZSgiZWxlbWVudC5w
cm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3RoIiwgJzEnKTsKK3Nob3VsZEJlKCJlbGVt
ZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSIsICdlbGVtZW50LmZpcnN0Q2hpbGQn
KTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbbmFtZV0uIik7CitzaG91bGRCZURlZmlu
ZWQoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ10iKTsKK3Nob3VsZEJlKCJlbGVtZW50LnByb3Bl
cnRpZXNbJ2ZvbyddLmxlbmd0aCIsICcxJyk7CitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVz
Wydmb28nXVswXSIsICdlbGVtZW50LmZpcnN0Q2hpbGQnKTsKKworZGVidWcoIjxicj5UZXN0IHBy
b3BlcnRpZXNbaW5kZXhdLiIpOworc2hvdWxkQmVEZWZpbmVkKCJlbGVtZW50LnByb3BlcnRpZXNb
MF0iKTsKK3Nob3VsZEJlKCJlbGVtZW50LnByb3BlcnRpZXNbMF0iLCAnZWxlbWVudC5maXJzdENo
aWxkJyk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="131863"
          type_id="3"
          status="-"
          setter="haraken"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129388</attachid>
            <date>2012-02-28 22:26:29 -0800</date>
            <delta_ts>2012-02-28 23:26:09 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_73156_fix.diff</filename>
            <type>text/plain</type>
            <size>18161</size>
            <attacher name="Arko Saha">arko</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTE5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTI4ICBBcmtvIFNh
aGEgIDxhcmtvQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBI
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0ZW0oKS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL01p
Y3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRl
bS1wcm9wZXJ0aWVzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL01pY3JvRGF0YS9wcm9w
ZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IE1vZGlmaWVkIGNvZGUgZ2VuZXJhdG9yIHRv
IGdlbmVyYXRlCisgICAgICAgIEpTIGJpbmRpbmdzIGNvZGUgZm9yIEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbiBbTmFtZWRHZXR0ZXJdIHByb3BlcnR5LgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjpuYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKTogUmV0dXJucyBhIE5vZGVMaXN0IG9iamVjdAorICAgICAgICBjb250YWlu
aW5nIGFueSBlbGVtZW50cyB0aGF0IGFkZCBhIHByb3BlcnR5IG5hbWVkIG5hbWUuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Omhhc05hbWVkSXRlbSk6IENoZWNr
cyBpZiB0aGUgaXRlbXMgY2FuCisgICAgICAgIGJlIHJldHJpZXZlZCBvciBub3QgYmFzZWQgb24g
dGhlIHByb3BlcnR5IG5hbWVkIG5hbWUuCisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24uaDogQWRkZWQgbmFtZWRJdGVtKCksIGhhc1Byb3BlcnR5KCksCisgICAgICAgIGhh
c05hbWVkSXRlbSgpIG1ldGhvZHMuCisgICAgICAgIChIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24p
OgorICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbDogQWRkZWQgbmFt
ZWRJdGVtKCkgSURMIG1ldGhvZC4KKwogMjAxMi0wMi0yOCAgWW9zaGlmdW1pIElub3VlICA8eW9z
aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtGb3Jtc10gU3BpbiBidXR0b24gc29tZXRpbWVz
IGlnbm9yZXMgSW5kZXRlcm1pbmF0ZSBvZiBtX3VwRG93blN0YXRlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMTA5MTkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTIyMjQsNiArMjIyNCwyMCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCRpbnRlcmZhY2VO
YW1lIGVxICJIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24iKSB7CisgICAgICAgIGlmICgkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZEdldHRlciJ9KSB7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpjYW5HZXRJdGVtc0Zvck5hbWUo
RXhlY1N0YXRlKiwgJGltcGxDbGFzc05hbWUqIGNvbGxlY3Rpb24sIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjb2xsZWN0aW9u
LT5oYXNOYW1lZEl0ZW0oaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqID0g
c3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHNsb3RCYXNlKSk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmot
Pmdsb2JhbE9iamVjdCgpLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmotPmlt
cGwoKSktPm5hbWVkSXRlbShpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAg
IH0KKyAgICB9CisKICAgICBpZiAoKCEkaGFzUGFyZW50ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU0N1c3RvbUlzUmVhY2hhYmxlIn0pfHwgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNHZW5lcmF0ZUlzUmVhY2hhYmxlIn0gfHwgJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQWN0aXZlRE9NT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJzdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxlKEpTJHtpbXBsQ2xhc3NO
YW1lfSoganMke2ltcGxDbGFzc05hbWV9KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGll
c0NvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMDkxOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE3Miw2ICsxNzMsNDggQEAgUGFzc1JlZlB0cjxET01TdHJpbmdM
aXN0PiBIVE1MUHJvcGVydGllcwogICAgIHJldHVybiBtX3Byb3BlcnR5TmFtZXM7CiB9CiAKK1Bh
c3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBpZiAoIWJhc2UoKS0+aXNIVE1MRWxlbWVu
dCgpIHx8ICF0b0hUTUxFbGVtZW50KGJhc2UoKSktPmZhc3RIYXNBdHRyaWJ1dGUoaXRlbXNjb3Bl
QXR0cikpCisgICAgICByZXR1cm4gMDsKKworICAgIG1fcHJvcGVydGllcy5jbGVhcigpOworICAg
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOworICAgIGZpbmRQcm9wZXRpZXNPZkFu
SXRlbShiYXNlKCkpOworCisgICAgc3RkOjpzb3J0KG1fcHJvcGVydGllcy5iZWdpbigpLCBtX3By
b3BlcnRpZXMuZW5kKCksIGNvbXBhcmVUcmVlT3JkZXIpOworCisgICAgLy8gRm9yIGVhY2ggaXRl
bSBwcm9wZXJ0aWVzLCBzcGxpdCB0aGUgdmFsdWUgb2YgdGhhdCBpdGVtcHJvcCBhdHRyaWJ1dGUg
b24gc3BhY2VzLgorICAgIC8vIEFkZCBlbGVtZW50IHRvIG5hbWVkSXRlbSB0aGF0IGNvbnRhaW5z
IGEgcHJvcGVydHkgbmFtZWQgbmFtZSwgd2l0aCB0aGUgb3JkZXIgcHJlc2VydmVkLgorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0aWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IERPTVNldHRhYmxlVG9rZW5MaXN0KiBpdGVtUHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaV0tPml0
ZW1Qcm9wKCk7CisgICAgICAgIGlmIChpdGVtUHJvcGVydHktPnRva2VucygpLmNvbnRhaW5zKG5h
bWUpKQorICAgICAgICAgICAgbmFtZWRJdGVtcy5hcHBlbmQobV9wcm9wZXJ0aWVzW2ldKTsKKyAg
ICB9CisKKyAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lmaWVzIHRoYXQgdGhpcyBzaG91bGQgcmV0
dXJuIFByb3BlcnR5Tm9kZUxpc3QuCisgICAgcmV0dXJuIG5hbWVkSXRlbXMuaXNFbXB0eSgpID8g
MCA6IFN0YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKTsKK30KKworYm9vbCBIVE1MUHJv
cGVydGllc0NvbGxlY3Rpb246Omhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0Cit7CisgICAgaWYgKCFiYXNlKCktPmlzSFRNTEVsZW1lbnQoKSB8fCAhdG9IVE1MRWxl
bWVudChiYXNlKCkpLT5mYXN0SGFzQXR0cmlidXRlKGl0ZW1zY29wZUF0dHIpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtX3Byb3BlcnRpZXMuY2xlYXIoKTsKKyAgICBmaW5kUHJvcGV0
aWVzT2ZBbkl0ZW0oYmFzZSgpKTsKKworICAgIC8vIEZvciBlYWNoIGl0ZW0gcHJvcGVydGllcywg
c3BsaXQgdGhlIHZhbHVlIG9mIHRoYXQgaXRlbXByb3AgYXR0cmlidXRlIG9uIHNwYWNlcy4KKyAg
ICAvLyBSZXR1cm4gdHJ1ZSBpZiBlbGVtZW50IGNvbnRhaW5zIGEgcHJvcGVydHkgbmFtZWQgbmFt
ZS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJvcGVydGllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBET01TZXR0YWJsZVRva2VuTGlzdCogaXRlbVByb3BlcnR5ID0gbV9wcm9wZXJ0
aWVzW2ldLT5pdGVtUHJvcCgpOworICAgICAgICBpZiAoaXRlbVByb3BlcnR5LT50b2tlbnMoKS5j
b250YWlucyhuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1JQ1JPREFUQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTA5MTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTAgKzUw
LDE0IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbmFtZXMoKSBj
b25zdDsKIAorICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5hbWVkSXRlbShjb25zdCBTdHJpbmcm
KSBjb25zdDsKKyAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24oTm9kZSopOwogCiAg
ICAgdm9pZCBmaW5kUHJvcGV0aWVzT2ZBbkl0ZW0oTm9kZSogY3VycmVudCkgY29uc3Q7CisgICAg
dm9pZCBnZXROYW1lZEl0ZW1zKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYsIGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogCiAgICAgbXV0YWJsZSBWZWN0b3I8Tm9kZSo+IG1fcHJvcGVydGllczsKICAgICBt
dXRhYmxlIFJlZlB0cjxET01TdHJpbmdMaXN0PiBtX3Byb3BlcnR5TmFtZXM7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaWRsCShyZXZp
c2lvbiAxMDkxOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxNSBAQCBtb2R1bGUgaHRtbCB7
CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1NSUNST0RBVEEsCi0gICAg
ICAgIEluZGV4ZWRHZXR0ZXIKKyAgICAgICAgSW5kZXhlZEdldHRlciwKKyAgICAgICAgTmFtZWRH
ZXR0ZXIKICAgICBdIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiA6IEhUTUxDb2xsZWN0aW9uIHsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAg
ICBOb2RlIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZ0xpc3QgbmFtZXM7CiAKLSAgICAgICAgLy8gRklYTUU6IG92ZXJy
aWRlIGluaGVyaXRlZCBuYW1lZEl0ZW0oKQorICAgICAgICAvLyBGSVhNRTogSFRNTDUgc3BlY2lm
aWVzIHRoYXQgdGhpcyBzaG91bGQgcmV0dXJuIFByb3BlcnR5Tm9kZUxpc3QuCisgICAgICAgIE5v
ZGVMaXN0IG5hbWVkSXRlbShpbiBET01TdHJpbmcgbmFtZSk7CiAgICAgfTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEwOTE5MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTI4ICBBcmtvIFNhaGEgIDxhcmtvQG1vdG9yb2xh
LmNvbT4KKworICAgICAgICBNaWNyb2RhdGE6IEltcGxlbWVudCBIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb24gY29sbGVjdGlvbi5uYW1lZEl0ZW0oKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczMTU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdC1jYXNlcyBmb3IgY29sbGVjdGlvbi5uYW1l
ZEl0ZW0oKS4KKworICAgICAgICAqIGZhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1i
ZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJl
Y3QtaXRlbS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vTWljcm9EYXRhL25hbWVkaXRlbS1tdXN0LXJldHVybi1jb3JyZWN0LWl0ZW0tcHJvcGVydGll
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9NaWNyb0RhdGEvcHJvcGVydGllcy1j
b2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC5o
dG1sOiBBZGRlZC4KKwogMjAxMi0wMi0yOCAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtGb3Jtc10gU3BpbiBidXR0b24gc29tZXRpbWVzIGlnbm9yZXMg
SW5kZXRlcm1pbmF0ZSBvZiBtX3VwRG93blN0YXRlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRpdmUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0t
bXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtYmUtY2FzZS1zZW5zaXRp
dmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IG5hbWVkSXRlbSBtdXN0IGJlIGNhc2Ugc2Vuc2l0aXZlLgorCitDcmVhdGVk
IGVsZW1lbnQgb2YgdHlwZTogZGl2CitTZXQgYXR0cmlidXRlOiBpdGVtc2NvcGUsIHZhbHVlOiBp
dGVtc2NvcGUKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3Ro
IGlzIDIKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJykubGVuZ3RoIGlz
IDEKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9vJykubGVuZ3RoIGlzIDEK
K1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gaXMgZWxlbWVudC5m
aXJzdENoaWxkCitQQVNTIGVsZW1lbnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFdIGlz
IGVsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hpbGQKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVz
Lm5hbWVkSXRlbSgnRk9PJylbMF0gaXMgZWxlbWVudC5jaGlsZE5vZGVzWzFdLmZpcnN0Q2hpbGQK
K1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9vJylbMF0gaXMgZWxlbWVudC5j
aGlsZE5vZGVzWzFdLmxhc3RDaGlsZAorCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9vJ10u
bGVuZ3RoIGlzIDIKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzWydGT08nXS5sZW5ndGggaXMgMQor
UEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnQu
cHJvcGVydGllc1snZm9vJ11bMF0gaXMgZWxlbWVudC5maXJzdENoaWxkCitQQVNTIGVsZW1lbnQu
cHJvcGVydGllc1snZm9vJ11bMV0gaXMgZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZAor
UEFTUyBlbGVtZW50LnByb3BlcnRpZXNbJ0ZPTyddWzBdIGlzIGVsZW1lbnQuY2hpbGROb2Rlc1sx
XS5maXJzdENoaWxkCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snRk9vJ11bMF0gaXMgZWxlbWVu
dC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0
YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNpdGl2ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9uYW1lZGl0ZW0tbXVzdC1iZS1jYXNlLXNlbnNp
dGl2ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRh
L25hbWVkaXRlbS1tdXN0LWJlLWNhc2Utc2Vuc2l0aXZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9taWNyb2RhdGEtY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+VGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBuYW1lZEl0ZW0gbXVzdCBiZSBjYXNlIHNl
bnNpdGl2ZS48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgZWxl
bWVudCA9IGNyZWF0ZUVsZW1lbnQoJ2RpdicsIHtpdGVtc2NvcGU6ICdpdGVtc2NvcGUnfSwgJzxk
aXYgaXRlbXByb3A9ImZvbyI+PC9kaXY+PGRpdiBpdGVtcHJvcD0iYmFyIj48ZGl2IGl0ZW1wcm9w
PSJGT08iPjwvZGl2PjxkaXYgaXRlbXByb3A9ImZvbyBGT28gZm9vIj48L2Rpdj48L2Rpdj48ZGl2
IGl0ZW1wcm9wPSJiYXogcXV4Ij48L2Rpdj4nKTsKKworc2hvdWxkQmUoImVsZW1lbnQucHJvcGVy
dGllcy5uYW1lZEl0ZW0oJ2ZvbycpLmxlbmd0aCIsICcyJyk7CitzaG91bGRCZSgiZWxlbWVudC5w
cm9wZXJ0aWVzLm5hbWVkSXRlbSgnRk9PJykubGVuZ3RoIiwgJzEnKTsKK3Nob3VsZEJlKCJlbGVt
ZW50LnByb3BlcnRpZXMubmFtZWRJdGVtKCdGT28nKS5sZW5ndGgiLCAnMScpOworCitzaG91bGRC
ZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0iLCAnZWxlbWVudC5maXJz
dENoaWxkJyk7CitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylb
MV0iLCAnZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCcpOworc2hvdWxkQmUoImVsZW1l
bnQucHJvcGVydGllcy5uYW1lZEl0ZW0oJ0ZPTycpWzBdIiwgJ2VsZW1lbnQuY2hpbGROb2Rlc1sx
XS5maXJzdENoaWxkJyk7CitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgn
Rk9vJylbMF0iLCAnZWxlbWVudC5jaGlsZE5vZGVzWzFdLmxhc3RDaGlsZCcpOworZGVidWcoJycp
OworCitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28nXS5sZW5ndGgiLCAnMicpOwor
c2hvdWxkQmUoImVsZW1lbnQucHJvcGVydGllc1snRk9PJ10ubGVuZ3RoIiwgJzEnKTsKK3Nob3Vs
ZEJlKCJlbGVtZW50LnByb3BlcnRpZXNbJ0ZPbyddLmxlbmd0aCIsICcxJyk7CisKK3Nob3VsZEJl
KCJlbGVtZW50LnByb3BlcnRpZXNbJ2ZvbyddWzBdIiwgJ2VsZW1lbnQuZmlyc3RDaGlsZCcpOwor
c2hvdWxkQmUoImVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMV0iLCAnZWxlbWVudC5jaGlsZE5v
ZGVzWzFdLmxhc3RDaGlsZCcpOworc2hvdWxkQmUoImVsZW1lbnQucHJvcGVydGllc1snRk9PJ11b
MF0iLCAnZWxlbWVudC5jaGlsZE5vZGVzWzFdLmZpcnN0Q2hpbGQnKTsKK3Nob3VsZEJlKCJlbGVt
ZW50LnByb3BlcnRpZXNbJ0ZPbyddWzBdIiwgJ2VsZW1lbnQuY2hpbGROb2Rlc1sxXS5sYXN0Q2hp
bGQnKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3Jv
RGF0YS9uYW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IG5hbWVkSXRlbSBtdXN0IHJldHVybiB0aGUgY29ycmVjdCBpdGVtIHByb3BlcnRpZXMuCisK
K0NyZWF0ZWQgZWxlbWVudCBvZiB0eXBlOiBkaXYKKworVGVzdCBwcm9wZXJ0aWVzLm5hbWVkSXRl
bShuYW1lKS4KK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3RoIGlz
IDIKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmFyJykubGVuZ3RoIGlzIDEKK1BB
U1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmF6JykubGVuZ3RoIGlzIDEKK1BBU1MgaXRl
bS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgncXV4JykubGVuZ3RoIGlzIDEKK1BBU1MgaXRlbS5wcm9w
ZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0gaXMgZWxlbWVudC5maXJzdENoaWxkCitQQVNTIGl0
ZW0ucHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpWzFdIGlzIGl0ZW0uZmlyc3RDaGlsZAorUEFT
UyBpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKVswXSBpcyBpdGVtLmZpcnN0Q2hpbGQK
K1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnYmF6JylbMF0gaXMgZWxlbWVudC5sYXN0
Q2hpbGQKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgncXV4JylbMF0gaXMgZWxlbWVu
dC5sYXN0Q2hpbGQuZmlyc3RDaGlsZAorCitUZXN0IHByb3BlcnRpZXNbbmFtZV0uCitQQVNTIGl0
ZW0ucHJvcGVydGllc1snZm9vJ10ubGVuZ3RoIGlzIDIKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydi
YXInXS5sZW5ndGggaXMgMQorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ2JheiddLmxlbmd0aCBpcyAx
CitQQVNTIGl0ZW0ucHJvcGVydGllc1sncXV4J10ubGVuZ3RoIGlzIDEKK1BBU1MgaXRlbS5wcm9w
ZXJ0aWVzWydmb28nXVswXSBpcyBlbGVtZW50LmZpcnN0Q2hpbGQKK1BBU1MgaXRlbS5wcm9wZXJ0
aWVzWydmb28nXVsxXSBpcyBpdGVtLmZpcnN0Q2hpbGQKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydi
YXInXVswXSBpcyBpdGVtLmZpcnN0Q2hpbGQKK1BBU1MgaXRlbS5wcm9wZXJ0aWVzWydiYXonXVsw
XSBpcyBlbGVtZW50Lmxhc3RDaGlsZAorUEFTUyBpdGVtLnByb3BlcnRpZXNbJ3F1eCddWzBdIGlz
IGVsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQKKworVGVzdCBwcm9wZXJ0aWVzW2luZGV4XS4K
K1BBU1MgaXRlbS5wcm9wZXJ0aWVzWzBdIGlzIGVsZW1lbnQuZmlyc3RDaGlsZAorUEFTUyBpdGVt
LnByb3BlcnRpZXNbMV0gaXMgaXRlbS5maXJzdENoaWxkCitQQVNTIGl0ZW0ucHJvcGVydGllc1sy
XSBpcyBlbGVtZW50Lmxhc3RDaGlsZAorUEFTUyBpdGVtLnByb3BlcnRpZXNbM10gaXMgZWxlbWVu
dC5sYXN0Q2hpbGQuZmlyc3RDaGlsZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9u
YW1lZGl0ZW0tbXVzdC1yZXR1cm4tY29ycmVjdC1pdGVtLXByb3BlcnRpZXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0
dXJuLWNvcnJlY3QtaXRlbS1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvbmFtZWRpdGVtLW11c3QtcmV0dXJuLWNvcnJlY3QtaXRl
bS1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9taWNyb2Rh
dGEtY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCBuYW1lZEl0ZW0gbXVzdCByZXR1cm4gdGhlIGNvcnJlY3QgaXRlbSBwcm9wZXJ0
aWVzLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBlbGVtZW50
ID0gY3JlYXRlRWxlbWVudCgnZGl2Jywge30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iIGlkPSJpZDEi
PjwvZGl2PjxkaXYgaXRlbXNjb3BlIGl0ZW1yZWY9ImlkMiBpZDEiPjxkaXYgaXRlbXByb3A9ImZv
byBiYXIiPjwvZGl2PjwvZGl2PjxkaXYgaXRlbXByb3A9ImJheiIgaWQ9ImlkMiI+PGRpdiBpdGVt
cHJvcD0icXV4Ij4nKTsKK3ZhciBpdGVtID0gZWxlbWVudC5jaGlsZE5vZGVzWzFdOworZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRp
ZXMubmFtZWRJdGVtKG5hbWUpLiIpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllcy5uYW1lZEl0
ZW0oJ2ZvbycpLmxlbmd0aCIsICcyJyk7CitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzLm5hbWVk
SXRlbSgnYmFyJykubGVuZ3RoIiwgJzEnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXMubmFt
ZWRJdGVtKCdiYXonKS5sZW5ndGgiLCAnMScpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllcy5u
YW1lZEl0ZW0oJ3F1eCcpLmxlbmd0aCIsICcxJyk7CisKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRp
ZXMubmFtZWRJdGVtKCdmb28nKVswXSIsICdlbGVtZW50LmZpcnN0Q2hpbGQnKTsKK3Nob3VsZEJl
KCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVsxXSIsICdpdGVtLmZpcnN0Q2hpbGQn
KTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXInKVswXSIsICdpdGVt
LmZpcnN0Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXMubmFtZWRJdGVtKCdiYXon
KVswXSIsICdlbGVtZW50Lmxhc3RDaGlsZCcpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllcy5u
YW1lZEl0ZW0oJ3F1eCcpWzBdIiwgJ2VsZW1lbnQubGFzdENoaWxkLmZpcnN0Q2hpbGQnKTsKKwor
ZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbbmFtZV0uIik7CitzaG91bGRCZSgiaXRlbS5wcm9w
ZXJ0aWVzWydmb28nXS5sZW5ndGgiLCAnMicpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllc1sn
YmFyJ10ubGVuZ3RoIiwgJzEnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXNbJ2JheiddLmxl
bmd0aCIsICcxJyk7CitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzWydxdXgnXS5sZW5ndGgiLCAn
MScpOworCitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzWydmb28nXVswXSIsICdlbGVtZW50LmZp
cnN0Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXNbJ2ZvbyddWzFdIiwgJ2l0ZW0u
Zmlyc3RDaGlsZCcpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllc1snYmFyJ11bMF0iLCAnaXRl
bS5maXJzdENoaWxkJyk7CitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzWydiYXonXVswXSIsICdl
bGVtZW50Lmxhc3RDaGlsZCcpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllc1sncXV4J11bMF0i
LCAnZWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCcpOworCitkZWJ1ZygiPGJyPlRlc3QgcHJv
cGVydGllc1tpbmRleF0uIik7CitzaG91bGRCZSgiaXRlbS5wcm9wZXJ0aWVzWzBdIiwgJ2VsZW1l
bnQuZmlyc3RDaGlsZCcpOworc2hvdWxkQmUoIml0ZW0ucHJvcGVydGllc1sxXSIsICdpdGVtLmZp
cnN0Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXNbMl0iLCAnZWxlbWVudC5sYXN0
Q2hpbGQnKTsKK3Nob3VsZEJlKCJpdGVtLnByb3BlcnRpZXNbM10iLCAnZWxlbWVudC5sYXN0Q2hp
bGQuZmlyc3RDaGlsZCcpCisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1l
ZGl0ZW0tdGVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vTWljcm9EYXRhL3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9NaWNyb0RhdGEvcHJv
cGVydGllcy1jb2xsZWN0aW9uLW5hbWVkaXRlbS10ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMiBAQAorUHJvcGVydGllcyBjb2xsZWN0aW9uJ3MgbmFtZWRJdGVtIHBy
b3BlcnR5IHNpbXBsZSB0ZXN0LgorCitDcmVhdGVkIGVsZW1lbnQgb2YgdHlwZTogZGl2CitTZXQg
YXR0cmlidXRlOiBpdGVtc2NvcGUsIHZhbHVlOiBpdGVtc2NvcGUKKworVGVzdCBwcm9wZXJ0aWVz
Lm5hbWVkSXRlbShuYW1lKS4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9v
JykgaXMgZGVmaW5lZC4KK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJyku
bGVuZ3RoIGlzIDEKK1BBU1MgZWxlbWVudC5wcm9wZXJ0aWVzLm5hbWVkSXRlbSgnZm9vJylbMF0g
aXMgZWxlbWVudC5maXJzdENoaWxkCisKK1Rlc3QgcHJvcGVydGllc1tuYW1lXS4KK1BBU1MgZWxl
bWVudC5wcm9wZXJ0aWVzWydmb28nXSBpcyBkZWZpbmVkLgorUEFTUyBlbGVtZW50LnByb3BlcnRp
ZXNbJ2ZvbyddLmxlbmd0aCBpcyAxCitQQVNTIGVsZW1lbnQucHJvcGVydGllc1snZm9vJ11bMF0g
aXMgZWxlbWVudC5maXJzdENoaWxkCisKK1Rlc3QgcHJvcGVydGllc1tpbmRleF0uCitQQVNTIGVs
ZW1lbnQucHJvcGVydGllc1swXSBpcyBkZWZpbmVkLgorUEFTUyBlbGVtZW50LnByb3BlcnRpZXNb
MF0gaXMgZWxlbWVudC5maXJzdENoaWxkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vTWljcm9EYXRh
L3Byb3BlcnRpZXMtY29sbGVjdGlvbi1uYW1lZGl0ZW0tdGVzdC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL01pY3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFt
ZWRpdGVtLXRlc3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL01p
Y3JvRGF0YS9wcm9wZXJ0aWVzLWNvbGxlY3Rpb24tbmFtZWRpdGVtLXRlc3QuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21pY3JvZGF0YS1jb21tb24uanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5Qcm9wZXJ0aWVzIGNvbGxlY3Rpb24ncyBuYW1lZEl0ZW0gcHJv
cGVydHkgc2ltcGxlIHRlc3QuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgordmFyIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnLCB7aXRlbXNjb3BlOiAnaXRlbXNj
b3BlJ30sICc8ZGl2IGl0ZW1wcm9wPSJmb28iPjwvZGl2PicpOworCitkZWJ1ZygiPGJyPlRlc3Qg
cHJvcGVydGllcy5uYW1lZEl0ZW0obmFtZSkuIik7CitzaG91bGRCZURlZmluZWQoImVsZW1lbnQu
cHJvcGVydGllcy5uYW1lZEl0ZW0oJ2ZvbycpIik7CitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0
aWVzLm5hbWVkSXRlbSgnZm9vJykubGVuZ3RoIiwgJzEnKTsKK3Nob3VsZEJlKCJlbGVtZW50LnBy
b3BlcnRpZXMubmFtZWRJdGVtKCdmb28nKVswXSIsICdlbGVtZW50LmZpcnN0Q2hpbGQnKTsKKwor
ZGVidWcoIjxicj5UZXN0IHByb3BlcnRpZXNbbmFtZV0uIik7CitzaG91bGRCZURlZmluZWQoImVs
ZW1lbnQucHJvcGVydGllc1snZm9vJ10iKTsKK3Nob3VsZEJlKCJlbGVtZW50LnByb3BlcnRpZXNb
J2ZvbyddLmxlbmd0aCIsICcxJyk7CitzaG91bGRCZSgiZWxlbWVudC5wcm9wZXJ0aWVzWydmb28n
XVswXSIsICdlbGVtZW50LmZpcnN0Q2hpbGQnKTsKKworZGVidWcoIjxicj5UZXN0IHByb3BlcnRp
ZXNbaW5kZXhdLiIpOworc2hvdWxkQmVEZWZpbmVkKCJlbGVtZW50LnByb3BlcnRpZXNbMF0iKTsK
K3Nob3VsZEJlKCJlbGVtZW50LnByb3BlcnRpZXNbMF0iLCAnZWxlbWVudC5maXJzdENoaWxkJyk7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>