<?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>24114</bug_id>
          
          <creation_ts>2009-02-23 19:06:32 -0800</creation_ts>
          <short_desc>ESMP(ECMAScript Mobile Profile) not supported</short_desc>
          <delta_ts>2012-03-21 02:44:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Charles Wei">charles.wei</reporter>
          <assigned_to name="Charles Wei">charles.wei</assigned_to>
          <cc>charles.wei</cc>
    
    <cc>gyuyoung</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
    
    <cc>robin.qiu</cc>
    
    <cc>staikos</cc>
    
    <cc>yichao.yin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110673</commentid>
    <comment_count>0</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-02-23 19:06:32 -0800</bug_when>
    <thetext>The ESMP(ECMAScript Mobile Profile) is the OMA standard for Wireless markup scripting language known as ECMAScript Mobile Profile. It&apos;s strongly based upon ECMAScript Release 3 (ECMA262), While has some extensions and customizations . This bug report is to make JavascriptCore to support ESMP .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110717</commentid>
    <comment_count>1</comment_count>
      <attachid>27913</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-02-24 02:58:14 -0800</bug_when>
    <thetext>Created attachment 27913
patch to enable ESMP support : MemoryError  , and Error.code

This is the first patch to enable ESMP support,  this specifically enables a new native error type :  MemoryError , and an new error property:  Error.code. For more detail,  please refer: 

Section 6.12.2 Native Error Types(Constants) 

of

OMA-WAP-ESMP-V1_0-20050614-C</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111426</commentid>
    <comment_count>2</comment_count>
      <attachid>28069</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-02-27 03:18:30 -0800</bug_when>
    <thetext>Created attachment 28069
This patch is to throw URIError for invalid location URI

This patch depends on the last patch. 

This patch is to throw URIError for invalid location URLs, to be compliance with ESMP (OMA-WAP-ESMP-V1_0-20050614-C) , section 9.4, Location Object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111976</commentid>
    <comment_count>3</comment_count>
      <attachid>28215</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2009-03-03 00:27:54 -0800</bug_when>
    <thetext>Created attachment 28215
add an optional parameter &quot;bool caseSensitive&quot; to Element.getAttribute(name), Element.setAttribute(name, value) and Element.removeAttribute(name)

OMA-WAP-ESMP-V1_0-20050614-C has some extension to ECMA-262 , this patch includes the following extensions:

Element.getAttribute(name) ==&gt; Element.getAttribute(name, [Optional] caseSensitive)
Element.setAttribute(name, value) ==&gt;Element.setAttribute(name, value, [Optional] caseSensitive)
Element.removeAttribute(name) ==&gt; Element.removeAttribute(name, [Optional] caseSensitive)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115088</commentid>
    <comment_count>4</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-03-24 17:30:10 -0700</bug_when>
    <thetext>*** Bug 23724 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122102</commentid>
    <comment_count>5</comment_count>
      <attachid>30500</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-20 01:41:01 -0700</bug_when>
    <thetext>Created attachment 30500
Updated patch for new ESMP error support


As the replacer of Charles&apos; patch(#27913), this patch adds some addtional messages into Charles&apos; patch(id=27913), such as copyright information, bug# for tracing, etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122104</commentid>
    <comment_count>6</comment_count>
      <attachid>30501</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-20 01:47:58 -0700</bug_when>
    <thetext>Created attachment 30501
Updated patch for ESMP URIError handling

This patch is a replacement for patch(id=28069), includs adding some copyright information, bug# information, and code style change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122105</commentid>
    <comment_count>7</comment_count>
      <attachid>30502</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-20 01:55:26 -0700</bug_when>
    <thetext>Created attachment 30502
Updated patch for ESMP to support casecensitive attribute of element

This patch is a replacement of the patch(id=28215), including some addtional code changes to get suitable for updated WebKit, adding copyright messages, bug# information, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122495</commentid>
    <comment_count>8</comment_count>
      <attachid>27913</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-21 18:48:21 -0700</bug_when>
    <thetext>Comment on attachment 27913
patch to enable ESMP support : MemoryError  , and Error.code

Please obsolete old patches when posting new ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122496</commentid>
    <comment_count>9</comment_count>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-21 18:54:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 27913 [review])
&gt; Please obsolete old patches when posting new ones.

Eric, I have no the permission to do it. thanks for your help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122576</commentid>
    <comment_count>10</comment_count>
      <attachid>30500</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 00:19:05 -0700</bug_when>
    <thetext>Comment on attachment 30500
Updated patch for new ESMP error support

Minor style comment:

+#if ENABLE(ESMP)
+        URIError       = 6,
+        MemoryError    = 7
+#else
         URIError       = 6
+#endif

It&apos;s ok to leave a trailing comma after the last enum element, so you don&apos;t need to duplicate URIError.I&apos;m not a fan of the other code duplicate in the patch, but I don&apos;t see an easy way to avoid it.

r- to address the minor style comment. Please repost a patch with that addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122578</commentid>
    <comment_count>11</comment_count>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-22 00:23:21 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 30500 [review])
&gt; Minor style comment:
&gt; +#if ENABLE(ESMP)
&gt; +        URIError       = 6,
&gt; +        MemoryError    = 7
&gt; +#else
&gt;          URIError       = 6
&gt; +#endif
&gt; It&apos;s ok to leave a trailing comma after the last enum element, so you don&apos;t
&gt; need to duplicate URIError.I&apos;m not a fan of the other code duplicate in the
&gt; patch, but I don&apos;t see an easy way to avoid it.
&gt; r- to address the minor style comment. Please repost a patch with that
&gt; addressed.

Alright, I will fix it soon. Thanks. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122579</commentid>
    <comment_count>12</comment_count>
      <attachid>30501</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 00:24:11 -0700</bug_when>
    <thetext>Comment on attachment 30501
Updated patch for ESMP URIError handling

Typo in the ChangeLog:

+        Through URIError for invalid URIs for location, for compliance with ESMP(OMA-WAP-ESMP-V1_0),

This should say &quot;Throw&quot;, not &quot;Through&quot;.

throwError(exec, URIError, (String(&quot;Invalid URI &quot;) + dstUrl).utf8().data());

The .utf8().data() is not appropriate, this makes a temporary char*. Instead, you can just pass a String and rely on WebCore::String&apos;s implicit conversion to UString. This error appears in the code twice.

Please address the above comments and repost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122581</commentid>
    <comment_count>13</comment_count>
      <attachid>30502</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 00:30:20 -0700</bug_when>
    <thetext>Comment on attachment 30502
Updated patch for ESMP to support casecensitive attribute of element

It&apos;s unfortunate to do this by adding completely duplicate versions of removeAttribute/getAttribute/setAttribute. Perhaps at least some of these could just have the extra parameter and use of it as an #ifdef but share most of the body.

Also, I don&apos;t understand why custom bindings are needed for getAttribute and removeAttribute. Why was that done? The ChangeLog should explain.

Please address these comments and repost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122600</commentid>
    <comment_count>14</comment_count>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-22 01:02:47 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 30501 [review])
&gt; Typo in the ChangeLog:
&gt; +        Through URIError for invalid URIs for location, for compliance with
&gt; ESMP(OMA-WAP-ESMP-V1_0),
&gt; This should say &quot;Throw&quot;, not &quot;Through&quot;.
&gt; throwError(exec, URIError, (String(&quot;Invalid URI &quot;) + dstUrl).utf8().data());
&gt; The .utf8().data() is not appropriate, this makes a temporary char*. Instead,
&gt; you can just pass a String and rely on WebCore::String&apos;s implicit conversion to
&gt; UString. This error appears in the code twice.
&gt; Please address the above comments and repost.

ok, I will fix it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122605</commentid>
    <comment_count>15</comment_count>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-22 01:22:16 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 30502 [review])
&gt; It&apos;s unfortunate to do this by adding completely duplicate versions of
&gt; removeAttribute/getAttribute/setAttribute. Perhaps at least some of these could
&gt; just have the extra parameter and use of it as an #ifdef but share most of the
&gt; body.
&gt; Also, I don&apos;t understand why custom bindings are needed for getAttribute and
&gt; removeAttribute. Why was that done? The ChangeLog should explain.
&gt; Please address these comments and repost.

Without custom bindings for getAttribute/removeAttribute,we can&apos;t get or remove attributes according to the manner that ESMP defined through javascript. we need JSElement has the two functions binding with those of WebCore.
Of course, code reuse should be considered as much as possible. I will fix it later. 
Thanks!

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123031</commentid>
    <comment_count>16</comment_count>
      <attachid>30648</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-25 05:23:19 -0700</bug_when>
    <thetext>Created attachment 30648
Latest patch for ESMP to support casesensitive attribute of element

reconstructed the implmentation, and added more messages in Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123032</commentid>
    <comment_count>17</comment_count>
      <attachid>30649</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-25 05:27:11 -0700</bug_when>
    <thetext>Created attachment 30649
Latest patch to support addtional ESMP Errro type

Addressed the comments of Maciej for patch 30500</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123033</commentid>
    <comment_count>18</comment_count>
      <attachid>30650</attachid>
    <who name="yichao.yin">yichao.yin</who>
    <bug_when>2009-05-25 05:29:27 -0700</bug_when>
    <thetext>Created attachment 30650
Latest patch for ESMP URIError support

updated as per Maciej&apos;s comments for patch 30501</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126823</commentid>
    <comment_count>19</comment_count>
      <attachid>30648</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-18 17:19:59 -0700</bug_when>
    <thetext>Comment on attachment 30648
Latest patch for ESMP to support casesensitive attribute of element

I think the case sentitive support can be enabled in Element always, w/o guards.  We don&apos;t get much from the guards:
5 #if ENABLE(ESMP)
 56     PassRefPtr&lt;Node&gt; removeNamedItem(const String&amp; name, ExceptionCode&amp; code, bool caseSensitive = false);
 57 #else
5458     PassRefPtr&lt;Node&gt; removeNamedItem(const String&amp; name, ExceptionCode&amp;);
 59 #endif

Basically I would remove the guards on all of the internal plumbing.  The only thing which needs guards are the JS bindings.

Why the copies of JSElment getAttribute and removeAttribute?  Those don&apos;t seem needed.

r- for the excessive use of #ifdef guards and the code duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126843</commentid>
    <comment_count>20</comment_count>
      <attachid>30649</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-18 18:05:42 -0700</bug_when>
    <thetext>Comment on attachment 30649
Latest patch to support addtional ESMP Errro type

This is the wrong way to add code support:
#if !ENABLE(ESMP)
247249     NativeErrorPrototype* evalErrorPrototype = new (exec) NativeErrorPrototype(exec, nativeErrorPrototypeStructure, &quot;EvalError&quot;, &quot;EvalError&quot;);

The current copy/paste approach using #ifdefs is very error-prone.

Please instead add a mapping from the various error types to their codes.  That mapping code would only be added in ESMP builds.

Please add a LayoutTest to verify that the codes are properly exposed to JavaScript in ESMP builds.

Please add  a LayoutTest to test that memoryError exists.

r- for lack of testing

Some WebKit devs may disagree with me, but I think that it&apos;s better to have a few extra values (like the codes) in the common source base, than have copy/paste code to avoid them. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126845</commentid>
    <comment_count>21</comment_count>
      <attachid>30650</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-18 18:09:33 -0700</bug_when>
    <thetext>Comment on attachment 30650
Latest patch for ESMP URIError support

This needs LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155059</commentid>
    <comment_count>22</comment_count>
      <attachid>41280</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2009-10-16 04:05:44 -0700</bug_when>
    <thetext>Created attachment 41280
patch for ESMP to support casesensitive attribute of element

1. Removed guards.
2. Added test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155060</commentid>
    <comment_count>23</comment_count>
      <attachid>41281</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2009-10-16 04:20:48 -0700</bug_when>
    <thetext>Created attachment 41281
patch for ESMP to support casesensitive attribute of element

Made some small modification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156053</commentid>
    <comment_count>24</comment_count>
      <attachid>41479</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2009-10-19 21:18:14 -0700</bug_when>
    <thetext>Created attachment 41479
patch for ESMP URIError support

If enable ESMP, test case fast/dom/location-new-window-no-crash.html will faild. So, add it into ignore file list when ESMP is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157706</commentid>
    <comment_count>25</comment_count>
      <attachid>41853</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2009-10-26 00:54:01 -0700</bug_when>
    <thetext>Created attachment 41853
patch for ESMP exception.code support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157780</commentid>
    <comment_count>26</comment_count>
      <attachid>41853</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-10-26 08:30:02 -0700</bug_when>
    <thetext>Comment on attachment 41853
patch for ESMP exception.code support

It&apos;s not right to use a single bug for all ESMP changes. We need to use separate bug report for each feature.

&gt; +#if ENABLE(ESMP)
&gt; +    int code = 0;
&gt; +    if (name == &quot;RangeError&quot;)
&gt; +        code = 101;
&gt; +    else if (name == &quot;ReferenceError&quot;)
&gt; +        code = 102;
&gt; +    else if (name == &quot;SyntaxError&quot;)
&gt; +        code = 103;
&gt; +    else if (name == &quot;TypeError&quot;)
&gt; +        code = 104;
&gt; +    else if (name == &quot;URIError&quot;)
&gt; +        code = 105;
&gt; +    else if (name == &quot;EvalError&quot;)
&gt; +        code = 106;
&gt; +    else if (name == &quot;MemoryError&quot;)
&gt; +        code = 99;
&gt; +    putDirect(Identifier(exec, &quot;code&quot;), jsNumber(exec, code), 0);
&gt; +#endif

This is an inefficient way to do this operation. Doing 7 string comparisons to accomplish this doesn&apos;t make sense.

I suggest putting this into Error.cpp&apos;s Error::create function instead of doing what you&apos;re doing here.

It seems quite strange to make ESMP a compile-time switch. Is this really the right way to do this? Who would use the ESMP version in what context? I&apos;d like to know more before taking more of these patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158072</commentid>
    <comment_count>27</comment_count>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2009-10-26 19:57:20 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 41853 [details])
&gt; It&apos;s not right to use a single bug for all ESMP changes. We need to use
&gt; separate bug report for each feature.

  Personally, I think puting all patches for ESMP in one bug is convenient to track them.

&gt; 
&gt; &gt; +#if ENABLE(ESMP)
&gt; &gt; +    int code = 0;
&gt; &gt; +    if (name == &quot;RangeError&quot;)
&gt; &gt; +        code = 101;
&gt; &gt; +    else if (name == &quot;ReferenceError&quot;)
&gt; &gt; +        code = 102;
&gt; &gt; +    else if (name == &quot;SyntaxError&quot;)
&gt; &gt; +        code = 103;
&gt; &gt; +    else if (name == &quot;TypeError&quot;)
&gt; &gt; +        code = 104;
&gt; &gt; +    else if (name == &quot;URIError&quot;)
&gt; &gt; +        code = 105;
&gt; &gt; +    else if (name == &quot;EvalError&quot;)
&gt; &gt; +        code = 106;
&gt; &gt; +    else if (name == &quot;MemoryError&quot;)
&gt; &gt; +        code = 99;
&gt; &gt; +    putDirect(Identifier(exec, &quot;code&quot;), jsNumber(exec, code), 0);
&gt; &gt; +#endif
&gt; 
&gt; This is an inefficient way to do this operation. Doing 7 string comparisons to
&gt; accomplish this doesn&apos;t make sense.

I admit that this is not an efficient way, but considering this function is called  very few times (called by JSGlobalObject::init() only when initializing JS runtime environment ), therefore, I think its efficiency is acceptable.

&gt; 
&gt; I suggest putting this into Error.cpp&apos;s Error::create function instead of doing
&gt; what you&apos;re doing here.
&gt; 

 Error::create() finally calls NativeErrorPrototype::NativeErrorPrototype() to constructe an error. We did this in your way in the previous patch, but  Eric Seidel thought it&apos;s a wrong way.

&gt; It seems quite strange to make ESMP a compile-time switch. Is this really the
&gt; right way to do this? Who would use the ESMP version in what context? I&apos;d like
&gt; to know more before taking more of these patches.

  ESMP support is added for peoples who want to port webkit to a phone, it is similar to WCSS and WML support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158116</commentid>
    <comment_count>28</comment_count>
      <attachid>41935</attachid>
    <who name="Robin Qiu">robin.qiu</who>
    <bug_when>2009-10-27 01:16:52 -0700</bug_when>
    <thetext>Created attachment 41935
patch for ESMP MemoryError support   

* Before testing, please change &quot;sub hasESMPSupport&quot; in &quot;WebKitTools/Scripts/webkitdirs.pm&quot; first: 
  return 0; ==&gt; return 1;

* The test case is time-consuming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161725</commentid>
    <comment_count>29</comment_count>
      <attachid>41281</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-09 13:04:13 -0800</bug_when>
    <thetext>Comment on attachment 41281
patch for ESMP to support casesensitive attribute of element

Following discussions at the TC39 meeting last week, ESMP is basically to be considered dead, so we won&apos;t accept ESMP patches to the main webkit tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161727</commentid>
    <comment_count>30</comment_count>
      <attachid>41479</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-09 13:04:25 -0800</bug_when>
    <thetext>Comment on attachment 41479
patch for ESMP URIError support

Following discussions at the TC39 meeting last week, ESMP is basically to be considered dead, so we won&apos;t accept ESMP patches to the main webkit tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161728</commentid>
    <comment_count>31</comment_count>
      <attachid>41935</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-09 13:04:40 -0800</bug_when>
    <thetext>Comment on attachment 41935
patch for ESMP MemoryError support   

Following discussions at the TC39 meeting last week, ESMP is basically to be considered dead, so we won&apos;t accept ESMP patches to the main webkit tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161729</commentid>
    <comment_count>32</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-09 13:05:29 -0800</bug_when>
    <thetext>Following discussions at the TC39 meeting last week, ESMP is basically to be considered dead, so we won&apos;t accept ESMP patches to the main webkit tree

For this reason I am closing out this bug as WONTFIX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161928</commentid>
    <comment_count>33</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-11-09 19:45:20 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Following discussions at the TC39 meeting last week, ESMP is basically to be
&gt; considered dead, so we won&apos;t accept ESMP patches to the main webkit tree
&gt; 
&gt; For this reason I am closing out this bug as WONTFIX

While I don&apos;t necessarily disagree with the status, the reason for closing the bug is a different story.  We&apos;re trying to determine now if ESMP is actually part of the hard requirements for certain setups.  If so, it doesn&apos;t matter how declared dead it is, it&apos;s an engineering problem and needs to be solved.  No different than replicating bugs in MS IE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164304</commentid>
    <comment_count>34</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2009-11-17 12:19:02 -0800</bug_when>
    <thetext>No comment, so reopen until we can verify that it isn&apos;t required for proxy compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583937</commentid>
    <comment_count>35</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-03-21 02:44:10 -0700</bug_when>
    <thetext>This becomes invalid after 3 years opening.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27913</attachid>
            <date>2009-02-24 02:58:14 -0800</date>
            <delta_ts>2009-05-21 18:48:21 -0700</delta_ts>
            <desc>patch to enable ESMP support : MemoryError  , and Error.code</desc>
            <filename>esmp_patch_for_new_error_type_and_error_code.patch</filename>
            <type>text/plain</type>
            <size>13800</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxMTc1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDItMjEgIGNoYXJsZXMg
d2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkZXMgRVNNUCBzdXBwb3J0IGZv
ciBKYXZhU2NyaXB0LCBuZXcgbmF0aXZlIEVycm9yIHR5cGUgTWVtb3J5RXJyb3IgLCBhbmQgRXJy
b3IuY29kZSBzdXBwb3J0IAorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUucHJpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjpFcnJvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6Oik6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpy
ZXNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXJrKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpK
U0dsb2JhbE9iamVjdERhdGE6OkpTR2xvYmFsT2JqZWN0RGF0YSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjptZW1vcnlFcnJvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1l
L05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TmF0aXZlRXJyb3JQcm90
b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUVy
cm9yUHJvdG90eXBlLmg6CisKIDIwMDktMDItMjMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnByaQkocmV2aXNpb24gNDExNjYpCisrKyBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw4IEBAIElOQ0xVREVQ
QVRIICs9ICQkUFdEICQkUFdEL3BhcnNlciAkJFBXRC8KICAgICAgICAgICAgICAgICQkUFdEL0Zv
cndhcmRpbmdIZWFkZXJzICQkUFdEL2J5dGVjb2RlICQkUFdEL2Fzc2VtYmxlcgogREVGSU5FUyAr
PSBCVUlMRElOR19RVF9fCiAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRVNNUD0uKTogREVG
SU5FUyArPSBFTkFCTEVfRVNNUD0xCisKIGlzRW1wdHkoR0VORVJBVEVEX1NPVVJDRVNfRElSKTpH
RU5FUkFURURfU09VUkNFU19ESVIgPSB0bXAKIEdFTkVSQVRFRF9TT1VSQ0VTX0RJUl9TTEFTSCA9
ICQkR0VORVJBVEVEX1NPVVJDRVNfRElSLwogd2luMzItKiB7CkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAkocmV2aXNpb24gNDExNjYpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsMTIgQEAgSlNPYmplY3QqIEVycm9y
OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICAgICAgY29uc3RydWN0b3IgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPlVSSUVycm9yQ29uc3RydWN0b3IoKTsKICAgICAgICAg
ICAgIG5hbWUgPSAiVVJJIGVycm9yIjsKICAgICAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShF
U01QKQorICAgICAgICBjYXNlIE1lbW9yeUVycm9yOgorICAgICAgICAgICAgY29uc3RydWN0b3Ig
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1lbW9yeUVycm9yQ29uc3RydWN0b3IoKTsK
KyAgICAgICAgICAgIG5hbWUgPSAiTWVtb3J5IGVycm9yIjsKKyAgICAgICAgICAgIGJyZWFrOwor
I2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZXJyb3JDb25zdHJ1Y3RvcigpOwogICAgICAgICAgICAg
bmFtZSA9ICJFcnJvciI7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZpc2lvbiA0MTE2
NikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZmVyZW5jZUVycm9yID0g
MywKICAgICAgICAgU3ludGF4RXJyb3IgICAgPSA0LAogICAgICAgICBUeXBlRXJyb3IgICAgICA9
IDUsCisjaWYgRU5BQkxFKEVTTVApCisgICAgICAgIFVSSUVycm9yICAgICAgID0gNiwKKyAgICAg
ICAgTWVtb3J5RXJyb3IgICAgPSA3CisjZWxzZQogICAgICAgICBVUklFcnJvciAgICAgICA9IDYK
KyNlbmRpZgogICAgIH07CiAgICAgCiAgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25C
ZWdpbk9mZnNldFByb3BlcnR5TmFtZTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiA0MTE2NikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksMTIgKzIzOSwyMiBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlUHRyIHByCiAKICAgICBSZWZQdHI8
U3RydWN0dXJlPiBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSA9IE5hdGl2ZUVycm9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXJyb3JQcm90b3R5cGUpOwogCisjaWYgIUVOQUJMRShF
U01QKQogICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBldmFsRXJyb3JQcm90b3R5cGUgPSBuZXcg
KGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3Ry
dWN0dXJlLCAiRXZhbEVycm9yIiwgIkV2YWxFcnJvciIpOwogICAgIE5hdGl2ZUVycm9yUHJvdG90
eXBlKiByYW5nZUVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlw
ZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJhbmdlRXJyb3IiLCAiUmFu
Z2VFcnJvciIpOwogICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiByZWZlcmVuY2VFcnJvclByb3Rv
dHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIsICJSZWZlcmVuY2VFcnJvciIpOwog
ICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBzeW50YXhFcnJvclByb3RvdHlwZSA9IG5ldyAoZXhl
YykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1
cmUsICJTeW50YXhFcnJvciIsICJTeW50YXhFcnJvciIpOwogICAgIE5hdGl2ZUVycm9yUHJvdG90
eXBlKiB0eXBlRXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBl
KGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVHlwZUVycm9yIiwgIlR5cGVF
cnJvciIpOwogICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBVUklFcnJvclByb3RvdHlwZSA9IG5l
dyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGVT
dHJ1Y3R1cmUsICJVUklFcnJvciIsICJVUklFcnJvciIpOworI2Vsc2UgICAgLy9PTUEtV0FQLUVT
TVAtVjFfMC0yMDA1MDYxNC1DICA2LjEyLjIgTmF0aXZlIEVycm9yIFR5cGVzCisgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIGV2YWxFcnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJy
b3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJy
b3IiLCAiRXZhbEVycm9yIiwgMTA2KTsKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcmFuZ2VF
cnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0
aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJSYW5nZUVycm9yIiwgIlJhbmdlRXJyb3IiLCAx
MDEpOworICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiByZWZlcmVuY2VFcnJvclByb3RvdHlwZSA9
IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5
cGVTdHJ1Y3R1cmUsICJSZWZlcmVuY2VFcnJvciIsICJSZWZlcmVuY2VFcnJvciIsIDEwMik7Cisg
ICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHN5bnRheEVycm9yUHJvdG90eXBlID0gbmV3IChleGVj
KSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVy
ZSwgIlN5bnRheEVycm9yIiwgIlN5bnRheEVycm9yIiwgMTAzKTsKKyAgICBOYXRpdmVFcnJvclBy
b3RvdHlwZSogdHlwZUVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3Rv
dHlwZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIsICJU
eXBlRXJyb3IiLCAxMDQpOworICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBVUklFcnJvclByb3Rv
dHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsICJVUklFcnJvciIsICJVUklFcnJvciIsIDEwNSApOworICAgIE5h
dGl2ZUVycm9yUHJvdG90eXBlKiBtZW1vcnlFcnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0
aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJN
ZW1vcnlFcnJvciIsICJNZW1vcnlFcnJvciIsIDk5KTsKKyNlbmRpZgogCiAgICAgLy8gQ29uc3Ry
dWN0b3JzCiAKQEAgLTI2OCw2ICsyNzgsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChK
U1ZhbHVlUHRyIHByCiAgICAgZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yID0gbmV3IChleGVj
KSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBzeW50
YXhFcnJvclByb3RvdHlwZSk7CiAgICAgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAo
ZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwg
dHlwZUVycm9yUHJvdG90eXBlKTsKICAgICBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IgPSBuZXcg
KGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUs
IFVSSUVycm9yUHJvdG90eXBlKTsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBkKCktPm1lbW9yeUVy
cm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywg
bmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG1lbW9yeUVycm9yUHJvdG90eXBlKTsKKyNlbmRpZgogCiAg
ICAgZCgpLT5vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVt
KTsKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKQEAgLTI4NSw2ICsyOTgsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNl
dChKU1ZhbHVlUHRyIHByCiAgICAgc3ludGF4RXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rv
ciwgRG9udEVudW0pOwogICAgIHR5cGVFcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIFVSSUVycm9yUHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlO
YW1lcygpLmNvbnN0cnVjdG9yLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsK
KyNpZiBFTkFCTEUoRVNNUCkKKyAgICBtZW1vcnlFcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0KGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgZCgpLT5tZW1vcnlFcnJvckNvbnN0cnVj
dG9yLCBEb250RW51bSk7CisjZW5kaWYgCiAKICAgICAvLyBTZXQgZ2xvYmFsIGNvbnN0cnVjdG9y
cwogCkBAIC0zMDUsNiArMzIxLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1
ZVB0ciBwcgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywg
IlN5bnRheEVycm9yIiksIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiVHlwZUVycm9yIiksIGQoKS0+
dHlwZUVycm9yQ29uc3RydWN0b3IpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElk
ZW50aWZpZXIoZXhlYywgIlVSSUVycm9yIiksIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvcik7Cisj
aWYgRU5BQkxFKEVTTVApCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmll
cihleGVjLCAiTWVtb3J5RXJyb3IiKSwgZCgpLT5tZW1vcnlFcnJvckNvbnN0cnVjdG9yKTsKKyNl
bmRpZgogCiAgICAgLy8gU2V0IGdsb2JhbCB2YWx1ZXMuCiAgICAgR2xvYmFsUHJvcGVydHlJbmZv
IHN0YXRpY0dsb2JhbHNbXSA9IHsKQEAgLTM2NCw2ICszODMsOSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjptYXJrKCkKICAgICBtYXJrSWZOZWVkZWQoZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9y
KTsKICAgICBtYXJrSWZOZWVkZWQoZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgbWFy
a0lmTmVlZGVkKGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvcik7CisjaWYgRU5BQkxFKEVTTVApCisg
ICAgbWFya0lmTmVlZGVkKGQoKS0+bWVtb3J5RXJyb3JDb25zdHJ1Y3Rvcik7CisjZW5kaWYKIAog
ICAgIG1hcmtJZk5lZWRlZChkKCktPmV2YWxGdW5jdGlvbik7CiAKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDQxMTY2KQorKysgSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2
Niw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICwgc3ludGF4RXJyb3JDb25z
dHJ1Y3RvcigwKQogICAgICAgICAgICAgICAgICwgdHlwZUVycm9yQ29uc3RydWN0b3IoMCkKICAg
ICAgICAgICAgICAgICAsIFVSSUVycm9yQ29uc3RydWN0b3IoMCkKKyNpZiBFTkFCTEUoRVNNUCkK
KyAgICAgICAgICAgICAgICAsIG1lbW9yeUVycm9yQ29uc3RydWN0b3IoMCkKKyNlbmRpZgogICAg
ICAgICAgICAgICAgICwgZXZhbEZ1bmN0aW9uKDApCiAgICAgICAgICAgICAgICAgLCBvYmplY3RQ
cm90b3R5cGUoMCkKICAgICAgICAgICAgICAgICAsIGZ1bmN0aW9uUHJvdG90eXBlKDApCkBAIC0x
MDIsNiArMTA1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKiBzeW50YXhFcnJvckNvbnN0cnVjdG9yOwogICAgICAgICAgICAgTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAgICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yOworI2lmIEVOQUJMRShFU01QKQor
ICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogbWVtb3J5RXJyb3JDb25zdHJ1Y3Rv
cjsKKyNlbmRpZgogCiAgICAgICAgICAgICBHbG9iYWxFdmFsRnVuY3Rpb24qIGV2YWxGdW5jdGlv
bjsKIApAQCAtMTgzLDYgKzE4OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsgfQogICAgICAgICBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+dHlwZUVy
cm9yQ29uc3RydWN0b3I7IH0KICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJy
b3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvcjsg
fQorI2lmIEVOQUJMRShFU01QKQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBtZW1v
cnlFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5tZW1vcnlFcnJvckNvbnN0
cnVjdG9yOyB9CisjZW5kaWYKKwogCiAgICAgICAgIEdsb2JhbEV2YWxGdW5jdGlvbiogZXZhbEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gZCgpLT5ldmFsRnVuY3Rpb247IH0KIApJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDQxMTY2KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE3ICsyMywyNSBAQAogCiAjaW5jbHVkZSAiRXJy
b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTTnVtYmVy
Q2VsbC5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEFTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JQcm90b3R5cGUpOwogCisjaWYgIUVOQUJM
RShFU01QKQogTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90eXBlKEV4ZWNT
dGF0ZSogZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmlu
ZyYgbmFtZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKKyNlbHNlCitOYXRpdmVFcnJvclByb3Rv
dHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBjb25zdCBVU3RyaW5nJiBt
ZXNzYWdlLCBpbnQgY29kZSkKKyNlbmRpZgogICAgIDogSlNPYmplY3Qoc3RydWN0dXJlKQogewog
ICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywg
bmFtZSksIDApOwogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubWVzc2FnZSwg
anNTdHJpbmcoZXhlYywgbWVzc2FnZSksIDApOworI2lmIEVOQUJMRShFU01QKQorICAgIHB1dERp
cmVjdChJZGVudGlmaWVyKGV4ZWMsICJjb2RlIiksIGpzTnVtYmVyQ2VsbChleGVjLCBjb2RlKSwg
MCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCShyZXZpc2lvbiA0MTE2NikKKysr
IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOYXRp
dmVFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgcHVibGljOgorCisjaWYg
IUVOQUJMRShFU01QKQogICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNvbnN0IFVTdHJpbmcm
IG1lc3NhZ2UpOworI2Vsc2UKKyAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRl
KiwgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+LCBjb25zdCBVU3RyaW5nJiBuYW1lLCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlLCBpbnQgY29kZSk7CisjZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxMTc1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDItMjEgIGNoYXJsZXMgd2Vp
ICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGFkZCBFU01QIHN1cHBvcnQgZm9yIEphdmFT
Y3JpcHQsICB0aGlzIHBhdGNoIGFkZHMgbmV3IGVycm9yIHR5cGU6ICBNZW1vcnlFcnJvciwgIGFu
ZCBhZGQgRXJyb3IuY29kZSBzdXBwb3J0LgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJr
aXQ6CisKIDIwMDktMDItMjQgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IFdl
YktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lvbiA0MTE2NikKKysrIFdlYktpdFRvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIG15ICRz
dmdBc0ltYWdlU3VwcG9ydCA9IDE7CiBteSAkeHBhdGhTdXBwb3J0ID0gMTsKIG15ICR4c2x0U3Vw
cG9ydCA9IDE7CiBteSAkd21sU3VwcG9ydCA9IDA7CitteSAkZXNtcFN1cHBvcnQgPSAxOwogbXkg
JGNvdmVyYWdlU3VwcG9ydCA9IDA7CiBteSAkdmlkZW9TdXBwb3J0ID0gaXNBcHBsZVdlYktpdCgp
OyAjIEVuYWJsZSBieSBkZWZhdWx0IGZvciBBcHBsZSdzIGJ1aWxkcwogbXkgJHdvcmtlcnNTdXBw
b3J0ID0gKGlzQXBwbGVXZWJLaXQoKSB8fCBpc0d0aygpKTsgIyBFbmFibGUgYnkgZGVmYXVsdCBm
b3IgQXBwbGUncyBidWlsZHMgKG1hYy93aW4pIGFuZCBHdGsrCkBAIC04OCw2ICs4OSw3IEBAIFVz
YWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHQKICAgLS1bbm8tXXhwYXRoICAg
ICAgICAgICAgICAgICAgVG9nZ2xlIFhQYXRoIHN1cHBvcnQgKGRlZmF1bHQ6ICR4cGF0aFN1cHBv
cnQpCiAgIC0tW25vLV14c2x0ICAgICAgICAgICAgICAgICAgIFRvZ2dsZSBYU0xUIHN1cHBvcnQg
KGRlZmF1bHQ6ICR4c2x0U3VwcG9ydCkKICAgLS1bbm8tXXdtbCAgICAgICAgICAgICAgICAgICAg
VG9nZ2xlIFdNTCBzdXBwb3J0IChkZWZhdWx0OiAkd21sU3VwcG9ydCkKKyAgLS1bbm8tXWVzbXAg
ICAgICAgICAgICAgICAgICAgVG9nZ2xlIEVTTVAgc3VwcG9ydCAoZGVmYXVsdDogJGVzbXBTdXBw
b3J0KQogICAtLVtuby1ddmlkZW8gICAgICAgICAgICAgICAgICBUb2dnbGUgVmlkZW8gc3VwcG9y
dCAoZGVmYXVsdDogJHZpZGVvU3VwcG9ydCkKICAgLS1bbm8tXXdvcmtlcnMgICAgICAgICAgICAg
ICAgVG9nZ2xlIFdlYiBXb3JrZXJzIHN1cHBvcnQgKGRlZmF1bHQ6ICR3b3JrZXJzU3VwcG9ydCkK
ICAgLS1bbm8tXWNvdmVyYWdlICAgICAgICAgICAgICAgVG9nZ2xlIGNvZGUgY292ZXJhZ2Ugc3Vw
cG9ydCAoZGVmYXVsdDogJGNvdmVyYWdlU3VwcG9ydCkKQEAgLTExMCw2ICsxMTIsNyBAQCBHZXRP
cHRpb25zKAogICAgICAgICAgICAneHBhdGghJyA9PiBcJHhwYXRoU3VwcG9ydCwKICAgICAgICAg
ICAgJ3hzbHQhJyA9PiBcJHhzbHRTdXBwb3J0LAogICAgICAgICAgICAnd21sIScgPT4gXCR3bWxT
dXBwb3J0LAorICAgICAgICAgICAnZXNtcCEnID0+IFwkZXNtcFN1cHBvcnQsCiAgICAgICAgICAg
ICd2aWRlbyEnID0+IFwkdmlkZW9TdXBwb3J0LAogICAgICAgICAgICAnd29ya2VycyEnID0+IFwk
d29ya2Vyc1N1cHBvcnQsCiAgICAgICAgICAgICdjb3ZlcmFnZSEnID0+IFwkY292ZXJhZ2VTdXBw
b3J0LApAQCAtMTYxLDYgKzE2NCw3IEBAIHB1c2ggQG92ZXJyaWRlRmVhdHVyZURlZmluZXNPcHRp
b24sICJFTkEKIHB1c2ggQG92ZXJyaWRlRmVhdHVyZURlZmluZXNPcHRpb24sICJFTkFCTEVfWFBB
VEgiIGlmICR4cGF0aFN1cHBvcnQ7CiBwdXNoIEBvdmVycmlkZUZlYXR1cmVEZWZpbmVzT3B0aW9u
LCAiRU5BQkxFX1hTTFQiIGlmICR4c2x0U3VwcG9ydDsKIHB1c2ggQG92ZXJyaWRlRmVhdHVyZURl
ZmluZXNPcHRpb24sICJFTkFCTEVfV01MIiBpZiAkd21sU3VwcG9ydDsKK3B1c2ggQG92ZXJyaWRl
RmVhdHVyZURlZmluZXNPcHRpb24sICJFTkFCTEVfRVNNUCIgaWYgJGVzbXBTdXBwb3J0OwogbXkg
JG92ZXJyaWRlRmVhdHVyZURlZmluZXNTdHJpbmcgPSAiRkVBVFVSRV9ERUZJTkVTPSIgLiBqb2lu
KCIgIiwgQG92ZXJyaWRlRmVhdHVyZURlZmluZXNPcHRpb24pOwogCiBteSBAY292ZXJhZ2VTdXBw
b3J0T3B0aW9uID0gKCRjb3ZlcmFnZVN1cHBvcnQpID8gWGNvZGVDb3ZlcmFnZVN1cHBvcnRPcHRp
b25zKCkgOiAoKTsKQEAgLTIxMCw2ICsyMTQsNyBAQCBpZiAoaXNHdGsoKSkgewogICAgIHB1c2gg
QG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJHhwYXRoU3VwcG9ydCwgInhwYXRoIik7CiAgICAgcHVz
aCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkeHNsdFN1cHBvcnQsICJ4c2x0Iik7CiAgICAgcHVz
aCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkd21sU3VwcG9ydCwgIndtbCIpOworICAgIHB1c2gg
QG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJGVzbXBTdXBwb3J0LCAiZXNtcCIpOwogICAgIHB1c2gg
QG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJHZpZGVvU3VwcG9ydCwgInZpZGVvIik7CiAgICAgcHVz
aCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkd29ya2Vyc1N1cHBvcnQsICJ3b3JrZXJzIik7CiAg
ICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkY292ZXJhZ2VTdXBwb3J0LCAiY292ZXJh
Z2UiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28069</attachid>
            <date>2009-02-27 03:18:30 -0800</date>
            <delta_ts>2009-05-21 18:48:31 -0700</delta_ts>
            <desc>This patch is to throw URIError for invalid location URI</desc>
            <filename>esmp_for_location_URIError.patch</filename>
            <type>text/plain</type>
            <size>3013</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTI3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDItMjcgIGNoYXJsZXMgd2VpICA8Y2hhcmxlcy53ZWlAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIHRocm91Z2ggVVJJRXJyb3IgZm9yIGludmFsaWQgVVJJcyBmb3IgbG9jYXRpb24g
LCBmb3IgY29tcGxpYW5jZSB3aXRoIEVTTVAoT01BLVdBUC1FU01QLVYxXzApICwgc2VjdGlvbiA5
LjQgTG9jYXRpb24gT2JqZWN0CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6bmF2aWdhdGVJZkFsbG93ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6
c2V0SHJlZik6CisKIDIwMDktMDItMjYgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA0MTI3OSkKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTT2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oPgorI2luY2x1ZGUg
IkNTdHJpbmcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtMTQ1LDYgKzE0NiwxMiBA
QCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqCiAgICAgaWYgKCFhY3Rp
dmVGcmFtZS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihpbXBsKCktPmZyYW1lKCkp
KQogICAgICAgICByZXR1cm47CiAgICAgU3RyaW5nIGRzdFVybCA9IGFjdGl2ZUZyYW1lLT5sb2Fk
ZXIoKS0+Y29tcGxldGVVUkwodmFsdWUudG9TdHJpbmcoZXhlYykpLnN0cmluZygpOworI2lmIEVO
QUJMRShFU01QKQorICAgIGlmKCFLVVJMKGRzdFVybCkuaXNWYWxpZCgpKSB7CisgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgVVJJRXJyb3IsIChTdHJpbmcoIkludmFsaWQgVVJJICIpICsgZHN0VXJs
KS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisjZW5kaWYKKyAgICAKICAgICBpZiAoIXByb3RvY29s
SXMoZHN0VXJsLCAiamF2YXNjcmlwdCIpIHx8IGFsbG93c0FjY2Vzc0Zyb20oZXhlYykpIHsKICAg
ICAgICAgYm9vbCB1c2VyR2VzdHVyZSA9IGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+cHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKCk7CiAgICAgICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlm
IHRoaXMgSlMgd2FzIGNhbGxlZCB2aWEgYSB1c2VyIGdlc3R1cmUKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNDEyNzkpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5oPgorI2luY2x1ZGUg
PENTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtMTM1LDYgKzEzNiwxMiBA
QCBib29sIEpTTG9jYXRpb246OmN1c3RvbUdldFByb3BlcnR5TmFtZXMoCiAKIHN0YXRpYyB2b2lk
IG5hdmlnYXRlSWZBbGxvd2VkKEV4ZWNTdGF0ZSogZXhlYywgRnJhbWUqIGZyYW1lLCBjb25zdCBL
VVJMJiB1cmwsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsK
KyNpZiBFTkFCTEUoRVNNUCkKKyAgICBpZighdXJsLmlzVmFsaWQoKSkgeworICAgICAgICB0aHJv
d0Vycm9yKGV4ZWMsIFVSSUVycm9yLCAgKFN0cmluZygiSW52YWxpZCBVUkk6ICIpICsgdXJsLnN0
cmluZygpKS51dGY4KCkuZGF0YSgpICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYK
ICAgICBGcmFtZSogYWN0aXZlRnJhbWUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9i
YWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKTsKICAgICBpZiAoIXVybC5wcm90b2NvbElzKCJq
YXZhc2NyaXB0IikgfHwgYWxsb3dzQWNjZXNzRnJvbUZyYW1lKGV4ZWMsIGZyYW1lKSkgewogICAg
ICAgICBib29sIHVzZXJHZXN0dXJlID0gYWN0aXZlRnJhbWUtPnNjcmlwdCgpLT5wcm9jZXNzaW5n
VXNlckdlc3R1cmUoKTsKQEAgLTE1NCw2ICsxNjEsNyBAQCB2b2lkIEpTTG9jYXRpb246OnNldEhy
ZWYoRXhlY1N0YXRlKiBleGVjCiAgICAgICAgIHJldHVybjsKIAogICAgIEtVUkwgdXJsID0gYWN0
aXZlRnJhbWUtPmxvYWRlcigpLT5jb21wbGV0ZVVSTCh2YWx1ZS50b1N0cmluZyhleGVjKSk7CisK
ICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChleGVjLCBmcmFtZSwgdXJsLCAhZnJhbWUtPnNjcmlwdCgp
LT5hbnlQYWdlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSwgZmFsc2UpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28215</attachid>
            <date>2009-03-03 00:27:54 -0800</date>
            <delta_ts>2009-05-21 18:48:41 -0700</delta_ts>
            <desc>add an optional parameter &quot;bool caseSensitive&quot; to Element.getAttribute(name), Element.setAttribute(name, value) and Element.removeAttribute(name)</desc>
            <filename>esmp_optional_caseSensitive_parameter_for_element.patch</filename>
            <type>text/plain</type>
            <size>7434</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTM3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDItMjggIGNoYXJsZXMgd2VpICA8Y2hhcmxlcy53ZWlAdG9y
Y2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDExNAor
CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgdG8gbWFrZSBFbGVtZW50LmdldEF0dHJpYnV0ZShuYW1l
LCBbT3B0aW9uYWxdIGNhc2VTZW5zaXRpdmUpLCAKKyAgICAgICAgRWxlbWVudC5zZXRBdHRyaWJ1
dGUobmFtZSwgdmFsdWUsIFtPcHRpb25hbF1jYXNlU2Vuc2l0aXZlKQorICAgICAgICBFbGVtZW50
LnJlbW92ZUF0dHJpYnV0ZShuYW1lLCBbT3B0aW9uYWxdY2FzZVNlbnNpdGl2ZSkKKworICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0VsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkSWdub3JlQXR0cmli
dXRlQ2FzZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisKIDIwMDktMDMtMDIgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRlbGUgUGV0ZXJz
b24KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnBybwkocmV2aXNpb24gNDEzNzMpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzkwLDYgKzEzOTAsMTAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJ
REVPPTEpIHsKIAogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRVNNUD0xKSB7CisgICAg
RkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0VTTVA9MQorfQorCiBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfWFBBVEg9MSkgewogICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NS
SVBUICs9IEVOQUJMRV9YUEFUSD0xCiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVu
dEN1c3RvbS5jcHAJKHJldmlzaW9uIDQxMzczKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxMSArNjcsMjEgQEAgSlNWYWx1
ZVB0ciBKU0VsZW1lbnQ6OnNldEF0dHJpYnV0ZShFeGVjUwogICAgIEF0b21pY1N0cmluZyBuYW1l
ID0gYXJncy5hdChleGVjLCAwKS50b1N0cmluZyhleGVjKTsKICAgICBBdG9taWNTdHJpbmcgdmFs
dWUgPSBhcmdzLmF0KGV4ZWMsIDEpLnRvU3RyaW5nKGV4ZWMpOwogCisjaWYgRU5BQkxFKEVTTVAp
CisgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7CisgICAgaWYoYXJncy5zaXplKCkgPj0g
MykKKyAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IGFyZ3MuYXQoZXhlYywgMikudG9Cb29sZWFuKGV4
ZWMpOworI2VuZGlmCisKICAgICBFbGVtZW50KiBpbXAgPSBpbXBsKCk7CiAgICAgaWYgKCFhbGxv
d1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoZXhlYywgaW1wLCBuYW1lLCB2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCisjaWYgRU5BQkxFKEVTTVApCisgICAgaW1wLT5z
ZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGNhc2VTZW5zaXRpdmUsIGVjKTsKKyNlbHNlCiAgICAg
aW1wLT5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGVjKTsKKyNlbmRpZgogICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkluZGV4OiBX
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gNDEzNzMpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDY3LDkgKzQ2Nyw5IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gRWxlbWVu
dDo6Z2V0Qm91bmQKICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlc3VsdCk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1l
bnQqIGUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShjb25z
dCBFbGVtZW50KiBlLCBib29sIGNhc2VTZW5zaXRpdmUgPSBmYWxzZSkKIHsKLSAgICByZXR1cm4g
ZSAmJiBlLT5kb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpICYmIGUtPmlzSFRNTEVsZW1lbnQo
KTsKKyAgICByZXR1cm4gKCFjYXNlU2Vuc2l0aXZlKSAmJiBlICYmIGUtPmRvY3VtZW50KCktPmlz
SFRNTERvY3VtZW50KCkgJiYgZS0+aXNIVE1MRWxlbWVudCgpOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CkBA
IC0xMDcyLDYgKzEwNzIsNzQgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3Qg
U3RyaQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShFU01QKQordm9pZCBFbGVtZW50OjpyZW1vdmVB
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNhc2VTZW5zaXRpdmUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIFN0cmluZyBsb2NhbE5hbWUgPSBjYXNlU2Vuc2l0aXZlID8gbmFt
ZSA6IG5hbWUubG93ZXIoKTsKKworICAgIGlmIChuYW1lZEF0dHJNYXApIHsKKyAgICAgICAgQXR0
cmlidXRlKiBhID0gbmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKG5hbWUsICFjYXNlU2Vu
c2l0aXZlKTsKKyAgICAgICAgaWYgKCFhKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBuYW1lZEF0dHJNYXAtPnJlbW92ZU5hbWVkSXRlbShhLT5uYW1lKCksIGVj
KTsKKworICAgICAgICBpZiAoZWMgPT0gTk9UX0ZPVU5EX0VSUikKKyAgICAgICAgICAgIGVjID0g
MDsKKyAgICB9CisKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0Cit7CisgICAg
U3RyaW5nIGxvY2FsTmFtZSA9IGNhc2VTZW5zaXRpdmUgPyBuYW1lIDogbmFtZS5sb3dlcigpIDsK
KyAgICBpZiAobG9jYWxOYW1lID09IHN0eWxlQXR0ci5sb2NhbE5hbWUoKSAmJiAhbV9pc1N0eWxl
QXR0cmlidXRlVmFsaWQpCisgICAgICAgIHVwZGF0ZVN0eWxlQXR0cmlidXRlKCk7CisKKyNpZiBF
TkFCTEUoU1ZHKQorICAgIGlmICghbV9hcmVTVkdBdHRyaWJ1dGVzVmFsaWQpCisgICAgICAgIHVw
ZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKG5hbWUpOworI2VuZGlmCisKKyAgICBpZiAobmFtZWRB
dHRyTWFwKQorICAgICAgICBpZiAoQXR0cmlidXRlKiBhID0gbmFtZWRBdHRyTWFwLT5nZXRBdHRy
aWJ1dGVJdGVtKG5hbWUsICFjYXNlU2Vuc2l0aXZlKSkKKyAgICAgICAgICAgIHJldHVybiBhLT52
YWx1ZSgpOworCisgICAgcmV0dXJuIG51bGxBdG9tOworfQorCisKK3ZvaWQgRWxlbWVudDo6c2V0
QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAo
IURvY3VtZW50Ojppc1ZhbGlkTmFtZShuYW1lKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQ0hB
UkFDVEVSX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lID0gKCghY2FzZVNlbnNpdGl2ZSkgJiYgIW5hbWUuc3RyaW5nKCkuaW1w
bCgpLT5pc0xvd2VyKCkpID8gQXRvbWljU3RyaW5nKG5hbWUuc3RyaW5nKCkubG93ZXIoKSkgOiBu
YW1lOworCisgICAgLy8gYWxsb2NhdGUgYXR0cmlidXRlbWFwIGlmIG5lY2Vzc2FyeQorICAgIEF0
dHJpYnV0ZSogb2xkID0gYXR0cmlidXRlcyhmYWxzZSktPmdldEF0dHJpYnV0ZUl0ZW0obG9jYWxO
YW1lLCAhY2FzZVNlbnNpdGl2ZSk7CisKKyAgICBkb2N1bWVudCgpLT5pbmNET01UcmVlVmVyc2lv
bigpOworCisgICAgaWYgKGxvY2FsTmFtZSA9PSBpZEF0dHIubG9jYWxOYW1lKCkpCisgICAgICAg
IHVwZGF0ZUlkKG9sZCA/IG9sZC0+dmFsdWUoKSA6IG51bGxBdG9tLCB2YWx1ZSk7CisKKyAgICBp
ZiAob2xkICYmIHZhbHVlLmlzTnVsbCgpKQorICAgICAgICBuYW1lZEF0dHJNYXAtPnJlbW92ZUF0
dHJpYnV0ZShvbGQtPm5hbWUoKSk7CisgICAgZWxzZSBpZiAoIW9sZCAmJiAhdmFsdWUuaXNOdWxs
KCkpCisgICAgICAgIG5hbWVkQXR0ck1hcC0+YWRkQXR0cmlidXRlKGNyZWF0ZUF0dHJpYnV0ZShR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG51bGxBdG9tKSwgdmFsdWUpKTsKKyAg
ICBlbHNlIGlmIChvbGQgJiYgIXZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgIG9sZC0+c2V0VmFs
dWUodmFsdWUpOworICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKG9sZCk7CisgICAgfQorfQorCisK
KyNlbmRpZgorCiB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKGNvbnN0IFN0cmluZyYg
bmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgcmVtb3ZlQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFt
ZSwgbmFtZXNwYWNlVVJJKSwgZWMpOwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gNDEzNzMpCisrKyBXZWJD
b3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDEyIEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGVOUyhBdHRyKiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4gcmVtb3ZlQXR0cmlidXRlTm9kZShBdHRy
KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIAorI2lmIEVOQUJMRShFU01QKQorICAgIHZvaWQgcmVt
b3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBFeGNl
cHRpb25Db2RlJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0OworICAgIHZvaWQgc2V0QXR0
cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBFeGNlcHRpb25Db2RlJik7CisjZW5kaWYKKwogICAgIHZp
cnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKTsKIAogICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ1FOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9CkluZGV4OiBXZWJD
b3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAkocmV2aXNpb24gNDEzNzMpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTIgKzMyLDI1IEBAIG1vZHVsZSBjb3JlIHsKIAogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIHRhZ05hbWU7
CiAKKyNpZiBFTkFCTEVfRVNNUAorICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBE
T01TdHJpbmcgZ2V0QXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gY2FzZVNlbnNpdGl2ZSk7CisKKyAgICAgICAgW09sZFN0eWxlT2JqQywgQ3VzdG9t
XSB2b2lkIHNldEF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgdmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFs
XSBib29sZWFuIGNhc2VTZW5zaXRpdmUpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUgLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIGNhc2VTZW5z
aXRpdmUpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbHNlCiAgICAgICAg
IFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyBnZXRBdHRyaWJ1dGUoaW4gRE9N
U3RyaW5nIG5hbWUpOwogICAgICAgICBbT2xkU3R5bGVPYmpDLCBDdXN0b21dIHZvaWQgc2V0QXR0
cmlidXRlKGluIERPTVN0cmluZyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyB2YWx1ZSkKICAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShpbiBET01TdHJp
bmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworI2VuZGlmCiAgICAg
ICAgIEF0dHIgZ2V0QXR0cmlidXRlTm9kZShpbiBET01TdHJpbmcgbmFtZSk7CiAgICAgICAgIFtD
dXN0b21dIEF0dHIgc2V0QXR0cmlidXRlTm9kZShpbiBBdHRyIG5ld0F0dHIpCiAgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30500</attachid>
            <date>2009-05-20 01:41:01 -0700</date>
            <delta_ts>2009-05-25 05:27:11 -0700</delta_ts>
            <desc>Updated patch for new ESMP error support</desc>
            <filename>applyESMPError.patch</filename>
            <type>text/plain</type>
            <size>16909</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzODg4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDUtMjAgIFlpY2hhbyBZ
aW4gIDx5aWNoYW8ueWluQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBmcm9tIENoYXJsZXMgV2VpIHRvIGFk
ZCBFU01QIHN1cHBvcnQgZm9yIEphdmFTY3JpcHQsIAorICAgICAgICBuZXcgbmF0aXZlIEVycm9y
IHR5cGUgTWVtb3J5RXJyb3IgLCBhbmQgRXJyb3IuY29kZSBzdXBwb3J0IAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxMTQKKworICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAg
KEpTQzo6RXJyb3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAg
ICAoSlNDOjopOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bWFyayk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRhOjpKU0dsb2JhbE9iamVj
dERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWVtb3J5RXJyb3JDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oOgorCiAyMDA5LTA1LTE5ICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBidWls
ZCBmaXguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCShyZXZpc2lvbiA0Mzg4MykK
KysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAt
OSw2ICs5LDggQEAgQ09ORklHKGRlYnVnLCBkZWJ1Z3xyZWxlYXNlKSB7CiAgICAgT0JKRUNUU19E
SVIgPSBvYmovcmVsZWFzZQogfQogCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0VTTVA9Lik6
IERFRklORVMgKz0gRU5BQkxFX0VTTVA9MQorCiBJTkNMVURFUEFUSCArPSAkJEdFTkVSQVRFRF9T
T1VSQ0VTX0RJUiBcCiAgICAgICAgICAgICAgICAkJFBXRCBcCiAgICAgICAgICAgICAgICAkJFBX
RC9wYXJzZXIgXApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDQzODgz
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMsNiArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9z
dC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJp
YyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02Nyw2ICs2OCwxMiBAQCBKU09iamVjdCog
RXJyb3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+VVJJRXJyb3JDb25zdHJ1Y3RvcigpOwogICAg
ICAgICAgICAgbmFtZSA9ICJVUkkgZXJyb3IiOwogICAgICAgICAgICAgYnJlYWs7CisjaWYgRU5B
QkxFKEVTTVApCisgICAgICAgIGNhc2UgTWVtb3J5RXJyb3I6CisgICAgICAgICAgICBjb25zdHJ1
Y3RvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bWVtb3J5RXJyb3JDb25zdHJ1Y3Rv
cigpOworICAgICAgICAgICAgbmFtZSA9ICJNZW1vcnkgZXJyb3IiOworICAgICAgICAgICAgYnJl
YWs7CisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5lcnJvckNvbnN0cnVjdG9yKCk7CiAgICAgICAg
ICAgICBuYW1lID0gIkVycm9yIjsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9u
IDQzODgzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDYgKzIsNyBAQAogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93
d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Miw3ICs0Mywx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmZXJlbmNlRXJyb3IgPSAzLAogICAgICAg
ICBTeW50YXhFcnJvciAgICA9IDQsCiAgICAgICAgIFR5cGVFcnJvciAgICAgID0gNSwKKyNpZiBF
TkFCTEUoRVNNUCkKKyAgICAgICAgVVJJRXJyb3IgICAgICAgPSA2LAorICAgICAgICBNZW1vcnlF
cnJvciAgICA9IDcKKyNlbHNlCiAgICAgICAgIFVSSUVycm9yICAgICAgID0gNgorI2VuZGlmCiAg
ICAgfTsKICAgICAKICAgICBleHRlcm4gY29uc3QgY2hhciogZXhwcmVzc2lvbkJlZ2luT2Zmc2V0
UHJvcGVydHlOYW1lOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHJldmlzaW9uIDQzODgzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJs
b28uY2EpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjQ0LDEyICsyNDUsMjIgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUgPSBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKGVycm9yUHJvdG90eXBlKTsKIAorI2lmICFFTkFCTEUoRVNNUCkKICAgICBOYXRpdmVFcnJv
clByb3RvdHlwZSogZXZhbEVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclBy
b3RvdHlwZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIkV2YWxFcnJvciIs
ICJFdmFsRXJyb3IiKTsKICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcmFuZ2VFcnJvclByb3Rv
dHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQ
cm90b3R5cGVTdHJ1Y3R1cmUsICJSYW5nZUVycm9yIiwgIlJhbmdlRXJyb3IiKTsKICAgICBOYXRp
dmVFcnJvclByb3RvdHlwZSogcmVmZXJlbmNlRXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5h
dGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAi
UmVmZXJlbmNlRXJyb3IiLCAiUmVmZXJlbmNlRXJyb3IiKTsKICAgICBOYXRpdmVFcnJvclByb3Rv
dHlwZSogc3ludGF4RXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90
eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiU3ludGF4RXJyb3IiLCAi
U3ludGF4RXJyb3IiKTsKICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogdHlwZUVycm9yUHJvdG90
eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBuYXRpdmVFcnJvclBy
b3RvdHlwZVN0cnVjdHVyZSwgIlR5cGVFcnJvciIsICJUeXBlRXJyb3IiKTsKICAgICBOYXRpdmVF
cnJvclByb3RvdHlwZSogVVJJRXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9y
UHJvdG90eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiVVJJRXJyb3Ii
LCAiVVJJRXJyb3IiKTsKKyNlbHNlICAgIC8vT01BLVdBUC1FU01QLVYxXzAtMjAwNTA2MTQtQyAg
Ni4xMi4yIE5hdGl2ZSBFcnJvciBUeXBlcworICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBldmFs
RXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIG5h
dGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiRXZhbEVycm9yIiwgIkV2YWxFcnJvciIsIDEw
Nik7CisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHJhbmdlRXJyb3JQcm90b3R5cGUgPSBuZXcg
KGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3Ry
dWN0dXJlLCAiUmFuZ2VFcnJvciIsICJSYW5nZUVycm9yIiwgMTAxKTsKKyAgICBOYXRpdmVFcnJv
clByb3RvdHlwZSogcmVmZXJlbmNlRXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVy
cm9yUHJvdG90eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiUmVmZXJl
bmNlRXJyb3IiLCAiUmVmZXJlbmNlRXJyb3IiLCAxMDIpOworICAgIE5hdGl2ZUVycm9yUHJvdG90
eXBlKiBzeW50YXhFcnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5
cGUoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJTeW50YXhFcnJvciIsICJT
eW50YXhFcnJvciIsIDEwMyk7CisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHR5cGVFcnJvclBy
b3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJUeXBlRXJyb3IiLCAiVHlwZUVycm9yIiwgMTA0KTsKKyAg
ICBOYXRpdmVFcnJvclByb3RvdHlwZSogVVJJRXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5h
dGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAi
VVJJRXJyb3IiLCAiVVJJRXJyb3IiLCAxMDUgKTsKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSog
bWVtb3J5RXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4
ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiTWVtb3J5RXJyb3IiLCAiTWVtb3J5
RXJyb3IiLCA5OSk7CisjZW5kaWYKIAogICAgIC8vIENvbnN0cnVjdG9ycwogCkBAIC0yNzMsNiAr
Mjg0LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIGQo
KS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcihleGVjLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgc3ludGF4RXJyb3JQcm90b3R5cGUpOwog
ICAgIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3IoZXhlYywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIHR5cGVFcnJvclByb3RvdHlwZSk7
CiAgICAgZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKGV4ZWMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCBVUklFcnJvclByb3RvdHlwZSk7
CisjaWYgRU5BQkxFKEVTTVApCisgICAgZCgpLT5tZW1vcnlFcnJvckNvbnN0cnVjdG9yID0gbmV3
IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIG5hdGl2ZUVycm9yU3RydWN0dXJl
LCBtZW1vcnlFcnJvclByb3RvdHlwZSk7CisjZW5kaWYKIAogICAgIGQoKS0+b2JqZWN0UHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29u
c3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgZCgpLT5mdW5jdGlv
blByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1l
cygpLmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0yOTAs
NiArMzA0LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAg
IHN5bnRheEVycm9yUHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNv
bnN0cnVjdG9yLCBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICB0
eXBlRXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBVUklFcnJv
clByb3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rvciwg
ZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7CisjaWYgRU5BQkxFKEVTTVApCisg
ICAgbWVtb3J5RXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIGQoKS0+bWVtb3J5RXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOworI2Vu
ZGlmIAogCiAgICAgLy8gU2V0IGdsb2JhbCBjb25zdHJ1Y3RvcnMKIApAQCAtMzEwLDYgKzMyNyw5
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJTeW50YXhFcnJvciIpLCBkKCkt
PnN5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KElkZW50aWZpZXIoZXhlYywgIlR5cGVFcnJvciIpLCBkKCktPnR5cGVFcnJvckNvbnN0cnVjdG9y
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJVUklF
cnJvciIpLCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IpOworI2lmIEVOQUJMRShFU01QKQorICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIk1lbW9yeUVycm9y
IiksIGQoKS0+bWVtb3J5RXJyb3JDb25zdHJ1Y3Rvcik7CisjZW5kaWYKIAogICAgIC8vIFNldCBn
bG9iYWwgdmFsdWVzLgogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7
CkBAIC0zNzMsNiArMzkzLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6bWFyaygpCiAgICAgbWFy
a0lmTmVlZGVkKGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgbWFya0lmTmVlZGVk
KGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3IpOwogICAgIG1hcmtJZk5lZWRlZChkKCktPlVSSUVy
cm9yQ29uc3RydWN0b3IpOworI2lmIEVOQUJMRShFU01QKQorICAgIG1hcmtJZk5lZWRlZChkKCkt
Pm1lbW9yeUVycm9yQ29uc3RydWN0b3IpOworI2VuZGlmCiAKICAgICBtYXJrSWZOZWVkZWQoZCgp
LT5ldmFsRnVuY3Rpb24pOwogICAgIG1hcmtJZk5lZWRlZChkKCktPmNhbGxGdW5jdGlvbik7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA0Mzg4
MykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02OCw2ICs2OSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgICwgc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigwKQogICAgICAg
ICAgICAgICAgICwgdHlwZUVycm9yQ29uc3RydWN0b3IoMCkKICAgICAgICAgICAgICAgICAsIFVS
SUVycm9yQ29uc3RydWN0b3IoMCkKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICAgICAgICAgICAgICAs
IG1lbW9yeUVycm9yQ29uc3RydWN0b3IoMCkKKyNlbmRpZgogICAgICAgICAgICAgICAgICwgZXZh
bEZ1bmN0aW9uKDApCiAgICAgICAgICAgICAgICAgLCBjYWxsRnVuY3Rpb24oMCkKICAgICAgICAg
ICAgICAgICAsIGFwcGx5RnVuY3Rpb24oMCkKQEAgLTEwNiw2ICsxMTAsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHN5bnRheEVycm9yQ29u
c3RydWN0b3I7CiAgICAgICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JD
b25zdHJ1Y3RvcjsKICAgICAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVycm9y
Q29uc3RydWN0b3I7CisjaWYgRU5BQkxFKEVTTVApCisgICAgICAgICAgICBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKiBtZW1vcnlFcnJvckNvbnN0cnVjdG9yOworI2VuZGlmCiAKICAgICAgICAgICAg
IEdsb2JhbEV2YWxGdW5jdGlvbiogZXZhbEZ1bmN0aW9uOwogICAgICAgICAgICAgTmF0aXZlRnVu
Y3Rpb25XcmFwcGVyKiBjYWxsRnVuY3Rpb247CkBAIC0xODksNiArMTk2LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBzeW50YXhFcnJvckNvbnN0
cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yOyB9CiAg
ICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5cGVFcnJvckNvbnN0cnVjdG9yKCkgY29u
c3QgeyByZXR1cm4gZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3RvcjsgfQogICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgp
LT5VUklFcnJvckNvbnN0cnVjdG9yOyB9CisjaWYgRU5BQkxFKEVTTVApCisgICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIG1lbW9yeUVycm9yQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBkKCktPm1lbW9yeUVycm9yQ29uc3RydWN0b3I7IH0KKyNlbmRpZgorCiAKICAgICAgICAgR2xv
YmFsRXZhbEZ1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBkKCktPmV2YWxG
dW5jdGlvbjsgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVy
cm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNDM4ODMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjMsMTcgKzI0LDI1IEBACiAKICNpbmNsdWRlICJFcnJvclByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNOdW1iZXJDZWxsLmgi
CiAjaW5jbHVkZSAiVVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNT
X0ZJVFNfSU5fQ0VMTChOYXRpdmVFcnJvclByb3RvdHlwZSk7CiAKKyNpZiBFTkFCTEUoRVNNUCkK
K05hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4
ZWMsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UsIGludCBjb2RlKQorI2Vsc2UKIE5hdGl2ZUVycm9yUHJv
dG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNvbnN0IFVTdHJpbmcm
IG1lc3NhZ2UpCisjZW5kaWYKICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSkKIHsKICAgICBwdXRE
aXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUpLCAw
KTsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5n
KGV4ZWMsIG1lc3NhZ2UpLCAwKTsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBwdXREaXJlY3QoSWRl
bnRpZmllcihleGVjLCAiY29kZSIpLCBqc051bWJlckNlbGwoZXhlYywgY29kZSksIDApOworI2Vu
ZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gNDM4ODMpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI3LDcgKzI4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90b3R5cGUgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1
YmxpYzoKKworI2lmIEVOQUJMRShFU01QKQorICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShF
eGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNv
bnN0IFVTdHJpbmcmIG1lc3NhZ2UsIGludCBjb2RlKTsKKyNlbHNlCiAgICAgICAgIE5hdGl2ZUVy
cm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0
cmluZyYgbmFtZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CisjZW5kaWYKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQzODg4KQorKysgV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjAg
IFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBQ
YXRjaCBmcm9tIENoYXJsZXMgV2VpIHRvIGFkZCBFU01QIHN1cHBvcnQgZm9yIEphdmFTY3JpcHQs
IG5ldyBuYXRpdmUgCisgICAgICAgIEVycm9yIHR5cGUgTWVtb3J5RXJyb3IgLCBhbmQgRXJyb3Iu
Y29kZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDExNAorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMDktMDUt
MTkgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAg
d3hNU1cgYnVpbGQgZml4ZXMgZm9yIERSVC4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
CShyZXZpc2lvbiA0Mzg4MykKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKICMgQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjIsNiArNjMsNyBAQCBteSAkc3ZnVXNlU3VwcG9ydCA9IDE7CiBt
eSAkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCA9IDA7CiBteSAkdmlkZW9TdXBwb3J0ID0gKGlzQXBw
bGVXZWJLaXQoKSB8fCBpc0d0aygpKTsgIyBFbmFibGUgYnkgZGVmYXVsdCBmb3IgQXBwbGUncyBi
dWlsZHMgYW5kIEd0aysKIG15ICR3bWxTdXBwb3J0ID0gMDsKK215ICRlc21wU3VwcG9ydCA9IDE7
CiBteSAkd29ya2Vyc1N1cHBvcnQgPSAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkpOyAjIEVu
YWJsZSBieSBkZWZhdWx0IGZvciBBcHBsZSdzIGJ1aWxkcyAobWFjL3dpbikgYW5kIEd0aysKIG15
ICR4cGF0aFN1cHBvcnQgPSAxOwogbXkgJHhzbHRTdXBwb3J0ID0gMTsKQEAgLTgxLDYgKzgzLDcg
QEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10gW29wdGlvbnMgdAogICAtLVtuby1dY2hh
bm5lbC1tZXNzYWdpbmcgICAgICAgICAgVG9nZ2xlIE1lc3NhZ2VDaGFubmVsIGFuZCBNZXNzYWdl
UG9ydCBzdXBwb3J0IChkZWZhdWx0OiAkY2hhbm5lbE1lc3NhZ2luZ1N1cHBvcnQpCiAgIC0tW25v
LV1kYXRhYmFzZSAgICAgICAgICAgICAgICAgICBUb2dnbGUgRGF0YWJhc2UgU3VwcG9ydCAoZGVm
YXVsdDogJGRhdGFiYXNlU3VwcG9ydCkKICAgLS1bbm8tXWRvbS1zdG9yYWdlICAgICAgICAgICAg
ICAgIFRvZ2dsZSBET00gU3RvcmFnZSBTdXBwb3J0IChkZWZhdWx0OiAkZG9tU3RvcmFnZVN1cHBv
cnQpCisgIC0tW25vLV1lc21wICAgICAgICAgICAgICAgICAgICAgICBUb2dnbGUgRVNNUCBzdXBw
b3J0IChkZWZhdWx0OiAkZXNtcFN1cHBvcnQpCiAgIC0tW25vLV1nZW9sb2NhdGlvbiAgICAgICAg
ICAgICAgICBUb2dnbGUgR2VvbG9jYXRpb24gc3VwcG9ydCAoZGVmYXVsdDogJGdlb2xvY2F0aW9u
U3VwcG9ydCkKICAgLS1bbm8tXWdub21la2V5cmluZyAgICAgICAgICAgICAgIFRvZ2dsZSBHTk9N
RSBLZXlyaW5nIFN1cHBvcnQgKEdUSysgcG9ydCBvbmx5KSAoZGVmYXVsdDogJGdub21lS2V5cmlu
Z1N1cHBvcnQpCiAgIC0tW25vLV1pY29uLWRhdGFiYXNlICAgICAgICAgICAgICBUb2dnbGUgSWNv
biBkYXRhYmFzZSBzdXBwb3J0IChkZWZhdWx0OiAkaWNvbkRhdGFiYXNlU3VwcG9ydCkKQEAgLTEw
OSw2ICsxMTIsNyBAQCBHZXRPcHRpb25zKAogICAgICAgICAgICAnY2hhbm5lbC1tZXNzYWdpbmch
JyA9PiBcJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0LAogICAgICAgICAgICAnZGF0YWJhc2UhJyA9
PiBcJGRhdGFiYXNlU3VwcG9ydCwKICAgICAgICAgICAgJ2RvbS1zdG9yYWdlIScgPT4gXCRkb21T
dG9yYWdlU3VwcG9ydCwKKyAgICAgICAgICAgJ2VzbXAhJyA9PiBcJGVzbXBTdXBwb3J0LAogICAg
ICAgICAgICAnZ2VvbG9jYXRpb24hJyA9PiBcJGdlb2xvY2F0aW9uU3VwcG9ydCwKICAgICAgICAg
ICAgJ2dub21la2V5cmluZyEnID0+IFwkZ25vbWVLZXlyaW5nU3VwcG9ydCwKICAgICAgICAgICAg
J2ljb24tZGF0YWJhc2UhJyA9PiBcJGljb25EYXRhYmFzZVN1cHBvcnQsCkBAIC0xNzcsNiArMTgx
LDcgQEAgaWYgKGlzR3RrKCkpIHsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRj
aGFubmVsTWVzc2FnaW5nU3VwcG9ydCwgImNoYW5uZWwtbWVzc2FnaW5nIik7CiAgICAgcHVzaCBA
b3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkZGF0YWJhc2VTdXBwb3J0LCAiZGF0YWJhc2UiKTsKICAg
ICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRkb21TdG9yYWdlU3VwcG9ydCwgImRvbS1z
dG9yYWdlIik7CisgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkZXNtcFN1cHBvcnQs
ICJlc21wIik7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkZ2VvbG9jYXRpb25T
dXBwb3J0LCAiZ2VvbG9jYXRpb24iKTsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFn
KCRnbm9tZUtleXJpbmdTdXBwb3J0LCAiZ25vbWVrZXlyaW5nIik7CiAgICAgcHVzaCBAb3B0aW9u
cywgYXV0b3Rvb2xzRmxhZygkaWNvbkRhdGFiYXNlU3VwcG9ydCwgImljb24tZGF0YWJhc2UiKTsK
QEAgLTIwOSw2ICsyMTQsNyBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAgICAgcHVzaCBA
b3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkciLCAkY2hhbm5lbE1lc3Nh
Z2luZ1N1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0RBVEFCQVNF
IiwgJGRhdGFiYXNlU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVf
RE9NX1NUT1JBR0UiLCAkZG9tU3RvcmFnZVN1cHBvcnQpOworICAgIHB1c2ggQG9wdGlvbnMsIG9w
dGlvbigiRU5BQkxFX0VTTVAiLCAkZXNtcFN1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9w
dGlvbigiRU5BQkxFX0dFT0xPQ0FUSU9OIiwgJGdlb2xvY2F0aW9uU3VwcG9ydCk7CiAgICAgcHVz
aCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfSUNPTkRBVEFCQVNFIiwgJGljb25EYXRhYmFzZVN1
cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIiLCAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCk7Cg==
</data>
<flag name="review"
          id="15400"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30501</attachid>
            <date>2009-05-20 01:47:58 -0700</date>
            <delta_ts>2009-05-25 05:29:27 -0700</delta_ts>
            <desc>Updated patch for ESMP URIError handling</desc>
            <filename>applyESMPURIError.patch</filename>
            <type>text/plain</type>
            <size>3616</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDUtMjAgIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXRjaCBmcm9tIENoYXJsZXMgV2VpLgorICAgICAgICBUaHJvdWdoIFVSSUVycm9y
IGZvciBpbnZhbGlkIFVSSXMgZm9yIGxvY2F0aW9uLCBmb3IgY29tcGxpYW5jZSB3aXRoIEVTTVAo
T01BLVdBUC1FU01QLVYxXzApLAorICAgICAgICBzZWN0aW9uIDkuNCBMb2NhdGlvbiBPYmplY3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MTE0CisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0TG9jYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmF2aWdhdGVJZkFsbG93
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6c2V0SHJlZik6CisKIDIwMDktMDUt
MTkgIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA0Mzg4MykKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5n
LmgiCiAjaW5jbHVkZSAiQmFzZTY0LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgpAQCAtMTk4LDYgKzIwMCwxMSBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlv
bihFeGVjU3RhdGUqCiAgICAgaWYgKCFhY3RpdmVGcmFtZS0+bG9hZGVyKCktPnNob3VsZEFsbG93
TmF2aWdhdGlvbihpbXBsKCktPmZyYW1lKCkpKQogICAgICAgICByZXR1cm47CiAgICAgU3RyaW5n
IGRzdFVybCA9IGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwodmFsdWUudG9TdHJp
bmcoZXhlYykpLnN0cmluZygpOworI2lmIEVOQUJMRShFU01QKQorICAgIGlmICghS1VSTChkc3RV
cmwpLmlzVmFsaWQoKSkKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBVUklFcnJvciwgKFN0cmlu
ZygiSW52YWxpZCBVUkkgIikgKyBkc3RVcmwpLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisgICAg
CiAgICAgaWYgKCFwcm90b2NvbElzKGRzdFVybCwgImphdmFzY3JpcHQiKSB8fCBhbGxvd3NBY2Nl
c3NGcm9tKGV4ZWMpKSB7CiAgICAgICAgIGJvb2wgdXNlckdlc3R1cmUgPSBhY3RpdmVGcmFtZS0+
c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogICAgICAgICAvLyBXZSB3YW50IGEg
bmV3IGhpc3RvcnkgaXRlbSBpZiB0aGlzIEpTIHdhcyBjYWxsZWQgdmlhIGEgdXNlciBnZXN0dXJl
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9u
IDQzODgzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgSm9uIFNo
aWVyIChqc2hpZXJAaWFzdGF0ZS5lZHUpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNldmVkLgogICog
IENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQor
ICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjMsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTG9jYXRp
b25DdXN0b20uaCIKIAorI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC0xNDUs
NiArMTQ3LDEyIEBAIHZvaWQgSlNMb2NhdGlvbjo6ZGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSoKIAog
c3RhdGljIHZvaWQgbmF2aWdhdGVJZkFsbG93ZWQoRXhlY1N0YXRlKiBleGVjLCBGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0Zvcndh
cmRMaXN0KQogeworI2lmIEVOQUJMRShFU01QKQorICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewor
ICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFVSSUVycm9yLCAoU3RyaW5nKCJJbnZhbGlkIFVSSTog
IikgKyB1cmwuc3RyaW5nKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorI2VuZGlmCiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCk7CiAgICAgaWYgKCF1cmwucHJv
dG9jb2xJcygiamF2YXNjcmlwdCIpIHx8IGFsbG93c0FjY2Vzc0Zyb21GcmFtZShleGVjLCBmcmFt
ZSkpIHsKICAgICAgICAgYm9vbCB1c2VyR2VzdHVyZSA9IGFjdGl2ZUZyYW1lLT5zY3JpcHQoKS0+
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Cg==
</data>
<flag name="review"
          id="15401"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30502</attachid>
            <date>2009-05-20 01:55:26 -0700</date>
            <delta_ts>2009-05-25 05:23:19 -0700</delta_ts>
            <desc>Updated patch for ESMP to support casecensitive attribute of element</desc>
            <filename>applyESMPCaseSensitive.patch</filename>
            <type>text/plain</type>
            <size>10412</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMDktMDUtMjAgIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXRjaCBmcm9tIENoYXJsZXMgV2VpIHRvIGFkZCBFU01QIHRvIFdlYktpdAorICAg
ICAgICBUaGlzIHBhdGNoIGlzIHRvIG1ha2UgRWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSwgW09w
dGlvbmFsXSBjYXNlU2Vuc2l0aXZlKSwgCisgICAgICAgIEVsZW1lbnQuc2V0QXR0cmlidXRlKG5h
bWUsIHZhbHVlLCBbT3B0aW9uYWxdY2FzZVNlbnNpdGl2ZSkKKyAgICAgICAgRWxlbWVudC5yZW1v
dmVBdHRyaWJ1dGUobmFtZSwgW09wdGlvbmFsXWNhc2VTZW5zaXRpdmUpCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MTE0CisKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpnZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNF
bGVtZW50OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmdldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGUp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgor
CiAyMDA5LTA1LTE5ICBZaWNoYW8gWWluICA8eWljaGFvLnlpbkB0b3JjaG1vYmlsZS5jb20uY24+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQz
ODgzKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEw
Myw3IEBAIENPTkZJRyhRVERJUl9idWlsZCkgewogfQogCiAhY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0RBU0hCT0FSRF9TVVBQT1JUPS4pOiBERUZJTkVTICs9IEVOQUJMRV9EQVNIQk9BUkRfU1VQ
UE9SVD0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0VTTVA9Lik6IERFRklORVMgKz0gRU5B
QkxFX0VTTVA9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YUEFUSD0uKTogREVGSU5FUyAr
PSBFTkFCTEVfWFBBVEg9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YU0xUPS4pOiBERUZJ
TkVTICs9IEVOQUJMRV9YU0xUPTAKICMhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hCTD0uKTog
REVGSU5FUyArPSBFTkFCTEVfWEJMPTEKQEAgLTE0MjUsNiArMTQyNiwxMCBAQCBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogCiB9CiAKK2NvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9FU01QPTEpIHsKKyAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfRVNN
UD0xCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YUEFUSD0xKSB7CiAgICAgRkVBVFVS
RV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1hQQVRIPTEKIApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNDM4ODMpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSwxNyArNjIsNTcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGFsbG93U2V0dGluZ1NyY1RvSmF2YQogICAgIHJldHVybiB0cnVlOwogfSAKIAorIAor
I2lmIEVOQUJMRShFU01QKQorSlNWYWx1ZSBKU0VsZW1lbnQ6OmdldEF0dHJpYnV0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgQXRvbWljU3RyaW5nIG5hbWUg
PSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IGFy
Z3MuYXQoMSkudG9Cb29sZWFuKGV4ZWMpOworIAorICAgIEVsZW1lbnQqIGltcCA9IGltcGwoKTsK
KyAgICBpZiAoIWltcCkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworCisgICAgcmV0dXJuIGpz
U3RyaW5nT3JOdWxsKGV4ZWMsIGltcC0+Z2V0QXR0cmlidXRlKG5hbWUsIGNhc2VTZW5zaXRpdmUp
KTsKK30KKyAKK0pTVmFsdWUgSlNFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIEF0b21pY1N0cmluZyBuYW1lID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsKKyAgICBi
b29sIGNhc2VTZW5zaXRpdmUgPSBhcmdzLmF0KDEpLnRvQm9vbGVhbihleGVjKTsKKyAKKyAgICBF
bGVtZW50KiBpbXAgPSBpbXBsKCk7CisgICAgaWYgKCFpbXApCisgICAgICAgIHJldHVybiBqc051
bGwoKTsKKworICAgIGltcC0+cmVtb3ZlQXR0cmlidXRlKG5hbWUsIGNhc2VTZW5zaXRpdmUsIGVj
KTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworfQorI2VuZGlmCisKIEpTVmFsdWUgSlNFbGVtZW50OjpzZXRBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIEF0b21pY1N0cmluZyBuYW1lID0gYXJncy5hdCgwKS50b1N0cmluZyhleGVjKTsK
ICAgICBBdG9taWNTdHJpbmcgdmFsdWUgPSBhcmdzLmF0KDEpLnRvU3RyaW5nKGV4ZWMpOwogCisj
aWYgRU5BQkxFKEVTTVApCisgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7CisgICAgaWYg
KGFyZ3Muc2l6ZSgpID49IDMpCisgICAgICAgIGNhc2VTZW5zaXRpdmUgPSBhcmdzLmF0KDIpLnRv
Qm9vbGVhbihleGVjKTsKKyNlbmRpZgorCiAgICAgRWxlbWVudCogaW1wID0gaW1wbCgpOwogICAg
IGlmICghYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGV4ZWMsIGltcCwgbmFtZSwgdmFs
dWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAorI2lmIEVOQUJMRShFU01QKQor
ICAgIGltcC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBjYXNlU2Vuc2l0aXZlLCBlYyk7Cisj
ZWxzZQogICAgIGltcC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBlYyk7CisjZW5kaWYKICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
fQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDQzODgzKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDcg
RGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9y
ZykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC00NzksOSArNDgwLDkgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBFbGVtZW50OjpnZXRC
b3VuZAogICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUocmVzdWx0KTsKIH0KIAotc3RhdGlj
IGlubGluZSBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSkK
K3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1l
bnQqIGUsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlKQogewotICAgIHJldHVybiBlICYmIGUt
PmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgZS0+aXNIVE1MRWxlbWVudCgpOworICAg
IHJldHVybiAoIWNhc2VTZW5zaXRpdmUpICYmIGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9j
dW1lbnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50KCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYg
RWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKQEAgLTEwODgs
NiArMTA4OSw3MCBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpCiAg
ICAgfQogfQogCisjaWYgRU5BQkxFKEVTTVApCit2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgU3RyaW5nIGxvY2FsTmFtZSA9IGNhc2VTZW5zaXRpdmUgPyBuYW1lIDogbmFt
ZS5sb3dlcigpOworCisgICAgaWYgKG5hbWVkQXR0ck1hcCkgeworICAgICAgICBBdHRyaWJ1dGUq
IGEgPSBuYW1lZEF0dHJNYXAtPmdldEF0dHJpYnV0ZUl0ZW0obmFtZSwgIWNhc2VTZW5zaXRpdmUp
OworICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbmFtZWRB
dHRyTWFwLT5yZW1vdmVOYW1lZEl0ZW0oYS0+bmFtZSgpLCBlYyk7CisKKyAgICAgICAgaWYgKGVj
ID09IE5PVF9GT1VORF9FUlIpCisgICAgICAgICAgICBlYyA9IDA7CisgICAgfQorfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKK3sKKyAgICBTdHJpbmcgbG9jYWxOYW1lID0gY2Fz
ZVNlbnNpdGl2ZSA/IG5hbWUgOiBuYW1lLmxvd2VyKCkgOworICAgIGlmIChsb2NhbE5hbWUgPT0g
c3R5bGVBdHRyLmxvY2FsTmFtZSgpICYmICFtX2lzU3R5bGVBdHRyaWJ1dGVWYWxpZCkKKyAgICAg
ICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKKworI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKCFt
X2FyZVNWR0F0dHJpYnV0ZXNWYWxpZCkKKyAgICAgICAgdXBkYXRlQW5pbWF0ZWRTVkdBdHRyaWJ1
dGUobmFtZSk7CisjZW5kaWYKKworICAgIGlmIChuYW1lZEF0dHJNYXApCisgICAgICAgIGlmIChB
dHRyaWJ1dGUqIGEgPSBuYW1lZEF0dHJNYXAtPmdldEF0dHJpYnV0ZUl0ZW0obmFtZSwgIWNhc2VT
ZW5zaXRpdmUpKQorICAgICAgICAgICAgcmV0dXJuIGEtPnZhbHVlKCk7CisKKyAgICByZXR1cm4g
bnVsbEF0b207Cit9CisKKwordm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGNhc2VTZW5zaXRp
dmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghRG9jdW1lbnQ6OmlzVmFsaWROYW1l
KG5hbWUpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSAoKCFj
YXNlU2Vuc2l0aXZlKSAmJiAhbmFtZS5zdHJpbmcoKS5pbXBsKCktPmlzTG93ZXIoKSkgPyBBdG9t
aWNTdHJpbmcobmFtZS5zdHJpbmcoKS5sb3dlcigpKSA6IG5hbWU7CisKKyAgICAvLyBhbGxvY2F0
ZSBhdHRyaWJ1dGVtYXAgaWYgbmVjZXNzYXJ5CisgICAgQXR0cmlidXRlKiBvbGQgPSBhdHRyaWJ1
dGVzKGZhbHNlKS0+Z2V0QXR0cmlidXRlSXRlbShsb2NhbE5hbWUsICFjYXNlU2Vuc2l0aXZlKTsK
KworICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7CisKKyAgICBpZiAobG9jYWxO
YW1lID09IGlkQXR0ci5sb2NhbE5hbWUoKSkKKyAgICAgICAgdXBkYXRlSWQob2xkID8gb2xkLT52
YWx1ZSgpIDogbnVsbEF0b20sIHZhbHVlKTsKKworICAgIGlmIChvbGQgJiYgdmFsdWUuaXNOdWxs
KCkpCisgICAgICAgIG5hbWVkQXR0ck1hcC0+cmVtb3ZlQXR0cmlidXRlKG9sZC0+bmFtZSgpKTsK
KyAgICBlbHNlIGlmICghb2xkICYmICF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgbmFtZWRBdHRy
TWFwLT5hZGRBdHRyaWJ1dGUoY3JlYXRlQXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20s
IGxvY2FsTmFtZSwgbnVsbEF0b20pLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG9sZCAmJiAhdmFs
dWUuaXNOdWxsKCkpIHsKKyAgICAgICAgb2xkLT5zZXRWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGF0
dHJpYnV0ZUNoYW5nZWQob2xkKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBFbGVtZW50Ojpy
ZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIHJlbW92ZUF0dHJpYnV0ZShR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSksIGVjKTsKSW5k
ZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVt
ZW50LmgJKHJldmlzaW9uIDQzODgzKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVs
bGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3
LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk2LDYgKzk3LDEyIEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEF0dHI+IHNldEF0dHJpYnV0ZU5vZGVOUyhBdHRyKiwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8QXR0cj4gcmVtb3ZlQXR0cmlidXRlTm9k
ZShBdHRyKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIAorI2lmIEVOQUJMRShFU01QKQorICAgIHZv
aWQgcmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZl
LCBFeGNlcHRpb25Db2RlJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNhc2VTZW5zaXRpdmUpIGNvbnN0OworICAgIHZvaWQg
c2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBFeGNlcHRpb25Db2RlJik7CisjZW5kaWYKKwog
ICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKTsKIAogICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ1FOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9CkluZGV4
OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbAkocmV2aXNpb24gNDM4ODMpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDEyICszMywy
NSBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyB0YWdOYW1lOwogCisjaWYgRU5BQkxFX0VTTVAK
KyAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbCwgQ3VzdG9tXSBET01TdHJpbmcgZ2V0
QXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9v
bGVhbiBjYXNlU2Vuc2l0aXZlKTsKKworICAgICAgICBbT2xkU3R5bGVPYmpDLCBDdXN0b21dIHZv
aWQgc2V0QXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyB2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gY2FzZVNlbnNpdGl2ZSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZUF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSAs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gY2FzZVNlbnNpdGl2ZSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwor
I2Vsc2UKICAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nIGdldEF0
dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7CiAgICAgICAgIFtPbGRTdHlsZU9iakMsIEN1c3Rv
bV0gdm9pZCBzZXRBdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHZhbHVlKQogICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgcmVtb3ZlQXR0cmli
dXRlKGluIERPTVN0cmluZyBuYW1lKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisjZW5kaWYKICAgICAgICAgQXR0ciBnZXRBdHRyaWJ1dGVOb2RlKGluIERPTVN0cmluZyBuYW1l
KTsKICAgICAgICAgW0N1c3RvbV0gQXR0ciBzZXRBdHRyaWJ1dGVOb2RlKGluIEF0dHIgbmV3QXR0
cikKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwo=
</data>
<flag name="review"
          id="15402"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30648</attachid>
            <date>2009-05-25 05:23:19 -0700</date>
            <delta_ts>2010-06-10 19:39:53 -0700</delta_ts>
            <desc>Latest patch for ESMP to support casesensitive attribute of element</desc>
            <filename>applyESMPCaseSensitive.patch</filename>
            <type>text/plain</type>
            <size>15249</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDEyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDUtMjUgIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXRjaCBmcm9tIENoYXJsZXMgV2VpIHRvIGFkZCBFU01QIHRvIFdlYktpdAorICAg
ICAgICBUaGlzIHBhdGNoIGlzIHRvIG1ha2UgRWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSwgW09w
dGlvbmFsXSBjYXNlU2Vuc2l0aXZlKSwKKyAgICAgICAgRWxlbWVudC5zZXRBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUsIFtPcHRpb25hbF1jYXNlU2Vuc2l0aXZlKQorICAgICAgICBFbGVtZW50LnJlbW92
ZUF0dHJpYnV0ZShuYW1lLCBbT3B0aW9uYWxdY2FzZVNlbnNpdGl2ZSkKKyAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MTE0CisKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50OjpnZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNF
bGVtZW50OjpzZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNl
dEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOiAK
KyAgICAgICAgMSkgQWRkIHBhcmFtZXRlciBjYXNlU2Vuc2l0aXZlIHRvIHRoZXNlIEFQSXM6IGdl
dEF0dGlidXRlLHNldEF0dHJpYnV0ZSwKKyAgICAgICAgcmVtb3ZlQXR0cmlidXRlIGZvciBFU01Q
LgorICAgICAgICAyKSBBZGQgQ3VzdG9tIGF0dHJpYnV0ZSBmb3IgZ2V0QXR0cmlidXRlIGFuZCBy
ZW1vdmVBdHRyaWJ1dGUgdG8gZW5zdXJlIAorICAgICAgICB0aGV5IGNhbiBiZSBiaW5kZWQgYmV0
d2VlbiBKU0NvcmUgYW5kIFdlYkNvcmUKKyAgICAgICAgMykgVXNlIEVOQUJMX0VTTVAgdG8gZ3Vh
cmQgdGhlIEVTTVAgY2hhbmdlCisgICAgICAgICogZG9tL05hbWVkQXR0ck1hcC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtKToKKyAgICAgICAgKiBkb20vTmFtZWRB
dHRyTWFwLmg6CisKIDIwMDktMDUtMjUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5A
bm9raWEuY29tPgogCiAgICAgICAgIEZpeCB0aGUgR3RrIGJ1aWxkIHdoZW4gdmlkZW8gaXMgZGlz
YWJsZWQuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS5wcm8JKHJldmlzaW9uIDQ0MDM5KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIENPTkZJRyhRVERJUl9idWlsZCkgewogfQog
CiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUPS4pOiBERUZJTkVT
ICs9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVD0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X0VTTVA9Lik6IERFRklORVMgKz0gRU5BQkxFX0VTTVA9MAogIWNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9YUEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFBBVEg9MQogIWNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9YU0xUPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YU0xUPTAKICMhY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1hCTD0uKTogREVGSU5FUyArPSBFTkFCTEVfWEJMPTEKQEAgLTE0MTgs
NiArMTQxOSwxMCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogCiB9CiAK
K2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9FU01QPTEpIHsKKyAgICBGRUFUVVJFX0RFRklORVNf
SkFWQVNDUklQVCArPSBFTkFCTEVfRVNNUD0xCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9YUEFUSD0xKSB7CiAgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1hQ
QVRIPTEKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkocmV2
aXNpb24gNDQwMzkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50
b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSwx
NyArNjIsNTcgQEAgc3RhdGljIGlubGluZSBib29sIGFsbG93U2V0dGluZ1NyY1RvSmF2YQogICAg
IHJldHVybiB0cnVlOwogfSAKIAorIAorI2lmIEVOQUJMRShFU01QKQorSlNWYWx1ZSBKU0VsZW1l
bnQ6OmdldEF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7
CisgICAgQXRvbWljU3RyaW5nIG5hbWUgPSBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpOworICAg
IGJvb2wgY2FzZVNlbnNpdGl2ZSA9IGFyZ3MuYXQoMSkudG9Cb29sZWFuKGV4ZWMpOworIAorICAg
IEVsZW1lbnQqIGltcCA9IGltcGwoKTsKKyAgICBpZiAoIWltcCkKKyAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOworCisgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIGltcC0+Z2V0QXR0cmli
dXRlKG5hbWUsIGNhc2VTZW5zaXRpdmUpKTsKK30KKyAKK0pTVmFsdWUgSlNFbGVtZW50OjpyZW1v
dmVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEF0b21pY1N0cmluZyBuYW1lID0gYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKTsKKyAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBhcmdzLmF0KDEpLnRv
Qm9vbGVhbihleGVjKTsKKyAKKyAgICBFbGVtZW50KiBpbXAgPSBpbXBsKCk7CisgICAgaWYgKCFp
bXApCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIGltcC0+cmVtb3ZlQXR0cmlidXRl
KG5hbWUsIGVjLCBjYXNlU2Vuc2l0aXZlKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMp
OworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorI2VuZGlmCisKIEpTVmFsdWUgSlNFbGVt
ZW50OjpzZXRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQog
ewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIEF0b21pY1N0cmluZyBuYW1lID0gYXJn
cy5hdCgwKS50b1N0cmluZyhleGVjKTsKICAgICBBdG9taWNTdHJpbmcgdmFsdWUgPSBhcmdzLmF0
KDEpLnRvU3RyaW5nKGV4ZWMpOwogCisjaWYgRU5BQkxFKEVTTVApCisgICAgYm9vbCBjYXNlU2Vu
c2l0aXZlID0gZmFsc2U7CisgICAgaWYgKGFyZ3Muc2l6ZSgpID49IDMpCisgICAgICAgIGNhc2VT
ZW5zaXRpdmUgPSBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKTsKKyNlbmRpZgorCiAgICAgRWxl
bWVudCogaW1wID0gaW1wbCgpOwogICAgIGlmICghYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0
VVJMKGV4ZWMsIGltcCwgbmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAorI2lmIEVOQUJMRShFU01QKQorICAgIGltcC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVl
LCBlYywgY2FzZVNlbnNpdGl2ZSk7CisjZWxzZQogICAgIGltcC0+c2V0QXR0cmlidXRlKG5hbWUs
IHZhbHVlLCBlYyk7CisjZW5kaWYKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0MDM5KQor
KysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw3IEBA
CiAgKiAgICAgICAgICAgKEMpIDIwMDcgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNv
bSkKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDcgRXJp
YyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00NzksMTQgKzQ4MCwzMCBAQCBQYXNzUmVmUHRy
PENsaWVudFJlY3Q+IEVsZW1lbnQ6OmdldEJvdW5kCiAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNy
ZWF0ZShyZXN1bHQpOwogfQogCisjaWYgRU5BQkxFKEVTTVApCitzdGF0aWMgaW5saW5lIGJvb2wg
c2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShjb25zdCBFbGVtZW50KiBlLCBib29sIGNhc2VTZW5z
aXRpdmUgPSBmYWxzZSkKKyNlbHNlCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0
cmlidXRlQ2FzZShjb25zdCBFbGVtZW50KiBlKQorI2VuZGlmCiB7CisjaWYgRU5BQkxFKEVTTVAp
CisgICAgcmV0dXJuICFjYXNlU2Vuc2l0aXZlICYmIGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1M
RG9jdW1lbnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50KCk7CisjZWxzZQogICAgIHJldHVybiBlICYm
IGUtPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgZS0+aXNIVE1MRWxlbWVudCgpOwor
I2VuZGlmCiB9CiAKKyNpZiBFTkFCTEUoRVNNUCkKK2NvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVu
dDo6Z2V0QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZlKSBj
b25zdAorI2Vsc2UKIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3QKKyNlbmRpZgogeworI2lmIEVOQUJMRShFU01QKQorICAg
IFN0cmluZyBsb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMsIGNhc2VT
ZW5zaXRpdmUpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKKyNlbHNlCiAgICAgU3RyaW5nIGxvY2Fs
TmFtZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxvd2VyKCkgOiBu
YW1lOworI2VuZGlmCiAgICAgaWYgKGxvY2FsTmFtZSA9PSBzdHlsZUF0dHIubG9jYWxOYW1lKCkg
JiYgIW1faXNTdHlsZUF0dHJpYnV0ZVZhbGlkKQogICAgICAgICB1cGRhdGVTdHlsZUF0dHJpYnV0
ZSgpOwogCkBAIC00OTYsNyArNTEzLDExIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6
Z2V0QXR0cmlidXQKICNlbmRpZgogCiAgICAgaWYgKG5hbWVkQXR0ck1hcCkKKyNpZiBFTkFCTEUo
RVNNUCkKKyAgICAgICAgaWYgKEF0dHJpYnV0ZSogYSA9IG5hbWVkQXR0ck1hcC0+Z2V0QXR0cmli
dXRlSXRlbShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMsIGNhc2VTZW5zaXRp
dmUpKSkKKyNlbHNlCiAgICAgICAgIGlmIChBdHRyaWJ1dGUqIGEgPSBuYW1lZEF0dHJNYXAtPmdl
dEF0dHJpYnV0ZUl0ZW0obmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSkpCisj
ZW5kaWYKICAgICAgICAgICAgIHJldHVybiBhLT52YWx1ZSgpOwogICAgIAogICAgIHJldHVybiBu
dWxsQXRvbTsKQEAgLTUwNywxNyArNTI4LDI5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVu
dDo6Z2V0QXR0cmlidXQKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVs
bEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSk7CiB9CiAKKyNpZiBFTkFCTEUoRVNNUCkK
K3ZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wgY2FzZVNlbnNp
dGl2ZSkKKyNlbHNlCiB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
I2VuZGlmCiB7CiAgICAgaWYgKCFEb2N1bWVudDo6aXNWYWxpZE5hbWUobmFtZSkpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyNpZiBFTkFCTEUoRVNNUCkKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IChz
aG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMsIGNhc2VTZW5zaXRpdmUpICYmICFuYW1lLnN0
cmluZygpLmltcGwoKS0+aXNMb3dlcigpKSA/IEF0b21pY1N0cmluZyhuYW1lLnN0cmluZygpLmxv
d2VyKCkpIDogbmFtZTsKKyNlbHNlCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUg
PSAoc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSAmJiAhbmFtZS5zdHJpbmcoKS5pbXBs
KCktPmlzTG93ZXIoKSkgPyBBdG9taWNTdHJpbmcobmFtZS5zdHJpbmcoKS5sb3dlcigpKSA6IG5h
bWU7CisjZW5kaWYKIAogICAgIC8vIGFsbG9jYXRlIGF0dHJpYnV0ZW1hcCBpZiBuZWNlc3NhcnkK
KyNpZiBFTkFCTEUoRVNNUCkKKyAgICBBdHRyaWJ1dGUqIG9sZCA9IGF0dHJpYnV0ZXMoZmFsc2Up
LT5nZXRBdHRyaWJ1dGVJdGVtKGxvY2FsTmFtZSwgIWNhc2VTZW5zaXRpdmUpOworI2Vsc2UKICAg
ICBBdHRyaWJ1dGUqIG9sZCA9IGF0dHJpYnV0ZXMoZmFsc2UpLT5nZXRBdHRyaWJ1dGVJdGVtKGxv
Y2FsTmFtZSwgZmFsc2UpOworI2VuZGlmCiAKICAgICBkb2N1bWVudCgpLT5pbmNET01UcmVlVmVy
c2lvbigpOwogCkBAIC0xMDc3LDEyICsxMTEwLDI0IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmli
dXRlTlMoY29uc3QgQXRvbWkKICAgICBzZXRBdHRyaWJ1dGUocU5hbWUsIHZhbHVlLCBlYyk7CiB9
CiAKKyNpZiBFTkFCTEUoRVNNUCkKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wgY2FzZVNlbnNpdGl2ZSkKKyNl
bHNlCiB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorI2VuZGlmCiB7CisjaWYgRU5BQkxFKEVTTVApCisgICAgU3RyaW5n
IGxvY2FsTmFtZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcywgY2FzZVNlbnNpdGl2
ZSkgPyBuYW1lLmxvd2VyKCkgOiBuYW1lOworI2Vsc2UKICAgICBTdHJpbmcgbG9jYWxOYW1lID0g
c2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7Cisj
ZW5kaWYKIAogICAgIGlmIChuYW1lZEF0dHJNYXApIHsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICAg
ICAgbmFtZWRBdHRyTWFwLT5yZW1vdmVOYW1lZEl0ZW0obG9jYWxOYW1lLCBlYywgY2FzZVNlbnNp
dGl2ZSk7CisjZWxzZQogICAgICAgICBuYW1lZEF0dHJNYXAtPnJlbW92ZU5hbWVkSXRlbShsb2Nh
bE5hbWUsIGVjKTsKKyNlbmRpZgogICAgICAgICBpZiAoZWMgPT0gTk9UX0ZPVU5EX0VSUikKICAg
ICAgICAgICAgIGVjID0gMDsKICAgICB9CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA0NDAzOSkKKysrIFdl
YkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICAqICAg
ICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAgICAg
IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC01NSwxMCArNTYsMTggQEAgcHVibGljOgogICAgIGJvb2wgaGFzQXR0cmli
dXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGVOUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0
OwogCisjaWYgRU5BQkxFKEVTTVApCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNhc2VTZW5zaXRpdmUgPSBmYWxzZSkgY29uc3Q7
CisjZWxzZQogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3Q7CisjZW5kaWYKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJp
YnV0ZU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFt
ZSkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmIGNvZGUsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlKTsKKyNlbHNlCiAgICAgdm9p
ZCBzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CisjZW5kaWYKICAgICB2b2lkIHNldEF0dHJpYnV0
ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcm
IHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXcgKGJvb2wgYWxpZ25Ub1RvcCA9IHRydWUpOwpA
QCAtODcsNyArOTYsMTEgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+
IGdldENsaWVudFJlY3RzKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdDsKIAorI2lmIEVOQUJMRShFU01QKQorICAgIHZvaWQg
cmVtb3ZlQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgY29kZSwg
Ym9vbCBjYXNlU2Vuc2l0aXZlID0gZmFsc2UpOworI2Vsc2UKICAgICB2b2lkIHJlbW92ZUF0dHJp
YnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyNlbmRpZgogICAgIHZv
aWQgcmVtb3ZlQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0
cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPEF0dHI+
IGdldEF0dHJpYnV0ZU5vZGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKSW5kZXg6IFdlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZp
c2lvbiA0NDAzOSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9y
Y2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2Jp
bGUuY29tLykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzIsMTIgKzMzLDI1IEBAIG1vZHVsZSBj
b3JlIHsKIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89
TnVsbF0gRE9NU3RyaW5nIHRhZ05hbWU7CiAKKyNpZiBFTkFCTEVfRVNNUAorICAgICAgICBbQ29u
dmVydE51bGxTdHJpbmdUbz1OdWxsLCBDdXN0b21dIERPTVN0cmluZyBnZXRBdHRyaWJ1dGUoaW4g
RE9NU3RyaW5nIG5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIGNhc2VTZW5z
aXRpdmUpOworCisgICAgICAgIFtPbGRTdHlsZU9iakMsIEN1c3RvbV0gdm9pZCBzZXRBdHRyaWJ1
dGUoaW4gRE9NU3RyaW5nIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiBjYXNlU2Vu
c2l0aXZlKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0
b21dIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lICwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiBjYXNlU2Vu
c2l0aXZlKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisjZWxzZQogICAgICAg
ICBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgZ2V0QXR0cmlidXRlKGluIERP
TVN0cmluZyBuYW1lKTsKICAgICAgICAgW09sZFN0eWxlT2JqQywgQ3VzdG9tXSB2b2lkIHNldEF0
dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgdmFsdWUpCiAgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gRE9NU3Ry
aW5nIG5hbWUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgogICAg
ICAgICBBdHRyIGdldEF0dHJpYnV0ZU5vZGUoaW4gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICBb
Q3VzdG9tXSBBdHRyIHNldEF0dHJpYnV0ZU5vZGUoaW4gQXR0ciBuZXdBdHRyKQogICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lZEF0dHJNYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5jcHAJKHJldmlzaW9u
IDQ0MDM5KQorKysgV2ViQ29yZS9kb20vTmFtZWRBdHRyTWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNSw2ICs1LDcgQEAKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMp
IDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3Jj
aG1vYmlsZS5jb20vKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNSw5ICszNiwxNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKKyNpZiBFTkFC
TEUoRVNNUCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNv
bnN0IEVsZW1lbnQqIGUsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlKQorI2Vsc2UKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUp
CisjZW5kaWYKIHsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICByZXR1cm4gIWNhc2VTZW5zaXRpdmUg
JiYgZSAmJiBlLT5kb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpICYmIGUtPmlzSFRNTEVsZW1l
bnQoKTsKKyNlbHNlCiAgICAgcmV0dXJuIGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1l
bnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50KCk7CisjZW5kaWYKIH0KIAogaW5saW5lIHZvaWQgTmFt
ZWROb2RlTWFwOjpkZXRhY2hBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoKQpAQCAtNzMsOSArODIsMTcg
QEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OmdldE5hbWVkSQogICAgIHJldHVybiBn
ZXROYW1lZEl0ZW0oUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VV
UkkpKTsKIH0KIAorI2lmIEVOQUJMRShFU01QKQorUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVN
YXA6OnJlbW92ZU5hbWVkSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
LCBib29sIGNhc2VTZW5zaXRpdmUpCisjZWxzZQogUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVN
YXA6OnJlbW92ZU5hbWVkSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorI2VuZGlmCiB7CisjaWYgRU5BQkxFKEVTTVApCisgICAgQXR0cmlidXRlKiBhID0gZ2V0QXR0
cmlidXRlSXRlbShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKG1fZWxlbWVudCwgY2Fz
ZVNlbnNpdGl2ZSkpOworI2Vsc2UKICAgICBBdHRyaWJ1dGUqIGEgPSBnZXRBdHRyaWJ1dGVJdGVt
KG5hbWUsIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UobV9lbGVtZW50KSk7CisjZW5kaWYKICAg
ICBpZiAoIWEpIHsKICAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOwogICAgICAgICByZXR1cm4g
MDsKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL05hbWVkQXR0ck1hcC5oCShyZXZpc2lvbiA0NDAzOSkKKysrIFdlYkNvcmUvZG9tL05h
bWVkQXR0ck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogICAgICAgICAg
IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIw
MDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTUxLDcgKzUyLDExIEBAIHB1YmxpYzoKICAgICAvLyBQdWJsaWMgRE9NIGludGVyZmFjZS4KIAog
ICAgIFBhc3NSZWZQdHI8Tm9kZT4gZ2V0TmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29u
c3Q7CisjaWYgRU5BQkxFKEVTTVApCisgICAgUGFzc1JlZlB0cjxOb2RlPiByZW1vdmVOYW1lZEl0
ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlLCBib29sIGNhc2VTZW5z
aXRpdmUgPSBmYWxzZSk7CisjZWxzZQogICAgIFBhc3NSZWZQdHI8Tm9kZT4gcmVtb3ZlTmFtZWRJ
dGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCiAKICAgICBQ
YXNzUmVmUHRyPE5vZGU+IGdldE5hbWVkSXRlbU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxOb2RlPiBy
ZW1vdmVOYW1lZEl0ZW1OUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
</data>
<flag name="review"
          id="15513"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30649</attachid>
            <date>2009-05-25 05:27:11 -0700</date>
            <delta_ts>2009-06-18 18:05:42 -0700</delta_ts>
            <desc>Latest patch to support addtional ESMP Errro type</desc>
            <filename>applyESMPError.patch</filename>
            <type>text/plain</type>
            <size>16791</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ0MDM5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDUtMjQgIFlpY2hhbyBZ
aW4gIDx5aWNoYW8ueWluQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBmcm9tIENoYXJsZXMgV2VpIHRvIGFk
ZCBFU01QIHN1cHBvcnQgZm9yIEphdmFTY3JpcHQsIAorICAgICAgICBuZXcgbmF0aXZlIEVycm9y
IHR5cGUgTWVtb3J5RXJyb3IgLCBhbmQgRXJyb3IuY29kZSBzdXBwb3J0IAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxMTQKKworICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAg
KEpTQzo6RXJyb3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAg
ICAoSlNDOjopOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bWFyayk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRhOjpKU0dsb2JhbE9iamVj
dERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWVtb3J5RXJyb3JDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZSk6Cisg
ICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oOgorCiAyMDA5LTA1LTIxICBY
YW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeC4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDQ0MDM5KQor
KysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC05
LDYgKzksOCBAQCBDT05GSUcoZGVidWcsIGRlYnVnfHJlbGVhc2UpIHsKICAgICBPQkpFQ1RTX0RJ
UiA9IG9iai9yZWxlYXNlCiB9CiAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRVNNUD0uKTog
REVGSU5FUyArPSBFTkFCTEVfRVNNUD0xCisKIElOQ0xVREVQQVRIICs9ICQkR0VORVJBVEVEX1NP
VVJDRVNfRElSIFwKICAgICAgICAgICAgICAgICQkUFdEIFwKICAgICAgICAgICAgICAgICQkUFdE
L3BhcnNlciBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gNDQwMzkp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Myw2ICszLDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBFcmlj
IFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTY3LDYgKzY4LDEyIEBAIEpTT2JqZWN0KiBF
cnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5VUklFcnJvckNvbnN0cnVjdG9yKCk7CiAgICAg
ICAgICAgICBuYW1lID0gIlVSSSBlcnJvciI7CiAgICAgICAgICAgICBicmVhazsKKyNpZiBFTkFC
TEUoRVNNUCkKKyAgICAgICAgY2FzZSBNZW1vcnlFcnJvcjoKKyAgICAgICAgICAgIGNvbnN0cnVj
dG9yID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tZW1vcnlFcnJvckNvbnN0cnVjdG9y
KCk7CisgICAgICAgICAgICBuYW1lID0gIk1lbW9yeSBlcnJvciI7CisgICAgICAgICAgICBicmVh
azsKKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29uc3RydWN0b3IgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmVycm9yQ29uc3RydWN0b3IoKTsKICAgICAgICAg
ICAgIG5hbWUgPSAiRXJyb3IiOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNpb24g
NDQwMzkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIsNiArMiw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBt
a0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3
dy50b3JjaG1vYmlsZS5jb20vKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQyLDcgKzQzLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZlcmVuY2VFcnJvciA9IDMsCiAgICAgICAg
IFN5bnRheEVycm9yICAgID0gNCwKICAgICAgICAgVHlwZUVycm9yICAgICAgPSA1LAotICAgICAg
ICBVUklFcnJvciAgICAgICA9IDYKKyAgICAgICAgVVJJRXJyb3IgICAgICAgPSA2LAorI2lmIEVO
QUJMRShFU01QKQorICAgICAgICBNZW1vcnlFcnJvciAgICA9IDcKKyNlbmRpZgogICAgIH07CiAg
ICAgCiAgICAgZXh0ZXJuIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25CZWdpbk9mZnNldFByb3BlcnR5
TmFtZTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiA0NDAzOSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQor
ICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI0NCwxMiArMjQ1LDIyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0
KEpTVmFsdWUgcHJvdG8KIAogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IG5hdGl2ZUVycm9yUHJvdG90
eXBlU3RydWN0dXJlID0gTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShlcnJv
clByb3RvdHlwZSk7CiAKKyNpZiAhRU5BQkxFKEVTTVApCiAgICAgTmF0aXZlRXJyb3JQcm90b3R5
cGUqIGV2YWxFcnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUo
ZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJFdmFsRXJyb3IiLCAiRXZhbEVy
cm9yIik7CiAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHJhbmdlRXJyb3JQcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBl
U3RydWN0dXJlLCAiUmFuZ2VFcnJvciIsICJSYW5nZUVycm9yIik7CiAgICAgTmF0aXZlRXJyb3JQ
cm90b3R5cGUqIHJlZmVyZW5jZUVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJv
clByb3RvdHlwZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJlZmVyZW5j
ZUVycm9yIiwgIlJlZmVyZW5jZUVycm9yIik7CiAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHN5
bnRheEVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVj
LCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIiwgIlN5bnRheEVy
cm9yIik7CiAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHR5cGVFcnJvclByb3RvdHlwZSA9IG5l
dyAoZXhlYykgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGVT
dHJ1Y3R1cmUsICJUeXBlRXJyb3IiLCAiVHlwZUVycm9yIik7CiAgICAgTmF0aXZlRXJyb3JQcm90
b3R5cGUqIFVSSUVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlw
ZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIiwgIlVSSUVy
cm9yIik7CisjZWxzZSAgICAvL09NQS1XQVAtRVNNUC1WMV8wLTIwMDUwNjE0LUMgIDYuMTIuMiBO
YXRpdmUgRXJyb3IgVHlwZXMKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogZXZhbEVycm9yUHJv
dG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBuYXRpdmVFcnJv
clByb3RvdHlwZVN0cnVjdHVyZSwgIkV2YWxFcnJvciIsICJFdmFsRXJyb3IiLCAxMDYpOworICAg
IE5hdGl2ZUVycm9yUHJvdG90eXBlKiByYW5nZUVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBO
YXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwg
IlJhbmdlRXJyb3IiLCAiUmFuZ2VFcnJvciIsIDEwMSk7CisgICAgTmF0aXZlRXJyb3JQcm90b3R5
cGUqIHJlZmVyZW5jZUVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3Rv
dHlwZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlJlZmVyZW5jZUVycm9y
IiwgIlJlZmVyZW5jZUVycm9yIiwgMTAyKTsKKyAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogc3lu
dGF4RXJyb3JQcm90b3R5cGUgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMs
IG5hdGl2ZUVycm9yUHJvdG90eXBlU3RydWN0dXJlLCAiU3ludGF4RXJyb3IiLCAiU3ludGF4RXJy
b3IiLCAxMDMpOworICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiB0eXBlRXJyb3JQcm90b3R5cGUg
PSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90
eXBlU3RydWN0dXJlLCAiVHlwZUVycm9yIiwgIlR5cGVFcnJvciIsIDEwNCk7CisgICAgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIFVSSUVycm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJv
clByb3RvdHlwZShleGVjLCBuYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9y
IiwgIlVSSUVycm9yIiwgMTA1ICk7CisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIG1lbW9yeUVy
cm9yUHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBuYXRp
dmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIk1lbW9yeUVycm9yIiwgIk1lbW9yeUVycm9yIiwg
OTkpOworI2VuZGlmCiAKICAgICAvLyBDb25zdHJ1Y3RvcnMKIApAQCAtMjczLDYgKzI4NCw5IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBkKCktPnN5bnRh
eEVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhl
YywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIHN5bnRheEVycm9yUHJvdG90eXBlKTsKICAgICBkKCkt
PnR5cGVFcnJvckNvbnN0cnVjdG9yID0gbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
KGV4ZWMsIG5hdGl2ZUVycm9yU3RydWN0dXJlLCB0eXBlRXJyb3JQcm90b3R5cGUpOwogICAgIGQo
KS0+VVJJRXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cihleGVjLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgVVJJRXJyb3JQcm90b3R5cGUpOworI2lmIEVO
QUJMRShFU01QKQorICAgIGQoKS0+bWVtb3J5RXJyb3JDb25zdHJ1Y3RvciA9IG5ldyAoZXhlYykg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCBuYXRpdmVFcnJvclN0cnVjdHVyZSwgbWVtb3J5
RXJyb3JQcm90b3R5cGUpOworI2VuZGlmCiAKICAgICBkKCktPm9iamVjdFByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMjkwLDYgKzMwNCw5
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBzeW50YXhF
cnJvclByb3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgZCgpLT5zeW50YXhFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgdHlwZUVycm9y
UHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBk
KCktPnR5cGVFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgVVJJRXJyb3JQcm90b3R5
cGUtPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGQoKS0+VVJJ
RXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOworI2lmIEVOQUJMRShFU01QKQorICAgIG1lbW9y
eUVycm9yUHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCBkKCktPm1lbW9yeUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyNlbmRpZiAKIAog
ICAgIC8vIFNldCBnbG9iYWwgY29uc3RydWN0b3JzCiAKQEAgLTMxMCw2ICszMjcsOSBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiU3ludGF4RXJyb3IiKSwgZCgpLT5zeW50YXhF
cnJvckNvbnN0cnVjdG9yKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlm
aWVyKGV4ZWMsICJUeXBlRXJyb3IiKSwgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiVVJJRXJyb3IiKSwg
ZCgpLT5VUklFcnJvckNvbnN0cnVjdG9yKTsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJNZW1vcnlFcnJvciIpLCBkKCkt
Pm1lbW9yeUVycm9yQ29uc3RydWN0b3IpOworI2VuZGlmCiAKICAgICAvLyBTZXQgZ2xvYmFsIHZh
bHVlcy4KICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGljR2xvYmFsc1tdID0gewpAQCAtMzcz
LDYgKzM5Myw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmsoKQogICAgIG1hcmtJZk5lZWRl
ZChkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIG1hcmtJZk5lZWRlZChkKCktPnR5
cGVFcnJvckNvbnN0cnVjdG9yKTsKICAgICBtYXJrSWZOZWVkZWQoZCgpLT5VUklFcnJvckNvbnN0
cnVjdG9yKTsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBtYXJrSWZOZWVkZWQoZCgpLT5tZW1vcnlF
cnJvckNvbnN0cnVjdG9yKTsKKyNlbmRpZgogCiAgICAgbWFya0lmTmVlZGVkKGQoKS0+ZXZhbEZ1
bmN0aW9uKTsKICAgICBtYXJrSWZOZWVkZWQoZCgpLT5jYWxsRnVuY3Rpb24pOwpJbmRleDogSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gNDQwMzkpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNjgsNiArNjksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICAgICAsIHN5bnRheEVycm9yQ29uc3RydWN0b3IoMCkKICAgICAgICAgICAgICAg
ICAsIHR5cGVFcnJvckNvbnN0cnVjdG9yKDApCiAgICAgICAgICAgICAgICAgLCBVUklFcnJvckNv
bnN0cnVjdG9yKDApCisjaWYgRU5BQkxFKEVTTVApCisgICAgICAgICAgICAgICAgLCBtZW1vcnlF
cnJvckNvbnN0cnVjdG9yKDApCisjZW5kaWYKICAgICAgICAgICAgICAgICAsIGV2YWxGdW5jdGlv
bigwKQogICAgICAgICAgICAgICAgICwgY2FsbEZ1bmN0aW9uKDApCiAgICAgICAgICAgICAgICAg
LCBhcHBseUZ1bmN0aW9uKDApCkBAIC0xMDYsNiArMTEwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBzeW50YXhFcnJvckNvbnN0cnVjdG9y
OwogICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogdHlwZUVycm9yQ29uc3RydWN0
b3I7CiAgICAgICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBVUklFcnJvckNvbnN0cnVj
dG9yOworI2lmIEVOQUJMRShFU01QKQorICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogbWVtb3J5RXJyb3JDb25zdHJ1Y3RvcjsKKyNlbmRpZgogCiAgICAgICAgICAgICBHbG9iYWxF
dmFsRnVuY3Rpb24qIGV2YWxGdW5jdGlvbjsKICAgICAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uV3Jh
cHBlciogY2FsbEZ1bmN0aW9uOwpAQCAtMTg5LDYgKzE5NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsgfQogICAgICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0
dXJuIGQoKS0+dHlwZUVycm9yQ29uc3RydWN0b3I7IH0KICAgICAgICAgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+VVJJRXJy
b3JDb25zdHJ1Y3RvcjsgfQorI2lmIEVOQUJMRShFU01QKQorICAgICAgICBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKiBtZW1vcnlFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5t
ZW1vcnlFcnJvckNvbnN0cnVjdG9yOyB9CisjZW5kaWYKKwogCiAgICAgICAgIEdsb2JhbEV2YWxG
dW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gZCgpLT5ldmFsRnVuY3Rpb247
IH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDQ0MDM5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI5LDExICszMCwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogQVNTRVJUX0NMQVNT
X0ZJVFNfSU5fQ0VMTChOYXRpdmVFcnJvclByb3RvdHlwZSk7CiAKKyNpZiBFTkFCTEUoRVNNUCkK
K05hdGl2ZUVycm9yUHJvdG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4
ZWMsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UsIGludCBjb2RlKQorI2Vsc2UKIE5hdGl2ZUVycm9yUHJv
dG90eXBlOjpOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNvbnN0IFVTdHJpbmcm
IG1lc3NhZ2UpCisjZW5kaWYKICAgICA6IEpTT2JqZWN0KHN0cnVjdHVyZSkKIHsKICAgICBwdXRE
aXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUpLCAw
KTsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5n
KGV4ZWMsIG1lc3NhZ2UpLCAwKTsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBwdXREaXJlY3QoSWRl
bnRpZmllcihleGVjLCAiY29kZSIpLCBqc051bWJlckNlbGwoZXhlYywgY29kZSksIDApOworI2Vu
ZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gNDQwMzkpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI3LDcgKzI4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90b3R5cGUgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1
YmxpYzoKKworI2lmIEVOQUJMRShFU01QKQorICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShF
eGVjU3RhdGUqLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4sIGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNv
bnN0IFVTdHJpbmcmIG1lc3NhZ2UsIGludCBjb2RlKTsKKyNlbHNlCiAgICAgICAgIE5hdGl2ZUVy
cm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgY29uc3QgVVN0
cmluZyYgbmFtZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CisjZW5kaWYKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ0MDM5KQorKysgV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjQg
IFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBQ
YXRjaCBmcm9tIENoYXJsZXMgV2VpIHRvIGFkZCBFU01QIHN1cHBvcnQgZm9yIEphdmFTY3JpcHQs
IG5ldyBuYXRpdmUgCisgICAgICAgIEVycm9yIHR5cGUgTWVtb3J5RXJyb3IgLCBhbmQgRXJyb3Iu
Y29kZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDExNAorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMDktMDUt
MjEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFt
cGVkIGJ5IEFudHRpIEtvaXZpc3RvLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13
ZWJraXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJl
dmlzaW9uIDQ0MDM5KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAjIS91c3IvYmluL3BlcmwgLXcKIAogIyBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogIwogIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02Miw2ICs2Myw3IEBAIG15ICRzdmdVc2VTdXBwb3J0ID0gMTsKIG15ICR0
aHJlZURSZW5kZXJpbmdTdXBwb3J0ID0gMDsKIG15ICR2aWRlb1N1cHBvcnQgPSAoaXNBcHBsZVdl
YktpdCgpIHx8IGlzR3RrKCkpOyAjIEVuYWJsZSBieSBkZWZhdWx0IGZvciBBcHBsZSdzIGJ1aWxk
cyBhbmQgR3RrKwogbXkgJHdtbFN1cHBvcnQgPSAwOworbXkgJGVzbXBTdXBwb3J0ID0gMTsKIG15
ICR3b3JrZXJzU3VwcG9ydCA9IChpc0FwcGxlV2ViS2l0KCkgfHwgaXNHdGsoKSk7ICMgRW5hYmxl
IGJ5IGRlZmF1bHQgZm9yIEFwcGxlJ3MgYnVpbGRzIChtYWMvd2luKSBhbmQgR3RrKwogbXkgJHhw
YXRoU3VwcG9ydCA9IDE7CiBteSAkeHNsdFN1cHBvcnQgPSAxOwpAQCAtODMsNiArODUsNyBAQCBV
c2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0CiAgIC0tW25vLV1jaGFubmVs
LW1lc3NhZ2luZyAgICAgICAgICBUb2dnbGUgTWVzc2FnZUNoYW5uZWwgYW5kIE1lc3NhZ2VQb3J0
IHN1cHBvcnQgKGRlZmF1bHQ6ICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCkKICAgLS1bbm8tXWRh
dGFiYXNlICAgICAgICAgICAgICAgICAgIFRvZ2dsZSBEYXRhYmFzZSBTdXBwb3J0IChkZWZhdWx0
OiAkZGF0YWJhc2VTdXBwb3J0KQogICAtLVtuby1dZG9tLXN0b3JhZ2UgICAgICAgICAgICAgICAg
VG9nZ2xlIERPTSBTdG9yYWdlIFN1cHBvcnQgKGRlZmF1bHQ6ICRkb21TdG9yYWdlU3VwcG9ydCkK
KyAgLS1bbm8tXWVzbXAgICAgICAgICAgICAgICAgICAgICAgIFRvZ2dsZSBFU01QIHN1cHBvcnQg
KGRlZmF1bHQ6ICRlc21wU3VwcG9ydCkKICAgLS1bbm8tXWdlb2xvY2F0aW9uICAgICAgICAgICAg
ICAgIFRvZ2dsZSBHZW9sb2NhdGlvbiBzdXBwb3J0IChkZWZhdWx0OiAkZ2VvbG9jYXRpb25TdXBw
b3J0KQogICAtLVtuby1dZ25vbWVrZXlyaW5nICAgICAgICAgICAgICAgVG9nZ2xlIEdOT01FIEtl
eXJpbmcgU3VwcG9ydCAoR1RLKyBwb3J0IG9ubHkpIChkZWZhdWx0OiAkZ25vbWVLZXlyaW5nU3Vw
cG9ydCkKICAgLS1bbm8tXWljb24tZGF0YWJhc2UgICAgICAgICAgICAgIFRvZ2dsZSBJY29uIGRh
dGFiYXNlIHN1cHBvcnQgKGRlZmF1bHQ6ICRpY29uRGF0YWJhc2VTdXBwb3J0KQpAQCAtMTExLDYg
KzExNCw3IEBAIEdldE9wdGlvbnMoCiAgICAgICAgICAgICdjaGFubmVsLW1lc3NhZ2luZyEnID0+
IFwkY2hhbm5lbE1lc3NhZ2luZ1N1cHBvcnQsCiAgICAgICAgICAgICdkYXRhYmFzZSEnID0+IFwk
ZGF0YWJhc2VTdXBwb3J0LAogICAgICAgICAgICAnZG9tLXN0b3JhZ2UhJyA9PiBcJGRvbVN0b3Jh
Z2VTdXBwb3J0LAorICAgICAgICAgICAnZXNtcCEnID0+IFwkZXNtcFN1cHBvcnQsCiAgICAgICAg
ICAgICdnZW9sb2NhdGlvbiEnID0+IFwkZ2VvbG9jYXRpb25TdXBwb3J0LAogICAgICAgICAgICAn
Z25vbWVrZXlyaW5nIScgPT4gXCRnbm9tZUtleXJpbmdTdXBwb3J0LAogICAgICAgICAgICAnaWNv
bi1kYXRhYmFzZSEnID0+IFwkaWNvbkRhdGFiYXNlU3VwcG9ydCwKQEAgLTE4MCw2ICsxODQsNyBA
QCBpZiAoaXNHdGsoKSkgewogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJGNoYW5u
ZWxNZXNzYWdpbmdTdXBwb3J0LCAiY2hhbm5lbC1tZXNzYWdpbmciKTsKICAgICBwdXNoIEBvcHRp
b25zLCBhdXRvdG9vbHNGbGFnKCRkYXRhYmFzZVN1cHBvcnQsICJkYXRhYmFzZSIpOwogICAgIHB1
c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJGRvbVN0b3JhZ2VTdXBwb3J0LCAiZG9tLXN0b3Jh
Z2UiKTsKKyAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRlc21wU3VwcG9ydCwgImVz
bXAiKTsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRnZW9sb2NhdGlvblN1cHBv
cnQsICJnZW9sb2NhdGlvbiIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJGdu
b21lS2V5cmluZ1N1cHBvcnQsICJnbm9tZWtleXJpbmciKTsKICAgICBwdXNoIEBvcHRpb25zLCBh
dXRvdG9vbHNGbGFnKCRpY29uRGF0YWJhc2VTdXBwb3J0LCAiaWNvbi1kYXRhYmFzZSIpOwpAQCAt
MjEzLDYgKzIxOCw3IEBAIGlmIChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKICAgICBwdXNoIEBvcHRp
b25zLCBvcHRpb24oIkVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyIsICRjaGFubmVsTWVzc2FnaW5n
U3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfREFUQUJBU0UiLCAk
ZGF0YWJhc2VTdXBwb3J0KTsKICAgICBwdXNoIEBvcHRpb25zLCBvcHRpb24oIkVOQUJMRV9ET01f
U1RPUkFHRSIsICRkb21TdG9yYWdlU3VwcG9ydCk7CisgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9u
KCJFTkFCTEVfRVNNUCIsICRlc21wU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9u
KCJFTkFCTEVfR0VPTE9DQVRJT04iLCAkZ2VvbG9jYXRpb25TdXBwb3J0KTsKICAgICBwdXNoIEBv
cHRpb25zLCBvcHRpb24oIkVOQUJMRV9JQ09OREFUQUJBU0UiLCAkaWNvbkRhdGFiYXNlU3VwcG9y
dCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UiIsICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0KTsK
</data>
<flag name="review"
          id="15514"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30650</attachid>
            <date>2009-05-25 05:29:27 -0700</date>
            <delta_ts>2009-06-18 18:09:33 -0700</delta_ts>
            <desc>Latest patch for ESMP URIError support</desc>
            <filename>applyESMPURIError.patch</filename>
            <type>text/plain</type>
            <size>3233</size>
            <attacher name="yichao.yin">yichao.yin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDAzOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDUtMjQgIFlpY2hhbyBZaW4gIDx5aWNoYW8ueWluQHRvcmNo
bW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxMTQKKwor
ICAgICAgICBQYXRjaCBmcm9tIENoYXJsZXMgV2VpLgorICAgICAgICBUaHJvdyBVUklFcnJvciBm
b3IgaW52YWxpZCBVUklzIGZvciBsb2NhdGlvbi4gCisgICAgICAgIEluIGNvbXBsaWFuY2Ugd2l0
aCBzZWN0aW9uIDkuNCBMb2NhdGlvbiBPYmplY3QsIE9NQS1XQVAtRVNNUC1WMV8wLTIwMDUwNjE0
LUMucGRmLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldExvY2F0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hdmln
YXRlSWZBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OnNldEhyZWYpOgor
CiAyMDA5LTA1LTIyICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCShyZXZpc2lvbiA0NDAzOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTk4LDYgKzE5OSwxMCBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihF
eGVjU3RhdGUqCiAgICAgaWYgKCFhY3RpdmVGcmFtZS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2
aWdhdGlvbihpbXBsKCktPmZyYW1lKCkpKQogICAgICAgICByZXR1cm47CiAgICAgU3RyaW5nIGRz
dFVybCA9IGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwodmFsdWUudG9TdHJpbmco
ZXhlYykpLnN0cmluZygpOworI2lmIEVOQUJMRShFU01QKQorICAgIGlmICghS1VSTChkc3RVcmwp
LmlzVmFsaWQoKSkKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBVUklFcnJvciwgU3RyaW5nKCJJ
bnZhbGlkIFVSSSAiKSArIGRzdFVybCk7CisjZW5kaWYKICAgICBpZiAoIXByb3RvY29sSXNKYXZh
U2NyaXB0KGRzdFVybCkgfHwgYWxsb3dzQWNjZXNzRnJvbShleGVjKSkgewogICAgICAgICBib29s
IHVzZXJHZXN0dXJlID0gYWN0aXZlRnJhbWUtPnNjcmlwdCgpLT5wcm9jZXNzaW5nVXNlckdlc3R1
cmUoKTsKICAgICAgICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhpcyBKUyB3
YXMgY2FsbGVkIHZpYSBhIHVzZXIgZ2VzdHVyZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA0NDAzOSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA2IEpvbiBTaGllciAoanNoaWVyQGlhc3RhdGUuZWR1KQogICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTE0NSw2ICsxNDYsMTIgQEAgdm9pZCBKU0xv
Y2F0aW9uOjpkZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKgogCiBzdGF0aWMgdm9pZCBuYXZpZ2F0ZUlm
QWxsb3dlZChFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBi
b29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCiB7CisjaWYgRU5BQkxF
KEVTTVApCisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93RXJyb3IoZXhl
YywgVVJJRXJyb3IsIFN0cmluZygiSW52YWxpZCBVUkk6ICIpICsgdXJsLnN0cmluZygpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFz
SlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgp
OwogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSB8fCBhbGxvd3NBY2Nlc3NGcm9t
RnJhbWUoZXhlYywgZnJhbWUpKSB7CiAgICAgICAgIGJvb2wgdXNlckdlc3R1cmUgPSBhY3RpdmVG
cmFtZS0+c2NyaXB0KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwo=
</data>
<flag name="review"
          id="15515"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41280</attachid>
            <date>2009-10-16 04:05:44 -0700</date>
            <delta_ts>2009-10-16 04:20:48 -0700</delta_ts>
            <desc>patch for ESMP to support casesensitive attribute of element</desc>
            <filename>esmp-attr-case-sensibility.patch</filename>
            <type>text/plain</type>
            <size>23395</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ5Njc0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTAtMTYgIFJvYmluIFFp
dSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggZnJvbSBDaGFybGVzIFdlaSB0byBhZGQg
RVNNUCB0byBXZWJLaXQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MTE0CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisKIDIwMDkt
MTAtMTUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlz
aW9uIDQ5NjczKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC05LDYgKzksOCBAQCBDT05GSUcoZGVidWcsIGRlYnVnfHJlbGVhc2UpIHsKICAg
ICBPQkpFQ1RTX0RJUiA9IG9iai9yZWxlYXNlCiB9CiAKKyFjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfRVNNUD0uKTogREVGSU5FUyArPSBFTkFCTEVfRVNNUD0xCisKIElOQ0xVREVQQVRIID0gXAog
ICAgICQkUFdEIFwKICAgICAkJFBXRC8uLiBcCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDk2NzQpCisrKyBXZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDA5LTEwLTE2ICBS
b2JpbiBRaXUgIDxyb2Jpbi5xaXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGZyb20gQ2hhcmxlcyBXZWkg
dG8gYWRkIEVTTVAgdG8gV2ViS2l0CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgdG8gbWFrZSBFbGVt
ZW50LmdldEF0dHJpYnV0ZShuYW1lLCBbT3B0aW9uYWxdIGNhc2VTZW5zaXRpdmUpLAorICAgICAg
ICBFbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgW09wdGlvbmFsXWNhc2VTZW5zaXRp
dmUpCisgICAgICAgIEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUsIFtPcHRpb25hbF1jYXNl
U2Vuc2l0aXZlKQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDExNAorCisgICAgICAgIFRlc3Q6IGZhc3QvZXNtcC9hdHRyaWJ1dGUtY2FzZS1zZW5z
aXRpdml0eS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50Ojpz
ZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAq
IGRvbS9OYW1lZEF0dHJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkSWdub3JlQXR0
cmlidXRlQ2FzZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVk
SXRlbSk6CisgICAgICAgICogZG9tL05hbWVkQXR0ck1hcC5oOgorCiAyMDA5LTEwLTE2ICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBcml5YSBIaWRheWF0LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA0OTY3MykKKysrIFdlYkNvcmUv
V2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsNyBAQCBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RIUkVBREVECiB9CiAKICFjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ9Lik6IERFRklORVMgKz0gRU5BQkxFX0RBU0hCT0FSRF9T
VVBQT1JUPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRVNNUD0uKTogREVGSU5FUyArPSBF
TkFCTEVfRVNNUD0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTFRFUlM9Lik6IERFRklO
RVMgKz0gRU5BQkxFX0ZJTFRFUlM9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YUEFUSD0u
KTogREVGSU5FUyArPSBFTkFCTEVfWFBBVEg9MQogIyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
WEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQpAQCAtMjcyNiw2ICsyNzI3LDEwIEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAKIH0KIAorY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX0VTTVA9MSkgeworICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVO
QUJMRV9FU01QPTEKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hQQVRIPTEpIHsKICAg
ICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfWFBBVEg9MQogCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0OTY3MykKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC03OSwxMSArODAsMTcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6
OnNldEF0dHJpYnV0ZShFeGVjU3RhdAogICAgIEF0b21pY1N0cmluZyBuYW1lID0gYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKTsKICAgICBBdG9taWNTdHJpbmcgdmFsdWUgPSBhcmdzLmF0KDEpLnRv
U3RyaW5nKGV4ZWMpOwogCisgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7CisjaWYgRU5B
QkxFKEVTTVApCisgICAgaWYgKGFyZ3Muc2l6ZSgpID49IDMpCisgICAgICAgIGNhc2VTZW5zaXRp
dmUgPSBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKTsKKyNlbmRpZgorCiAgICAgRWxlbWVudCog
aW1wID0gaW1wbCgpOwogICAgIGlmICghYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGV4
ZWMsIGltcCwgbmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgIGltcC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBlYyk7CisgICAgaW1wLT5zZXRBdHRy
aWJ1dGUobmFtZSwgdmFsdWUsIGNhc2VTZW5zaXRpdmUsIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDQ5NjczKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYsNiArNiw4IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDcgRGF2aWQgU21pdGggKGNh
dGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAg
ICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDov
L3d3dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC00ODAsMTQgKzQ4MiwxNCBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEVsZW1lbnQ6Omdl
dEJvdW5kCiAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZXN1bHQpOwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShjb25zdCBFbGVtZW50KiBl
KQorc3RhdGljIGlubGluZSBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxl
bWVudCogZSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gZmFsc2UpCiB7Ci0gICAgcmV0dXJuIGUgJiYg
ZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50KCk7Cisg
ICAgcmV0dXJuICFjYXNlU2Vuc2l0aXZlICYmIGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9j
dW1lbnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50KCk7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZyYg
RWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK2NvbnN0IEF0
b21pY1N0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9v
bCBjYXNlU2Vuc2l0aXZlKSBjb25zdAogewotICAgIFN0cmluZyBsb2NhbE5hbWUgPSBzaG91bGRJ
Z25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKKyAgICBTdHJp
bmcgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzLCBjYXNlU2Vuc2l0
aXZlKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7CiAgICAgaWYgKGxvY2FsTmFtZSA9PSBzdHlsZUF0
dHIubG9jYWxOYW1lKCkgJiYgIW1faXNTdHlsZUF0dHJpYnV0ZVZhbGlkKQogICAgICAgICB1cGRh
dGVTdHlsZUF0dHJpYnV0ZSgpOwogCkBAIC00OTcsNyArNDk5LDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dAogI2VuZGlmCiAKICAgICBpZiAobmFtZWRBdHRyTWFw
KQotICAgICAgICBpZiAoQXR0cmlidXRlKiBhID0gbmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJ
dGVtKG5hbWUsIHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykpKQorICAgICAgICBpZiAo
QXR0cmlidXRlKiBhID0gbmFtZWRBdHRyTWFwLT5nZXRBdHRyaWJ1dGVJdGVtKG5hbWUsIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcywgY2FzZVNlbnNpdGl2ZSkpKQogICAgICAgICAgICAg
cmV0dXJuIGEtPnZhbHVlKCk7CiAgICAgCiAgICAgcmV0dXJuIG51bGxBdG9tOwpAQCAtNTEwLDEy
ICs1MTIsMTcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dAogCiB2
b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIHNldEF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSwgZmFsc2UsIGVjKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRBdHRy
aWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
LCBib29sIGNhc2VTZW5zaXRpdmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewogICAgIGlmICghRG9j
dW1lbnQ6OmlzVmFsaWROYW1lKG5hbWUpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNU
RVJfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbE5hbWUgPSAoc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSAmJiAhbmFtZS5z
dHJpbmcoKS5pbXBsKCktPmlzTG93ZXIoKSkgPyBBdG9taWNTdHJpbmcobmFtZS5zdHJpbmcoKS5s
b3dlcigpKSA6IG5hbWU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSAoc2hv
dWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzLCBjYXNlU2Vuc2l0aXZlKSAmJiAhbmFtZS5zdHJp
bmcoKS5pbXBsKCktPmlzTG93ZXIoKSkgPyBBdG9taWNTdHJpbmcobmFtZS5zdHJpbmcoKS5sb3dl
cigpKSA6IG5hbWU7CiAKICAgICAvLyBhbGxvY2F0ZSBhdHRyaWJ1dGVtYXAgaWYgbmVjZXNzYXJ5
CiAgICAgQXR0cmlidXRlKiBvbGQgPSBhdHRyaWJ1dGVzKGZhbHNlKS0+Z2V0QXR0cmlidXRlSXRl
bShsb2NhbE5hbWUsIGZhbHNlKTsKQEAgLTExMjksMTAgKzExMzYsMTUgQEAgdm9pZCBFbGVtZW50
OjpzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9taQogCiB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJp
YnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFN0cmlu
ZyBsb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dl
cigpIDogbmFtZTsKKyAgICByZW1vdmVBdHRyaWJ1dGUobmFtZSwgZmFsc2UsIGVjKTsKK30KKwor
dm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNh
c2VTZW5zaXRpdmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFN0cmluZyBsb2NhbE5hbWUg
PSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMsIGNhc2VTZW5zaXRpdmUpID8gbmFtZS5s
b3dlcigpIDogbmFtZTsKIAogICAgIGlmIChuYW1lZEF0dHJNYXApIHsKLSAgICAgICAgbmFtZWRB
dHRyTWFwLT5yZW1vdmVOYW1lZEl0ZW0obG9jYWxOYW1lLCBlYyk7CisgICAgICAgIG5hbWVkQXR0
ck1hcC0+cmVtb3ZlTmFtZWRJdGVtKGxvY2FsTmFtZSwgZWMsIGNhc2VTZW5zaXRpdmUpOwogICAg
ICAgICBpZiAoZWMgPT0gTk9UX0ZPVU5EX0VSUikKICAgICAgICAgICAgIGVjID0gMDsKICAgICB9
CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RWxlbWVudC5oCShyZXZpc2lvbiA0OTY3MykKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTAwLDEwICsxMDEsMTEgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRy
aWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGdldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IGZh
bHNlKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZU5TKGNvbnN0
IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAK
ICAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldEF0dHJpYnV0
ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJv
b2wgY2FzZVNlbnNpdGl2ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0QXR0cmlidXRl
TlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYg
cXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYp
OwogCiAgICAgdm9pZCBzY3JvbGxJbnRvVmlldyhib29sIGFsaWduVG9Ub3AgPSB0cnVlKTsKQEAg
LTEzMiw2ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBnZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlQXR0cmli
dXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVS
SSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFBhc3NS
ZWZQdHI8QXR0cj4gZ2V0QXR0cmlidXRlTm9kZShjb25zdCBTdHJpbmcmIG5hbWUpOwpJbmRleDog
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVu
dC5pZGwJKHJldmlzaW9uIDQ5NjczKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw4IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3
dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zMywxMSArMzUsMTQgQEAgbW9kdWxlIGNvcmUgewogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgdGFnTmFtZTsKIAotICAg
ICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgZ2V0QXR0cmlidXRlKGlu
IERPTVN0cmluZyBuYW1lKTsKKyAgICAgICAgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9N
U3RyaW5nIGdldEF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIGNhc2VTZW5zaXRpdmUpOwogICAgICAgICBbT2xkU3R5bGVPYmpDLCBDdXN0b21dIHZv
aWQgc2V0QXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyB2YWx1ZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgdmFs
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
W09wdGlvbmFsXSBib29sZWFuIGNhc2VTZW5zaXRpdmUpCiAgICAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5h
bWUpCisgICAgICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKGluIERPTVN0cmluZyBuYW1lLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIGNhc2VTZW5z
aXRpdmUpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgQXR0ciBn
ZXRBdHRyaWJ1dGVOb2RlKGluIERPTVN0cmluZyBuYW1lKTsKICAgICAgICAgW0N1c3RvbV0gQXR0
ciBzZXRBdHRyaWJ1dGVOb2RlKGluIEF0dHIgbmV3QXR0cikKSW5kZXg6IFdlYkNvcmUvZG9tL05h
bWVkQXR0ck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWRBdHRyTWFwLmNw
cAkocmV2aXNpb24gNDk2NzMpCisrKyBXZWJDb3JlL2RvbS9OYW1lZEF0dHJNYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDYgKzUsOCBAQAogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVl
bGxlciAobXVlbGxlckBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAg
ICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQorICogQ29weXJp
Z2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTM1LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZShjb25zdCBFbGVtZW50KiBlKQorc3RhdGljIGlubGluZSBib29sIHNob3VsZElnbm9yZUF0
dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gZmFsc2Up
CiB7Ci0gICAgcmV0dXJuIGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBl
LT5pc0hUTUxFbGVtZW50KCk7CisgICAgcmV0dXJuICFjYXNlU2Vuc2l0aXZlICYmIGUgJiYgZS0+
ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50KCk7CiB9CiAK
IGlubGluZSB2b2lkIE5hbWVkTm9kZU1hcDo6ZGV0YWNoQXR0cmlidXRlc0Zyb21FbGVtZW50KCkK
QEAgLTczLDkgKzc1LDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OmdldE5hbWVk
SQogICAgIHJldHVybiBnZXROYW1lZEl0ZW0oUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxO
YW1lLCBuYW1lc3BhY2VVUkkpKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6
OnJlbW92ZU5hbWVkSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbShjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29sIGNhc2VTZW5zaXRpdmUpCiB7Ci0gICAg
QXR0cmlidXRlKiBhID0gZ2V0QXR0cmlidXRlSXRlbShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKG1fZWxlbWVudCkpOworICAgIEF0dHJpYnV0ZSogYSA9IGdldEF0dHJpYnV0ZUl0ZW0o
bmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShtX2VsZW1lbnQsIGNhc2VTZW5zaXRpdmUp
KTsKICAgICBpZiAoIWEpIHsKICAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCShyZXZpc2lvbiA0OTY3MykKKysrIFdlYkNvcmUv
ZG9tL05hbWVkQXR0ck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsOCBAQAogICogICAg
ICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAg
KEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTUxLDcgKzUzLDcgQEAgcHVibGljOgogICAgIC8vIFB1Ymxp
YyBET00gaW50ZXJmYWNlLgogCiAgICAgUGFzc1JlZlB0cjxOb2RlPiBnZXROYW1lZEl0ZW0oY29u
c3QgU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPE5vZGU+IHJlbW92ZU5hbWVk
SXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRy
PE5vZGU+IHJlbW92ZU5hbWVkSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGNvZGUsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlKTsKIAogICAgIFBhc3NSZWZQdHI8Tm9k
ZT4gZ2V0TmFtZWRJdGVtTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmlu
ZyYgbG9jYWxOYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPE5vZGU+IHJlbW92ZU5hbWVkSXRl
bU5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNDk2NzQpCisrKyBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0xMC0xNiAg
Um9iaW4gUWl1ICA8cm9iaW4ucWl1QHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRp
b24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6
CisgICAgICAgICogU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0ZGlycy5wbToKKwogMjAwOS0xMC0xNSAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3Jp
cHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24gNDk2NzMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDggQEAKICMhL3Vzci9iaW4v
cGVybCAtdwogCi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTQsNyArNTUsNyBAQCBteSAoJHRocmVlRENhbnZhc1N1cHBvcnQsICR0
aHJlZURSZW5kZXJpCiAgICAgJGV2ZW50c291cmNlU3VwcG9ydCwgJGZpbHRlcnNTdXBwb3J0LCAk
Z2VvbG9jYXRpb25TdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwKICAgICAkamF2YVNjcmlw
dERlYnVnZ2VyU3VwcG9ydCwgJG1hdGhtbFN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25T
dXBwb3J0LCAkcnVieVN1cHBvcnQsICRzaGFyZWRXb3JrZXJzU3VwcG9ydCwgCiAgICAgJHN2Z1N1
cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01P
YmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAotICAgICRzdmdGb3JlaWduT2Jq
ZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRzU3Vw
cG9ydCwgJHdtbFN1cHBvcnQsICR3Y3NzU3VwcG9ydCwgJHhodG1sbXBTdXBwb3J0LCAkd29ya2Vy
c1N1cHBvcnQsCisgICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3VwcG9ydCwg
JHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwgJGVzbXBTdXBw
b3J0LCAkd2Nzc1N1cHBvcnQsICR4aHRtbG1wU3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0LAogICAg
ICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9ydCwgJGNvdmVyYWdlU3VwcG9ydCwgJG5vdGlmaWNh
dGlvbnNTdXBwb3J0KTsKIAogbXkgQGZlYXR1cmVzID0gKApAQCAtMTM5LDYgKzE0MCw5IEBAIG15
IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAid21sIiwgZGVzYyA9PiAiVG9nZ2xlIFdN
TCBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dNTCIsIGRlZmF1bHQgPT4gMCwg
dmFsdWUgPT4gXCR3bWxTdXBwb3J0IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAiZXNtcCIsIGRlc2Mg
PT4gIlRvZ2dsZSBFU01QIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVNNUCIs
IGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRlc21wU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24g
PT4gInhodG1sbXAiLCBkZXNjID0+ICJUb2dnbGUgWEhUTUwtTVAgc3VwcG9ydCIsCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9YSFRNTE1QIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHhodG1s
bXBTdXBwb3J0IH0sCiAKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJKHJl
dmlzaW9uIDQ5NjczKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCSh3
b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBBbmRyYXMgQmVjc2kg
KGJlY3NpLmFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMg
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NDgsNiArNDQ5LDEw
IEBAIGlmICghY2hlY2tXZWJDb3JlV0NTU1N1cHBvcnQoMCkpIHsKICAgICAkaWdub3JlZERpcmVj
dG9yaWVzeydmYXN0L3djc3MnfSA9IDE7CiB9CiAKK2lmICghY2hlY2tXZWJDb3JlRVNNUFN1cHBv
cnQoMCkpIHsKKyAgICAkaWdub3JlZERpcmVjdG9yaWVzeydmYXN0L2VzbXAnfSA9IDE7Cit9CisK
IHByb2Nlc3NJZ25vcmVUZXN0cygkaWdub3JlVGVzdHMsICJpZ25vcmUtdGVzdHMiKSBpZiAkaWdu
b3JlVGVzdHM7CiByZWFkU2tpcHBlZEZpbGVzKCkgdW5sZXNzICRpZ25vcmVTa2lwcGVkOwogCklu
ZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCShyZXZpc2lvbiA0OTY3MykKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAw
OS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NzYyLDYgKzc2MywyNSBAQCBzdWIgY2hlY2tXZWJDb3JlV0NTU1N1cHBvcnQKICAgICByZXR1cm4g
JGhhc1dDU1M7CiB9CiAKK3N1YiBoYXNFU01QU3VwcG9ydAoreworICAgICMgRklYTUU6IFdoZW4g
RVNNUCBzdXBwb3J0IGlzIGxhbmRlZCB0aGlzIHNob3VsZCBiZSB1cGRhdGVkIHRvIGNoZWNrIGZv
ciBFU01QCisgICAgIyBiZWluZyBlbmFibGVkIGluIGEgbWFubmVyIHNpbWlsYXIgdG8gaG93IHdl
IGNoZWNrIGZvciBYSFRNTCBNUCBhYm92ZS4KKyAgICByZXR1cm4gMDsKK30KKworc3ViIGNoZWNr
V2ViQ29yZUVTTVBTdXBwb3J0Cit7CisgICAgbXkgJHJlcXVpcmVkID0gc2hpZnQ7CisgICAgbXkg
JGZyYW1ld29yayA9ICJXZWJDb3JlIjsKKyAgICBteSAkcGF0aCA9IGJ1aWx0RHlsaWJQYXRoRm9y
TmFtZSgkZnJhbWV3b3JrKTsKKyAgICBteSAkaGFzRVNNUCA9IGhhc0VTTVBTdXBwb3J0KCRwYXRo
KTsKKyAgICBpZiAoJHJlcXVpcmVkICYmICEkaGFzRVNNUCkgeworICAgICAgICBkaWUgIiRmcmFt
ZXdvcmsgYXQgXCIkcGF0aFwiIGRvZXMgbm90IGluY2x1ZGUgRVNNUCBTdXBwb3J0XG4iOworICAg
IH0KKyAgICByZXR1cm4gJGhhc0VTTVA7Cit9CisKIHN1YiBpc1F0KCkKIHsKICAgICBkZXRlcm1p
bmVJc1F0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2VzbXAvYXR0cmlidXRlLWNhc2Utc2Vu
c2l0aXZpdHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXNt
cC9hdHRyaWJ1dGUtY2FzZS1zZW5zaXRpdml0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2VzbXAvYXR0cmlidXRlLWNhc2Utc2Vuc2l0aXZpdHktZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitjYXNlIHNlbnNpdGl2ZT8JdGFn
CWlkCWF0dHJpYnV0ZQlmaXJzdCB2YWx1ZQlzZWNvbmQgdmFsdWUKK1BhcnNlciBUZXN0czoKK3Ry
dWUJcAl0ZXN0MQljYXNlCWZpcnN0CQordHJ1ZQlmb29iYXIJdGVzdDIJY2FzZQlmaXJzdAkKK3Ry
dWUJc3ZnCXRlc3QzCWNhc2UJZmlyc3QJCitKYXZhc2NyaXB0IFRlc3RzOgordHJ1ZQlwCXRlc3Q0
CXRlc3RhdHRyCWZpcnN0CXNlY29uZAordHJ1ZQlmb29iYXIJdGVzdDUJdGVzdGF0dHIJZmlyc3QJ
c2Vjb25kCit0cnVlCWJhcmJhcgl0ZXN0Ngl0ZXN0YXR0cglmaXJzdAlzZWNvbmQKK3RydWUJc3Zn
CXRlc3Q3CXRlc3RhdHRyCWZpcnN0CXNlY29uZApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lc21w
L2F0dHJpYnV0ZS1jYXNlLXNlbnNpdGl2aXR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9lc21wL2F0dHJpYnV0ZS1jYXNlLXNlbnNpdGl2aXR5Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2VzbXAvYXR0cmlidXRlLWNhc2Utc2Vuc2l0aXZpdHkuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiPgorPGJvZHk+CisgIDx0YWJsZSBpZD0icmVzdWx0cyIgd2lkdGg9
JzEwMCUnPgorICAgIDx0cj4KKyAgICAgIDx0aD5jYXNlIHNlbnNpdGl2ZT88L3RoPgorICAgICAg
PHRoPnRhZzwvdGg+CisgICAgICA8dGg+aWQ8L3RoPgorICAgICAgPHRoPmF0dHJpYnV0ZTwvdGg+
CisgICAgICA8dGg+Zmlyc3QgdmFsdWU8L3RoPgorICAgICAgPHRoPnNlY29uZCB2YWx1ZTwvdGg+
CisgICAgPC90cj4KKyAgPC90YWJsZT4KKyAgCisgIDwhLS0gRmlyc3QgYSBmZXcgZWxlbWVudHMg
Y3JlYXRlZCBieSB0aGUgcGFyc2VyIC0tPgorICA8ZGl2IGlkPSJwYXJzZXJUZXN0cyIgc3R5bGU9
J2Rpc3BsYXk6IG5vbmUnPgorICAgIDxwIGlkPSJ0ZXN0MSIgY2FzZT0nZmlyc3QnIENBU0U9J3Nl
Y29uZCc+PC9wPgorICAgIDxmb29iYXIgaWQ9InRlc3QyIiBjYXNlPSdmaXJzdCcgQ0FTRT0nc2Vj
b25kJz48L2Zvb2Jhcj4KKyAgICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgaWQ9InRlc3QzIiBjYXNlPSdmaXJzdCcgQ0FTRT0nc2Vjb25kJz48L3N2Zz4KKyAgPC9kaXY+
CisgIAorICA8ZGl2IGlkPSJqYXZhc2NyaXB0VGVzdHMiIHN0eWxlPSdkaXNwbGF5OiBub25lJz4K
KyAgPC9kaXY+CisgIAorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2F0dHItY2FzZS1zZW5zaXRp
dml0eS5qcyI+PC9zY3JpcHQ+CisgIAorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgIAorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIAorICAgIHJlc3VsdExvZygiUGFyc2VyIFRl
c3RzOiIpCisgICAgY2hlY2tBdHRyaWJ1dGUoZ2V0VGVzdEVsZW1lbnQoMSksICdjYXNlJyk7Cisg
ICAgY2hlY2tBdHRyaWJ1dGUoZ2V0VGVzdEVsZW1lbnQoMiksICdjYXNlJyk7CisgICAgY2hlY2tB
dHRyaWJ1dGUoZ2V0VGVzdEVsZW1lbnQoMyksICdjYXNlJyk7CisgICAgCisgICAgcmVzdWx0TG9n
KCJKYXZhc2NyaXB0IFRlc3RzOiIpCisgICAgdmFyIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50Rm9y
Q2hlY2soNCwgJ3AnKTsKKyAgICBjcmVhdGVBbmRDaGVja0F0dHJpYnV0ZXMoZWxlbWVudCwgJ3Rl
c3RhdHRyJyk7CisgICAgCisgICAgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnRGb3JDaGVjayg1LCAn
Zm9vYmFyJyk7CisgICAgY3JlYXRlQW5kQ2hlY2tBdHRyaWJ1dGVzKGVsZW1lbnQsICd0ZXN0YXR0
cicpOworICAgIAorICAgIGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50Rm9yQ2hlY2soNiwgJ2JhcmJh
cicsICdodHRwOi8vd3d3LmV4YW1wbGUuY29tLycpOworICAgIGNyZWF0ZUFuZENoZWNrQXR0cmli
dXRlcyhlbGVtZW50LCAndGVzdGF0dHInKTsKKyAgICAKKyAgICBlbGVtZW50ID0gY3JlYXRlRWxl
bWVudEZvckNoZWNrKDcsICdzdmcnLCAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnKTsKKyAg
ICBjcmVhdGVBbmRDaGVja0F0dHJpYnV0ZXMoZWxlbWVudCwgJ3Rlc3RhdHRyJyk7CisgICAgCisg
IDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9lc21w
L3Jlc291cmNlcy9hdHRyLWNhc2Utc2Vuc2l0aXZpdHkuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9lc21wL3Jlc291cmNlcy9hdHRyLWNhc2Utc2Vuc2l0aXZpdHkuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2VzbXAvcmVzb3VyY2VzL2F0dHItY2FzZS1zZW5z
aXRpdml0eS5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorZnVuY3Rpb24gYWRkQ2Vs
bChyb3csIGNvbnRlbnRzKSB7CisgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5T
KCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwidGQiKTsKKyAgcm93LmFwcGVuZENoaWxk
KGNlbGwpOworICBjZWxsLmlubmVySFRNTCA9IGNvbnRlbnRzOworfQorCitmdW5jdGlvbiByZXBv
cnRSZXN1bHQodGFnTmFtZSwgaWQsIGF0dHJOYW1lLCBzZW5zaXRpdmUsIGZpcnN0VmFsdWUsIHNl
Y29uZFZhbHVlKSB7CisgIHZhciBuZXdSb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAndHInKTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdHMiKS5hcHBlbmRDaGlsZChuZXdSb3cpOworICBhZGRDZWxsKG5ld1Jvdywg
c2Vuc2l0aXZlKTsKKyAgYWRkQ2VsbChuZXdSb3csIHRhZ05hbWUpOworICBhZGRDZWxsKG5ld1Jv
dywgaWQpOworICBhZGRDZWxsKG5ld1JvdywgYXR0ck5hbWUpOworICBhZGRDZWxsKG5ld1Jvdywg
Zmlyc3RWYWx1ZSk7CisgIGFkZENlbGwobmV3Um93LCBzZWNvbmRWYWx1ZSk7Cit9CisKK2Z1bmN0
aW9uIHJlc3VsdExvZyhzdHJpbmcpIHsKKyAgdmFyIHJlc3VsdExpbmUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJ0ciIpOworICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmFwcGVuZENoaWxkKHJlc3VsdExpbmUpOyAg
ICAgIAorICB2YXIgcmVzdWx0VGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbCIsInRkIik7CisgIHJlc3VsdExpbmUuYXBwZW5kQ2hpbGQo
cmVzdWx0VGV4dCk7CisgIHJlc3VsdFRleHQuc2V0QXR0cmlidXRlKCJjb2xzcGFuIiwgJzYnLCB0
cnVlKTsKKyAgcmVzdWx0VGV4dC5pbm5lckhUTUwgPSBzdHJpbmc7Cit9CisKK2Z1bmN0aW9uIGdl
dFRlc3RFbGVtZW50KG51bWJlcikgeworICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3QiICsgbnVtYmVyKTsKK30KKworZnVuY3Rpb24gY2hlY2tBdHRyaWJ1dGUoZWxlbWVudCwg
YXR0ck5hbWUpIHsKKyAgdmFyIGZpcnN0OworICB2YXIgc2Vjb25kOworICAKKyAgZmlyc3QgPSBl
bGVtZW50LmdldEF0dHJpYnV0ZShhdHRyTmFtZSwgdHJ1ZSk7CisgIHNlY29uZCA9IGVsZW1lbnQu
Z2V0QXR0cmlidXRlKGF0dHJOYW1lLnRvVXBwZXJDYXNlKCksIHRydWUpOworICByZXBvcnRSZXN1
bHQoZWxlbWVudC5sb2NhbE5hbWUsIGVsZW1lbnQuaWQsIGF0dHJOYW1lLCAoZmlyc3QgIT0gc2Vj
b25kKSwgZmlyc3QsIHNlY29uZCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUF0dHJpYnV0ZXNGb3JD
aGVjayhlbGVtZW50LCBhdHRyTmFtZSkgeworICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyTmFt
ZSwgJ2ZpcnN0JywgdHJ1ZSk7CisgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJOYW1lLnRvVXBw
ZXJDYXNlKCksICdzZWNvbmQnLCB0cnVlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRWxlbWVudEZv
ckNoZWNrKG51bWJlciwgbmFtZSkgeworICB2YXIgbmV3RWxlbWVudDsKKyAgbmV3RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7CisgIG5ld0VsZW1lbnQuaWQgPSAidGVzdCIg
KyBudW1iZXI7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqYXZhc2NyaXB0VGVzdHMiKS5h
cHBlbmRDaGlsZChuZXdFbGVtZW50KTsKKyAgcmV0dXJuIG5ld0VsZW1lbnQ7Cit9CisKK2Z1bmN0
aW9uIGNyZWF0ZUFuZENoZWNrQXR0cmlidXRlcyhlbGVtZW50LCBhdHRyTmFtZSkgeworICBjcmVh
dGVBdHRyaWJ1dGVzRm9yQ2hlY2soZWxlbWVudCwgYXR0ck5hbWUpOworICBjaGVja0F0dHJpYnV0
ZShlbGVtZW50LCBhdHRyTmFtZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41281</attachid>
            <date>2009-10-16 04:20:48 -0700</date>
            <delta_ts>2009-11-17 12:19:22 -0800</delta_ts>
            <desc>patch for ESMP to support casesensitive attribute of element</desc>
            <filename>esmp-attr-case-sensibility.patch</filename>
            <type>text/plain</type>
            <size>22919</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ5Njc0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTAtMTYgIFJvYmluIFFp
dSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggZnJvbSBDaGFybGVzIFdlaSB0byBhZGQg
RVNNUCB0byBXZWJLaXQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MTE0CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisKIDIwMDkt
MTAtMTUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlz
aW9uIDQ5NjczKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC05LDYgKzksOCBAQCBDT05GSUcoZGVidWcsIGRlYnVnfHJlbGVhc2UpIHsKICAg
ICBPQkpFQ1RTX0RJUiA9IG9iai9yZWxlYXNlCiB9CiAKKyFjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfRVNNUD0uKTogREVGSU5FUyArPSBFTkFCTEVfRVNNUD0xCisKIElOQ0xVREVQQVRIID0gXAog
ICAgICQkUFdEIFwKICAgICAkJFBXRC8uLiBcCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDk2NzQpCisrKyBXZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDA5LTEwLTE2ICBS
b2JpbiBRaXUgIDxyb2Jpbi5xaXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGZyb20gQ2hhcmxlcyBXZWkg
dG8gYWRkIEVTTVAgdG8gV2ViS2l0CisgICAgICAgIFRoaXMgcGF0Y2ggaXMgdG8gbWFrZSBFbGVt
ZW50LmdldEF0dHJpYnV0ZShuYW1lLCBbT3B0aW9uYWxdIGNhc2VTZW5zaXRpdmUpLAorICAgICAg
ICBFbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgW09wdGlvbmFsXWNhc2VTZW5zaXRp
dmUpCisgICAgICAgIEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUsIFtPcHRpb25hbF1jYXNl
U2Vuc2l0aXZlKQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDExNAorCisgICAgICAgIFRlc3Q6IGZhc3QvZXNtcC9hdHRyaWJ1dGUtY2FzZS1zZW5z
aXRpdml0eS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFbGVtZW50Ojpz
ZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAq
IGRvbS9OYW1lZEF0dHJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkSWdub3JlQXR0
cmlidXRlQ2FzZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVk
SXRlbSk6CisgICAgICAgICogZG9tL05hbWVkQXR0ck1hcC5oOgorCiAyMDA5LTEwLTE2ICBUb3Ig
QXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBcml5YSBIaWRheWF0LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA0OTY3MykKKysrIFdlYkNvcmUv
V2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsNyBAQCBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RIUkVBREVECiB9CiAKICFjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ9Lik6IERFRklORVMgKz0gRU5BQkxFX0RBU0hCT0FSRF9T
VVBQT1JUPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRVNNUD0uKTogREVGSU5FUyArPSBF
TkFCTEVfRVNNUD0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTFRFUlM9Lik6IERFRklO
RVMgKz0gRU5BQkxFX0ZJTFRFUlM9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YUEFUSD0u
KTogREVGSU5FUyArPSBFTkFCTEVfWFBBVEg9MQogIyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
WEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQpAQCAtMjcyNiw2ICsyNzI3LDEwIEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAKIH0KIAorY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX0VTTVA9MSkgeworICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVO
QUJMRV9FU01QPTEKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hQQVRIPTEpIHsKICAg
ICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfWFBBVEg9MQogCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0OTY3MykKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC03OSwxMSArODAsMTcgQEAgSlNWYWx1ZSBKU0VsZW1lbnQ6
OnNldEF0dHJpYnV0ZShFeGVjU3RhdAogICAgIEF0b21pY1N0cmluZyBuYW1lID0gYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKTsKICAgICBBdG9taWNTdHJpbmcgdmFsdWUgPSBhcmdzLmF0KDEpLnRv
U3RyaW5nKGV4ZWMpOwogCisgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7CisjaWYgRU5B
QkxFKEVTTVApCisgICAgaWYgKGFyZ3Muc2l6ZSgpID49IDMpCisgICAgICAgIGNhc2VTZW5zaXRp
dmUgPSBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKTsKKyNlbmRpZgorCiAgICAgRWxlbWVudCog
aW1wID0gaW1wbCgpOwogICAgIGlmICghYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKGV4
ZWMsIGltcCwgbmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgIGltcC0+c2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLCBlYyk7CisgICAgaW1wLT5zZXRBdHRy
aWJ1dGUobmFtZSwgdmFsdWUsIGNhc2VTZW5zaXRpdmUsIGVjKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpJbmRleDogV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDQ5NjczKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYsNiArNiw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDcgRGF2aWQgU21pdGggKGNh
dGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAg
ICAgICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDgwLDE0ICs0ODEsMTQgQEAgUGFzc1JlZlB0cjxD
bGllbnRSZWN0PiBFbGVtZW50OjpnZXRCb3VuZAogICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVh
dGUocmVzdWx0KTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0
ZUNhc2UoY29uc3QgRWxlbWVudCogZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRJZ25vcmVB
dHRyaWJ1dGVDYXNlKGNvbnN0IEVsZW1lbnQqIGUsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IGZhbHNl
KQogewotICAgIHJldHVybiBlICYmIGUtPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYg
ZS0+aXNIVE1MRWxlbWVudCgpOworICAgIHJldHVybiAhY2FzZVNlbnNpdGl2ZSAmJiBlICYmIGUt
PmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgZS0+aXNIVE1MRWxlbWVudCgpOwogfQog
Ci1jb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcm
IG5hbWUpIGNvbnN0Citjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSkgY29uc3QKIHsKLSAgICBTdHJp
bmcgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKSA/IG5hbWUubG93
ZXIoKSA6IG5hbWU7CisgICAgU3RyaW5nIGxvY2FsTmFtZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0
ZUNhc2UodGhpcywgY2FzZVNlbnNpdGl2ZSkgPyBuYW1lLmxvd2VyKCkgOiBuYW1lOwogICAgIGlm
IChsb2NhbE5hbWUgPT0gc3R5bGVBdHRyLmxvY2FsTmFtZSgpICYmICFtX2lzU3R5bGVBdHRyaWJ1
dGVWYWxpZCkKICAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKIApAQCAtNDk3LDcgKzQ5
OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXQKICNlbmRpZgog
CiAgICAgaWYgKG5hbWVkQXR0ck1hcCkKLSAgICAgICAgaWYgKEF0dHJpYnV0ZSogYSA9IG5hbWVk
QXR0ck1hcC0+Z2V0QXR0cmlidXRlSXRlbShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNl
KHRoaXMpKSkKKyAgICAgICAgaWYgKEF0dHJpYnV0ZSogYSA9IG5hbWVkQXR0ck1hcC0+Z2V0QXR0
cmlidXRlSXRlbShuYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMsIGNhc2VTZW5z
aXRpdmUpKSkKICAgICAgICAgICAgIHJldHVybiBhLT52YWx1ZSgpOwogICAgIAogICAgIHJldHVy
biBudWxsQXRvbTsKQEAgLTUxMCwxMiArNTExLDE3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgRWxl
bWVudDo6Z2V0QXR0cmlidXQKIAogdm9pZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKKyAgICBzZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIGZhbHNlLCBlYyk7Cit9CisK
K3ZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKICAgICBpZiAoIURvY3VtZW50Ojppc1ZhbGlkTmFtZShuYW1lKSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gKHNob3VsZElnbm9yZUF0dHJpYnV0
ZUNhc2UodGhpcykgJiYgIW5hbWUuc3RyaW5nKCkuaW1wbCgpLT5pc0xvd2VyKCkpID8gQXRvbWlj
U3RyaW5nKG5hbWUuc3RyaW5nKCkubG93ZXIoKSkgOiBuYW1lOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lID0gKHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcywgY2FzZVNl
bnNpdGl2ZSkgJiYgIW5hbWUuc3RyaW5nKCkuaW1wbCgpLT5pc0xvd2VyKCkpID8gQXRvbWljU3Ry
aW5nKG5hbWUuc3RyaW5nKCkubG93ZXIoKSkgOiBuYW1lOwogCiAgICAgLy8gYWxsb2NhdGUgYXR0
cmlidXRlbWFwIGlmIG5lY2Vzc2FyeQogICAgIEF0dHJpYnV0ZSogb2xkID0gYXR0cmlidXRlcyhm
YWxzZSktPmdldEF0dHJpYnV0ZUl0ZW0obG9jYWxOYW1lLCBmYWxzZSk7CkBAIC0xMTI5LDEwICsx
MTM1LDE1IEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbWkKIAogdm9p
ZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICBTdHJpbmcgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRl
Q2FzZSh0aGlzKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7CisgICAgcmVtb3ZlQXR0cmlidXRlKG5h
bWUsIGZhbHNlLCBlYyk7Cit9CisKK3ZvaWQgRWxlbWVudDo6cmVtb3ZlQXR0cmlidXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBTdHJpbmcgbG9jYWxOYW1lID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzLCBj
YXNlU2Vuc2l0aXZlKSA/IG5hbWUubG93ZXIoKSA6IG5hbWU7CiAKICAgICBpZiAobmFtZWRBdHRy
TWFwKSB7Ci0gICAgICAgIG5hbWVkQXR0ck1hcC0+cmVtb3ZlTmFtZWRJdGVtKGxvY2FsTmFtZSwg
ZWMpOworICAgICAgICBuYW1lZEF0dHJNYXAtPnJlbW92ZU5hbWVkSXRlbShsb2NhbE5hbWUsIGVj
LCBjYXNlU2Vuc2l0aXZlKTsKICAgICAgICAgaWYgKGVjID09IE5PVF9GT1VORF9FUlIpCiAgICAg
ICAgICAgICBlYyA9IDA7CiAgICAgfQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gNDk2NzMpCisrKyBXZWJD
b3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAgICAg
ICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAo
QykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEw
MCwxMCArMTAxLDExIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBTdHJp
bmcmIG5hbWUpIGNvbnN0OwogICAgIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKIAotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIGNhc2VTZW5zaXRpdmUgPSBmYWxzZSkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBnZXRBdHRyaWJ1dGVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5n
JiBsb2NhbE5hbWUpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLCBib29sIGNhc2VTZW5zaXRpdmUsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2b2lkIHNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXcoYm9vbCBh
bGlnblRvVG9wID0gdHJ1ZSk7CkBAIC0xMzIsNiArMTM0LDcgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8Q2xpZW50UmVjdD4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3Q7CiAKICAgICB2
b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY2FzZVNl
bnNpdGl2ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlTlMoY29u
c3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICBQYXNzUmVmUHRyPEF0dHI+IGdldEF0dHJpYnV0ZU5vZGUoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiA0OTY3MykKKysrIFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFp
bC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDku
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDExICszNCwx
NCBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyB0YWdOYW1lOwogCi0gICAgICAgIFtDb252ZXJ0
TnVsbFN0cmluZ1RvPU51bGxdIERPTVN0cmluZyBnZXRBdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5h
bWUpOworICAgICAgICBbQ29udmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgZ2V0QXR0
cmlidXRlKGluIERPTVN0cmluZyBuYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gY2FzZVNl
bnNpdGl2ZSk7CiAgICAgICAgIFtPbGRTdHlsZU9iakMsIEN1c3RvbV0gdm9pZCBzZXRBdHRyaWJ1
dGUoaW4gRE9NU3RyaW5nIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIERPTVN0cmluZyB2YWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gY2FzZVNlbnNpdGl2ZSkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwot
ICAgICAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSkKKyAgICAgICAg
dm9pZCByZW1vdmVBdHRyaWJ1dGUoaW4gRE9NU3RyaW5nIG5hbWUsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gY2FzZVNlbnNpdGl2ZSkKICAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBBdHRyIGdldEF0dHJpYnV0ZU5v
ZGUoaW4gRE9NU3RyaW5nIG5hbWUpOwogICAgICAgICBbQ3VzdG9tXSBBdHRyIHNldEF0dHJpYnV0
ZU5vZGUoaW4gQXR0ciBuZXdBdHRyKQpJbmRleDogV2ViQ29yZS9kb20vTmFtZWRBdHRyTWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9OYW1lZEF0dHJNYXAuY3BwCShyZXZpc2lvbiA0
OTY3MykKKysrIFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUsNiArNSw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAy
MDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM1LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3Jl
QXR0cmlidXRlQ2FzZShjb25zdCBFbGVtZW50KiBlKQorc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZElnbm9yZUF0dHJpYnV0ZUNhc2UoY29uc3QgRWxlbWVudCogZSwgYm9vbCBjYXNlU2Vuc2l0aXZl
ID0gZmFsc2UpCiB7Ci0gICAgcmV0dXJuIGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1l
bnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50KCk7CisgICAgcmV0dXJuICFjYXNlU2Vuc2l0aXZlICYm
IGUgJiYgZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiBlLT5pc0hUTUxFbGVtZW50
KCk7CiB9CiAKIGlubGluZSB2b2lkIE5hbWVkTm9kZU1hcDo6ZGV0YWNoQXR0cmlidXRlc0Zyb21F
bGVtZW50KCkKQEAgLTczLDkgKzc0LDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6
OmdldE5hbWVkSQogICAgIHJldHVybiBnZXROYW1lZEl0ZW0oUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsKIH0KIAotUGFzc1JlZlB0cjxOb2RlPiBOYW1l
ZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVkSXRlbShj
b25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29sIGNhc2VTZW5zaXRpdmUp
CiB7Ci0gICAgQXR0cmlidXRlKiBhID0gZ2V0QXR0cmlidXRlSXRlbShuYW1lLCBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVDYXNlKG1fZWxlbWVudCkpOworICAgIEF0dHJpYnV0ZSogYSA9IGdldEF0dHJp
YnV0ZUl0ZW0obmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShtX2VsZW1lbnQsIGNhc2VT
ZW5zaXRpdmUpKTsKICAgICBpZiAoIWEpIHsKICAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCShyZXZpc2lvbiA0OTY3MykKKysr
IFdlYkNvcmUvZG9tL05hbWVkQXR0ck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBA
QAogICogICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAg
ICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01MSw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICAvLyBQdWJsaWMgRE9NIGludGVyZmFjZS4KIAogICAgIFBh
c3NSZWZQdHI8Tm9kZT4gZ2V0TmFtZWRJdGVtKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7Ci0g
ICAgUGFzc1JlZlB0cjxOb2RlPiByZW1vdmVOYW1lZEl0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxOb2RlPiByZW1vdmVOYW1lZEl0ZW0oY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBjb2RlLCBib29sIGNhc2VTZW5zaXRpdmUg
PSBmYWxzZSk7CiAKICAgICBQYXNzUmVmUHRyPE5vZGU+IGdldE5hbWVkSXRlbU5TKGNvbnN0IFN0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAgICAg
UGFzc1JlZlB0cjxOb2RlPiByZW1vdmVOYW1lZEl0ZW1OUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgU3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFdl
YktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDQ5Njc0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTAtMTYgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3Jj
aG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgZXNtcCBidWlsZGluZyBvcHRpb24uCisKKyAgICAgICAgKiBTY3JpcHRz
L2J1aWxkLXdlYmtpdDoKKyAgICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQtdGVzdHM6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOgorCiAyMDA5LTEwLTE1ICBZdXpvIEZ1amlzaGlt
YSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4K
SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZpc2lvbiA0OTY3MykKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBA
QAogCiAjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDcg
KzU1LDcgQEAgbXkgKCR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaQogICAgICRl
dmVudHNvdXJjZVN1cHBvcnQsICRmaWx0ZXJzU3VwcG9ydCwgJGdlb2xvY2F0aW9uU3VwcG9ydCwg
JGljb25EYXRhYmFzZVN1cHBvcnQsCiAgICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRt
YXRobWxTdXBwb3J0LCAkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCwgJHJ1YnlTdXBwb3J0
LCAkc2hhcmVkV29ya2Vyc1N1cHBvcnQsIAogICAgICRzdmdTdXBwb3J0LCAkc3ZnQW5pbWF0aW9u
U3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCwg
JHN2Z0ZvbnRzU3VwcG9ydCwKLSAgICAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VT
dXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2ViU29ja2V0c1N1cHBvcnQsICR3bWxTdXBwb3J0LCAk
d2Nzc1N1cHBvcnQsICR4aHRtbG1wU3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0LAorICAgICRzdmdG
b3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJT
b2NrZXRzU3VwcG9ydCwgJHdtbFN1cHBvcnQsICRlc21wU3VwcG9ydCwgJHdjc3NTdXBwb3J0LCAk
eGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhTdXBwb3J0LCAkeHNs
dFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3VwcG9ydCk7CiAKIG15
IEBmZWF0dXJlcyA9ICgKQEAgLTEzOSw2ICsxNDAsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAg
eyBvcHRpb24gPT4gIndtbCIsIGRlc2MgPT4gIlRvZ2dsZSBXTUwgc3VwcG9ydCIsCiAgICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9XTUwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkd21sU3VwcG9y
dCB9LAogCisgICAgeyBvcHRpb24gPT4gImVzbXAiLCBkZXNjID0+ICJUb2dnbGUgRVNNUCBzdXBw
b3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTTVAiLCBkZWZhdWx0ID0+IDAsIHZhbHVl
ID0+IFwkZXNtcFN1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ4aHRtbG1wIiwgZGVzYyA9
PiAiVG9nZ2xlIFhIVE1MLU1QIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfWEhU
TUxNUCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR4aHRtbG1wU3VwcG9ydCB9LAogCkluZGV4
OiBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCShyZXZpc2lvbiA0OTY3MykKKysrIFdl
YktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNiw2
ICs2LDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+CiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgQW5kcmFzIEJlY3NpIChiZWNzaS5hbmRyYXNAc3R1ZC51
LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQ4LDYgKzQ0OSwxMCBAQCBpZiAoIWNoZWNrV2ViQ29y
ZVdDU1NTdXBwb3J0KDApKSB7CiAgICAgJGlnbm9yZWREaXJlY3Rvcmllc3snZmFzdC93Y3NzJ30g
PSAxOwogfQogCitpZiAoIWNoZWNrV2ViQ29yZUVTTVBTdXBwb3J0KDApKSB7CisgICAgJGlnbm9y
ZWREaXJlY3Rvcmllc3snZmFzdC9lc21wJ30gPSAxOworfQorCiBwcm9jZXNzSWdub3JlVGVzdHMo
JGlnbm9yZVRlc3RzLCAiaWdub3JlLXRlc3RzIikgaWYgJGlnbm9yZVRlc3RzOwogcmVhZFNraXBw
ZWRGaWxlcygpIHVubGVzcyAkaWdub3JlU2tpcHBlZDsKIApJbmRleDogV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRkaXJzLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0ZGlycy5wbQkocmV2aXNpb24gNDk2NzMpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dGRpcnMucG0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAjIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc2Miw2ICs3NjMsMjUgQEAgc3Vi
IGNoZWNrV2ViQ29yZVdDU1NTdXBwb3J0CiAgICAgcmV0dXJuICRoYXNXQ1NTOwogfQogCitzdWIg
aGFzRVNNUFN1cHBvcnQKK3sKKyAgICAjIEZJWE1FOiBXaGVuIEVTTVAgc3VwcG9ydCBpcyBsYW5k
ZWQgdGhpcyBzaG91bGQgYmUgdXBkYXRlZCB0byBjaGVjayBmb3IgRVNNUAorICAgICMgYmVpbmcg
ZW5hYmxlZCBpbiBhIG1hbm5lciBzaW1pbGFyIHRvIGhvdyB3ZSBjaGVjayBmb3IgWEhUTUwgTVAg
YWJvdmUuCisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBjaGVja1dlYkNvcmVFU01QU3VwcG9ydAor
eworICAgIG15ICRyZXF1aXJlZCA9IHNoaWZ0OworICAgIG15ICRmcmFtZXdvcmsgPSAiV2ViQ29y
ZSI7CisgICAgbXkgJHBhdGggPSBidWlsdER5bGliUGF0aEZvck5hbWUoJGZyYW1ld29yayk7Cisg
ICAgbXkgJGhhc0VTTVAgPSBoYXNFU01QU3VwcG9ydCgkcGF0aCk7CisgICAgaWYgKCRyZXF1aXJl
ZCAmJiAhJGhhc0VTTVApIHsKKyAgICAgICAgZGllICIkZnJhbWV3b3JrIGF0IFwiJHBhdGhcIiBk
b2VzIG5vdCBpbmNsdWRlIEVTTVAgU3VwcG9ydFxuIjsKKyAgICB9CisgICAgcmV0dXJuICRoYXNF
U01QOworfQorCiBzdWIgaXNRdCgpCiB7CiAgICAgZGV0ZXJtaW5lSXNRdCgpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9lc21wL2F0dHJpYnV0ZS1jYXNlLXNlbnNpdGl2aXR5LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2VzbXAvYXR0cmlidXRlLWNhc2Utc2Vu
c2l0aXZpdHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
c21wL2F0dHJpYnV0ZS1jYXNlLXNlbnNpdGl2aXR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMCBAQAorY2FzZSBzZW5zaXRpdmU/CXRhZwlpZAlhdHRyaWJ1dGUJZmlyc3Qg
dmFsdWUJc2Vjb25kIHZhbHVlCitQYXJzZXIgVGVzdHM6Cit0cnVlCXAJdGVzdDEJY2FzZQlmaXJz
dAkKK3RydWUJZm9vYmFyCXRlc3QyCWNhc2UJZmlyc3QJCit0cnVlCXN2Zwl0ZXN0MwljYXNlCWZp
cnN0CQorSmF2YXNjcmlwdCBUZXN0czoKK3RydWUJcAl0ZXN0NAl0ZXN0YXR0cglmaXJzdAlzZWNv
bmQKK3RydWUJZm9vYmFyCXRlc3Q1CXRlc3RhdHRyCWZpcnN0CXNlY29uZAordHJ1ZQliYXJiYXIJ
dGVzdDYJdGVzdGF0dHIJZmlyc3QJc2Vjb25kCit0cnVlCXN2Zwl0ZXN0Nwl0ZXN0YXR0cglmaXJz
dAlzZWNvbmQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXNtcC9hdHRyaWJ1dGUtY2FzZS1zZW5z
aXRpdml0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXNtcC9hdHRyaWJ1
dGUtY2FzZS1zZW5zaXRpdml0eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9lc21wL2F0dHJpYnV0ZS1jYXNlLXNlbnNpdGl2aXR5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTEgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4K
Kzxib2R5PgorICA8dGFibGUgaWQ9InJlc3VsdHMiIHdpZHRoPScxMDAlJz4KKyAgICA8dHI+Cisg
ICAgICA8dGg+Y2FzZSBzZW5zaXRpdmU/PC90aD4KKyAgICAgIDx0aD50YWc8L3RoPgorICAgICAg
PHRoPmlkPC90aD4KKyAgICAgIDx0aD5hdHRyaWJ1dGU8L3RoPgorICAgICAgPHRoPmZpcnN0IHZh
bHVlPC90aD4KKyAgICAgIDx0aD5zZWNvbmQgdmFsdWU8L3RoPgorICAgIDwvdHI+CisgIDwvdGFi
bGU+CisgIAorICA8IS0tIEZpcnN0IGEgZmV3IGVsZW1lbnRzIGNyZWF0ZWQgYnkgdGhlIHBhcnNl
ciAtLT4KKyAgPGRpdiBpZD0icGFyc2VyVGVzdHMiIHN0eWxlPSdkaXNwbGF5OiBub25lJz4KKyAg
ICA8cCBpZD0idGVzdDEiIGNhc2U9J2ZpcnN0JyBDQVNFPSdzZWNvbmQnPjwvcD4KKyAgICA8Zm9v
YmFyIGlkPSJ0ZXN0MiIgY2FzZT0nZmlyc3QnIENBU0U9J3NlY29uZCc+PC9mb29iYXI+CisgICAg
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJ0ZXN0MyIgY2FzZT0n
Zmlyc3QnIENBU0U9J3NlY29uZCc+PC9zdmc+CisgIDwvZGl2PgorICAKKyAgPGRpdiBpZD0iamF2
YXNjcmlwdFRlc3RzIiBzdHlsZT0nZGlzcGxheTogbm9uZSc+CisgIDwvZGl2PgorICAKKyAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy9hdHRyLWNhc2Utc2Vuc2l0aXZpdHkuanMiPjwvc2NyaXB0Pgor
ICAKKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAKKyAgICByZXN1bHRMb2coIlBhcnNlciBUZXN0czoiKQorICAgIGNoZWNrQXR0
cmlidXRlKGdldFRlc3RFbGVtZW50KDEpLCAnY2FzZScpOworICAgIGNoZWNrQXR0cmlidXRlKGdl
dFRlc3RFbGVtZW50KDIpLCAnY2FzZScpOworICAgIGNoZWNrQXR0cmlidXRlKGdldFRlc3RFbGVt
ZW50KDMpLCAnY2FzZScpOworICAgIAorICAgIHJlc3VsdExvZygiSmF2YXNjcmlwdCBUZXN0czoi
KQorICAgIHZhciBlbGVtZW50ID0gY3JlYXRlRWxlbWVudEZvckNoZWNrKDQsICdwJyk7CisgICAg
Y3JlYXRlQW5kQ2hlY2tBdHRyaWJ1dGVzKGVsZW1lbnQsICd0ZXN0YXR0cicpOworICAgIAorICAg
IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50Rm9yQ2hlY2soNSwgJ2Zvb2JhcicpOworICAgIGNyZWF0
ZUFuZENoZWNrQXR0cmlidXRlcyhlbGVtZW50LCAndGVzdGF0dHInKTsKKyAgICAKKyAgICBlbGVt
ZW50ID0gY3JlYXRlRWxlbWVudEZvckNoZWNrKDYsICdiYXJiYXInLCAnaHR0cDovL3d3dy5leGFt
cGxlLmNvbS8nKTsKKyAgICBjcmVhdGVBbmRDaGVja0F0dHJpYnV0ZXMoZWxlbWVudCwgJ3Rlc3Rh
dHRyJyk7CisgICAgCisgICAgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnRGb3JDaGVjayg3LCAnc3Zn
JywgJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyk7CisgICAgY3JlYXRlQW5kQ2hlY2tBdHRy
aWJ1dGVzKGVsZW1lbnQsICd0ZXN0YXR0cicpOworICAgIAorICA8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXNtcC9yZXNvdXJjZXMvYXR0ci1jYXNl
LXNlbnNpdGl2aXR5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXNtcC9yZXNv
dXJjZXMvYXR0ci1jYXNlLXNlbnNpdGl2aXR5LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9lc21wL3Jlc291cmNlcy9hdHRyLWNhc2Utc2Vuc2l0aXZpdHkuanMJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTYgQEAKK2Z1bmN0aW9uIGFkZENlbGwocm93LCBjb250ZW50cykgewor
ICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCIsInRkIik7CisgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKKyAgY2VsbC5pbm5l
ckhUTUwgPSBjb250ZW50czsKK30KKworZnVuY3Rpb24gcmVwb3J0UmVzdWx0KHRhZ05hbWUsIGlk
LCBhdHRyTmFtZSwgc2Vuc2l0aXZlLCBmaXJzdFZhbHVlLCBzZWNvbmRWYWx1ZSkgeworICB2YXIg
bmV3Um93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIiwgJ3RyJyk7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIikuYXBw
ZW5kQ2hpbGQobmV3Um93KTsKKyAgYWRkQ2VsbChuZXdSb3csIHNlbnNpdGl2ZSk7CisgIGFkZENl
bGwobmV3Um93LCB0YWdOYW1lKTsKKyAgYWRkQ2VsbChuZXdSb3csIGlkKTsKKyAgYWRkQ2VsbChu
ZXdSb3csIGF0dHJOYW1lKTsKKyAgYWRkQ2VsbChuZXdSb3csIGZpcnN0VmFsdWUpOworICBhZGRD
ZWxsKG5ld1Jvdywgc2Vjb25kVmFsdWUpOworfQorCitmdW5jdGlvbiByZXN1bHRMb2coc3RyaW5n
KSB7CisgIHZhciByZXN1bHRMaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIiwidHIiKTsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InJlc3VsdHMiKS5hcHBlbmRDaGlsZChyZXN1bHRMaW5lKTsgICAgICAKKyAgdmFyIHJlc3VsdFRl
eHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiLCJ0ZCIpOworICByZXN1bHRMaW5lLmFwcGVuZENoaWxkKHJlc3VsdFRleHQpOworICByZXN1
bHRUZXh0LnNldEF0dHJpYnV0ZSgiY29sc3BhbiIsICc2JywgdHJ1ZSk7CisgIHJlc3VsdFRleHQu
aW5uZXJIVE1MID0gc3RyaW5nOworfQorCitmdW5jdGlvbiBnZXRUZXN0RWxlbWVudChudW1iZXIp
IHsKKyAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IiArIG51bWJlcik7Cit9
CisKK2Z1bmN0aW9uIGNoZWNrQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJOYW1lKSB7CisgIHZhciBm
aXJzdDsKKyAgdmFyIHNlY29uZDsKKyAgCisgIGZpcnN0ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUo
YXR0ck5hbWUsIHRydWUpOworICBzZWNvbmQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyTmFt
ZS50b1VwcGVyQ2FzZSgpLCB0cnVlKTsKKyAgcmVwb3J0UmVzdWx0KGVsZW1lbnQubG9jYWxOYW1l
LCBlbGVtZW50LmlkLCBhdHRyTmFtZSwgKGZpcnN0ICE9IHNlY29uZCksIGZpcnN0LCBzZWNvbmQp
OworfQorCitmdW5jdGlvbiBjcmVhdGVBdHRyaWJ1dGVzRm9yQ2hlY2soZWxlbWVudCwgYXR0ck5h
bWUpIHsKKyAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsICdmaXJzdCcsIHRydWUpOwor
ICBlbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyTmFtZS50b1VwcGVyQ2FzZSgpLCAnc2Vjb25kJywg
dHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUVsZW1lbnRGb3JDaGVjayhudW1iZXIsIG5hbWUp
IHsKKyAgdmFyIG5ld0VsZW1lbnQ7CisgIG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KG5hbWUpOworICBuZXdFbGVtZW50LmlkID0gInRlc3QiICsgbnVtYmVyOworICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiamF2YXNjcmlwdFRlc3RzIikuYXBwZW5kQ2hpbGQobmV3RWxlbWVu
dCk7CisgIHJldHVybiBuZXdFbGVtZW50OworfQorCitmdW5jdGlvbiBjcmVhdGVBbmRDaGVja0F0
dHJpYnV0ZXMoZWxlbWVudCwgYXR0ck5hbWUpIHsKKyAgY3JlYXRlQXR0cmlidXRlc0ZvckNoZWNr
KGVsZW1lbnQsIGF0dHJOYW1lKTsKKyAgY2hlY2tBdHRyaWJ1dGUoZWxlbWVudCwgYXR0ck5hbWUp
OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41479</attachid>
            <date>2009-10-19 21:18:14 -0700</date>
            <delta_ts>2009-11-17 12:19:35 -0800</delta_ts>
            <desc>patch for ESMP URIError support</desc>
            <filename>esmp-uri-error.patch</filename>
            <type>text/plain</type>
            <size>10734</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA2ZDQzOWJlLi41NDRkZWM5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEg
QEAKKzIwMDktMTAtMTkgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
RVNNUCBmZWF0dXJlIG9wdGlvbi4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKwog
MjAwOS0xMC0xNiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEJ1aWxkIGZpeDogYXBwYXJlbnRseSB3ZSBzaG91bGRuJ3QgZXhwb3J0IHRob3NlIHN5bWJvbHM/
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkgYi9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKaW5kZXggODljNDgzZS4uZDE4ZmZiYiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCisrKyBiL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnByaQpAQCAtOSw2ICs5LDggQEAgQ09ORklHKGRlYnVnLCBkZWJ1
Z3xyZWxlYXNlKSB7CiAgICAgT0JKRUNUU19ESVIgPSBvYmovcmVsZWFzZQogfQogCishY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX0VTTVA9Lik6IERFRklORVMgKz0gRU5BQkxFX0VTTVA9MQorCiBJ
TkNMVURFUEFUSCA9IFwKICAgICAkJFBXRCBcCiAgICAgJCRQV0QvLi4gXApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQyZmE3
ZDIuLjVlNTU3OWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwOS0xMC0xOSAgUm9iaW4gUWl1
ICA8cm9iaW4ucWl1QHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyB0ZXN0IEVTTVAgVVJJIGVycm9yIGV4Y2VwdGlv
bi4KKworICAgICAgICAqIGZhc3QvZXNtcC91cmktZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2VzbXAvdXJpLWVycm9yLmh0bWw6IEFkZGVkLgorCiAyMDA5LTEwLTE4
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXNt
cC91cmktZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9lc21wL3VyaS1lcnJv
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJmNjgx
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXNtcC91cmktZXJyb3ItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK0NhdWdodCBhbiBVUkkgZXJyb3IgZXhjZXB0aW9uLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9lc21wL3VyaS1lcnJvci5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9lc21wL3VyaS1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjBjNTQ2ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Vz
bXAvdXJpLWVycm9yLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9
J3J1blRlc3RzKCk7Jz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9u
IGRlYnVnT3V0cHV0KHN0cikgeworICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShz
dHIpOworICAgIGRlYnVnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlYnVnRGl2Jyk7
CisgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoJ2RpdicpOworICAgIGRpdi5hcHBl
bmRDaGlsZCh0ZXh0KTsKKyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOworfQorCitmdW5j
dGlvbiB0ZXN0KCl7CisgICAgdHJ5CisgICAgeworICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9z
dD0iKi54eXouY29tIjsKKyAgICB9CisgICAgY2F0Y2goZXJyKQorICAgIHsKKyAgICAgICAgdHh0
PSJDYXVnaHQgYW4gVVJJIGVycm9yIGV4Y2VwdGlvbi4iOworICAgICAgICBkZWJ1Z091dHB1dCh0
eHQpOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIHRlc3QoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxkaXYgaWQ9
J2RlYnVnRGl2Jz4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY1ZWRmMzYuLmRhNWRhYjIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMTAtMTkgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1v
YmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUGF0Y2ggZnJvbSBDaGFybGVzIFdlaS4KKyAgICAgICAgVGhyb3cgVVJJRXJyb3IgZm9y
IGludmFsaWQgVVJJcyBmb3IgbG9jYXRpb24uIAorICAgICAgICBJbiBjb21wbGlhbmNlIHdpdGgg
c2VjdGlvbiA5LjQgTG9jYXRpb24gT2JqZWN0LCBPTUEtV0FQLUVTTVAtVjFfMC0yMDA1MDYxNC1D
LnBkZi4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjQxMTQKKworICAgICAgICBUZXN0OiBmYXN0L2VzbXAvdXJpLWVycm9yLmh0bWwKKworICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpuYXZpZ2F0ZUlmQWxsb3dlZCk6CisKIDIwMDktMTAtMTggIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiB0b3VjaGluZyBXZWJD
b3JlIHNvIHRoYXQgaXQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3Jl
L1dlYkNvcmUucHJvCmluZGV4IDVlZDViNzAuLjM3ZmIzZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTI4LDYgKzEyOCw3IEBA
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TSU5HTEVfVEhSRUFERUQ9MSkgewogfQogCiAhY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUPS4pOiBERUZJTkVTICs9IEVO
QUJMRV9EQVNIQk9BUkRfU1VQUE9SVD0wCishY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0VTTVA9
Lik6IERFRklORVMgKz0gRU5BQkxFX0VTTVA9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9G
SUxURVJTPS4pOiBERUZJTkVTICs9IEVOQUJMRV9GSUxURVJTPTAKICFjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfWFBBVEg9Lik6IERFRklORVMgKz0gRU5BQkxFX1hQQVRIPTEKICMhY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1hCTD0uKTogREVGSU5FUyArPSBFTkFCTEVfWEJMPTEKQEAgLTI3Mjgs
NiArMjcyOSwxMCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogCiB9CiAK
K2NvbnRhaW5zKERFRklORVMsIEVOQUJMRV9FU01QPTEpIHsKKyAgICBGRUFUVVJFX0RFRklORVNf
SkFWQVNDUklQVCArPSBFTkFCTEVfRVNNUD0xCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9YUEFUSD0xKSB7CiAgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1hQ
QVRIPTEKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA0
NzMzOWQ0Li5mMGFiYmNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC01ODYsNiArNTg3LDExIEBAIHZvaWQgSlNET01XaW5kb3c6OnNldExv
Y2F0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodXJsLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBpZiAoIUtVUkwo
dXJsKS5pc1ZhbGlkKCkpCisgICAgICAgIHRocm93RXJyb3IoZXhlYywgVVJJRXJyb3IsIFN0cmlu
ZygiSW52YWxpZCBVUkk6ICIpICsgdXJsLnN0cmluZygpKTsKKyNlbmRpZgorCiAgICAgaWYgKCFz
aG91bGRBbGxvd05hdmlnYXRpb24oZXhlYywgZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGM3NmEyYjEuLmE3ZDQx
NjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMyw2ICsz
LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgSm9uIFNoaWVyIChqc2hpZXJAaWFzdGF0ZS5l
ZHUpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNldmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQorICogIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTMzLDYgKzM0LDkgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9Qcm90b3R5cGVGdW5jdGlvbi5oPgorI2lmIEVOQUJMRShFU01QKQorI2luY2x1ZGUgIkVycm9y
LmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtMTkxLDYgKzE5NSwxMyBA
QCB2b2lkIEpTTG9jYXRpb246OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSgogCiBzdGF0aWMgdm9pZCBuYXZpZ2F0ZUlmQWxsb3dl
ZChFeGVjU3RhdGUqIGV4ZWMsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGxv
Y2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCiB7CisjaWYgRU5BQkxFKEVTTVAp
CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgVVJJ
RXJyb3IsIFN0cmluZygiSW52YWxpZCBVUkk6ICIpICsgdXJsLnN0cmluZygpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgRnJhbWUqIGxleGljYWxGcmFtZSA9IHRvTGV4
aWNhbEZyYW1lKGV4ZWMpOwogICAgIGlmICghbGV4aWNhbEZyYW1lKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKaW5kZXggNmZmMmY1Yy4uNmMyMzZiNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5LTEw
LTE5ICBSb2JpbiBRaXUgIDxyb2Jpbi5xaXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGVzbXAgYnVpbGRp
bmcgb3B0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisgICAgICAgICog
U2NyaXB0cy9ydW4td2Via2l0LXRlc3RzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0ZGlycy5w
bToKKwogMjAwOS0xMC0xNiAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0CmluZGV4IDRmNzhlZWYuLmYwMDcxYmUgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CkBA
IC0yLDYgKzIsNyBAQAogCiAjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU0LDcgKzU1LDcgQEAgbXkgKCR0aHJlZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVu
ZGVyaW5nU3VwcG9ydCwgJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0LCAkZGEKICAgICAkZXZlbnRz
b3VyY2VTdXBwb3J0LCAkZmlsdGVyc1N1cHBvcnQsICRnZW9sb2NhdGlvblN1cHBvcnQsICRpY29u
RGF0YWJhc2VTdXBwb3J0LAogICAgICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAkbWF0aG1s
U3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICRydWJ5U3VwcG9ydCwgJHNo
YXJlZFdvcmtlcnNTdXBwb3J0LCAKICAgICAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1cHBv
cnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsICRzdmdG
b250c1N1cHBvcnQsCi0gICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3VwcG9y
dCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdjc3NT
dXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKKyAgICAkc3ZnRm9yZWln
bk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2ViU29ja2V0
c1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkZXNtcFN1cHBvcnQsICR3Y3NzU3VwcG9ydCwgJHhodG1s
bXBTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCiAgICAgJHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBw
b3J0LCAkY292ZXJhZ2VTdXBwb3J0LCAkbm90aWZpY2F0aW9uc1N1cHBvcnQpOwogCiBteSBAZmVh
dHVyZXMgPSAoCkBAIC0xMzksNiArMTQwLDkgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0
aW9uID0+ICJ3bWwiLCBkZXNjID0+ICJUb2dnbGUgV01MIHN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfV01MIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHdtbFN1cHBvcnQgfSwK
IAorICAgIHsgb3B0aW9uID0+ICJlc21wIiwgZGVzYyA9PiAiVG9nZ2xlIEVTTVAgc3VwcG9ydCIs
CisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9FU01QIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBc
JGVzbXBTdXBwb3J0IH0sCisKICAgICB7IG9wdGlvbiA9PiAieGh0bWxtcCIsIGRlc2MgPT4gIlRv
Z2dsZSBYSFRNTC1NUCBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1hIVE1MTVAi
LCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkeGh0bWxtcFN1cHBvcnQgfSwKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9ydW4td2Via2l0LXRlc3RzCmluZGV4IGEwOGE1M2MuLjQ3ZTRkNmIgMTAwNzU1Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cworKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKQEAgLTYsNiArNiw3IEBACiAjIENvcHlyaWdodCAoQykg
MjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IEFu
ZHJhcyBCZWNzaSAoYmVjc2kuYW5kcmFzQHN0dWQudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9m
IFN6ZWdlZAorIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDku
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0
OCw2ICs0NDksMTIgQEAgaWYgKCFjaGVja1dlYkNvcmVXQ1NTU3VwcG9ydCgwKSkgewogICAgICRp
Z25vcmVkRGlyZWN0b3JpZXN7J2Zhc3Qvd2Nzcyd9ID0gMTsKIH0KIAoraWYgKCFjaGVja1dlYkNv
cmVFU01QU3VwcG9ydCgwKSkgeworICAgICRpZ25vcmVkRGlyZWN0b3JpZXN7J2Zhc3QvZXNtcCd9
ID0gMTsKK31lbHNleworICAgICRpZ25vcmVkRmlsZXN7J2Zhc3QvZG9tL2xvY2F0aW9uLW5ldy13
aW5kb3ctbm8tY3Jhc2guaHRtbCd9ID0gMTsKK30KKwogcHJvY2Vzc0lnbm9yZVRlc3RzKCRpZ25v
cmVUZXN0cywgImlnbm9yZS10ZXN0cyIpIGlmICRpZ25vcmVUZXN0czsKIHJlYWRTa2lwcGVkRmls
ZXMoKSB1bmxlc3MgJGlnbm9yZVNraXBwZWQ7CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0ZGlycy5wbSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQpp
bmRleCA4NTAzYjY4Li4yOWFjZTE1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdGRpcnMucG0KKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCkBAIC0x
LDUgKzEsNiBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03NjIsNiArNzYzLDI1IEBAIHN1YiBjaGVja1dlYkNvcmVXQ1NTU3VwcG9ydAogICAg
IHJldHVybiAkaGFzV0NTUzsKIH0KIAorc3ViIGhhc0VTTVBTdXBwb3J0Cit7CisgICAgIyBGSVhN
RTogV2hlbiBFU01QIHN1cHBvcnQgaXMgbGFuZGVkIHRoaXMgc2hvdWxkIGJlIHVwZGF0ZWQgdG8g
Y2hlY2sgZm9yIEVTTVAKKyAgICAjIGJlaW5nIGVuYWJsZWQgaW4gYSBtYW5uZXIgc2ltaWxhciB0
byBob3cgd2UgY2hlY2sgZm9yIFhIVE1MIE1QIGFib3ZlLgorICAgIHJldHVybiAwOworfQorCitz
dWIgY2hlY2tXZWJDb3JlRVNNUFN1cHBvcnQKK3sKKyAgICBteSAkcmVxdWlyZWQgPSBzaGlmdDsK
KyAgICBteSAkZnJhbWV3b3JrID0gIldlYkNvcmUiOworICAgIG15ICRwYXRoID0gYnVpbHREeWxp
YlBhdGhGb3JOYW1lKCRmcmFtZXdvcmspOworICAgIG15ICRoYXNFU01QID0gaGFzRVNNUFN1cHBv
cnQoJHBhdGgpOworICAgIGlmICgkcmVxdWlyZWQgJiYgISRoYXNFU01QKSB7CisgICAgICAgIGRp
ZSAiJGZyYW1ld29yayBhdCBcIiRwYXRoXCIgZG9lcyBub3QgaW5jbHVkZSBFU01QIFN1cHBvcnRc
biI7CisgICAgfQorICAgIHJldHVybiAkaGFzRVNNUDsKK30KKwogc3ViIGlzUXQoKQogewogICAg
IGRldGVybWluZUlzUXQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41853</attachid>
            <date>2009-10-26 00:54:01 -0700</date>
            <delta_ts>2009-11-17 12:19:50 -0800</delta_ts>
            <desc>patch for ESMP exception.code support</desc>
            <filename>robin.esmp.code.patch</filename>
            <type>text/plain</type>
            <size>10171</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1MmJjZGVmLi40OGZmZjUyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMDktMTAtMjYgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
ZnJvbSBDaGFybGVzIFdlaSB0byBhZGQgZXhjZXB0aW9uIGNvZGUgc3VwcG9ydCBmb3IgRVNNUC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MTE0CisK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVF
cnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUVycm9yUHJvdG90eXBlOjpO
YXRpdmVFcnJvclByb3RvdHlwZSk6CisKIDIwMDktMTAtMjEgIEpvbiBIb25leWN1dHQgIDxqaG9u
ZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzI3MDMyMD4gU2Ny
ZWVuc2hvdHMgb2Ygb2ZmLXNjcmVlbiBwbHVnLWlucyBhcmUgYmxhbmsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaSBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnByaQppbmRleCA4OWM0ODNlLi5kMThmZmJiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCkBAIC05LDYgKzksOCBAQCBDT05GSUcoZGVidWcsIGRlYnVnfHJlbGVhc2UpIHsKICAg
ICBPQkpFQ1RTX0RJUiA9IG9iai9yZWxlYXNlCiB9CiAKKyFjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfRVNNUD0uKTogREVGSU5FUyArPSBFTkFCTEVfRVNNUD0xCisKIElOQ0xVREVQQVRIID0gXAog
ICAgICQkUFdEIFwKICAgICAkJFBXRC8uLiBcCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCmluZGV4IGFhNDZhNmEuLjQwNTVhNmUgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMzQsNiArMzUsMjQgQEAgTmF0aXZlRXJyb3JQcm90b3R5cGU6Ok5hdGl2ZUVycm9yUHJvdG90
eXBlKEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3QKIHsKICAgICBwdXREaXJl
Y3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUpLCAwKTsK
ICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3RyaW5nKGV4
ZWMsIG1lc3NhZ2UpLCAwKTsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBpbnQgY29kZSA9IDA7Cisg
ICAgaWYgKG5hbWUgPT0gIlJhbmdlRXJyb3IiKQorICAgICAgICBjb2RlID0gMTAxOworICAgIGVs
c2UgaWYgKG5hbWUgPT0gIlJlZmVyZW5jZUVycm9yIikKKyAgICAgICAgY29kZSA9IDEwMjsKKyAg
ICBlbHNlIGlmIChuYW1lID09ICJTeW50YXhFcnJvciIpCisgICAgICAgIGNvZGUgPSAxMDM7Cisg
ICAgZWxzZSBpZiAobmFtZSA9PSAiVHlwZUVycm9yIikKKyAgICAgICAgY29kZSA9IDEwNDsKKyAg
ICBlbHNlIGlmIChuYW1lID09ICJVUklFcnJvciIpCisgICAgICAgIGNvZGUgPSAxMDU7CisgICAg
ZWxzZSBpZiAobmFtZSA9PSAiRXZhbEVycm9yIikKKyAgICAgICAgY29kZSA9IDEwNjsKKyAgICBl
bHNlIGlmIChuYW1lID09ICJNZW1vcnlFcnJvciIpCisgICAgICAgIGNvZGUgPSA5OTsKKyAgICBw
dXREaXJlY3QoSWRlbnRpZmllcihleGVjLCAiY29kZSIpLCBqc051bWJlcihleGVjLCBjb2RlKSwg
MCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjYzM2E4OC4uMGY2
MDA1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5LTEwLTI2ICBSb2JpbiBRaXUgIDxyb2Jp
bi5xaXVAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFBhdGNoIGZyb20gQ2hhcmxlcyBXZWkgdG8gYWRkIGV4Y2VwdGlv
biBjb2RlIHN1cHBvcnQgZm9yIEVTTVAuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNDExNAorCisgICAgICAgICogZmFzdC9lc21wL2Vycm9yLWNvZGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2VzbXAvZXJyb3ItY29kZS5odG1s
OiBBZGRlZC4KKwogMjAwOS0xMC0yMSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXNtcC9lcnJvci1jb2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZXNtcC9lcnJvci1jb2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lMmNjYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
c21wL2Vycm9yLWNvZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK0NhdWdodCBhbiBleGNl
cHRpb24gKG5hbWU6UmVmZXJlbmNlRXJyb3IgY29kZToxMDIpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9lc21wL2Vycm9yLWNvZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXNtcC9l
cnJvci1jb2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI5ZjBj
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXNtcC9lcnJvci1jb2RlLmh0
bWwKQEAgLTAsMCArMSwzNiBAQAorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9J3J1blRlc3RzKCk7Jz4K
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGRlYnVnT3V0cHV0KHN0
cikgeworICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpOworICAgIGRlYnVn
RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlYnVnRGl2Jyk7CisgICAgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCAoJ2RpdicpOworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsK
KyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiB0ZXN0KCl7Cisg
ICAgdHJ5CisgICAgeworICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1M
KGZvbyk7CisgICAgfQorICAgIGNhdGNoKGVycikKKyAgICB7CisgICAgICAgIHR4dCA9ICJDYXVn
aHQgYW4gZXhjZXB0aW9uIChuYW1lOiIgKyBlcnIubmFtZSArICIgY29kZToiICsgZXJyLmNvZGUg
KyAiKS4iOworICAgICAgICBkZWJ1Z091dHB1dCh0eHQpOworICAgIH0KK30KKworZnVuY3Rpb24g
cnVuVGVzdHMoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3QoKTsK
KyAgICB9Cit9CisKKzwvc2NyaXB0PgorPGRpdiBpZD0nZGVidWdEaXYnPgorPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggOGRmOGNmNy4uZTI3M2MwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0xMC0y
NiAgUm9iaW4gUWl1ICA8cm9iaW4ucWl1QHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBmcm9tIENoYXJsZXMg
V2VpIHRvIGFkZCBleGNlcHRpb24gY29kZSBzdXBwb3J0IGZvciBFU01QLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxMTQKKworICAgICAgICBUZXN0
OiBmYXN0L2VzbXAvZXJyb3ItY29kZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKwog
MjAwOS0xMC0yMSAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83MjcwMzIwPiBTY3JlZW5zaG90cyBvZiBvZmYtc2NyZWVuIHBs
dWctaW5zIGFyZSBibGFuawpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggMDBiNDY3ZC4uYzE2YjIyZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMjgsNiArMTI4LDcg
QEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NJTkdMRV9USFJFQURFRD0xKSB7CiB9CiAKICFj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ9Lik6IERFRklORVMgKz0g
RU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUPTAKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRVNN
UD0uKTogREVGSU5FUyArPSBFTkFCTEVfRVNNUD0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X0ZJTFRFUlM9Lik6IERFRklORVMgKz0gRU5BQkxFX0ZJTFRFUlM9MAogIWNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9YUEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVfWFBBVEg9MQogIyFjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfWEJMPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YQkw9MQpAQCAtMjcy
OSw2ICsyNzMwLDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFTz0xKSB7CiAKIH0K
IAorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0VTTVA9MSkgeworICAgIEZFQVRVUkVfREVGSU5F
U19KQVZBU0NSSVBUICs9IEVOQUJMRV9FU01QPTEKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1hQQVRIPTEpIHsKICAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVf
WFBBVEg9MQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKaW5kZXggYTJkNDE1ZS4uZTFlNTE1ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDA5LTEwLTI2ICBSb2JpbiBRaXUgIDxyb2Jpbi5xaXVAdG9yY2htb2JpbGUuY29tLmNuPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkICct
LWVzbXAnIGJ1aWxkIG9wdGlvbi4KKyAgICAgICAgQWRkZWQvaWdub3JlZCBzb21lIHRlc3QgY2Fz
ZXMgd2hlbiBlbmFibGUgRVNNUC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0MTE0CisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDoKKyAg
ICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRkaXJzLnBtOgorCiAyMDA5LTEwLTIxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9idWlsZC13ZWJraXQgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtp
dAppbmRleCA0Zjc4ZWVmLi5mMDA3MWJlIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L2J1aWxkLXdlYmtpdAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAt
Miw2ICsyLDcgQEAKIAogIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01NCw3ICs1NSw3IEBAIG15ICgkdGhyZWVEQ2FudmFzU3VwcG9ydCwgJHRocmVlRFJlbmRl
cmluZ1N1cHBvcnQsICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCwgJGRhCiAgICAgJGV2ZW50c291
cmNlU3VwcG9ydCwgJGZpbHRlcnNTdXBwb3J0LCAkZ2VvbG9jYXRpb25TdXBwb3J0LCAkaWNvbkRh
dGFiYXNlU3VwcG9ydCwKICAgICAkamF2YVNjcmlwdERlYnVnZ2VyU3VwcG9ydCwgJG1hdGhtbFN1
cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0LCAkcnVieVN1cHBvcnQsICRzaGFy
ZWRXb3JrZXJzU3VwcG9ydCwgCiAgICAgJHN2Z1N1cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0
LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9u
dHNTdXBwb3J0LAotICAgICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQs
ICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRzU3VwcG9ydCwgJHdtbFN1cHBvcnQsICR3Y3NzU3Vw
cG9ydCwgJHhodG1sbXBTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQsCisgICAgJHN2Z0ZvcmVpZ25P
YmplY3RTdXBwb3J0LCAkc3ZnVXNlU3VwcG9ydCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNT
dXBwb3J0LCAkd21sU3VwcG9ydCwgJGVzbXBTdXBwb3J0LCAkd2Nzc1N1cHBvcnQsICR4aHRtbG1w
U3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0LAogICAgICR4cGF0aFN1cHBvcnQsICR4c2x0U3VwcG9y
dCwgJGNvdmVyYWdlU3VwcG9ydCwgJG5vdGlmaWNhdGlvbnNTdXBwb3J0KTsKIAogbXkgQGZlYXR1
cmVzID0gKApAQCAtMTM5LDYgKzE0MCw5IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICB7IG9wdGlv
biA9PiAid21sIiwgZGVzYyA9PiAiVG9nZ2xlIFdNTCBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX1dNTCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR3bWxTdXBwb3J0IH0sCiAK
KyAgICB7IG9wdGlvbiA9PiAiZXNtcCIsIGRlc2MgPT4gIlRvZ2dsZSBFU01QIHN1cHBvcnQiLAor
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRVNNUCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRl
c21wU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gInhodG1sbXAiLCBkZXNjID0+ICJUb2dn
bGUgWEhUTUwtTVAgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9YSFRNTE1QIiwg
ZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHhodG1sbXBTdXBwb3J0IH0sCiAKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvcnVuLXdlYmtpdC10ZXN0cwppbmRleCBhMDhhNTNjLi41NzA5MGNkIDEwMDc1NQotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9ydW4td2Via2l0LXRlc3RzCkBAIC02LDYgKzYsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIw
MDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBBbmRy
YXMgQmVjc2kgKGJlY3NpLmFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1KSwgVW5pdmVyc2l0eSBvZiBT
emVnZWQKKyMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NDgs
NiArNDQ5LDEzIEBAIGlmICghY2hlY2tXZWJDb3JlV0NTU1N1cHBvcnQoMCkpIHsKICAgICAkaWdu
b3JlZERpcmVjdG9yaWVzeydmYXN0L3djc3MnfSA9IDE7CiB9CiAKK2lmICghY2hlY2tXZWJDb3Jl
RVNNUFN1cHBvcnQoMCkpIHsKKyAgICAkaWdub3JlZERpcmVjdG9yaWVzeydmYXN0L2VzbXAnfSA9
IDE7Cit9IGVsc2UgeworICAgICRpZ25vcmVkRmlsZXN7J2Zhc3QvY2FudmFzL2NhbnZhcy13aXRo
LWluY29ycmVjdC1hcmdzLmh0bWwnfSA9IDE7Cit9CisgICAgCisKIHByb2Nlc3NJZ25vcmVUZXN0
cygkaWdub3JlVGVzdHMsICJpZ25vcmUtdGVzdHMiKSBpZiAkaWdub3JlVGVzdHM7CiByZWFkU2tp
cHBlZEZpbGVzKCkgdW5sZXNzICRpZ25vcmVTa2lwcGVkOwogCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0gYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdGRp
cnMucG0KaW5kZXggODUwM2I2OC4uMjlhY2UxNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5w
bQpAQCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzYyLDYgKzc2MywyNSBAQCBzdWIgY2hlY2tXZWJDb3JlV0NTU1N1cHBv
cnQKICAgICByZXR1cm4gJGhhc1dDU1M7CiB9CiAKK3N1YiBoYXNFU01QU3VwcG9ydAoreworICAg
ICMgRklYTUU6IFdoZW4gRVNNUCBzdXBwb3J0IGlzIGxhbmRlZCB0aGlzIHNob3VsZCBiZSB1cGRh
dGVkIHRvIGNoZWNrIGZvciBFU01QCisgICAgIyBiZWluZyBlbmFibGVkIGluIGEgbWFubmVyIHNp
bWlsYXIgdG8gaG93IHdlIGNoZWNrIGZvciBYSFRNTCBNUCBhYm92ZS4KKyAgICByZXR1cm4gMDsK
K30KKworc3ViIGNoZWNrV2ViQ29yZUVTTVBTdXBwb3J0Cit7CisgICAgbXkgJHJlcXVpcmVkID0g
c2hpZnQ7CisgICAgbXkgJGZyYW1ld29yayA9ICJXZWJDb3JlIjsKKyAgICBteSAkcGF0aCA9IGJ1
aWx0RHlsaWJQYXRoRm9yTmFtZSgkZnJhbWV3b3JrKTsKKyAgICBteSAkaGFzRVNNUCA9IGhhc0VT
TVBTdXBwb3J0KCRwYXRoKTsKKyAgICBpZiAoJHJlcXVpcmVkICYmICEkaGFzRVNNUCkgeworICAg
ICAgICBkaWUgIiRmcmFtZXdvcmsgYXQgXCIkcGF0aFwiIGRvZXMgbm90IGluY2x1ZGUgRVNNUCBT
dXBwb3J0XG4iOworICAgIH0KKyAgICByZXR1cm4gJGhhc0VTTVA7Cit9CisKIHN1YiBpc1F0KCkK
IHsKICAgICBkZXRlcm1pbmVJc1F0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41935</attachid>
            <date>2009-10-27 01:16:52 -0700</date>
            <delta_ts>2009-11-17 12:20:02 -0800</delta_ts>
            <desc>patch for ESMP MemoryError support   </desc>
            <filename>robin.esmp.memory-error.patch</filename>
            <type>text/plain</type>
            <size>18254</size>
            <attacher name="Robin Qiu">robin.qiu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlZTgyMDcxLi4wYmU2MjYwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMDktMTAtMjcgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
ZnJvbSBDaGFybGVzIFdlaSB0byBhZGQgbmV3IG5hdGl2ZSBFcnJvciB0eXBlICdNZW1vcnlFcnJv
cicgZm9yIEVTTVAgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI0MTE0CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAg
ICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OkVycm9yOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbik6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6SlNHbG9iYWxPYmplY3REYXRhOjpKU0dsb2JhbE9iamVjdERhdGEpOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bWVtb3J5RXJyb3JDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dPdXRPZk1lbW9y
eUVycm9yKToKKwogMjAwOS0xMC0yNCAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bu
b2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpIGIvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUucHJpCmluZGV4IDg5YzQ4M2UuLmQxOGZmYmIgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5wcmkKQEAgLTksNiArOSw4IEBAIENPTkZJRyhkZWJ1ZywgZGVidWd8cmVsZWFz
ZSkgewogICAgIE9CSkVDVFNfRElSID0gb2JqL3JlbGVhc2UKIH0KIAorIWNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9FU01QPS4pOiBERUZJTkVTICs9IEVOQUJMRV9FU01QPTEKKwogSU5DTFVERVBB
VEggPSBcCiAgICAgJCRQV0QgXAogICAgICQkUFdELy4uIFwKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5j
cHAKaW5kZXggZGRkNGJjNC4uZWY2OGVjNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAg
LTMsNiArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9z
dC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJp
YyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNjcsNiArNjgsMTIgQEAgSlNPYmplY3QqIEVycm9yOjpjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBFcnJvclR5cGUgdHlwZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSwKICAgICAg
ICAgICAgIGNvbnN0cnVjdG9yID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5VUklFcnJv
ckNvbnN0cnVjdG9yKCk7CiAgICAgICAgICAgICBuYW1lID0gIlVSSSBlcnJvciI7CiAgICAgICAg
ICAgICBicmVhazsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICAgICAgY2FzZSBNZW1vcnlFcnJvcjoK
KyAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5t
ZW1vcnlFcnJvckNvbnN0cnVjdG9yKCk7CisgICAgICAgICAgICBuYW1lID0gIk1lbW9yeSBlcnJv
ciI7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgY29uc3RydWN0b3IgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmVycm9yQ29u
c3RydWN0b3IoKTsKICAgICAgICAgICAgIG5hbWUgPSAiRXJyb3IiOwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oCmluZGV4IGU5NTljZmYuLjVhNjQyN2YgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTIs
NiArMiw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC00Miw3ICs0MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVmZXJlbmNlRXJyb3IgPSAzLAogICAgICAgICBTeW50YXhFcnJvciAgICA9IDQsCiAgICAg
ICAgIFR5cGVFcnJvciAgICAgID0gNSwKLSAgICAgICAgVVJJRXJyb3IgICAgICAgPSA2CisgICAg
ICAgIFVSSUVycm9yICAgICAgID0gNiwKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICAgICAgTWVtb3J5
RXJyb3IgICAgPSA3CisjZW5kaWYKICAgICB9OwogICAgIAogICAgIGV4dGVybiBjb25zdCBjaGFy
KiBleHByZXNzaW9uQmVnaW5PZmZzZXRQcm9wZXJ0eU5hbWU7CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGNmM2YxZDEuLmYzOTY3ODEgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hA
dXdhdGVybG9vLmNhKQorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNTMsNiArMjU0LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHN5bnRheEVycm9yUHJvdG90
eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBuYXRpdmVFcnJvclBy
b3RvdHlwZVN0cnVjdHVyZSwgIlN5bnRheEVycm9yIiwgIlN5bnRheEVycm9yIik7CiAgICAgTmF0
aXZlRXJyb3JQcm90b3R5cGUqIHR5cGVFcnJvclByb3RvdHlwZSA9IG5ldyAoZXhlYykgTmF0aXZl
RXJyb3JQcm90b3R5cGUoZXhlYywgbmF0aXZlRXJyb3JQcm90b3R5cGVTdHJ1Y3R1cmUsICJUeXBl
RXJyb3IiLCAiVHlwZUVycm9yIik7CiAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIFVSSUVycm9y
UHJvdG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBuYXRpdmVF
cnJvclByb3RvdHlwZVN0cnVjdHVyZSwgIlVSSUVycm9yIiwgIlVSSUVycm9yIik7CisjaWYgRU5B
QkxFKEVTTVApCisgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIG1lbW9yeUVycm9yUHJvdG90eXBl
ID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBuYXRpdmVFcnJvclByb3Rv
dHlwZVN0cnVjdHVyZSwgIk1lbW9yeUVycm9yIiwgIk1lbW9yeUVycm9yIik7CisjZW5kaWYKIAog
ICAgIC8vIENvbnN0cnVjdG9ycwogCkBAIC0yNzYsNiArMjgwLDkgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgZCgpLT5zeW50YXhFcnJvckNvbnN0
cnVjdG9yID0gbmV3IChleGVjKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIG5hdGl2ZUVy
cm9yU3RydWN0dXJlLCBzeW50YXhFcnJvclByb3RvdHlwZSk7CiAgICAgZCgpLT50eXBlRXJyb3JD
b25zdHJ1Y3RvciA9IG5ldyAoZXhlYykgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCBuYXRp
dmVFcnJvclN0cnVjdHVyZSwgdHlwZUVycm9yUHJvdG90eXBlKTsKICAgICBkKCktPlVSSUVycm9y
Q29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoZXhlYywgbmF0
aXZlRXJyb3JTdHJ1Y3R1cmUsIFVSSUVycm9yUHJvdG90eXBlKTsKKyNpZiBFTkFCTEUoRVNNUCkK
KyAgICBkKCktPm1lbW9yeUVycm9yQ29uc3RydWN0b3IgPSBuZXcgKGV4ZWMpIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IoZXhlYywgbmF0aXZlRXJyb3JTdHJ1Y3R1cmUsIG1lbW9yeUVycm9yUHJvdG90
eXBlKTsKKyNlbmRpZgogCiAgICAgZCgpLT5vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdEZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCBv
YmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUt
PnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0yOTMsNiAr
MzAwLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgc3ludGF4RXJyb3JQcm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAg
IHR5cGVFcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3RvciwgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIFVSSUVy
cm9yUHJvdG90eXBlLT5wdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9y
LCBkKCktPlVSSUVycm9yQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKKyNpZiBFTkFCTEUoRVNNUCkK
KyAgICBtZW1vcnlFcnJvclByb3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jb25zdHJ1Y3RvciwgZCgpLT5tZW1vcnlFcnJvckNvbnN0cnVjdG9yLCBEb250RW51bSk7Cisj
ZW5kaWYgCiAKICAgICAvLyBTZXQgZ2xvYmFsIGNvbnN0cnVjdG9ycwogCkBAIC0zMTMsNiArMzIz
LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJTeW50
YXhFcnJvciIpLCBkKCktPnN5bnRheEVycm9yQ29uc3RydWN0b3IpOwogICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiVHlwZUVycm9yIiksIGQo
KS0+dHlwZUVycm9yQ29uc3RydWN0b3IpOwogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oSWRlbnRpZmllcihleGVjLCAiVVJJRXJyb3IiKSwgZCgpLT5VUklFcnJvckNvbnN0
cnVjdG9yKTsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIk1lbW9yeUVycm9yIiksIGQoKS0+bWVtb3J5RXJy
b3JDb25zdHJ1Y3Rvcik7CisjZW5kaWYKIAogICAgIC8vIFNldCBnbG9iYWwgdmFsdWVzLgogICAg
IEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CkBAIC0zNzcsNiArMzkwLDkg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNr
KQogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3Rv
cik7CiAgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT50eXBlRXJyb3JDb25zdHJ1Y3Rv
cik7CiAgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5VUklFcnJvckNvbnN0cnVjdG9y
KTsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBtYXJrSWZOZWVkZWQobWFya1N0YWNrLCBkKCktPm1l
bW9yeUVycm9yQ29uc3RydWN0b3IpOworI2VuZGlmCiAKICAgICBtYXJrSWZOZWVkZWQobWFya1N0
YWNrLCBkKCktPmV2YWxGdW5jdGlvbik7CiAgICAgbWFya0lmTmVlZGVkKG1hcmtTdGFjaywgZCgp
LT5jYWxsRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDcyMGQzYTUuLjMzYjQwNTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTc4LDYgKzc5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAgICAgLCBzeW50YXhFcnJvckNvbnN0cnVjdG9yKDApCiAgICAgICAgICAgICAgICAgLCB0
eXBlRXJyb3JDb25zdHJ1Y3RvcigwKQogICAgICAgICAgICAgICAgICwgVVJJRXJyb3JDb25zdHJ1
Y3RvcigwKQorI2lmIEVOQUJMRShFU01QKQorICAgICAgICAgICAgICAgICwgbWVtb3J5RXJyb3JD
b25zdHJ1Y3RvcigwKQorI2VuZGlmCiAgICAgICAgICAgICAgICAgLCBldmFsRnVuY3Rpb24oMCkK
ICAgICAgICAgICAgICAgICAsIGNhbGxGdW5jdGlvbigwKQogICAgICAgICAgICAgICAgICwgYXBw
bHlGdW5jdGlvbigwKQpAQCAtMTE1LDYgKzExOSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsKICAg
ICAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHR5cGVFcnJvckNvbnN0cnVjdG9yOwog
ICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcjsK
KyNpZiBFTkFCTEUoRVNNUCkKKyAgICAgICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIG1l
bW9yeUVycm9yQ29uc3RydWN0b3I7CisjZW5kaWYKIAogICAgICAgICAgICAgR2xvYmFsRXZhbEZ1
bmN0aW9uKiBldmFsRnVuY3Rpb247CiAgICAgICAgICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIq
IGNhbGxGdW5jdGlvbjsKQEAgLTIwMSw2ICsyMDgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvciogc3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIGQoKS0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsgfQogICAgICAgICBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yKiB0eXBlRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQo
KS0+dHlwZUVycm9yQ29uc3RydWN0b3I7IH0KICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ciogVVJJRXJyb3JDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+VVJJRXJyb3JDb25z
dHJ1Y3RvcjsgfQorI2lmIEVOQUJMRShFU01QKQorICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKiBtZW1vcnlFcnJvckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gZCgpLT5tZW1vcnlF
cnJvckNvbnN0cnVjdG9yOyB9CisjZW5kaWYKIAogICAgICAgICBHbG9iYWxFdmFsRnVuY3Rpb24q
IGV2YWxGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGQoKS0+ZXZhbEZ1bmN0aW9uOyB9CiAKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IDA5M2JiZWMuLmVjMzBiNzYgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQog
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Nyw3ICs0OCwxMSBAQCBib29s
IEpTVmFsdWU6OnN0cmljdEVxdWFsU2xvd0Nhc2UoSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIAog
TkVWRVJfSU5MSU5FIEpTVmFsdWUgdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyNpZiBFTkFCTEUoRVNNUCkKKyAgICBKU09iamVjdCogZXJyb3IgPSBFcnJvcjo6Y3Jl
YXRlKGV4ZWMsIE1lbW9yeUVycm9yLCAiT3V0IG9mIG1lbW9yeSIpOworI2Vsc2UKICAgICBKU09i
amVjdCogZXJyb3IgPSBFcnJvcjo6Y3JlYXRlKGV4ZWMsIEdlbmVyYWxFcnJvciwgIk91dCBvZiBt
ZW1vcnkiKTsKKyNlbmRpZgogICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihlcnJvcik7CiAgICAgcmV0
dXJuIGVycm9yOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNjYzVjOGIuLmRlNTlhNzggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAwOS0xMC0yNyAgUm9iaW4gUWl1ICA8cm9iaW4ucWl1QHRvcmNobW9iaWxlLmNvbS5j
bj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBhIHRlc3QgY2FzZSAoYmFzZWQgb24gZmFzdC9qcy9zdHJpbmctY29uY2F0ZW5hdGUtb3V0b2Zt
ZW1vcnkuaHRtbCkgCisgICAgICAgIHRvIHRlc3QgTWVtb3J5RXJyb3IgbmF0aXZlIGVycm9yIGlu
IEVTTVAgc3BlYy4KKworICAgICAgICAqIGZhc3QvZXNtcC9yZXNvdXJjZXMvc3RyaW5nLWNvbmNh
dGVuYXRlLW91dG9mbWVtb3J5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2VzbXAvc3RyaW5n
LWNvbmNhdGVuYXRlLW91dG9mbWVtb3J5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9lc21wL3N0cmluZy1jb25jYXRlbmF0ZS1vdXRvZm1lbW9yeS5odG1sOiBBZGRlZC4KKwog
MjAwOS0xMC0yNSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxh
Ym9yYS5jby51az4KIAogICAgICAgICBVbnJldmlld2VkLiBSZWJhc2VsaW5lIHRlc3QgYWZ0ZXIg
NDk5OTguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2VzbXAvcmVzb3VyY2VzL3N0cmlu
Zy1jb25jYXRlbmF0ZS1vdXRvZm1lbW9yeS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXNtcC9yZXNv
dXJjZXMvc3RyaW5nLWNvbmNhdGVuYXRlLW91dG9mbWVtb3J5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjY2NmRlM2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2VzbXAvcmVzb3VyY2VzL3N0cmluZy1jb25jYXRlbmF0ZS1vdXRvZm1lbW9yeS5qcwpA
QCAtMCwwICsxLDYgQEAKK2Rlc2NyaXB0aW9uKAorJ1RoaXMgdGVzdCBjaGVja3MgaWYgcmVwZWF0
ZWQgc3RyaW5nIGNvbmNhdGVuYXRpb24gY2F1c2VzIGFuIG1lbW9yeSBlcnJvciBleGNlcHRpb24g
KGFuZCBub3QgYSBnZW5lcmFsIGVycm9yKS4nCispOworCitzaG91bGRUaHJvdygncyA9ICJzIjsg
d2hpbGUgKDEpIHsgcyArPSBzOyB9JywgJyJNZW1vcnlFcnJvcjogT3V0IG9mIG1lbW9yeSInKTsg
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXNtcC9zdHJpbmctY29uY2F0ZW5hdGUtb3V0b2ZtZW1vcnktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9lc21wL3N0cmluZy1jb25jYXRlbmF0ZS1vdXRvZm1lbW9yeS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFhMDc1ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXNtcC9zdHJpbmctY29uY2F0ZW5hdGUt
b3V0b2ZtZW1vcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBjaGVj
a3MgaWYgcmVwZWF0ZWQgc3RyaW5nIGNvbmNhdGVuYXRpb24gY2F1c2VzIGFuIG1lbW9yeSBlcnJv
ciBleGNlcHRpb24gKGFuZCBub3QgYSBnZW5lcmFsIGVycm9yKS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgcyA9ICJzIjsgd2hpbGUgKDEpIHsgcyArPSBzOyB9IHRocmV3
IGV4Y2VwdGlvbiBNZW1vcnlFcnJvcjogT3V0IG9mIG1lbW9yeS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2VzbXAvc3RyaW5nLWNvbmNhdGVuYXRlLW91dG9mbWVtb3J5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2VzbXAvc3RyaW5nLWNvbmNhdGVuYXRlLW91dG9mbWVtb3J5Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U2YzJmZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXNtcC9zdHJpbmctY29uY2F0ZW5hdGUtb3V0b2ZtZW1vcnkuaHRt
bApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJy
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3N0cmluZy1jb25jYXRlbmF0ZS1vdXRvZm1lbW9yeS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGZhMDgyN2QuLmU5N2RjOTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTAtMjcg
IFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggZnJvbSBDaGFybGVzIFdl
aSB0byBhZGQgbmV3IG5hdGl2ZSBFcnJvciB0eXBlICdNZW1vcnlFcnJvcicgZm9yIEVTTVAgc3Vw
cG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
MTE0CisKKyAgICAgICAgVGVzdDogZmFzdC9lc21wL3N0cmluZy1jb25jYXRlbmF0ZS1vdXRvZm1l
bW9yeS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKwogMjAwOS0xMC0yNSAgQW50b24g
TXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCA2NjIxMzBjLi40N2VlOWMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
cHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEyOCw2ICsxMjgsNyBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfU0lOR0xFX1RIUkVBREVEPTEpIHsKIH0KIAogIWNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVD0uKTogREVGSU5FUyArPSBFTkFCTEVfREFT
SEJPQVJEX1NVUFBPUlQ9MAorIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9FU01QPS4pOiBERUZJ
TkVTICs9IEVOQUJMRV9FU01QPTAKICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMVEVSUz0u
KTogREVGSU5FUyArPSBFTkFCTEVfRklMVEVSUz0wCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1hQQVRIPS4pOiBERUZJTkVTICs9IEVOQUJMRV9YUEFUSD0xCiAjIWNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9YQkw9Lik6IERFRklORVMgKz0gRU5BQkxFX1hCTD0xCkBAIC0yNzI5LDYgKzI3MzAs
MTAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKIAogfQogCitjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfRVNNUD0xKSB7CisgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJ
UFQgKz0gRU5BQkxFX0VTTVA9MQorfQorCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfWFBBVEg9
MSkgewogICAgIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9YUEFUSD0xCiAK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwZjczMmRlLi4wNWU3MWU1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMTAt
MjcgIFJvYmluIFFpdSAgPHJvYmluLnFpdUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgZXNtcCBidWlsZCBv
cHRpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDoKKyAgICAgICAgKiBTY3Jp
cHRzL3J1bi13ZWJraXQtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOgor
CiAyMDA5LTEwLTIzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBO
byByZXZpZXcsIG9ubHkgYWRkaW5nIEFsaWNlIHRvIHRoZSBsaXN0IG9mIHJldmlld2Vycy4KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggNGY3OGVlZi4uZjAwNzFiZSAxMDA3NTUKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQKQEAgLTIsNiArMiw3IEBACiAKICMgQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDA2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTUsNyBAQCBteSAoJHRocmVlRENhbnZhc1N1
cHBvcnQsICR0aHJlZURSZW5kZXJpbmdTdXBwb3J0LCAkY2hhbm5lbE1lc3NhZ2luZ1N1cHBvcnQs
ICRkYQogICAgICRldmVudHNvdXJjZVN1cHBvcnQsICRmaWx0ZXJzU3VwcG9ydCwgJGdlb2xvY2F0
aW9uU3VwcG9ydCwgJGljb25EYXRhYmFzZVN1cHBvcnQsCiAgICAgJGphdmFTY3JpcHREZWJ1Z2dl
clN1cHBvcnQsICRtYXRobWxTdXBwb3J0LCAkb2ZmbGluZVdlYkFwcGxpY2F0aW9uU3VwcG9ydCwg
JHJ1YnlTdXBwb3J0LCAkc2hhcmVkV29ya2Vyc1N1cHBvcnQsIAogICAgICRzdmdTdXBwb3J0LCAk
c3ZnQW5pbWF0aW9uU3VwcG9ydCwgJHN2Z0FzSW1hZ2VTdXBwb3J0LCAkc3ZnRE9NT2JqQ0JpbmRp
bmdzU3VwcG9ydCwgJHN2Z0ZvbnRzU3VwcG9ydCwKLSAgICAkc3ZnRm9yZWlnbk9iamVjdFN1cHBv
cnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2ViU29ja2V0c1N1cHBvcnQsICR3
bWxTdXBwb3J0LCAkd2Nzc1N1cHBvcnQsICR4aHRtbG1wU3VwcG9ydCwgJHdvcmtlcnNTdXBwb3J0
LAorICAgICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1
cHBvcnQsICR3ZWJTb2NrZXRzU3VwcG9ydCwgJHdtbFN1cHBvcnQsICRlc21wU3VwcG9ydCwgJHdj
c3NTdXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhT
dXBwb3J0LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3Vw
cG9ydCk7CiAKIG15IEBmZWF0dXJlcyA9ICgKQEAgLTEzOSw2ICsxNDAsOSBAQCBteSBAZmVhdHVy
ZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gIndtbCIsIGRlc2MgPT4gIlRvZ2dsZSBXTUwgc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XTUwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+
IFwkd21sU3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gImVzbXAiLCBkZXNjID0+ICJUb2dn
bGUgRVNNUCBzdXBwb3J0IiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0VTTVAiLCBkZWZhdWx0
ID0+IDAsIHZhbHVlID0+IFwkZXNtcFN1cHBvcnQgfSwKKwogICAgIHsgb3B0aW9uID0+ICJ4aHRt
bG1wIiwgZGVzYyA9PiAiVG9nZ2xlIFhIVE1MLU1QIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+
ICJFTkFCTEVfWEhUTUxNUCIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR4aHRtbG1wU3VwcG9y
dCB9LAogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKaW5kZXggYTA4YTUzYy4uM2Qx
OWIwNiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwpAQCAtNiw2ICs2LDcgQEAK
ICMgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAjIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5
cmlnaHQgKEMpIDIwMDkgQW5kcmFzIEJlY3NpIChiZWNzaS5hbmRyYXNAc3R1ZC51LXN6ZWdlZC5o
dSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDQ4LDYgKzQ0OSwxMCBAQCBpZiAoIWNoZWNrV2ViQ29yZVdDU1NTdXBw
b3J0KDApKSB7CiAgICAgJGlnbm9yZWREaXJlY3Rvcmllc3snZmFzdC93Y3NzJ30gPSAxOwogfQog
CitpZiAoIWNoZWNrV2ViQ29yZUVTTVBTdXBwb3J0KDApKSB7CisgICAgJGlnbm9yZWREaXJlY3Rv
cmllc3snZmFzdC9lc21wJ30gPSAxOworfQorCiBwcm9jZXNzSWdub3JlVGVzdHMoJGlnbm9yZVRl
c3RzLCAiaWdub3JlLXRlc3RzIikgaWYgJGlnbm9yZVRlc3RzOwogcmVhZFNraXBwZWRGaWxlcygp
IHVubGVzcyAkaWdub3JlU2tpcHBlZDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRkaXJzLnBtIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4
IDg1MDNiNjguLjI5YWNlMTUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
ZGlycy5wbQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTEsNSAr
MSw2IEBACiAjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTc2Miw2ICs3NjMsMjUgQEAgc3ViIGNoZWNrV2ViQ29yZVdDU1NTdXBwb3J0CiAgICAgcmV0
dXJuICRoYXNXQ1NTOwogfQogCitzdWIgaGFzRVNNUFN1cHBvcnQKK3sKKyAgICAjIEZJWE1FOiBX
aGVuIEVTTVAgc3VwcG9ydCBpcyBsYW5kZWQgdGhpcyBzaG91bGQgYmUgdXBkYXRlZCB0byBjaGVj
ayBmb3IgRVNNUAorICAgICMgYmVpbmcgZW5hYmxlZCBpbiBhIG1hbm5lciBzaW1pbGFyIHRvIGhv
dyB3ZSBjaGVjayBmb3IgWEhUTUwgTVAgYWJvdmUuCisgICAgcmV0dXJuIDA7Cit9CisKK3N1YiBj
aGVja1dlYkNvcmVFU01QU3VwcG9ydAoreworICAgIG15ICRyZXF1aXJlZCA9IHNoaWZ0OworICAg
IG15ICRmcmFtZXdvcmsgPSAiV2ViQ29yZSI7CisgICAgbXkgJHBhdGggPSBidWlsdER5bGliUGF0
aEZvck5hbWUoJGZyYW1ld29yayk7CisgICAgbXkgJGhhc0VTTVAgPSBoYXNFU01QU3VwcG9ydCgk
cGF0aCk7CisgICAgaWYgKCRyZXF1aXJlZCAmJiAhJGhhc0VTTVApIHsKKyAgICAgICAgZGllICIk
ZnJhbWV3b3JrIGF0IFwiJHBhdGhcIiBkb2VzIG5vdCBpbmNsdWRlIEVTTVAgU3VwcG9ydFxuIjsK
KyAgICB9CisgICAgcmV0dXJuICRoYXNFU01QOworfQorCiBzdWIgaXNRdCgpCiB7CiAgICAgZGV0
ZXJtaW5lSXNRdCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>