<?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>87965</bug_id>
          
          <creation_ts>2012-05-31 06:10:30 -0700</creation_ts>
          <short_desc>Need customized toDOMStringList for IndexedDB JSC binding.</short_desc>
          <delta_ts>2014-04-24 16:45:35 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45110</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Charles Wei">charles.wei</reporter>
          <assigned_to name="Charles Wei">charles.wei</assigned_to>
          <cc>abarth</cc>
    
    <cc>ggaren</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>jrogers</cc>
    
    <cc>jsbell</cc>
    
    <cc>leo.yang</cc>
    
    <cc>ojan</cc>
    
    <cc>PeterHWang</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>sam</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>638309</commentid>
    <comment_count>0</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-05-31 06:10:30 -0700</bug_when>
    <thetext>IndexedDB API:  

Interface IDBDabase:

        [CallWith=ScriptExecutionContext] IDBTransaction transaction(in DOMStringList storeNames, in [Optional=DefaultIsNullString] DOMString mode)
            raises (IDBDatabaseException);
        [CallWith=ScriptExecutionContext] IDBTransaction transaction(in DOMString[] storeNames, in [Optional=DefaultIsNullString] DOMString mode)
            raises (IDBDatabaseException);
        [CallWith=ScriptExecutionContext] IDBTransaction transaction(in DOMString storeName, in [Optional=DefaultIsNullString] DOMString mode)


The auto-generated  DOMStringList* toDOMStringList( JSValue value)  can&apos;t convert an JavaScript String Array into a native DOMStringList object.  Need a customized toDOMStringList(JSValue).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645915</commentid>
    <comment_count>1</comment_count>
      <attachid>146836</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-11 05:28:47 -0700</bug_when>
    <thetext>Created attachment 146836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645917</commentid>
    <comment_count>2</comment_count>
      <attachid>146836</attachid>
    <who name="">jochen</who>
    <bug_when>2012-06-11 05:37:37 -0700</bug_when>
    <thetext>Comment on attachment 146836
Patch

Is it possible to write a test for this?

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

&gt; Source/WebCore/bindings/js/JSDOMStringListCustom.cpp:34
&gt; +    for (int i = 0; i &lt; array-&gt;length(); i++)

nit. ++i

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1023
&gt; +        } elsif($interfaceName eq &quot;DOMStringList&quot;) {

space between elseif and (

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1025
&gt; +        }else {

space between } and else</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646548</commentid>
    <comment_count>3</comment_count>
      <attachid>146992</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-11 19:01:03 -0700</bug_when>
    <thetext>Created attachment 146992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646549</commentid>
    <comment_count>4</comment_count>
      <attachid>146992</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 19:12:06 -0700</bug_when>
    <thetext>Comment on attachment 146992
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        The generated toDOMStringList() can&apos;t convert an JSArry of Strings to 
&gt; +        native DOMStringList. We need a custom function to do this.

We do not want to add custom bindings. Instead you can add toDOMStringList() to JSDOMBinding.{h,cpp}. Please refer to v8ValueToWebCoreDOMStringList() in V8Binding.{h,cpp}

Also valueToDOMStringList() would be a better name, for consistency with other names in JSDOMBinding.h.

&gt; Source/WebCore/bindings/js/JSDOMStringListCustom.cpp:34
&gt; +    for (int i = 0; i &lt; array-&gt;length(); ++i)

Nit: int =&gt; unsigned</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646562</commentid>
    <comment_count>5</comment_count>
      <attachid>146992</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-11 19:35:54 -0700</bug_when>
    <thetext>Comment on attachment 146992
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        native DOMStringList. We need a custom function to do this.
&gt; 
&gt; We do not want to add custom bindings. Instead you can add toDOMStringList() to JSDOMBinding.{h,cpp}. Please refer to v8ValueToWebCoreDOMStringList() in V8Binding.{h,cpp}
&gt; 
&gt; Also valueToDOMStringList() would be a better name, for consistency with other names in JSDOMBinding.h.

Ok. As discussed on IRC, I will move the toDOMStringList() to JSDOMBinding.{h,cpp}.  About renaming toDOMStringList() to valueTODOMStringList(),  because the generated code uses toDOMStringList() all over the places, we won&apos;t do the renaming and will keep the name as is.

&gt;&gt; Source/WebCore/bindings/js/JSDOMStringListCustom.cpp:34
&gt;&gt; +    for (int i = 0; i &lt; array-&gt;length(); ++i)
&gt; 
&gt; Nit: int =&gt; unsigned

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646663</commentid>
    <comment_count>6</comment_count>
      <attachid>147016</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-11 23:23:57 -0700</bug_when>
    <thetext>Created attachment 147016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646672</commentid>
    <comment_count>7</comment_count>
      <attachid>147016</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 23:36:28 -0700</bug_when>
    <thetext>Comment on attachment 147016
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        The generted toDOMStringList() can&apos;t convert an JSArray of Strings to

typo: generted =&gt; generated

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:290
&gt; +    if (!value.inherits(&amp;JSArray::s_info))
&gt; +        return 0;

I think that isJSArray(value) would be the correct check here.

Also I think you need to add the code that corresponds to v8ValueToWebCoreDOMStringList():

  if (V8DOMStringList::HasInstance(v8Value)) {
    ...;
  }

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2831
&gt; +    &quot;DOMString[]&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,
&gt; +    &quot;DOMStringList&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,

By the way, what&apos;s the difference between DOMString[] and DOMStringList after this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646677</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 23:42:59 -0700</bug_when>
    <thetext>cc-ing JSC folks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646700</commentid>
    <comment_count>9</comment_count>
      <attachid>147016</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 00:21:27 -0700</bug_when>
    <thetext>Comment on attachment 147016
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        The generted toDOMStringList() can&apos;t convert an JSArray of Strings to
&gt; 
&gt; typo: generted =&gt; generated

Thanks. Will fix.

&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:290
&gt;&gt; +        return 0;
&gt; 
&gt; I think that isJSArray(value) would be the correct check here.
&gt; 
&gt; Also I think you need to add the code that corresponds to v8ValueToWebCoreDOMStringList():
&gt; 
&gt;   if (V8DOMStringList::HasInstance(v8Value)) {
&gt;     ...;
&gt;   }

We can use isJSArray(value).  will fix it with the new patch.

V8NativeObject::HasInstance(V8Value)  seems V8-specific logic. I don&apos;t see corresponding JSC code in any of generated JSC binding code or custom JSC binding code. Please point to me if there&apos;s any that I should follow in JSC.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2831
&gt;&gt; +    &quot;DOMStringList&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,
&gt; 
&gt; By the way, what&apos;s the difference between DOMString[] and DOMStringList after this patch?

They are the same.  Please have a look at the V8 code generator, they have the same logic -- DOMStringList is equivalent to DOMString[] in IDL files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646716</commentid>
    <comment_count>10</comment_count>
      <attachid>147030</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 01:12:26 -0700</bug_when>
    <thetext>Created attachment 147030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646725</commentid>
    <comment_count>11</comment_count>
      <attachid>147030</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-12 01:27:31 -0700</bug_when>
    <thetext>Comment on attachment 147030
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        * bindings/js/JSDOMBinding.h:
&gt; +        (WebCore):

This file is missing.

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:291
&gt; +    if (!isJSArray(value))
&gt; +        return 0;

&gt; V8NativeObject::HasInstance(V8Value)  seems V8-specific logic. I don&apos;t see corresponding JSC code in any of generated JSC binding code or custom JSC binding code. Please point 
&gt; to me if there&apos;s any that I should follow in JSC.

V8DOMStringList::HasInstance(value) corresponds to value.inherits(&amp;JSDOMStringList::s_info)

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:204
&gt; +    return 1 if $type eq &quot;CSSStyleDeclaration&quot; or $type eq &quot;MediaList&quot; or $type eq &quot;DOMStringList&quot; or $type eq &quot;DOMStringList[]&quot;  or $type eq &quot;DOMTokenList&quot; or $type eq &quot;DOMSettableTokenList&quot;;

Shouldn&apos;t this be $type eq &quot;DOMString[]&quot;?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1024
&gt; +        } elsif ($interfaceName eq &quot;DOMStringList&quot;) {
&gt; +            push(@headerContent, &quot;PassRefPtr&lt;DOMStringList&gt; toDOMStringList(JSC::ExecState*, JSC::JSValue);\n&quot;);

This would be no longer needed. The declaration should be in JSDOMBinding.h.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2830
&gt; -    &quot;DOMString[]&quot; =&gt; &quot;DOMStringList*&quot;,
&gt; +    &quot;DOMString[]&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,

Why do you need to change DOMStringList* to RefPtr&lt;DOMStringList&gt;?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2995
&gt;      if ($type eq &quot;DOMString[]&quot;) {
&gt;          AddToImplIncludes(&quot;JSDOMStringList.h&quot;, $conditional);
&gt; -        return &quot;toDOMStringList($value)&quot;;
&gt; +        return &quot;toDOMStringList(exec, $value)&quot;;
&gt; +    }
&gt; +
&gt; +    if ($type eq &quot;DOMStringList&quot;) {
&gt; +        AddToImplIncludes(&quot;JSDOMStringList.h&quot;, $conditional);
&gt; +        return &quot;toDOMStringList(exec, $value)&quot;;
&gt;      }

You can wrap up two if statements into one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646750</commentid>
    <comment_count>12</comment_count>
      <attachid>147039</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 02:11:07 -0700</bug_when>
    <thetext>Created attachment 147039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646752</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-12 02:15:18 -0700</bug_when>
    <thetext>Attachment 147039 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:10:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646753</commentid>
    <comment_count>14</comment_count>
      <attachid>147030</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 02:16:38 -0700</bug_when>
    <thetext>Comment on attachment 147030
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt; +        (WebCore):
&gt; 
&gt; This file is missing.

We don&apos;t need to change this file anymore.   The new patch removes it from the change log.

The declaration of toDOMStringList() is in the generated JSDOMStringList.h,  not in JSDOMBinding.h

&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:291
&gt;&gt; +        return 0;
&gt; 
&gt; 

So isJSArray(value) is the right check,  even though inherits(JSArray::s_info) is another option.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:204
&gt;&gt; +    return 1 if $type eq &quot;CSSStyleDeclaration&quot; or $type eq &quot;MediaList&quot; or $type eq &quot;DOMStringList&quot; or $type eq &quot;DOMStringList[]&quot;  or $type eq &quot;DOMTokenList&quot; or $type eq &quot;DOMSettableTokenList&quot;;
&gt; 
&gt; Shouldn&apos;t this be $type eq &quot;DOMString[]&quot;?

My fault.  Fixed in the new patch.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1024
&gt;&gt; +            push(@headerContent, &quot;PassRefPtr&lt;DOMStringList&gt; toDOMStringList(JSC::ExecState*, JSC::JSValue);\n&quot;);
&gt; 
&gt; This would be no longer needed. The declaration should be in JSDOMBinding.h.

No,  we still need this, because the code generator will otherwise generate 

DOMStringList* toDOMStringList(JSC::JSValue);

That is not what we want.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2830
&gt;&gt; +    &quot;DOMString[]&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,
&gt; 
&gt; Why do you need to change DOMStringList* to RefPtr&lt;DOMStringList&gt;?

This is for memory management.  The DOMStringList* will be generated in the native code inside toDOMStringList(),   and pass that to the JS code.  The JS code won&apos;t delete it when done.  So we need to use RefPtr&lt;DOMStringList&gt; which will be automatically de-structed when JS code is done.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2995
&gt;&gt;      }
&gt; 
&gt; You can wrap up two if statements into one.

Yes, fixed in the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646757</commentid>
    <comment_count>15</comment_count>
      <attachid>147041</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 02:23:48 -0700</bug_when>
    <thetext>Created attachment 147041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646778</commentid>
    <comment_count>16</comment_count>
      <attachid>147030</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-12 03:45:40 -0700</bug_when>
    <thetext>Comment on attachment 147030
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:291
&gt;&gt;&gt; +        return 0;
&gt;&gt; 
&gt;&gt; 
&gt; 
&gt; So isJSArray(value) is the right check,  even though inherits(JSArray::s_info) is another option.

Both are needed. The code would be something like:

if (value.inherits(&amp;JSDOMStringList::s_info))
  return jsCast&lt;JSDOMStringList*&gt;(asObject(value))-&gt;impl();

if (!isJSArray(value))
  return 0;

&gt;&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1024
&gt;&gt;&gt; +            push(@headerContent, &quot;PassRefPtr&lt;DOMStringList&gt; toDOMStringList(JSC::ExecState*, JSC::JSValue);\n&quot;);
&gt;&gt; 
&gt;&gt; This would be no longer needed. The declaration should be in JSDOMBinding.h.
&gt; 
&gt; No,  we still need this, because the code generator will otherwise generate 
&gt; 
&gt; DOMStringList* toDOMStringList(JSC::JSValue);
&gt; 
&gt; That is not what we want.

I am really sorry for this. After reading how JSC bindings and V8 bindings work, as you pointed out, it would make sense to add toDOMStringList() in a custom file. Would you revert back the custom file?

&gt;&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2830
&gt;&gt;&gt; +    &quot;DOMString[]&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,
&gt;&gt; 
&gt;&gt; Why do you need to change DOMStringList* to RefPtr&lt;DOMStringList&gt;?
&gt; 
&gt; This is for memory management.  The DOMStringList* will be generated in the native code inside toDOMStringList(),   and pass that to the JS code.  The JS code won&apos;t delete it when done.  So we need to use RefPtr&lt;DOMStringList&gt; which will be automatically de-structed when JS code is done.

My original question was... why is it OK to change the native type of DOMString[] despite the fact that this patch is just changing the behavior of DOMStringList?

It seems the answer is that currently no one uses DOMString[] in JSC (DOMString[] is used by IDB*.idl only, which is not yet enabled in JSC). So changing DOMString[] to DOMStringList is harmless.

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:2439
&gt; -    if ((argsCount == 1 &amp;&amp; (arg0.isNull() || (arg0.isObject() &amp;&amp; asObject(arg0)-&gt;inherits(&amp;JSDOMStringList::s_info)))))
&gt; +    if (argsCount == 1)

Where does this change come from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646779</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-12 03:48:06 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; So changing DOMString[] to DOMStringList is harmless.

Correction: So changing the native type for DOMString[] (from DOMStringList* to RefPtr&lt;DOMStringList&gt;) is harmless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646870</commentid>
    <comment_count>18</comment_count>
      <attachid>147069</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 06:13:34 -0700</bug_when>
    <thetext>Created attachment 147069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646898</commentid>
    <comment_count>19</comment_count>
      <attachid>147069</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-12 06:43:34 -0700</bug_when>
    <thetext>Comment on attachment 147069
Patch

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

Almost looks OK.

&gt; Source/WebCore/UseJSC.cmake:60
&gt; +    bindings/js/JSDOMStringListCustom.cpp

This would not be the only place where you need to add the file name.

$ grep -r JSDOMStringMapCustom.cpp *

will tell you the list of build files you need to touch.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2830
&gt; -    &quot;DOMString[]&quot; =&gt; &quot;DOMStringList*&quot;,
&gt; +    &quot;DOMString[]&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,

Don&apos;t you need to add &quot;DOMStringList&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646945</commentid>
    <comment_count>20</comment_count>
      <attachid>147069</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 08:04:21 -0700</bug_when>
    <thetext>Comment on attachment 147069
Patch

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

&gt;&gt; Source/WebCore/UseJSC.cmake:60
&gt;&gt; +    bindings/js/JSDOMStringListCustom.cpp
&gt; 
&gt; This would not be the only place where you need to add the file name.
&gt; 
&gt; $ grep -r JSDOMStringMapCustom.cpp *
&gt; 
&gt; will tell you the list of build files you need to touch.

Well, there are so many portings and we don&apos;t have all the building system. We can only guarantee that all the systems that connect to the build-bot works, I don&apos;t want to blindly add this to other systems without verification. Any porting that are not added to the build-bot need to add this to their system by themselves.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2830
&gt;&gt; +    &quot;DOMString[]&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;,
&gt; 
&gt; Don&apos;t you need to add &quot;DOMStringList&quot; =&gt; &quot;RefPtr&lt;DOMStringList&gt;&quot;?

No, We don&apos;t. DOMStringList IS a native type and don&apos;t need to be listed here. Further, GetNativeType and GetNativeTypeForCallbacks already take care of both. So we don&apos;t need to add DOMStringList here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646961</commentid>
    <comment_count>21</comment_count>
      <attachid>147069</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-12 08:28:32 -0700</bug_when>
    <thetext>Comment on attachment 147069
Patch

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

&gt;&gt;&gt; Source/WebCore/UseJSC.cmake:60
&gt;&gt;&gt; +    bindings/js/JSDOMStringListCustom.cpp
&gt;&gt; 
&gt;&gt; This would not be the only place where you need to add the file name.
&gt;&gt; 
&gt;&gt; $ grep -r JSDOMStringMapCustom.cpp *
&gt;&gt; 
&gt;&gt; will tell you the list of build files you need to touch.
&gt; 
&gt; Well, there are so many portings and we don&apos;t have all the building system. We can only guarantee that all the systems that connect to the build-bot works, I don&apos;t want to blindly add this to other systems without verification. Any porting that are not added to the build-bot need to add this to their system by themselves.

What ports are you intending to support?

&gt; We can only guarantee that all the systems that connect to the build-bot works

To guarantee that, you need to at least add the file to project.pbxproj (mac), GNUmakefile.list.am (Gtk), Target.pri (qt), WebCore.vcproj (win) and CMakeLists.txt (Efl). The reason why build-bots are green without adding the file is simply that IndexedDB is not yet enabled on none of the build-bots that use JSC. This is the reason why I do not want to land patches before enabling IndexedDB. I am afraid that a bunch of stuff would break when IndexedDB is enabled.

&gt; Any porting that are not added to the build-bot need to add this to their system by themselves.

At least for those build-bots, (basically) it is our responsibility to make it work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647550</commentid>
    <comment_count>22</comment_count>
      <attachid>147069</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 18:10:49 -0700</bug_when>
    <thetext>Comment on attachment 147069
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/UseJSC.cmake:60
&gt;&gt;&gt;&gt; +    bindings/js/JSDOMStringListCustom.cpp
&gt;&gt;&gt; 
&gt;&gt;&gt; This would not be the only place where you need to add the file name.
&gt;&gt;&gt; 
&gt;&gt;&gt; $ grep -r JSDOMStringMapCustom.cpp *
&gt;&gt;&gt; 
&gt;&gt;&gt; will tell you the list of build files you need to touch.
&gt;&gt; 
&gt;&gt; Well, there are so many portings and we don&apos;t have all the building system. We can only guarantee that all the systems that connect to the build-bot works, I don&apos;t want to blindly add this to other systems without verification. Any porting that are not added to the build-bot need to add this to their system by themselves.
&gt; 
&gt; What ports are you intending to support?

I am intending to support all JSC bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647556</commentid>
    <comment_count>23</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 18:20:26 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 147069 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147069&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/UseJSC.cmake:60
&gt; &gt;&gt;&gt; +    bindings/js/JSDOMStringListCustom.cpp
&gt; &gt;&gt; 
&gt; &gt;&gt; This would not be the only place where you need to add the file name.
&gt; &gt;&gt; 
&gt; &gt;&gt; $ grep -r JSDOMStringMapCustom.cpp *
&gt; &gt;&gt; 
&gt; &gt;&gt; will tell you the list of build files you need to touch.
&gt; &gt; 
&gt; &gt; Well, there are so many portings and we don&apos;t have all the building system. We can only guarantee that all the systems that connect to the build-bot works, I don&apos;t want to blindly add this to other systems without verification. Any porting that are not added to the build-bot need to add this to their system by themselves.
&gt; 
&gt; What ports are you intending to support?
&gt; 
&gt; &gt; We can only guarantee that all the systems that connect to the build-bot works
&gt; 
&gt; To guarantee that, you need to at least add the file to project.pbxproj (mac), GNUmakefile.list.am (Gtk), Target.pri (qt), WebCore.vcproj (win) and CMakeLists.txt (Efl). The reason why build-bots are green without adding the file is simply that IndexedDB is not yet enabled on none of the build-bots that use JSC. This is the reason why I do not want to land patches before enabling IndexedDB. I am afraid that a bunch of stuff would break when IndexedDB is enabled.
&gt; 
&gt; &gt; Any porting that are not added to the build-bot need to add this to their system by themselves.
&gt; 
&gt; At least for those build-bots, (basically) it is our responsibility to make it work.


1. To ask a submitter to do that is kind of hard,  you can&apos;t expect the patch submitter to have all the setups for mac, Gtk, qt, win, elf to build, test and verify.  I think it&apos;s the port-specific&apos;s responsibility to do that.

2. As you pointed out, the patch works without breaking any of above porting, because the patch is only used by IndexedDB while IndexedDB is not enabled on all above porting.  I just can&apos;t enable IndexedDB for above porting because that&apos;s also a porting-specific decision and might need some effort to do that , like it even doesn&apos;t compile when you just enable IndexedDB.

3. I am now doing this and verified the patch on BlackBerry porting, which is in the process of upstreaming.

4. If you really like, I can blindly add this to other porting, but I can&apos;t verify it on them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647583</commentid>
    <comment_count>24</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-12 18:48:02 -0700</bug_when>
    <thetext>I cannot say a strong comment since I am not familiar with Blackberry nor IndexedDB, we might want to reach a consensus about how to enable IndexedDB in JSC bindings. Comments from experts are appreciated.

(In reply to comment #23)
&gt; 1. To ask a submitter to do that is kind of hard,  you can&apos;t expect the patch submitter to have all the setups for mac, Gtk, qt, win, elf to build, test and verify.  I think it&apos;s the port-specific&apos;s responsibility to do that.
&gt; 
&gt; 2. As you pointed out, the patch works without breaking any of above porting, because the patch is only used by IndexedDB while IndexedDB is not enabled on all above porting.  I just can&apos;t enable IndexedDB for above porting because that&apos;s also a porting-specific decision and might need some effort to do that , like it even doesn&apos;t compile when you just enable IndexedDB.
&gt; 
&gt; 3. I am now doing this and verified the patch on BlackBerry porting, which is in the process of upstreaming.
&gt; 
&gt; 4. If you really like, I can blindly add this to other porting, but I can&apos;t verify it on them.


&gt;&gt; What ports are you intending to support?
&gt;
&gt; I am intending to support all JSC bindings.
&gt;

- I am a bit confused. Is your working context to enable IndexedDB on Blackberry only? Or are you planning to enable IndexedDB on, for example, AppleWebKit? (Of course this would require consensus of AppleWebKit folks.)

- Do you have any reviewer who is familiar with Blackberry?

- I would like to know your overall plan to enable IndexedDB on JSC bindings (i.e. we do not want to land a lot of patches without being enabled.) Is your plan to land the patch in bug 45110 step by step?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647592</commentid>
    <comment_count>25</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-06-12 19:06:50 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; 1. To ask a submitter to do that is kind of hard,  you can&apos;t expect the patch submitter to have all the setups for mac, Gtk, qt, win, elf to build, test and verify.  I think it&apos;s the port-specific&apos;s responsibility to do that.
&gt; 

I think it&apos;s reasonable to ask a committer to be able to compile at least two distinct ports.


&gt; 2. As you pointed out, the patch works without breaking any of above porting, because the patch is only used by IndexedDB while IndexedDB is not enabled on all above porting.  I just can&apos;t enable IndexedDB for above porting because that&apos;s also a porting-specific decision and might need some effort to do that , like it even doesn&apos;t compile when you just enable IndexedDB.

You changed tests, I&apos;d expect them to break on all other JSC ports?

&gt; 
&gt; 3. I am now doing this and verified the patch on BlackBerry porting, which is in the process of upstreaming.
&gt; 
&gt; 4. If you really like, I can blindly add this to other porting, but I can&apos;t verify it on them.

A common practice is to add a new, empty file in a separate CL that just updates all the build files. I admit that changing the build files is a cumbersome process. However, the EWS will already tell you whether the files are being picked up and compile correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647617</commentid>
    <comment_count>26</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 19:51:05 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; I cannot say a strong comment since I am not familiar with Blackberry nor IndexedDB, we might want to reach a consensus about how to enable IndexedDB in JSC bindings. Comments from experts are appreciated.
&gt; 
&gt; (In reply to comment #23)
&gt; &gt; 1. To ask a submitter to do that is kind of hard,  you can&apos;t expect the patch submitter to have all the setups for mac, Gtk, qt, win, elf to build, test and verify.  I think it&apos;s the port-specific&apos;s responsibility to do that.
&gt; &gt; 
&gt; &gt; 2. As you pointed out, the patch works without breaking any of above porting, because the patch is only used by IndexedDB while IndexedDB is not enabled on all above porting.  I just can&apos;t enable IndexedDB for above porting because that&apos;s also a porting-specific decision and might need some effort to do that , like it even doesn&apos;t compile when you just enable IndexedDB.
&gt; &gt; 
&gt; &gt; 3. I am now doing this and verified the patch on BlackBerry porting, which is in the process of upstreaming.
&gt; &gt; 
&gt; &gt; 4. If you really like, I can blindly add this to other porting, but I can&apos;t verify it on them.
&gt; 
&gt; 
&gt; &gt;&gt; What ports are you intending to support?
&gt; &gt;
&gt; &gt; I am intending to support all JSC bindings.
&gt; &gt;
&gt; 
&gt; - I am a bit confused. Is your working context to enable IndexedDB on Blackberry only? Or are you planning to enable IndexedDB on, for example, AppleWebKit? (Of course this would require consensus of AppleWebKit folks.)

1. My working context is BlackBerry porting with CMake build system,  and I verified that it works on BlackBerry porting,  the EFL porting also uses CMAKE and automatically picks this up also.
2. The patch is cross-platform, it works the same on all other platforms, even though not verified on other platforms,  we have the good faith that it will.
3. We (BlackBerry porting) are the first to enable the IDB for JSC binding,  and all portings that use JSC need this patch to support indexedDB.  They need to pick this up when they enable indexedDB. 
4. As the first poring of this for JSC, we should not be responsible to make sure all portings to get this effort-free,  just like IndexedDB first introduced for V8, they didn&apos;t make sure it also works for JSC. 

&gt; 
&gt; - Do you have any reviewer who is familiar with Blackberry?
&gt; 
Yes,  we do have some reviewers for BlackBerry, but we would like reviewers from other porting to review and comment.

&gt; - I would like to know your overall plan to enable IndexedDB on JSC bindings (i.e. we do not want to land a lot of patches without being enabled.) Is your plan to land the patch in bug 45110 step by step?

My overall plan (actually I already get it done with BlackBerry porting,  now just upstreaming it),  as you pointed out about 45110:  I have identified about 8 problems to solve to make indexedDB working for JSC , this is one of them.
Without all patches landed, IndexedDB won&apos;t work, or won&apos;t work full-functional.

There&apos;s a patch in 45110 , trying to enable IDB for JSC with one big patch,  but it fails the review for sure because it&apos;s too big, and nobody feels comfortable with such a big patch. I break it down into several small issues, each is independent.
when we have all the issues resolved,  the indexedDB is ready for JSC, and each porting can just enable it with their build system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647623</commentid>
    <comment_count>27</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-12 19:58:36 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #23)
&gt; &gt; 1. To ask a submitter to do that is kind of hard,  you can&apos;t expect the patch submitter to have all the setups for mac, Gtk, qt, win, elf to build, test and verify.  I think it&apos;s the port-specific&apos;s responsibility to do that.
&gt; &gt; 
&gt; 
&gt; I think it&apos;s reasonable to ask a committer to be able to compile at least two distinct ports.
&gt; 
   Yes, it compiles all distinct port and doesn&apos;t break any porting,   just EFL and BlackBerry  (CMake build system) are really taking advantage of the patch.  All other porting will benefit this when they enable IndexedDB. 

&gt; 
&gt; &gt; 2. As you pointed out, the patch works without breaking any of above porting, because the patch is only used by IndexedDB while IndexedDB is not enabled on all above porting.  I just can&apos;t enable IndexedDB for above porting because that&apos;s also a porting-specific decision and might need some effort to do that , like it even doesn&apos;t compile when you just enable IndexedDB.
&gt; 
&gt; You changed tests, I&apos;d expect them to break on all other JSC ports?

No, it breaks no any porting.  The build-bot will say.

&gt; 
&gt; &gt; 
&gt; &gt; 3. I am now doing this and verified the patch on BlackBerry porting, which is in the process of upstreaming.
&gt; &gt; 
&gt; &gt; 4. If you really like, I can blindly add this to other porting, but I can&apos;t verify it on them.
&gt; 
&gt; A common practice is to add a new, empty file in a separate CL that just updates all the build files. I admit that changing the build files is a cumbersome process. However, the EWS will already tell you whether the files are being picked up and compile correctly.

I can change all build system to pick up the change in this patch ( without any build failure, no regression),  but I don&apos;t have the setup to verify,  or I have to blindly change that and submit to bugzilla to take advantage of the build-bot which will try to build and verify,  but is that the good and common practice ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647804</commentid>
    <comment_count>28</comment_count>
      <attachid>147260</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-13 01:25:12 -0700</bug_when>
    <thetext>Created attachment 147260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647806</commentid>
    <comment_count>29</comment_count>
      <attachid>147260</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-13 01:28:25 -0700</bug_when>
    <thetext>Comment on attachment 147260
Patch

With this patch,  I built, test and verified on Qt/Linux,  Mac , and BlackBerry porting,  for other portings, I am counting on the build-bot to verify the correctness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647810</commentid>
    <comment_count>30</comment_count>
      <attachid>147260</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-13 01:38:44 -0700</bug_when>
    <thetext>Comment on attachment 147260
Patch

&gt; With this patch,  I built, test and verified on Qt/Linux,  Mac , and BlackBerry porting,  for other portings, I am counting on the build-bot to verify the correctness.

Sounds great! Let&apos;s land it after confirming green faces of all the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647811</commentid>
    <comment_count>31</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-13 01:42:34 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Let&apos;s land it after confirming green faces of all the bots.

That being said, the green face does not mean that IndexedDB works well on the bot, but just means that the patch does not break the build. I hope that IndexedDB is enabled in JSC bindings as soon as possible to avoid landing patches without being fully tested. (Until then, we count on your local test environment:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648515</commentid>
    <comment_count>32</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-06-13 15:31:52 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 147260 [details])
&gt; &gt; With this patch,  I built, test and verified on Qt/Linux,  Mac , and BlackBerry porting,  for other portings, I am counting on the build-bot to verify the correctness.
&gt; 
&gt; Sounds great! Let&apos;s land it after confirming green faces of all the bots.

Thanks for the review,haraken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648580</commentid>
    <comment_count>33</comment_count>
      <attachid>147260</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 16:42:14 -0700</bug_when>
    <thetext>Comment on attachment 147260
Patch

Clearing flags on attachment: 147260

Committed r120260: &lt;http://trac.webkit.org/changeset/120260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648581</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 16:42:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003866</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-24 16:45:35 -0700</bug_when>
    <thetext>Moving all JavaScriptGlue bugs to JavaScriptCore. The JavaScriptGlue framework itself is long gone. And most of the more recent bugs put in this component were put there by people who thought this was for some other aspect of “JavaScript glue” and have nothing to do with the actual original reason for the existence of this component, which was an OS-X-only framework named JavaScriptGlue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146836</attachid>
            <date>2012-06-11 05:28:47 -0700</date>
            <delta_ts>2012-06-11 19:00:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87965-20120611202847.patch</filename>
            <type>text/plain</type>
            <size>5887</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNjMmEzNmViN2IxMjgx
NGIxMzI5NzViYTNjYzM5NTBiY2M1MzU0OC4uZTFiYjZhN2NkZmY1OWFmNmY2OTJkNmI1M2M2NWM3
Nzg0NjBlMGQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA2LTExICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBOZWVk
IGN1c3RvbWl6ZWQgdG9ET01TdHJpbmdMaXN0IGZvciBJbmRleGVkREIgSlNDIGJpbmRpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzk2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBk
YXRhYmFzZSBpbnRlcmZhY2UgdXNlcyBET01TdHJpbmdMaXN0IGFzIHRoZSBpbnB1dCBwYXJhbWV0
ZXIuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgdG9ET01TdHJpbmdMaXN0KCkgY2FuJ3QgY29udmVy
dCBhbiBKU0Fycnkgb2YgU3RyaW5ncyB0bworICAgICAgICBuYXRpdmUgRE9NU3RyaW5nTGlzdC4g
IFdlIG5lZWQgYSBjdXN0b20gZnVuY3Rpb24gdG8gZG8gdGhpcy4KKworICAgICAgICAqIFVzZUpT
Qy5jbWFrZToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9ET01TdHJp
bmdMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6Cisg
ICAgICAgICogZG9tL0RPTVN0cmluZ0xpc3QuaWRsOgorCiAyMDEyLTA2LTExICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXaW5dIEZpeCBVU3Ry
aW5nIHJlbGF0ZWQgYnVpbGQgcHJvYmxlbSBpbiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
aW5zdGFuY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggMjAxNWUzYjdjZDU4NzA4M2QwOTdiNGI0
MDRmZGNiY2IzOTVmMjA4NS4uZjcxNDhmMjczNTU2Mjg5ZWU2ZDdmYjg2NmU1NWFiMWU2MzA1YTY3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtNTcsNiArNTcsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RD
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJkN2NmNWJhNGQ2ZmFmNjljNzhj
MDE5OGU5NWFiODM4NWIxOGZiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NU3RyaW5n
TGlzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmluaGVyaXRzKCZKU0FycmF5Ojpz
X2luZm8pKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJh
eSh2YWx1ZSk7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0cmluZ0xpc3QgPSBET01TdHJp
bmdMaXN0OjpjcmVhdGUoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgo
KTsgaSsrKQorICAgICAgICBzdHJpbmdMaXN0LT5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKGFycmF5
LT5nZXRJbmRleChpKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKworICAgIHJldHVy
biBzdHJpbmdMaXN0LnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCAzN2U0ZjFjZDA4ZmUzYjRjNmM5NTE3M2E3MzQzZGRhMTA1ZGQzMTZlLi5jYjBhZmNlZDQz
ZGNhYjI1ZmY0NTg1ZjFkZTgzYTE4MmQ1NjBkYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTAyMCw3ICsxMDIwLDkg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCEkaGFzUGFyZW50IHx8ICRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCJ9KSB7CiAgICAg
ICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZUZpbHRlciIpIHsKICAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcihK
U0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNWYWx1ZSk7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgfSBlbHNpZigkaW50ZXJmYWNlTmFtZSBlcSAiRE9NU3RyaW5nTGlzdCIpIHsKKyAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IHRvRE9NU3RyaW5nTGlzdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7XG4iKTsKKyAg
ICAgICAgfWVsc2UgewogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiRpbXBsVHlw
ZSogdG8ke2ludGVyZmFjZU5hbWV9KEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTI4MjUsNyArMjgyNyw4IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJDb21wYXJl
SG93IiA9PiAiUmFuZ2U6OkNvbXBhcmVIb3ciLAogICAgICJET01TdHJpbmciID0+ICJjb25zdCBT
dHJpbmcmIiwKICAgICAjIEZJWE1FOiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPywg
c2VxdWVuY2U8VD4KLSAgICAiRE9NU3RyaW5nW10iID0+ICJET01TdHJpbmdMaXN0KiIsCisgICAg
IkRPTVN0cmluZ1tdIiA9PiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+IiwKKyAgICAiRE9NU3RyaW5n
TGlzdCIgPT4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIsCiAgICAgIkRPTU9iamVjdCIgPT4gIlNj
cmlwdFZhbHVlIiwKICAgICAiTm9kZUZpbHRlciIgPT4gIlJlZlB0cjxOb2RlRmlsdGVyPiIsCiAg
ICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIlJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IiwKQEAgLTI5ODEsNyArMjk4NCwxMiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAKICAgICBp
ZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIikgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
SlNET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm4gInRvRE9N
U3RyaW5nTGlzdCgkdmFsdWUpIjsKKyAgICAgICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoZXhl
YywgJHZhbHVlKSI7CisgICAgfQorCisgICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdMaXN0Iikg
eworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0
aW9uYWwpOworICAgICAgICByZXR1cm4gInRvRE9NU3RyaW5nTGlzdChleGVjLCAkdmFsdWUpIjsK
ICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgInVuc2lnbmVkIGxvbmdbXSIpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01TdHJpbmdMaXN0LmlkbAppbmRleCA4ZjA1OWFlMmIwMzY5MjFmMjJjMjQ4ZThjZWIx
YTcwMGY2NjU2YzU2Li41YmVmODg3YmM4YTcxZjU0NDFjMmEzODFhYTVhYzNiMzE4YjEyMWMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRsCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1
bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBJbmRleGVkR2V0dGVyCisgICAg
ICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QKICAgICBd
IERPTVN0cmluZ0xpc3QgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsZW5ndGg7CiAgICAgICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0
cmluZyBpdGVtKGluIFtJc0luZGV4LE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWdu
ZWQgbG9uZyBpbmRleCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146992</attachid>
            <date>2012-06-11 19:01:03 -0700</date>
            <delta_ts>2012-06-11 23:23:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87965-20120612100103.patch</filename>
            <type>text/plain</type>
            <size>11142</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNjMmEzNmViN2IxMjgx
NGIxMzI5NzViYTNjYzM5NTBiY2M1MzU0OC4uNGVjMmNiNzBhOWE0ZGYzZWZiODNmYTI1MDkyZWYw
MzZhMmQ1MzNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA2LTExICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBOZWVk
IGN1c3RvbWl6ZWQgdG9ET01TdHJpbmdMaXN0IGZvciBJbmRleGVkREIgSlNDIGJpbmRpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzk2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBk
YXRhYmFzZSBpbnRlcmZhY2UgdXNlcyBET01TdHJpbmdMaXN0IGFzIHRoZSBpbnB1dCBwYXJhbWV0
ZXIuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgdG9ET01TdHJpbmdMaXN0KCkgY2FuJ3QgY29udmVy
dCBhbiBKU0Fycnkgb2YgU3RyaW5ncyB0byAKKyAgICAgICAgbmF0aXZlIERPTVN0cmluZ0xpc3Qu
IFdlIG5lZWQgYSBjdXN0b20gZnVuY3Rpb24gdG8gZG8gdGhpcy4KKworICAgICAgIFRlc3RzOiBj
b3JyZXNwb25kaW5nIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy8gZmlsZXMgaGF2ZSBiZWVuIHVw
ZGF0ZWQgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRE9NU3RyaW5nTGlzdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChJbmRleEdldHRl
clJldHVybnNTdHJpbmdzKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdl
dE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MpOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oOgorICAg
ICAgICAoSlNUZXN0Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kNik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCk6CisgICAgICAgICogZG9tL0RP
TVN0cmluZ0xpc3QuaWRsOgorCiAyMDEyLTA2LTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXaW5dIEZpeCBVU3RyaW5nIHJlbGF0ZWQgYnVp
bGQgcHJvYmxlbSBpbiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UKaW5kZXggMjAxNWUzYjdjZDU4NzA4M2QwOTdiNGI0MDRmZGNiY2IzOTVmMjA4
NS4uZjcxNDhmMjczNTU2Mjg5ZWU2ZDdmYjg2NmU1NWFiMWU2MzA1YTY3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQpAQCAtNTcsNiArNTcsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBi
aW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMv
SlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1
c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNE
T01Ub2tlbkxpc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAzZmYyYjRhNGYwNjk3ZWJlNmU3MjI2OTc3Mjk0MWZiOWM4
ZjJhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTGlzdEN1c3RvbS5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NU3RyaW5nTGlzdC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAoIXZhbHVlLmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CisgICAg
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0cmluZ0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUo
KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKQorICAgICAg
ICBzdHJpbmdMaXN0LT5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKGFycmF5LT5nZXRJbmRleChpKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKworICAgIHJldHVybiBzdHJpbmdMaXN0LnJl
bGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzN2U0ZjFjZDA4
ZmUzYjRjNmM5NTE3M2E3MzQzZGRhMTA1ZGQzMTZlLi40NzU5ZjE4M2UxYjExZDVhMTdjYjE1MmJh
ZjA2NWE5OTNlNzQzYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjAxLDcgKzIwMSw3IEBAIHN1YiBJbmRleEdldHRl
clJldHVybnNTdHJpbmdzCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVybiAx
IGlmICR0eXBlIGVxICJDU1NTdHlsZURlY2xhcmF0aW9uIiBvciAkdHlwZSBlcSAiTWVkaWFMaXN0
IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVRva2VuTGlzdCIg
b3IgJHR5cGUgZXEgIkRPTVNldHRhYmxlVG9rZW5MaXN0IjsKKyAgICByZXR1cm4gMSBpZiAkdHlw
ZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIgb3IgJHR5
cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0W10iICBvciAk
dHlwZSBlcSAiRE9NVG9rZW5MaXN0IiBvciAkdHlwZSBlcSAiRE9NU2V0dGFibGVUb2tlbkxpc3Qi
OwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDIwLDYgKzEwMjAsOCBAQCBzdWIgR2VuZXJhdGVI
ZWFkZXIKICAgICBpZiAoISRoYXNQYXJlbnQgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0In0pIHsKICAgICAgICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJOb2RlRmlsdGVyIikgewogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIlBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gdG9Ob2RlRmlsdGVyKEpTQzo6SlNHbG9iYWxEYXRh
JiwgSlNDOjpKU1ZhbHVlKTtcbiIpOworICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBl
cSAiRE9NU3RyaW5nTGlzdCIpIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlzdChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIkaW1wbFR5cGUqIHRvJHtpbnRlcmZhY2VOYW1lfShKU0M6OkpTVmFs
dWUpO1xuIik7CiAgICAgICAgIH0KQEAgLTI4MjUsNyArMjgyNyw4IEBAIG15ICVuYXRpdmVUeXBl
ID0gKAogICAgICJDb21wYXJlSG93IiA9PiAiUmFuZ2U6OkNvbXBhcmVIb3ciLAogICAgICJET01T
dHJpbmciID0+ICJjb25zdCBTdHJpbmcmIiwKICAgICAjIEZJWE1FOiBBZGQgcHJvcGVyIHN1cHBv
cnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4KLSAgICAiRE9NU3RyaW5nW10iID0+ICJET01T
dHJpbmdMaXN0KiIsCisgICAgIkRPTVN0cmluZ1tdIiA9PiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IiwKKyAgICAiRE9NU3RyaW5nTGlzdCIgPT4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIsCiAgICAg
IkRPTU9iamVjdCIgPT4gIlNjcmlwdFZhbHVlIiwKICAgICAiTm9kZUZpbHRlciIgPT4gIlJlZlB0
cjxOb2RlRmlsdGVyPiIsCiAgICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIlJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IiwKQEAgLTI4NjEsNiArMjg2NCw4IEBAIHN1YiBHZXROYXRp
dmVUeXBlRm9yQ2FsbGJhY2tzCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKICAgICByZXR1cm4g
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSoiIGlmICR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiOworICAgIHJldHVybiAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiIgaWYgJHR5cGUgZXEg
IkRPTVN0cmluZ0xpc3QiOworICAgIHJldHVybiAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiIg
aWYgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIjsKIAogICAgIHJldHVybiBHZXROYXRpdmVUeXBlKCR0
eXBlKTsKIH0KQEAgLTI5ODEsNyArMjk4NiwxMiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAKICAg
ICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIikgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlNET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm4gInRv
RE9NU3RyaW5nTGlzdCgkdmFsdWUpIjsKKyAgICAgICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3Qo
ZXhlYywgJHZhbHVlKSI7CisgICAgfQorCisgICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdMaXN0
IikgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01TdHJpbmdMaXN0LmgiLCAkY29u
ZGl0aW9uYWwpOworICAgICAgICByZXR1cm4gInRvRE9NU3RyaW5nTGlzdChleGVjLCAkdmFsdWUp
IjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgInVuc2lnbmVkIGxvbmdbXSIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2suY3BwCmluZGV4IGIyM2UyNjExNWJkNWYyMTliODcwNDdkMjA3YWUxNGQ1ZWQxYWVi
YjQuLmFiYWUwNDRlNjdmZWJkYTNjNjAwNTZlODNjNDc0OTQ1YjhiZDNhNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxi
YWNrV2l0aENsYXNzMlBhcmFtKENsYXNzMiogY2xhc3MyUGFyYW0sIGNvbnN0IFN0cmluZyYKICAg
ICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsKIH0KIAotYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2Fs
bGJhY2tXaXRoU3RyaW5nTGlzdChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0pCitib29sIEpTVGVz
dENhbGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gbGlzdFBhcmFtKQogewogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oCmluZGV4IDBjNDYzODkwNGEwZDc1NjNkMTVmMDY1
NzI2ZDI0ODg0MWJkZmM1MWEuLjgxOWQxMzYzNDczOWI3MzFjYzhhN2M5NGQ1MTU1ZjJhOGVhY2Vm
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFjay5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgY2FsbGJhY2tXaXRoQ2xhc3MyUGFyYW0oQ2xhc3MyKiBjbGFzczJQYXJhbSwgY29u
c3QgU3RyaW5nJiBzdHJBcmcpOwogICAgIENPTVBJTEVfQVNTRVJUKGZhbHNlKSAgICB2aXJ0dWFs
IGludCBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShDbGFzczMqIGNsYXNzM1BhcmFtKTsK
ICAgICB2aXJ0dWFsIGludCBjdXN0b21DYWxsYmFjayhDbGFzczUqIGNsYXNzNVBhcmFtLCBDbGFz
czYqIGNsYXNzNlBhcmFtKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoU3RyaW5nTGlz
dChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0pOworICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dp
dGhTdHJpbmdMaXN0KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbGlzdFBhcmFtKTsKICAgICB2
aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoQm9vbGVhbihib29sIGJvb2xQYXJhbSk7CiAgICAgdmly
dHVhbCBib29sIGNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKENsYXNzOCogY2xhc3M4UGFyYW0s
IFRoaXNDbGFzcyogdGhpc0NsYXNzUGFyYW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGE4YTYwMjMxOWM3
Y2M4MmIzYzUyNTYxZjZlMWYxMTVjNWMxMmQ1N2IuLjU3MWMyMjhhY2ViOTdlZDM2M2EyNTc4YzVj
ZDk4NDgwM2VjMzVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0yMzk3LDcgKzIzOTcsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q2KAogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihleGVjKSk7Ci0gICAgRE9NU3RyaW5nTGlzdCogbGlzdEFyZyh0b0RPTVN0cmlu
Z0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpOworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0QXJnKHRvRE9NU3RyaW5nTGlzdChl
eGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2QobGlz
dEFyZyk7CkBAIC0yNDE0LDcgKzI0MTQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KAogICAg
IFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0g
ICAgRE9NU3RyaW5nTGlzdCogYXJyYXlBcmcodG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gYXJyYXlBcmcodG9ET01TdHJpbmdMaXN0KGV4ZWMsIE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgaW1wbC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CkBAIC0yNDM2LDcg
KzI0MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZChFeGVjU3RhdAogICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNChleGVjKTsKICAgICBpZiAoKGFy
Z3NDb3VudCA9PSAxICYmIChhcmcwLmlzTnVsbCgpIHx8IGFyZzAuaXNGdW5jdGlvbigpKSkpCiAg
ICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1
KGV4ZWMpOwotICAgIGlmICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNOdWxsKCkgfHwgKGFy
ZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoJkpTRE9NU3RyaW5nTGlz
dDo6c19pbmZvKSkpKSkKKyAgICBpZiAoYXJnc0NvdW50ID09IDEpCiAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KGV4ZWMpOwogICAgIGlm
ICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNOdWxsKCkgfHwgKGFyZzAuaXNPYmplY3QoKSAm
JiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpKSkpCiAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KGV4ZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRsCmluZGV4IDhmMDU5YWUyYjAzNjkyMWYy
MmMyNDhlOGNlYjFhNzAwZjY2NTZjNTYuLjViZWY4ODdiYzhhNzFmNTQ0MWMyYTM4MWFhNWFjM2Iz
MThiMTIxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5pZGwKQEAgLTI2LDcgKzI2
LDggQEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEluZGV4ZWRH
ZXR0ZXIKKyAgICAgICAgSW5kZXhlZEdldHRlciwKKyAgICAgICAgSlNDdXN0b21Ub05hdGl2ZU9i
amVjdAogICAgIF0gRE9NU3RyaW5nTGlzdCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9
TnVsbF0gRE9NU3RyaW5nIGl0ZW0oaW4gW0lzSW5kZXgsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZp
bmVkXSB1bnNpZ25lZCBsb25nIGluZGV4KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147016</attachid>
            <date>2012-06-11 23:23:57 -0700</date>
            <delta_ts>2012-06-12 01:12:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87965-20120612143343.patch</filename>
            <type>text/plain</type>
            <size>10974</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTAwNTYxZTI0NWQ3NmNh
ZTU3NDAyYzk3NTUxMjdkNTZlYjBjZGQ1Ni4uYTg2ZWM4NzBlMDJmNWQyZGQzYzFkZjRmNGM1MTc3
NTA5NmQ4MGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA2LTExICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBOZWVk
IGN1c3RvbWl6ZWQgdG9ET01TdHJpbmdMaXN0IGZvciBJbmRleGVkREIgSlNDIGJpbmRpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzk2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBk
YXRhYmFzZSBpbnRlcmZhY2UgdXNlcyBET01TdHJpbmdMaXN0IGFzIHRoZSBpbnB1dCBwYXJhbWV0
ZXIuCisgICAgICAgIFRoZSBnZW5lcnRlZCB0b0RPTVN0cmluZ0xpc3QoKSBjYW4ndCBjb252ZXJ0
IGFuIEpTQXJyYXkgb2YgU3RyaW5ncyB0bworICAgICAgICBuYXRpdmUgRE9NU3RyaW5nTGlzdC4g
V2UgbmVlZCBhIGN1c3RvbSBmdW5jdGlvbiB0byBkbyB0aGlzLgorCisgICAgICAgIFRlc3RzOiBD
b3JyZXNwb25kaW5nIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUyBmaWxlcyBoYXZlIGJlZW4gdXBk
YXRlZCBhY2NvcmRpbmdseS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp0b0RPTVN0cmluZ0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEluZGV4R2V0dGVyUmV0dXJuc1N0cmluZ3MpOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXIpOgorICAgICAgICAoR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcyk6CisgICAgICAgIChKU1Zh
bHVlVG9OYXRpdmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tX
aXRoU3RyaW5nTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrLmg6CisgICAgICAgIChKU1Rlc3RDYWxsYmFjayk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKToK
KyAgICAgICAgKiBkb20vRE9NU3RyaW5nTGlzdC5pZGw6CisKIDIwMTItMDYtMTEgIFZpbmNlbnQg
U2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDb25zb2xpZGF0ZSBQb2lu
dGVyIExvY2sgcnVudGltZSBlbmFibGVkIGZsYWdzIHRvIGp1c3Qgb25lLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKaW5kZXggM2E2YzY0YTA1ZmIyYWFkNjE3
ZmRkYTEzOWJkOThlZmM4MzZkNzAyOS4uOTYwZTEwMGNmNmQ2OTJmZDYzYTBjY2UyNzlmNzkyMGIz
Y2U1MWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
CkBAIC0yODQsNCArMjg0LDE3IEBAIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpCiAgICAgcmV0dXJuIG9i
amVjdDsKIH0KIAorUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmluZ0xpc3QoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaW5oZXJpdHMo
JkpTQXJyYXk6OnNfaW5mbykpCisgICAgICAgIHJldHVybiAwOworCisgICAgSlNBcnJheSogYXJy
YXkgPSBhc0FycmF5KHZhbHVlKTsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3RyaW5nTGlz
dCA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBhcnJheS0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgc3RyaW5nTGlzdC0+YXBwZW5kKHVzdHJp
bmdUb1N0cmluZyhhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
KSk7CisKKyAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5k
ZXggMWJlNjMxMGE4Yzg4YmJlMmZjZGRkMDRjZTBkY2UzNWI3YTgxMmY1My4uMmQ3NDA0MDY2NWQ4
N2NmZDE2MTA3MWE3OTQwOWM5MGRhMTUxNmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKQEAgLTI1LDExICsyNSwxMiBAQAogI2luY2x1ZGUgIkNTU0ltcG9y
dFJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgotI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCi0jaW5jbHVkZSAi
SlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkRP
TVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNET01XcmFw
cGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNl
dC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKQEAgLTMyMiw2ICszMjMsOSBAQCBlbnVt
IFBhcmFtZXRlckRlZmF1bHRQb2xpY3kgewogICAgIC8vIFZhbGlkYXRlcyB0aGF0IHRoZSBwYXNz
ZWQgb2JqZWN0IGlzIGEgc2VxdWVuY2UgdHlwZSBwZXIgc2VjdGlvbiA0LjEuMTMgb2YgdGhlIFdl
YklETCBzcGVjLgogICAgIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgdW5zaWduZWQmKTsKIAorICAgIC8vIENvbnZlcnRzIEpTQXJyYXkg
b2YgU3RyaW5ncyB0byBuYXRpdmUgRE9NU3RyaW5nTGlzdC4KKyAgICBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlzdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7
CisKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbG93QWNjZXNzVG9Db250ZXh0KEpTQzo6RXhl
Y1N0YXRlKiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIGJvb2wgc2hvdWxkQWxsb3dB
Y2Nlc3NUb05vZGUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7CiAgICAgYm9vbCBzaG91bGRBbGxv
d0FjY2Vzc1RvRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzN2U0ZjFj
ZDA4ZmUzYjRjNmM5NTE3M2E3MzQzZGRhMTA1ZGQzMTZlLi40NzU5ZjE4M2UxYjExZDVhMTdjYjE1
MmJhZjA2NWE5OTNlNzQzYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjAxLDcgKzIwMSw3IEBAIHN1YiBJbmRleEdl
dHRlclJldHVybnNTdHJpbmdzCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVy
biAxIGlmICR0eXBlIGVxICJDU1NTdHlsZURlY2xhcmF0aW9uIiBvciAkdHlwZSBlcSAiTWVkaWFM
aXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVRva2VuTGlz
dCIgb3IgJHR5cGUgZXEgIkRPTVNldHRhYmxlVG9rZW5MaXN0IjsKKyAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIgb3Ig
JHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0W10iICBv
ciAkdHlwZSBlcSAiRE9NVG9rZW5MaXN0IiBvciAkdHlwZSBlcSAiRE9NU2V0dGFibGVUb2tlbkxp
c3QiOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDIwLDYgKzEwMjAsOCBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKICAgICBpZiAoISRoYXNQYXJlbnQgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0In0pIHsKICAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJOb2RlRmlsdGVyIikgewogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIlBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gdG9Ob2RlRmlsdGVyKEpTQzo6SlNHbG9iYWxE
YXRhJiwgSlNDOjpKU1ZhbHVlKTtcbiIpOworICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFt
ZSBlcSAiRE9NU3RyaW5nTGlzdCIpIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlzdChKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIkaW1wbFR5cGUqIHRvJHtpbnRlcmZhY2VOYW1lfShKU0M6OkpT
VmFsdWUpO1xuIik7CiAgICAgICAgIH0KQEAgLTI4MjUsNyArMjgyNyw4IEBAIG15ICVuYXRpdmVU
eXBlID0gKAogICAgICJDb21wYXJlSG93IiA9PiAiUmFuZ2U6OkNvbXBhcmVIb3ciLAogICAgICJE
T01TdHJpbmciID0+ICJjb25zdCBTdHJpbmcmIiwKICAgICAjIEZJWE1FOiBBZGQgcHJvcGVyIHN1
cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4KLSAgICAiRE9NU3RyaW5nW10iID0+ICJE
T01TdHJpbmdMaXN0KiIsCisgICAgIkRPTVN0cmluZ1tdIiA9PiAiUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IiwKKyAgICAiRE9NU3RyaW5nTGlzdCIgPT4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIsCiAg
ICAgIkRPTU9iamVjdCIgPT4gIlNjcmlwdFZhbHVlIiwKICAgICAiTm9kZUZpbHRlciIgPT4gIlJl
ZlB0cjxOb2RlRmlsdGVyPiIsCiAgICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIlJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IiwKQEAgLTI4NjEsNiArMjg2NCw4IEBAIHN1YiBHZXRO
YXRpdmVUeXBlRm9yQ2FsbGJhY2tzCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKICAgICByZXR1
cm4gIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSoiIGlmICR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUiOworICAgIHJldHVybiAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiIgaWYgJHR5cGUg
ZXEgIkRPTVN0cmluZ0xpc3QiOworICAgIHJldHVybiAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIjsKIAogICAgIHJldHVybiBHZXROYXRpdmVUeXBl
KCR0eXBlKTsKIH0KQEAgLTI5ODEsNyArMjk4NiwxMiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAK
ICAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIikgewogICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiSlNET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICByZXR1cm4g
InRvRE9NU3RyaW5nTGlzdCgkdmFsdWUpIjsKKyAgICAgICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xp
c3QoZXhlYywgJHZhbHVlKSI7CisgICAgfQorCisgICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdM
aXN0IikgeworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01TdHJpbmdMaXN0LmgiLCAk
Y29uZGl0aW9uYWwpOworICAgICAgICByZXR1cm4gInRvRE9NU3RyaW5nTGlzdChleGVjLCAkdmFs
dWUpIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgInVuc2lnbmVkIGxvbmdbXSIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2suY3BwCmluZGV4IGIyM2UyNjExNWJkNWYyMTliODcwNDdkMjA3YWUxNGQ1ZWQx
YWViYjQuLmFiYWUwNDRlNjdmZWJkYTNjNjAwNTZlODNjNDc0OTQ1YjhiZDNhNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aENsYXNzMlBhcmFtKENsYXNzMiogY2xhc3MyUGFyYW0sIGNvbnN0IFN0cmluZyYK
ICAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsKIH0KIAotYm9vbCBKU1Rlc3RDYWxsYmFjazo6
Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0pCitib29sIEpT
VGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gbGlzdFBhcmFtKQogewogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oCmluZGV4IDBjNDYzODkwNGEwZDc1NjNkMTVm
MDY1NzI2ZDI0ODg0MWJkZmM1MWEuLjgxOWQxMzYzNDczOWI3MzFjYzhhN2M5NGQ1MTU1ZjJhOGVh
Y2VmNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoQ2xhc3MyUGFyYW0oQ2xhc3MyKiBjbGFzczJQYXJhbSwg
Y29uc3QgU3RyaW5nJiBzdHJBcmcpOwogICAgIENPTVBJTEVfQVNTRVJUKGZhbHNlKSAgICB2aXJ0
dWFsIGludCBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShDbGFzczMqIGNsYXNzM1BhcmFt
KTsKICAgICB2aXJ0dWFsIGludCBjdXN0b21DYWxsYmFjayhDbGFzczUqIGNsYXNzNVBhcmFtLCBD
bGFzczYqIGNsYXNzNlBhcmFtKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoU3RyaW5n
TGlzdChET01TdHJpbmdMaXN0KiBsaXN0UGFyYW0pOworICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFj
a1dpdGhTdHJpbmdMaXN0KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbGlzdFBhcmFtKTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoQm9vbGVhbihib29sIGJvb2xQYXJhbSk7CiAgICAg
dmlydHVhbCBib29sIGNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKENsYXNzOCogY2xhc3M4UGFy
YW0sIFRoaXNDbGFzcyogdGhpc0NsYXNzUGFyYW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGE4YTYwMjMx
OWM3Y2M4MmIzYzUyNTYxZjZlMWYxMTVjNWMxMmQ1N2IuLjU3MWMyMjhhY2ViOTdlZDM2M2EyNTc4
YzVjZDk4NDgwM2VjMzVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0yMzk3LDcgKzIzOTcsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q2KAogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgRE9NU3RyaW5nTGlzdCogbGlzdEFyZyh0b0RPTVN0
cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0QXJnKHRvRE9NU3RyaW5nTGlz
dChleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2Qo
bGlzdEFyZyk7CkBAIC0yNDE0LDcgKzI0MTQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KAog
ICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7
Ci0gICAgRE9NU3RyaW5nTGlzdCogYXJyYXlBcmcodG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gYXJyYXlBcmcodG9ET01TdHJpbmdMaXN0KGV4ZWMsIE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgaW1wbC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CkBAIC0yNDM2
LDcgKzI0MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZChFeGVjU3RhdAogICAgICAgICByZXR1cm4ganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNChleGVjKTsKICAgICBpZiAo
KGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzTnVsbCgpIHx8IGFyZzAuaXNGdW5jdGlvbigpKSkp
CiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q1KGV4ZWMpOwotICAgIGlmICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNOdWxsKCkgfHwg
KGFyZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoJkpTRE9NU3RyaW5n
TGlzdDo6c19pbmZvKSkpKSkKKyAgICBpZiAoYXJnc0NvdW50ID09IDEpCiAgICAgICAgIHJldHVy
biBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KGV4ZWMpOwogICAg
IGlmICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNOdWxsKCkgfHwgKGFyZzAuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpKSkpCiAgICAg
ICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KGV4
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRsCmluZGV4IDhmMDU5YWUyYjAzNjky
MWYyMmMyNDhlOGNlYjFhNzAwZjY2NTZjNTYuLjViZWY4ODdiYzhhNzFmNTQ0MWMyYTM4MWFhNWFj
M2IzMThiMTIxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5pZGwKQEAgLTI2LDcg
KzI2LDggQEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEluZGV4
ZWRHZXR0ZXIKKyAgICAgICAgSW5kZXhlZEdldHRlciwKKyAgICAgICAgSlNDdXN0b21Ub05hdGl2
ZU9iamVjdAogICAgIF0gRE9NU3RyaW5nTGlzdCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5n
QXM9TnVsbF0gRE9NU3RyaW5nIGl0ZW0oaW4gW0lzSW5kZXgsT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkXSB1bnNpZ25lZCBsb25nIGluZGV4KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147030</attachid>
            <date>2012-06-12 01:12:26 -0700</date>
            <delta_ts>2012-06-12 03:45:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87965-20120612162216.patch</filename>
            <type>text/plain</type>
            <size>9901</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTAwNTYxZTI0NWQ3NmNh
ZTU3NDAyYzk3NTUxMjdkNTZlYjBjZGQ1Ni4uNjkyZjAzOTFmNGU2ZDM4NDAyMzc1MGYzM2JiMzY5
NjI0OGI3M2I3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA2LTExICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBOZWVk
IGN1c3RvbWl6ZWQgdG9ET01TdHJpbmdMaXN0IGZvciBJbmRleGVkREIgSlNDIGJpbmRpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzk2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBk
YXRhYmFzZSBpbnRlcmZhY2UgdXNlcyBET01TdHJpbmdMaXN0IGFzIHRoZSBpbnB1dCBwYXJhbWV0
ZXIuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgdG9ET01TdHJpbmdMaXN0KCkgY2FuJ3QgY29udmVy
dCBhbiBKU0FycmF5IG9mIFN0cmluZ3MgdG8KKyAgICAgICAgbmF0aXZlIERPTVN0cmluZ0xpc3Qu
IFdlIG5lZWQgYSBjdXN0b20gZnVuY3Rpb24gdG8gZG8gdGhpcy4KKworICAgICAgICBUZXN0czog
Q29ycmVzcG9uZGluZyBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMgZmlsZXMgaGF2ZSBiZWVuIHVw
ZGF0ZWQgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9ET01TdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChJbmRleEdldHRlclJldHVybnNTdHJpbmdzKToKKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKToKKyAgICAgICAgKEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MpOgorICAgICAgICAoSlNW
YWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNr
V2l0aFN0cmluZ0xpc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFjay5oOgorICAgICAgICAoSlNUZXN0Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCk6
CisgICAgICAgICogZG9tL0RPTVN0cmluZ0xpc3QuaWRsOgorCiAyMDEyLTA2LTExICBWaW5jZW50
IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29uc29saWRhdGUgUG9p
bnRlciBMb2NrIHJ1bnRpbWUgZW5hYmxlZCBmbGFncyB0byBqdXN0IG9uZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDNhNmM2NGEwNWZiMmFhZDYx
N2ZkZGExMzliZDk4ZWZjODM2ZDcwMjkuLmI0NGVjMGJjNDNiZThiNmQ3ZjFiOTlmNGFmMDAwYmJm
MTc1MWJjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlYWRlcnMuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25JbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJKU0RPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2lu
Y2x1ZGUgIkpTRXhjZXB0aW9uQmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgpA
QCAtMjg0LDQgKzI4NSwxNyBAQCBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQogICAgIHJldHVybiBvYmpl
Y3Q7CiB9CiAKK1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHZhbHVl
KTsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3RyaW5nTGlzdCA9IERPTVN0cmluZ0xpc3Q6
OmNyZWF0ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7
ICsraSkKKyAgICAgICAgc3RyaW5nTGlzdC0+YXBwZW5kKHVzdHJpbmdUb1N0cmluZyhhcnJheS0+
Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisKKyAgICByZXR1cm4g
c3RyaW5nTGlzdC5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMzdlNGYxY2QwOGZlM2I0YzZjOTUxNzNhNzM0M2RkYTEwNWRkMzE2ZS4uNDc1OWYxODNlMWIx
MWQ1YTE3Y2IxNTJiYWYwNjVhOTkzZTc0M2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIwMSw3ICsyMDEsNyBAQCBz
dWIgSW5kZXhHZXR0ZXJSZXR1cm5zU3RyaW5ncwogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAK
LSAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUg
ZXEgIk1lZGlhTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJE
T01Ub2tlbkxpc3QiIG9yICR0eXBlIGVxICJET01TZXR0YWJsZVRva2VuTGlzdCI7CisgICAgcmV0
dXJuIDEgaWYgJHR5cGUgZXEgIkNTU1N0eWxlRGVjbGFyYXRpb24iIG9yICR0eXBlIGVxICJNZWRp
YUxpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5n
TGlzdFtdIiAgb3IgJHR5cGUgZXEgIkRPTVRva2VuTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVNldHRh
YmxlVG9rZW5MaXN0IjsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTAyMCw2ICsxMDIwLDggQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCEkaGFzUGFyZW50IHx8ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCJ9KSB7CiAgICAgICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZUZpbHRlciIpIHsKICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9kZUZpbHRlcihKU0M6
OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNWYWx1ZSk7XG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVN0cmluZ0xpc3QiKSB7CisgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmluZ0xpc3QoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiJGltcGxUeXBlKiB0byR7aW50ZXJmYWNlTmFt
ZX0oSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICB9CkBAIC0yODI1LDcgKzI4MjcsOCBAQCBt
eSAlbmF0aXZlVHlwZSA9ICgKICAgICAiQ29tcGFyZUhvdyIgPT4gIlJhbmdlOjpDb21wYXJlSG93
IiwKICAgICAiRE9NU3RyaW5nIiA9PiAiY29uc3QgU3RyaW5nJiIsCiAgICAgIyBGSVhNRTogQWRk
IHByb3BlciBzdXBwb3J0IGZvciBUW10sIFRbXT8sIHNlcXVlbmNlPFQ+Ci0gICAgIkRPTVN0cmlu
Z1tdIiA9PiAiRE9NU3RyaW5nTGlzdCoiLAorICAgICJET01TdHJpbmdbXSIgPT4gIlJlZlB0cjxE
T01TdHJpbmdMaXN0PiIsCisgICAgIkRPTVN0cmluZ0xpc3QiID0+ICJSZWZQdHI8RE9NU3RyaW5n
TGlzdD4iLAogICAgICJET01PYmplY3QiID0+ICJTY3JpcHRWYWx1ZSIsCiAgICAgIk5vZGVGaWx0
ZXIiID0+ICJSZWZQdHI8Tm9kZUZpbHRlcj4iLAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUi
ID0+ICJSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCkBAIC0yODYxLDYgKzI4NjQsOCBA
QCBzdWIgR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcwogewogICAgIG15ICR0eXBlID0gc2hpZnQ7
CiAgICAgcmV0dXJuICJTZXJpYWxpemVkU2NyaXB0VmFsdWUqIiBpZiAkdHlwZSBlcSAiU2VyaWFs
aXplZFNjcmlwdFZhbHVlIjsKKyAgICByZXR1cm4gIlBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4i
IGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKKyAgICByZXR1cm4gIlBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdbXSI7CiAKICAgICByZXR1cm4gR2V0
TmF0aXZlVHlwZSgkdHlwZSk7CiB9CkBAIC0yOTgxLDcgKzI5ODYsMTIgQEAgc3ViIEpTVmFsdWVU
b05hdGl2ZQogCiAgICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIpIHsKICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTRE9NU3RyaW5nTGlzdC5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAg
ICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoJHZhbHVlKSI7CisgICAgICAgIHJldHVybiAidG9E
T01TdHJpbmdMaXN0KGV4ZWMsICR2YWx1ZSkiOworICAgIH0KKworICAgIGlmICgkdHlwZSBlcSAi
RE9NU3RyaW5nTGlzdCIpIHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NU3RyaW5n
TGlzdC5oIiwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3Qo
ZXhlYywgJHZhbHVlKSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJ1bnNpZ25lZCBsb25n
W10iKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAppbmRleCBiMjNlMjYxMTViZDVmMjE5Yjg3MDQ3ZDIw
N2FlMTRkNWVkMWFlYmI0Li5hYmFlMDQ0ZTY3ZmViZGEzYzYwMDU2ZTgzYzQ3NDk0NWI4YmQzYTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIEpTVGVzdENh
bGxiYWNrOjpjYWxsYmFja1dpdGhDbGFzczJQYXJhbShDbGFzczIqIGNsYXNzMlBhcmFtLCBjb25z
dCBTdHJpbmcmCiAgICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247CiB9CiAKLWJvb2wgSlNUZXN0
Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFt
KQorYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSkKIHsKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNr
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAppbmRleCAwYzQ2Mzg5MDRh
MGQ3NTYzZDE1ZjA2NTcyNmQyNDg4NDFiZGZjNTFhLi44MTlkMTM2MzQ3MzliNzMxY2M4YTdjOTRk
NTE1NWYyYThlYWNlZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaApAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aENsYXNzMlBhcmFtKENsYXNzMiogY2xh
c3MyUGFyYW0sIGNvbnN0IFN0cmluZyYgc3RyQXJnKTsKICAgICBDT01QSUxFX0FTU0VSVChmYWxz
ZSkgICAgdmlydHVhbCBpbnQgY2FsbGJhY2tXaXRoTm9uQm9vbFJldHVyblR5cGUoQ2xhc3MzKiBj
bGFzczNQYXJhbSk7CiAgICAgdmlydHVhbCBpbnQgY3VzdG9tQ2FsbGJhY2soQ2xhc3M1KiBjbGFz
czVQYXJhbSwgQ2xhc3M2KiBjbGFzczZQYXJhbSk7Ci0gICAgdmlydHVhbCBib29sIGNhbGxiYWNr
V2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQ
YXJhbSk7CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aEJvb2xlYW4oYm9vbCBib29sUGFy
YW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhDbGFzczgq
IGNsYXNzOFBhcmFtLCBUaGlzQ2xhc3MqIHRoaXNDbGFzc1BhcmFtKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRl
eCBhOGE2MDIzMTljN2NjODJiM2M1MjU2MWY2ZTFmMTE1YzVjMTJkNTdiLi41NzFjMjI4YWNlYjk3
ZWQzNjNhMjU3OGM1Y2Q5ODQ4MDNlYzM1ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjM5Nyw3ICsyMzk3
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNigKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIERPTVN0cmluZ0xpc3QqIGxpc3RB
cmcodG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbGlzdEFyZyh0b0RP
TVN0cmluZ0xpc3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9h
ZGVkTWV0aG9kKGxpc3RBcmcpOwpAQCAtMjQxNCw3ICsyNDE0LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kNygKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOwotICAgIERPTVN0cmluZ0xpc3QqIGFycmF5QXJnKHRvRE9NU3RyaW5nTGlzdChN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7Cisg
ICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGFycmF5QXJnKHRvRE9NU3RyaW5nTGlzdChleGVjLCBN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2QoYXJyYXlBcmcp
OwpAQCAtMjQzNiw3ICsyNDM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoRXhlY1N0YXQKICAgICAgICAg
cmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoZXhlYyk7
CiAgICAgaWYgKChhcmdzQ291bnQgPT0gMSAmJiAoYXJnMC5pc051bGwoKSB8fCBhcmcwLmlzRnVu
Y3Rpb24oKSkpKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kNShleGVjKTsKLSAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlz
TnVsbCgpIHx8IChhcmcwLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoYXJnMCktPmluaGVyaXRzKCZK
U0RPTVN0cmluZ0xpc3Q6OnNfaW5mbykpKSkpCisgICAgaWYgKGFyZ3NDb3VudCA9PSAxKQogICAg
ICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNihl
eGVjKTsKICAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzTnVsbCgpIHx8IChhcmcw
LmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoYXJnMCktPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8p
KSkpKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kNyhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdM
aXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmlkbAppbmRleCA4ZjA1
OWFlMmIwMzY5MjFmMjJjMjQ4ZThjZWIxYTcwMGY2NjU2YzU2Li41YmVmODg3YmM4YTcxZjU0NDFj
MmEzODFhYTVhYzNiMzE4YjEyMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
U3RyaW5nTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRs
CkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWwotICAg
ICAgICBJbmRleGVkR2V0dGVyCisgICAgICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgICAgIEpTQ3Vz
dG9tVG9OYXRpdmVPYmplY3QKICAgICBdIERPTVN0cmluZ0xpc3QgewogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIFtUcmVhdFJldHVybmVk
TnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBpdGVtKGluIFtJc0luZGV4LE9wdGlvbmFsPURl
ZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147039</attachid>
            <date>2012-06-12 02:11:07 -0700</date>
            <delta_ts>2012-06-12 02:23:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87965-20120612172056.patch</filename>
            <type>text/plain</type>
            <size>9682</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTAwNTYxZTI0NWQ3NmNh
ZTU3NDAyYzk3NTUxMjdkNTZlYjBjZGQ1Ni4uZjBiZDJjZmY3ZWRkNWY3YjE4NTU5YmI1MWI3NTRl
N2QwNzRkOWRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTEyICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBOZWVk
IGN1c3RvbWl6ZWQgdG9ET01TdHJpbmdMaXN0IGZvciBJbmRleGVkREIgSlNDIGJpbmRpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzk2NQorCisg
ICAgICAgIEluZGV4ZWREQiBkYXRhYmFzZSBpbnRlcmZhY2UgdXNlcyBET01TdHJpbmdMaXN0IGFz
IHRoZSBpbnB1dCBwYXJhbWV0ZXIuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgdG9ET01TdHJpbmdM
aXN0KCkgY2FuJ3QgY29udmVydCBhbiBKU0FycmF5IG9mIFN0cmluZ3MgdG8KKyAgICAgICAgbmF0
aXZlIERPTVN0cmluZ0xpc3QuIFdlIG5lZWQgYSBjdXN0b20gZnVuY3Rpb24gdG8gZG8gdGhpcy4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0RPTVN0cmluZ0xpc3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChJbmRleEdldHRlclJldHVybnNTdHJpbmdzKToKKyAgICAgICAg
KEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MpOgor
ICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJh
Y2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oOgorICAgICAgICAoSlNUZXN0Q2FsbGJhY2spOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q3KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZCk6CisgICAgICAgICogZG9tL0RPTVN0cmluZ0xpc3QuaWRsOgorCiAyMDEyLTA2
LTExICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29u
c29saWRhdGUgUG9pbnRlciBMb2NrIHJ1bnRpbWUgZW5hYmxlZCBmbGFncyB0byBqdXN0IG9uZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDNhNmM2
NGEwNWZiMmFhZDYxN2ZkZGExMzliZDk4ZWZjODM2ZDcwMjkuLmI0NGVjMGJjNDNiZThiNmQ3ZjFi
OTlmNGFmMDAwYmJmMTc1MWJjZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlYWRl
cnMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25JbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1
c3RvbS5oIgogI2luY2x1ZGUgIkpTRXhjZXB0aW9uQmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdENh
bGxTdGFjay5oIgpAQCAtMjg0LDQgKzI4NSwxNyBAQCBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVu
Y2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQogICAg
IHJldHVybiBvYmplY3Q7CiB9CiAKK1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdG9ET01TdHJp
bmdMaXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIWlzSlNB
cnJheSh2YWx1ZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgSlNBcnJheSogYXJyYXkgPSBh
c0FycmF5KHZhbHVlKTsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3RyaW5nTGlzdCA9IERP
TVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJh
eS0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgc3RyaW5nTGlzdC0+YXBwZW5kKHVzdHJpbmdUb1N0
cmluZyhhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisK
KyAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggMzdlNGYxY2QwOGZlM2I0YzZjOTUxNzNhNzM0M2RkYTEwNWRkMzE2ZS4u
NDljM2U0MmI3ODU5NWZmODMyZGFkYzZhMTVlMTQ4ODk4MWQ5ZDA5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIwMSw3
ICsyMDEsNyBAQCBzdWIgSW5kZXhHZXR0ZXJSZXR1cm5zU3RyaW5ncwogewogICAgIG15ICR0eXBl
ID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlv
biIgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9y
ICR0eXBlIGVxICJET01Ub2tlbkxpc3QiIG9yICR0eXBlIGVxICJET01TZXR0YWJsZVRva2VuTGlz
dCI7CisgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIkNTU1N0eWxlRGVjbGFyYXRpb24iIG9yICR0
eXBlIGVxICJNZWRpYUxpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0IiBvciAkdHlwZSBl
cSAiRE9NU3RyaW5nW10iICBvciAkdHlwZSBlcSAiRE9NVG9rZW5MaXN0IiBvciAkdHlwZSBlcSAi
RE9NU2V0dGFibGVUb2tlbkxpc3QiOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDIwLDYgKzEw
MjAsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoISRoYXNQYXJlbnQgfHwgJGRhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0In0pIHsK
ICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOb2RlRmlsdGVyIikgewogICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gdG9Ob2RlRmls
dGVyKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpKU1ZhbHVlKTtcbiIpOworICAgICAgICB9IGVs
c2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NU3RyaW5nTGlzdCIpIHsKKyAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICJQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5n
TGlzdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIkaW1wbFR5cGUqIHRvJHtpbnRl
cmZhY2VOYW1lfShKU0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgIH0KQEAgLTI4MjUsNyArMjgy
Nyw4IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJDb21wYXJlSG93IiA9PiAiUmFuZ2U6OkNv
bXBhcmVIb3ciLAogICAgICJET01TdHJpbmciID0+ICJjb25zdCBTdHJpbmcmIiwKICAgICAjIEZJ
WE1FOiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRbXSwgVFtdPywgc2VxdWVuY2U8VD4KLSAgICAi
RE9NU3RyaW5nW10iID0+ICJET01TdHJpbmdMaXN0KiIsCisgICAgIkRPTVN0cmluZ1tdIiA9PiAi
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IiwKKyAgICAiRE9NU3RyaW5nTGlzdCIgPT4gIlJlZlB0cjxE
T01TdHJpbmdMaXN0PiIsCiAgICAgIkRPTU9iamVjdCIgPT4gIlNjcmlwdFZhbHVlIiwKICAgICAi
Tm9kZUZpbHRlciIgPT4gIlJlZlB0cjxOb2RlRmlsdGVyPiIsCiAgICAgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSIgPT4gIlJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IiwKQEAgLTI4NjEsNiAr
Mjg2NCw4IEBAIHN1YiBHZXROYXRpdmVUeXBlRm9yQ2FsbGJhY2tzCiB7CiAgICAgbXkgJHR5cGUg
PSBzaGlmdDsKICAgICByZXR1cm4gIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSoiIGlmICR0eXBlIGVx
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOworICAgIHJldHVybiAiUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOworICAgIHJldHVybiAiUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIjsKIAogICAgIHJl
dHVybiBHZXROYXRpdmVUeXBlKCR0eXBlKTsKIH0KQEAgLTI5NzksOSArMjk4NCw5IEBAIHN1YiBK
U1ZhbHVlVG9OYXRpdmUKICAgICAgICAgcmV0dXJuICJleGVjLCAkdmFsdWUiOwogICAgIH0KIAot
ICAgIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nW10iKSB7CisgICAgaWYgKCR0eXBlIGVxICJET01T
dHJpbmdbXSIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiICkgewogICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiSlNET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICBy
ZXR1cm4gInRvRE9NU3RyaW5nTGlzdCgkdmFsdWUpIjsKKyAgICAgICAgcmV0dXJuICJ0b0RPTVN0
cmluZ0xpc3QoZXhlYywgJHZhbHVlKSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJ1bnNp
Z25lZCBsb25nW10iKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAppbmRleCBiMjNlMjYxMTViZDVmMjE5
Yjg3MDQ3ZDIwN2FlMTRkNWVkMWFlYmI0Li5hYmFlMDQ0ZTY3ZmViZGEzYzYwMDU2ZTgzYzQ3NDk0
NWI4YmQzYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29s
IEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhDbGFzczJQYXJhbShDbGFzczIqIGNsYXNzMlBh
cmFtLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247CiB9CiAKLWJv
b2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5nTGlzdCog
bGlzdFBhcmFtKQorYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSkKIHsKICAgICBpZiAoIWNhbkludm9r
ZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAppbmRleCAw
YzQ2Mzg5MDRhMGQ3NTYzZDE1ZjA2NTcyNmQyNDg4NDFiZGZjNTFhLi44MTlkMTM2MzQ3MzliNzMx
Y2M4YTdjOTRkNTE1NWYyYThlYWNlZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaApAQCAtNDUsNyArNDUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aENsYXNzMlBhcmFtKENs
YXNzMiogY2xhc3MyUGFyYW0sIGNvbnN0IFN0cmluZyYgc3RyQXJnKTsKICAgICBDT01QSUxFX0FT
U0VSVChmYWxzZSkgICAgdmlydHVhbCBpbnQgY2FsbGJhY2tXaXRoTm9uQm9vbFJldHVyblR5cGUo
Q2xhc3MzKiBjbGFzczNQYXJhbSk7CiAgICAgdmlydHVhbCBpbnQgY3VzdG9tQ2FsbGJhY2soQ2xh
c3M1KiBjbGFzczVQYXJhbSwgQ2xhc3M2KiBjbGFzczZQYXJhbSk7Ci0gICAgdmlydHVhbCBib29s
IGNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFtKTsKKyAgICB2
aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGxpc3RQYXJhbSk7CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aEJvb2xlYW4oYm9v
bCBib29sUGFyYW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFz
cyhDbGFzczgqIGNsYXNzOFBhcmFtLCBUaGlzQ2xhc3MqIHRoaXNDbGFzc1BhcmFtKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAppbmRleCBhOGE2MDIzMTljN2NjODJiM2M1MjU2MWY2ZTFmMTE1YzVjMTJkNTdiLi41NzFj
MjI4YWNlYjk3ZWQzNjNhMjU3OGM1Y2Q5ODQ4MDNlYzM1ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjM5
Nyw3ICsyMzk3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNigKICAgICBUZXN0T2JqKiBpbXBs
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIERPTVN0cmluZ0xp
c3QqIGxpc3RBcmcodG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbGlz
dEFyZyh0b0RPTVN0cmluZ0xpc3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBs
LT5vdmVybG9hZGVkTWV0aG9kKGxpc3RBcmcpOwpAQCAtMjQxNCw3ICsyNDE0LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNygKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9i
aio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoZXhlYykpOwotICAgIERPTVN0cmluZ0xpc3QqIGFycmF5QXJnKHRvRE9NU3Ry
aW5nTGlzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSk7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGFycmF5QXJnKHRvRE9NU3RyaW5nTGlz
dChleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2Qo
YXJyYXlBcmcpOwpAQCAtMjQzNiw3ICsyNDM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoRXhlY1N0YXQK
ICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDQoZXhlYyk7CiAgICAgaWYgKChhcmdzQ291bnQgPT0gMSAmJiAoYXJnMC5pc051bGwoKSB8fCBh
cmcwLmlzRnVuY3Rpb24oKSkpKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kNShleGVjKTsKLSAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYm
IChhcmcwLmlzTnVsbCgpIHx8IChhcmcwLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoYXJnMCktPmlu
aGVyaXRzKCZKU0RPTVN0cmluZ0xpc3Q6OnNfaW5mbykpKSkpCisgICAgaWYgKGFyZ3NDb3VudCA9
PSAxKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kNihleGVjKTsKICAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzTnVsbCgp
IHx8IChhcmcwLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoYXJnMCktPmluaGVyaXRzKCZKU0FycmF5
OjpzX2luZm8pKSkpKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNyhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01TdHJpbmdMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmlkbApp
bmRleCA4ZjA1OWFlMmIwMzY5MjFmMjJjMjQ4ZThjZWIxYTcwMGY2NjU2YzU2Li41YmVmODg3YmM4
YTcxZjU0NDFjMmEzODFhYTVhYzNiMzE4YjEyMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NU3RyaW5nTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmlu
Z0xpc3QuaWRsCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZh
Y2UgWwotICAgICAgICBJbmRleGVkR2V0dGVyCisgICAgICAgIEluZGV4ZWRHZXR0ZXIsCisgICAg
ICAgIEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QKICAgICBdIERPTVN0cmluZ0xpc3QgewogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIFtUcmVh
dFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBpdGVtKGluIFtJc0luZGV4LE9w
dGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147041</attachid>
            <date>2012-06-12 02:23:48 -0700</date>
            <delta_ts>2012-06-12 06:13:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87965-20120612173337.patch</filename>
            <type>text/plain</type>
            <size>9743</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTAwNTYxZTI0NWQ3NmNh
ZTU3NDAyYzk3NTUxMjdkNTZlYjBjZGQ1Ni4uMDUxYTI4ZDg1MjExZWUyZmViNmZkNTEzMTEyY2E1
NTlkZDRjMjQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTEyICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBOZWVk
IGN1c3RvbWl6ZWQgdG9ET01TdHJpbmdMaXN0IGZvciBJbmRleGVkREIgSlNDIGJpbmRpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzk2NQorCisg
ICAgICAgIEluZGV4ZWREQiBkYXRhYmFzZSBpbnRlcmZhY2UgdXNlcyBET01TdHJpbmdMaXN0IGFz
IHRoZSBpbnB1dCBwYXJhbWV0ZXIuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgdG9ET01TdHJpbmdM
aXN0KCkgY2FuJ3QgY29udmVydCBhbiBKU0FycmF5IG9mIFN0cmluZ3MgdG8KKyAgICAgICAgbmF0
aXZlIERPTVN0cmluZ0xpc3QuIFdlIG5lZWQgYSBjdXN0b20gZnVuY3Rpb24gdG8gZG8gdGhpcy4K
KworICAgICAgICBUZXN0czogQ29ycmVzcG9uZGluZyBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMg
ZmlsZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9ET01TdHJpbmdMaXN0
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoSW5kZXhHZXR0ZXJSZXR1cm5zU3RyaW5ncyk6CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZXROYXRpdmVUeXBlRm9yQ2FsbGJhY2tz
KToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENh
bGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTVGVzdENhbGxiYWNrKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kNyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QpOgorICAgICAgICAqIGRvbS9ET01TdHJpbmdMaXN0LmlkbDoKKwogMjAx
Mi0wNi0xMSAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IENvbnNvbGlkYXRlIFBvaW50ZXIgTG9jayBydW50aW1lIGVuYWJsZWQgZmxhZ3MgdG8ganVzdCBv
bmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAz
YTZjNjRhMDVmYjJhYWQ2MTdmZGRhMTM5YmQ5OGVmYzgzNmQ3MDI5Li5iNDRlYzBiYzQzYmU4YjZk
N2YxYjk5ZjRhZjAwMGJiZjE3NTFiY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiSlNET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSlNET01XaW5k
b3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0V4Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2suaCIKQEAgLTI4NCw0ICsyODUsMTcgQEAgSlNDOjpKU09iamVjdCogdG9KU1Nl
cXVlbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0aCkK
ICAgICByZXR1cm4gb2JqZWN0OwogfQogCitQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9N
U3RyaW5nTGlzdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFp
c0pTQXJyYXkodmFsdWUpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEpTQXJyYXkqIGFycmF5
ID0gYXNBcnJheSh2YWx1ZSk7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHN0cmluZ0xpc3Qg
PSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
YXJyYXktPmxlbmd0aCgpOyArK2kpCisgICAgICAgIHN0cmluZ0xpc3QtPmFwcGVuZCh1c3RyaW5n
VG9TdHJpbmcoYXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkp
OworCisgICAgcmV0dXJuIHN0cmluZ0xpc3QucmVsZWFzZSgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCmluZGV4IDM3ZTRmMWNkMDhmZTNiNGM2Yzk1MTczYTczNDNkZGExMDVkZDMx
NmUuLjQ5YzNlNDJiNzg1OTVmZjgzMmRhZGM2YTE1ZTE0ODg5ODFkOWQwOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0y
MDEsNyArMjAxLDcgQEAgc3ViIEluZGV4R2V0dGVyUmV0dXJuc1N0cmluZ3MKIHsKICAgICBteSAk
dHlwZSA9IHNoaWZ0OwogCi0gICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIkNTU1N0eWxlRGVjbGFy
YXRpb24iIG9yICR0eXBlIGVxICJNZWRpYUxpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0
IiBvciAkdHlwZSBlcSAiRE9NVG9rZW5MaXN0IiBvciAkdHlwZSBlcSAiRE9NU2V0dGFibGVUb2tl
bkxpc3QiOworICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJDU1NTdHlsZURlY2xhcmF0aW9uIiBv
ciAkdHlwZSBlcSAiTWVkaWFMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgb3IgJHR5
cGUgZXEgIkRPTVN0cmluZ1tdIiAgb3IgJHR5cGUgZXEgIkRPTVRva2VuTGlzdCIgb3IgJHR5cGUg
ZXEgIkRPTVNldHRhYmxlVG9rZW5MaXN0IjsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTAyMCw2
ICsxMDIwLDggQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCEkaGFzUGFyZW50IHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCJ9
KSB7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZUZpbHRlciIpIHsKICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IHRvTm9k
ZUZpbHRlcihKU0M6OkpTR2xvYmFsRGF0YSYsIEpTQzo6SlNWYWx1ZSk7XG4iKTsKKyAgICAgICAg
fSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVN0cmluZ0xpc3QiKSB7CisgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0
cmluZ0xpc3QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiJGltcGxUeXBlKiB0byR7
aW50ZXJmYWNlTmFtZX0oSlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICB9CkBAIC0yODI1LDcg
KzI4MjcsOCBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiQ29tcGFyZUhvdyIgPT4gIlJhbmdl
OjpDb21wYXJlSG93IiwKICAgICAiRE9NU3RyaW5nIiA9PiAiY29uc3QgU3RyaW5nJiIsCiAgICAg
IyBGSVhNRTogQWRkIHByb3BlciBzdXBwb3J0IGZvciBUW10sIFRbXT8sIHNlcXVlbmNlPFQ+Ci0g
ICAgIkRPTVN0cmluZ1tdIiA9PiAiRE9NU3RyaW5nTGlzdCoiLAorICAgICJET01TdHJpbmdbXSIg
PT4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIsCisgICAgIkRPTVN0cmluZ0xpc3QiID0+ICJSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4iLAogICAgICJET01PYmplY3QiID0+ICJTY3JpcHRWYWx1ZSIsCiAg
ICAgIk5vZGVGaWx0ZXIiID0+ICJSZWZQdHI8Tm9kZUZpbHRlcj4iLAogICAgICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUiID0+ICJSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCkBAIC0yODYx
LDYgKzI4NjQsOCBAQCBzdWIgR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcwogewogICAgIG15ICR0
eXBlID0gc2hpZnQ7CiAgICAgcmV0dXJuICJTZXJpYWxpemVkU2NyaXB0VmFsdWUqIiBpZiAkdHlw
ZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKKyAgICByZXR1cm4gIlBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKKyAgICByZXR1cm4gIlBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdbXSI7CiAKICAg
ICByZXR1cm4gR2V0TmF0aXZlVHlwZSgkdHlwZSk7CiB9CkBAIC0yOTc5LDkgKzI5ODQsOSBAQCBz
dWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgICAgIHJldHVybiAiZXhlYywgJHZhbHVlIjsKICAgICB9
CiAKLSAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIikgeworICAgIGlmICgkdHlwZSBlcSAi
RE9NU3RyaW5nW10iIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0IiApIHsKICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTRE9NU3RyaW5nTGlzdC5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAg
ICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoJHZhbHVlKSI7CisgICAgICAgIHJldHVybiAidG9E
T01TdHJpbmdMaXN0KGV4ZWMsICR2YWx1ZSkiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAi
dW5zaWduZWQgbG9uZ1tdIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXggYjIzZTI2MTE1YmQ1
ZjIxOWI4NzA0N2QyMDdhZTE0ZDVlZDFhZWJiNC4uYWJhZTA0NGU2N2ZlYmRhM2M2MDA1NmU4M2M0
NzQ5NDViOGJkM2E1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAg
Ym9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQ2xhc3MyUGFyYW0oQ2xhc3MyKiBjbGFz
czJQYXJhbSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOwogfQog
Ci1ib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xp
c3QqIGxpc3RQYXJhbSkKK2Jvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xp
c3QoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0UGFyYW0pCiB7CiAgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmgKaW5k
ZXggMGM0NjM4OTA0YTBkNzU2M2QxNWYwNjU3MjZkMjQ4ODQxYmRmYzUxYS4uODE5ZDEzNjM0NzM5
YjczMWNjOGE3Yzk0ZDUxNTVmMmE4ZWFjZWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhDbGFzczJQYXJh
bShDbGFzczIqIGNsYXNzMlBhcmFtLCBjb25zdCBTdHJpbmcmIHN0ckFyZyk7CiAgICAgQ09NUElM
RV9BU1NFUlQoZmFsc2UpICAgIHZpcnR1YWwgaW50IGNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5U
eXBlKENsYXNzMyogY2xhc3MzUGFyYW0pOwogICAgIHZpcnR1YWwgaW50IGN1c3RvbUNhbGxiYWNr
KENsYXNzNSogY2xhc3M1UGFyYW0sIENsYXNzNiogY2xhc3M2UGFyYW0pOwotICAgIHZpcnR1YWwg
Ym9vbCBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QqIGxpc3RQYXJhbSk7Cisg
ICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBsaXN0UGFyYW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhCb29sZWFu
KGJvb2wgYm9vbFBhcmFtKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tSZXF1aXJlc1RoaXNU
b1Bhc3MoQ2xhc3M4KiBjbGFzczhQYXJhbSwgVGhpc0NsYXNzKiB0aGlzQ2xhc3NQYXJhbSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggYThhNjAyMzE5YzdjYzgyYjNjNTI1NjFmNmUxZjExNWM1YzEyZDU3Yi4u
NTcxYzIyOGFjZWI5N2VkMzYzYTI1NzhjNWNkOTg0ODAzZWMzNWVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTIzOTcsNyArMjM5Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYoCiAgICAgVGVzdE9iaiog
aW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBET01TdHJp
bmdMaXN0KiBsaXN0QXJnKHRvRE9NU3RyaW5nTGlzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGxpc3RBcmcodG9ET01TdHJpbmdMaXN0KGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
aW1wbC0+b3ZlcmxvYWRlZE1ldGhvZChsaXN0QXJnKTsKQEAgLTI0MTQsNyArMjQxNCw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDcoCiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBET01TdHJpbmdMaXN0KiBhcnJheUFyZyh0b0RP
TVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBhcnJheUFyZyh0b0RPTVN0cmlu
Z0xpc3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9hZGVkTWV0
aG9kKGFycmF5QXJnKTsKQEAgLTI0MzYsNyArMjQzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNT
dGF0CiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q0KGV4ZWMpOwogICAgIGlmICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNOdWxsKCkg
fHwgYXJnMC5pc0Z1bmN0aW9uKCkpKSkKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoZXhlYyk7Ci0gICAgaWYgKChhcmdzQ291bnQgPT0g
MSAmJiAoYXJnMC5pc051bGwoKSB8fCAoYXJnMC5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzAp
LT5pbmhlcml0cygmSlNET01TdHJpbmdMaXN0OjpzX2luZm8pKSkpKQorICAgIGlmIChhcmdzQ291
bnQgPT0gMSkKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDYoZXhlYyk7CiAgICAgaWYgKChhcmdzQ291bnQgPT0gMSAmJiAoYXJnMC5pc051
bGwoKSB8fCAoYXJnMC5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzApLT5pbmhlcml0cygmSlNB
cnJheTo6c19pbmZvKSkpKSkKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDcoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NU3RyaW5nTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5p
ZGwKaW5kZXggOGYwNTlhZTJiMDM2OTIxZjIyYzI0OGU4Y2ViMWE3MDBmNjY1NmM1Ni4uNWJlZjg4
N2JjOGE3MWY1NDQxYzJhMzgxYWE1YWMzYjMxOGIxMjFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RPTVN0cmluZ0xpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01T
dHJpbmdMaXN0LmlkbApAQCAtMjYsNyArMjYsOCBAQAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50
ZXJmYWNlIFsKLSAgICAgICAgSW5kZXhlZEdldHRlcgorICAgICAgICBJbmRleGVkR2V0dGVyLAor
ICAgICAgICBKU0N1c3RvbVRvTmF0aXZlT2JqZWN0CiAgICAgXSBET01TdHJpbmdMaXN0IHsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgICAgICBb
VHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcgaXRlbShpbiBbSXNJbmRl
eCxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147069</attachid>
            <date>2012-06-12 06:13:34 -0700</date>
            <delta_ts>2012-06-13 01:25:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87965-20120612212323.patch</filename>
            <type>text/plain</type>
            <size>10705</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwOGExNzQ5OWExYTgz
NzQ2NWNiNmJjNjdlMDg0ZjI2NTc3NTcyYS4uYzg4YWM5M2NkYzM5NzlhMjgxNzc2NzFmY2UyZGQ3
YWU5OTZkMzZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA2LTEyICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBOZWVk
IGN1c3RvbWl6ZWQgdG9ET01TdHJpbmdMaXN0IGZvciBJbmRleGVkREIgSlNDIGJpbmRpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzk2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBk
YXRhYmFzZSBpbnRlcmZhY2UgdXNlcyBET01TdHJpbmdMaXN0IGFzIHRoZSBpbnB1dCBwYXJhbWV0
ZXIuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgdG9ET01TdHJpbmdMaXN0KCkgY2FuJ3QgY29udmVy
dCBhbiBKU0FycmF5IG9mIFN0cmluZ3MgdG8KKyAgICAgICAgbmF0aXZlIERPTVN0cmluZ0xpc3Qu
IFdlIG5lZWQgYSBjdXN0b20gZnVuY3Rpb24gdG8gZG8gdGhpcy4KKworICAgICAgICBUZXN0czog
Q29ycmVzcG9uZGluZyBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMgZmlsZXMgaGF2ZSBiZWVuIHVw
ZGF0ZWQgYWNjb3JkaW5nbHkuCisKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRE9NU3RyaW5nTGlzdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChJbmRleEdldHRl
clJldHVybnNTdHJpbmdzKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdl
dE5hdGl2ZVR5cGUpOgorICAgICAgICAoR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcyk6CisgICAg
ICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6
Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrLmg6CisgICAgICAgIChKU1Rlc3RDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcp
OgorICAgICAgICAqIGRvbS9ET01TdHJpbmdMaXN0LmlkbDoKKwogMjAxMi0wNi0xMiAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyMDA1MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpT
Qy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCAyMDE1ZTNiN2NkNTg3
MDgzZDA5N2I0YjQwNGZkY2JjYjM5NWYyMDg1Li5mNzE0OGYyNzM1NTYyODllZTZkN2ZiODY2ZTU1
YWIxZTYzMDVhNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC01Nyw2ICs1Nyw3IEBAIExJU1QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTRE9N
U3RyaW5nTGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjhkNWVjNTNm
ZmMzZjM2OWE5Y2M2ZmEyNjNmYWQyYjZmM2JiZjM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcApAQCAtMCwwICsx
LDQyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NU3RyaW5nTGlzdC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUuaW5oZXJpdHMoJkpTRE9NU3RyaW5nTGlzdDo6c19pbmZvKSkK
KyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTVN0cmluZ0xpc3QqPihhc09iamVjdCh2YWx1ZSkp
LT5pbXBsKCk7CisKKyAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHZhbHVlKTsKKyAgICBSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gc3RyaW5nTGlzdCA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgc3Ry
aW5nTGlzdC0+YXBwZW5kKHVzdHJpbmdUb1N0cmluZyhhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisKKyAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNl
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMzdlNGYxY2QwOGZlM2I0
YzZjOTUxNzNhNzM0M2RkYTEwNWRkMzE2ZS4uOGY4Njk5YjNiM2MwNjJkMGJjNjU0MGFmZDkzOWY4
YWUzZmYwZjM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTIwMSw3ICsyMDEsNyBAQCBzdWIgSW5kZXhHZXR0ZXJSZXR1
cm5zU3RyaW5ncwogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIgb3Ig
JHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01Ub2tlbkxpc3QiIG9yICR0
eXBlIGVxICJET01TZXR0YWJsZVRva2VuTGlzdCI7CisgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEg
IkNTU1N0eWxlRGVjbGFyYXRpb24iIG9yICR0eXBlIGVxICJNZWRpYUxpc3QiIG9yICR0eXBlIGVx
ICJET01TdHJpbmdMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nW10iICBvciAkdHlwZSBlcSAi
RE9NVG9rZW5MaXN0IiBvciAkdHlwZSBlcSAiRE9NU2V0dGFibGVUb2tlbkxpc3QiOwogICAgIHJl
dHVybiAwOwogfQogCkBAIC0xMDIwLDYgKzEwMjAsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAg
ICBpZiAoISRoYXNQYXJlbnQgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0In0pIHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJOb2RlRmlsdGVyIikgewogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlBhc3NS
ZWZQdHI8Tm9kZUZpbHRlcj4gdG9Ob2RlRmlsdGVyKEpTQzo6SlNHbG9iYWxEYXRhJiwgSlNDOjpK
U1ZhbHVlKTtcbiIpOworICAgICAgICB9IGVsc2lmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NU3Ry
aW5nTGlzdCIpIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlzdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIkaW1wbFR5cGUqIHRvJHtpbnRlcmZhY2VOYW1lfShKU0M6OkpTVmFsdWUpO1xuIik7
CiAgICAgICAgIH0KQEAgLTI4MjUsNyArMjgyNyw3IEBAIG15ICVuYXRpdmVUeXBlID0gKAogICAg
ICJDb21wYXJlSG93IiA9PiAiUmFuZ2U6OkNvbXBhcmVIb3ciLAogICAgICJET01TdHJpbmciID0+
ICJjb25zdCBTdHJpbmcmIiwKICAgICAjIEZJWE1FOiBBZGQgcHJvcGVyIHN1cHBvcnQgZm9yIFRb
XSwgVFtdPywgc2VxdWVuY2U8VD4KLSAgICAiRE9NU3RyaW5nW10iID0+ICJET01TdHJpbmdMaXN0
KiIsCisgICAgIkRPTVN0cmluZ1tdIiA9PiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+IiwKICAgICAi
RE9NT2JqZWN0IiA9PiAiU2NyaXB0VmFsdWUiLAogICAgICJOb2RlRmlsdGVyIiA9PiAiUmVmUHRy
PE5vZGVGaWx0ZXI+IiwKICAgICAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiA9PiAiUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLApAQCAtMjg1MSw2ICsyODUzLDcgQEAgc3ViIEdldE5hdGl2
ZVR5cGUKIAogICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5
cGVOZWVkaW5nVGVhck9mZigkdHlwZSk7CiAgICAgcmV0dXJuICIke3N2Z05hdGl2ZVR5cGV9KiIg
aWYgJHN2Z05hdGl2ZVR5cGU7CisgICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlm
ICR0eXBlIGVxICJET01TdHJpbmdMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nW10iOwogICAg
IHJldHVybiAkbmF0aXZlVHlwZXskdHlwZX0gaWYgZXhpc3RzICRuYXRpdmVUeXBleyR0eXBlfTsK
IAogICAgICMgRm9yIGFsbCBvdGhlciB0eXBlcywgdGhlIG5hdGl2ZSB0eXBlIGlzIGEgcG9pbnRl
ciB3aXRoIHNhbWUgdHlwZSBuYW1lIGFzIHRoZSBJREwgdHlwZS4KQEAgLTI4NjEsNiArMjg2NCw3
IEBAIHN1YiBHZXROYXRpdmVUeXBlRm9yQ2FsbGJhY2tzCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlm
dDsKICAgICByZXR1cm4gIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSoiIGlmICR0eXBlIGVxICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUiOworICAgIHJldHVybiAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdbXSI7
CiAKICAgICByZXR1cm4gR2V0TmF0aXZlVHlwZSgkdHlwZSk7CiB9CkBAIC0yOTc5LDkgKzI5ODMs
OSBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgICAgIHJldHVybiAiZXhlYywgJHZhbHVlIjsK
ICAgICB9CiAKLSAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIikgeworICAgIGlmICgkdHlw
ZSBlcSAiRE9NU3RyaW5nW10iIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0IiApIHsKICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NU3RyaW5nTGlzdC5oIiwgJGNvbmRpdGlvbmFsKTsK
LSAgICAgICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoJHZhbHVlKSI7CisgICAgICAgIHJldHVy
biAidG9ET01TdHJpbmdMaXN0KGV4ZWMsICR2YWx1ZSkiOwogICAgIH0KIAogICAgIGlmICgkdHlw
ZSBlcSAidW5zaWduZWQgbG9uZ1tdIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKaW5kZXggYjIzZTI2
MTE1YmQ1ZjIxOWI4NzA0N2QyMDdhZTE0ZDVlZDFhZWJiNC4uYWJhZTA0NGU2N2ZlYmRhM2M2MDA1
NmU4M2M0NzQ5NDViOGJkM2E1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCkBAIC0xMTIsNyArMTEy
LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQ2xhc3MyUGFyYW0oQ2xhc3My
KiBjbGFzczJQYXJhbSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9u
OwogfQogCi1ib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0
cmluZ0xpc3QqIGxpc3RQYXJhbSkKK2Jvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0
cmluZ0xpc3QoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0UGFyYW0pCiB7CiAgICAgaWYg
KCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
LmgKaW5kZXggMGM0NjM4OTA0YTBkNzU2M2QxNWYwNjU3MjZkMjQ4ODQxYmRmYzUxYS4uODE5ZDEz
NjM0NzM5YjczMWNjOGE3Yzk0ZDUxNTVmMmE4ZWFjZWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhDbGFz
czJQYXJhbShDbGFzczIqIGNsYXNzMlBhcmFtLCBjb25zdCBTdHJpbmcmIHN0ckFyZyk7CiAgICAg
Q09NUElMRV9BU1NFUlQoZmFsc2UpICAgIHZpcnR1YWwgaW50IGNhbGxiYWNrV2l0aE5vbkJvb2xS
ZXR1cm5UeXBlKENsYXNzMyogY2xhc3MzUGFyYW0pOwogICAgIHZpcnR1YWwgaW50IGN1c3RvbUNh
bGxiYWNrKENsYXNzNSogY2xhc3M1UGFyYW0sIENsYXNzNiogY2xhc3M2UGFyYW0pOwotICAgIHZp
cnR1YWwgYm9vbCBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QqIGxpc3RQYXJh
bSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiBsaXN0UGFyYW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhC
b29sZWFuKGJvb2wgYm9vbFBhcmFtKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tSZXF1aXJl
c1RoaXNUb1Bhc3MoQ2xhc3M4KiBjbGFzczhQYXJhbSwgVGhpc0NsYXNzKiB0aGlzQ2xhc3NQYXJh
bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggYThhNjAyMzE5YzdjYzgyYjNjNTI1NjFmNmUxZjExNWM1YzEy
ZDU3Yi4uOTdmMjI3NGFmNTgxOGFkNmYzN2UyMzRkN2Y1MzMyMjBlM2Y1YmUzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTIzOTcsNyArMjM5Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYoCiAgICAgVGVz
dE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBE
T01TdHJpbmdMaXN0KiBsaXN0QXJnKHRvRE9NU3RyaW5nTGlzdChNQVlCRV9NSVNTSU5HX1BBUkFN
RVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IGxpc3RBcmcodG9ET01TdHJpbmdMaXN0KGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1F
VEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgaW1wbC0+b3ZlcmxvYWRlZE1ldGhvZChsaXN0QXJnKTsKQEAgLTI0MTQsNyArMjQxNCw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcoCiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBET01TdHJpbmdMaXN0KiBhcnJheUFy
Zyh0b0RPTVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBhcnJheUFyZyh0b0RP
TVN0cmluZ0xpc3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9h
ZGVkTWV0aG9kKGFycmF5QXJnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01T
dHJpbmdMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmlkbAppbmRl
eCA4ZjA1OWFlMmIwMzY5MjFmMjJjMjQ4ZThjZWIxYTcwMGY2NjU2YzU2Li41YmVmODg3YmM4YTcx
ZjU0NDFjMmEzODFhYTVhYzNiMzE4YjEyMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NU3RyaW5nTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xp
c3QuaWRsCkBAIC0yNiw3ICsyNiw4IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2Ug
WwotICAgICAgICBJbmRleGVkR2V0dGVyCisgICAgICAgIEluZGV4ZWRHZXR0ZXIsCisgICAgICAg
IEpTQ3VzdG9tVG9OYXRpdmVPYmplY3QKICAgICBdIERPTVN0cmluZ0xpc3QgewogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgICAgIFtUcmVhdFJl
dHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBpdGVtKGluIFtJc0luZGV4LE9wdGlv
bmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gdW5zaWduZWQgbG9uZyBpbmRleCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147260</attachid>
            <date>2012-06-13 01:25:12 -0700</date>
            <delta_ts>2012-06-13 16:42:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87965-20120613162509.patch</filename>
            <type>text/plain</type>
            <size>18807</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmOWQ2NmJiMjA3ZmMw
NTI3Y2I2NzQ3YzA1NWNjYTY5NTA3NGNiYi4uNjEyMGZlNGI2ZDNlYjE0NWQ1Y2FlMzk1NDQ1NWNi
Mzc5NzIxZTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA2LTEzICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBOZWVk
IGN1c3RvbWl6ZWQgdG9ET01TdHJpbmdMaXN0IGZvciBJbmRleGVkREIgSlNDIGJpbmRpbmcuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Nzk2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluZGV4ZWREQiBk
YXRhYmFzZSBpbnRlcmZhY2UgdXNlcyBET01TdHJpbmdMaXN0IGFzIHRoZSBpbnB1dCBwYXJhbWV0
ZXIuCisgICAgICAgIFRoZSBnZW5lcmF0ZWQgdG9ET01TdHJpbmdMaXN0KCkgY2FuJ3QgY29udmVy
dCBhbiBKU0FycmF5IG9mIFN0cmluZ3MgdG8KKyAgICAgICAgbmF0aXZlIERPTVN0cmluZ0xpc3Qu
IFdlIG5lZWQgYSBjdXN0b20gZnVuY3Rpb24gdG8gZG8gdGhpcy4KKworICAgICAgICBCZWNhdXNl
IHRoaXMgcGF0Y2ggYWRkcyBvbmUgbmV3IGZpbGUgKEpTRE9NU3RyaW5nTGlzdC5jcHApLCBhbGwg
YnVpbGQgc3lzdGVtcworICAgICAgICBhcmUgdXBkYXRlZCBhY2NvcmRpbmdseSB0byBwaWNrIHVw
IHRoaXMgZmlsZS4KKworICAgICAgICAgVGVzdHM6IENvcnJlc3BvbmRpbmcgYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVkIGFjY29yZGluZ2x5LgorCisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvRE9NU3RyaW5n
TGlzdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChJbmRleEdldHRlclJldHVybnNTdHJpbmdzKToKKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKToKKyAgICAgICAgKEdldE5hdGl2ZVR5cGUpOgorICAgICAgICAoR2V0TmF0aXZlVHlwZUZv
ckNhbGxiYWNrcyk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmg6CisgICAgICAgIChKU1Rlc3RD
YWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2Q2KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDcpOgorICAgICAgICAqIGRvbS9ET01TdHJpbmdMaXN0LmlkbDoKKwog
MjAxMi0wNi0xMiAgV2VpIEphbWVzICA8amFtZXMud2VpQGludGVsLmNvbT4KIAogICAgICAgICB3
ZWJjb3JlIHNob3VsZCBkZXBlbmQgb24gd2ViY29yZV9hcm1fbmVvbiBmb3Igb25seSBhcm0gdGFy
Z2V0X2FyY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNmMWUyOThhMDRkZTA5
ZWZkYTU3YmFkZGQ3MWQxODM4YmIwNjM3MTkuLjliYjc2MmM2MjhkNmQ0NGY2Njg0ZjY4YWU0N2Nm
NjdiYmExZTk2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTM2Miw2ICsx
MzYyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01QbHVnaW5DdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAzN2JiNmJiOGIzM2VjOTQ2
NzczNDg4NTgzYTM5NGI3ZTA1ZWZlOTJjLi45MzA2MDgyN2MzZTU2NzhmNTNiZGEyOWM0MTJmZDRl
M2VjNzkxODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTI3OSw2ICsyNzksNyBAQCB2OCB7CiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3Rv
bS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpp
bmRleCAyMDE1ZTNiN2NkNTg3MDgzZDA5N2I0YjQwNGZkY2JjYjM5NWYyMDg1Li5mNzE0OGYyNzM1
NTYyODllZTZkN2ZiODY2ZTU1YWIxZTYzMDVhNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC01Nyw2
ICs1Nyw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pT
RE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFy
cmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAorICAg
IGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9K
U0RPTVN0cmluZ01hcEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggZDIyNWI5YTVmOGQ0ZWVhNTc4Y2FmYTJlZWU1YjQzOTJmMGUwNDkwNy4uODY0ZWYz
OGZhNjgwYzA2MzQ2N2EwZGJiZjc1MmQ4MDgyODEzNjllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTkyMSw2ICsxOTIxLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBl
QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFy
cmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0
b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDYxMGZlZmY0OTdk
NGY5ODRkNDE3MzllYzYwZGU2N2JjMTUxZmIzZGIuLjg4M2JmYjcxMzhiNWE1ZjBlNTBmM2Q1OWI4
ZmQwMGJhNmQ5ZWFjZGUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC02NTM5NCw2ICs2NTM5NCw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJ
PgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVN0cmluZ01h
cEN1c3RvbS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjg3YjVl
NGE3MDllZjQyNWQ3NmMzZjAwMTUxNDJiNTkwZjZlY2M5Ni4uYmU1ODQzYzQ5YTFjYTUwNDhhN2U2
ZTM0M2Y0YTBiODNkYzk2MjNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzYzNiw2ICszNjM2LDcgQEAKIAkJOThDRTQzMjYx
MjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOThDRTQzMjUxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtM
b2FkZXIuY3BwICovOyB9OwogCQk5OENFNDMyQTEyOUUwMEU1MDA1ODIxREMgLyogTGlua0xvYWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOThDRTQz
MjkxMjlFMDBFNTAwNTgyMURDIC8qIExpbmtMb2FkZXIuaCAqLzsgfTsKIAkJOThFQjFGOTUxMzEz
RkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OEVCMUY5NDEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1w
bGVtZW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBMUI2Rjk2
MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICovOyB9OwogCQk5
QjBGQjE5MTE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwRkIxOEYxNDBEQjU3OTAwMjI1
ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCAqLzsgfTsKIAkJOUIwRkIxOTIxNDBEQjU3OTAwMjI1
ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjBGQjE5MDE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24u
aCAqLzsgfTsKIAkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8qIEhUTUxCRElFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjI0REU4QzE1
MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLzsgfTsKQEAgLTEwNzI3LDYgKzEw
NzI4LDcgQEAKIAkJOThDRTQzMjUxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGlua0xvYWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk4Q0U0MzI5MTI5RTAwRTUwMDU4MjFEQyAvKiBMaW5r
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmtMb2FkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThFQjFGOTQxMzEzRkUwNTAwRDBFMUVBIC8q
IE5vdEltcGxlbWVudGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdElt
cGxlbWVudGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlBMUI2Rjk2MTU4ODY5
QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxp
ZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBWYWxp
ZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwRkIxOTAxNDBEQjU3
OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhUVFBWYWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
MjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQkRJRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTk5ODMsNiArMTk5ODUsNyBAQAogCQkJCUE5QzZFNjRBMEQ3NDY1RTcwMDY0
NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQlBOUM2RTY0QjBENzQ2
NUU3MDA2NDQyRTkgLyogSlNET01QbHVnaW5DdXN0b20uY3BwICovLAogCQkJCUJDNjQ2NDlCMTFE
ODIzOEMwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgKi8sCisJCQkJOUExQjZG
OTYxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJ
MTRFMEJDNTUxMzYxNDhBODAwMkFEMTJFIC8qIEpTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCAqLywK
IAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwICov
LAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oICov
LApAQCAtMjgwOTQsNiArMjgwOTcsNyBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAv
KiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJFMEUxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlBMUI2
Rjk3MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAppbmRleCA5YzhhMzhmZGM5NzViNzlkNzlmZDdlZDE2ZWFlYTUyMTQ3ZDk5NWQ2Li42
NmI0YTdmNDMxODRiNDAxNmRlNzdkNGEzODM0Yjg5NGU5NmFiYzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTYwLDYgKzYw
LDcgQEAKICNpbmNsdWRlICJKU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NUGx1Z2luQ3VzdG9t
LmNwcCIKKyNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVRva2VuTGlzdEN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdm
OGQ1ZWM1M2ZmYzNmMzY5YTljYzZmYTI2M2ZhZDJiNmYzYmJmMzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1v
dGlvbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNET01TdHJpbmdMaXN0Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmluZ0xpc3QoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS5pbmhlcml0cygmSlNET01TdHJpbmdMaXN0Ojpz
X2luZm8pKQorICAgICAgICByZXR1cm4ganNDYXN0PEpTRE9NU3RyaW5nTGlzdCo+KGFzT2JqZWN0
KHZhbHVlKSktPmltcGwoKTsKKworICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOworICAgIFJl
ZlB0cjxET01TdHJpbmdMaXN0PiBzdHJpbmdMaXN0ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKQorICAg
ICAgICBzdHJpbmdMaXN0LT5hcHBlbmQodXN0cmluZ1RvU3RyaW5nKGFycmF5LT5nZXRJbmRleChp
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKKworICAgIHJldHVybiBzdHJpbmdMaXN0
LnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAzN2U0ZjFj
ZDA4ZmUzYjRjNmM5NTE3M2E3MzQzZGRhMTA1ZGQzMTZlLi44Zjg2OTliM2IzYzA2MmQwYmM2NTQw
YWZkOTM5ZjhhZTNmZjBmMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjAxLDcgKzIwMSw3IEBAIHN1YiBJbmRleEdl
dHRlclJldHVybnNTdHJpbmdzCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVy
biAxIGlmICR0eXBlIGVxICJDU1NTdHlsZURlY2xhcmF0aW9uIiBvciAkdHlwZSBlcSAiTWVkaWFM
aXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVRva2VuTGlz
dCIgb3IgJHR5cGUgZXEgIkRPTVNldHRhYmxlVG9rZW5MaXN0IjsKKyAgICByZXR1cm4gMSBpZiAk
dHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIgb3Ig
JHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdbXSIgIG9yICR0
eXBlIGVxICJET01Ub2tlbkxpc3QiIG9yICR0eXBlIGVxICJET01TZXR0YWJsZVRva2VuTGlzdCI7
CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwMjAsNiArMTAyMCw4IEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogICAgIGlmICghJGhhc1BhcmVudCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QifSkgewogICAgICAgICBpZiAoJGludGVyZmFj
ZU5hbWUgZXEgIk5vZGVGaWx0ZXIiKSB7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiB0b05vZGVGaWx0ZXIoSlNDOjpKU0dsb2JhbERhdGEm
LCBKU0M6OkpTVmFsdWUpO1xuIik7CisgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJET01TdHJpbmdMaXN0IikgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlKTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiRpbXBsVHlwZSogdG8ke2ludGVyZmFjZU5hbWV9KEpTQzo6SlNWYWx1
ZSk7XG4iKTsKICAgICAgICAgfQpAQCAtMjgyNSw3ICsyODI3LDcgQEAgbXkgJW5hdGl2ZVR5cGUg
PSAoCiAgICAgIkNvbXBhcmVIb3ciID0+ICJSYW5nZTo6Q29tcGFyZUhvdyIsCiAgICAgIkRPTVN0
cmluZyIgPT4gImNvbnN0IFN0cmluZyYiLAogICAgICMgRklYTUU6IEFkZCBwcm9wZXIgc3VwcG9y
dCBmb3IgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPgotICAgICJET01TdHJpbmdbXSIgPT4gIkRPTVN0
cmluZ0xpc3QqIiwKKyAgICAiRE9NU3RyaW5nW10iID0+ICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4i
LAogICAgICJET01PYmplY3QiID0+ICJTY3JpcHRWYWx1ZSIsCiAgICAgIk5vZGVGaWx0ZXIiID0+
ICJSZWZQdHI8Tm9kZUZpbHRlcj4iLAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCkBAIC0yODUxLDYgKzI4NTMsNyBAQCBzdWIg
R2V0TmF0aXZlVHlwZQogCiAgICAgbXkgJHN2Z05hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+
R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKTsKICAgICByZXR1cm4gIiR7c3ZnTmF0aXZl
VHlwZX0qIiBpZiAkc3ZnTmF0aXZlVHlwZTsKKyAgICByZXR1cm4gIlJlZlB0cjxET01TdHJpbmdM
aXN0PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdb
XSI7CiAgICAgcmV0dXJuICRuYXRpdmVUeXBleyR0eXBlfSBpZiBleGlzdHMgJG5hdGl2ZVR5cGV7
JHR5cGV9OwogCiAgICAgIyBGb3IgYWxsIG90aGVyIHR5cGVzLCB0aGUgbmF0aXZlIHR5cGUgaXMg
YSBwb2ludGVyIHdpdGggc2FtZSB0eXBlIG5hbWUgYXMgdGhlIElETCB0eXBlLgpAQCAtMjg2MSw2
ICsyODY0LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MKIHsKICAgICBteSAkdHlw
ZSA9IHNoaWZ0OwogICAgIHJldHVybiAiU2VyaWFsaXplZFNjcmlwdFZhbHVlKiIgaWYgJHR5cGUg
ZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7CisgICAgcmV0dXJuICJQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVN0
cmluZ1tdIjsKIAogICAgIHJldHVybiBHZXROYXRpdmVUeXBlKCR0eXBlKTsKIH0KQEAgLTI5Nzks
OSArMjk4Myw5IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICAgICAgcmV0dXJuICJleGVjLCAk
dmFsdWUiOwogICAgIH0KIAotICAgIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nW10iKSB7CisgICAg
aWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiICkg
ewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0
aW9uYWwpOwotICAgICAgICByZXR1cm4gInRvRE9NU3RyaW5nTGlzdCgkdmFsdWUpIjsKKyAgICAg
ICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoZXhlYywgJHZhbHVlKSI7CiAgICAgfQogCiAgICAg
aWYgKCR0eXBlIGVxICJ1bnNpZ25lZCBsb25nW10iKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAppbmRl
eCBiMjNlMjYxMTViZDVmMjE5Yjg3MDQ3ZDIwN2FlMTRkNWVkMWFlYmI0Li5hYmFlMDQ0ZTY3ZmVi
ZGEzYzYwMDU2ZTgzYzQ3NDk0NWI4YmQzYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKQEAgLTEx
Miw3ICsxMTIsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1dpdGhDbGFzczJQYXJh
bShDbGFzczIqIGNsYXNzMlBhcmFtLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuICFyYWlzZWRF
eGNlcHRpb247CiB9CiAKLWJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xp
c3QoRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFtKQorYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJh
Y2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSkKIHsK
ICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2suaAppbmRleCAwYzQ2Mzg5MDRhMGQ3NTYzZDE1ZjA2NTcyNmQyNDg4NDFiZGZjNTFh
Li44MTlkMTM2MzQ3MzliNzMxY2M4YTdjOTRkNTE1NWYyYThlYWNlZjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2suaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbGxiYWNr
V2l0aENsYXNzMlBhcmFtKENsYXNzMiogY2xhc3MyUGFyYW0sIGNvbnN0IFN0cmluZyYgc3RyQXJn
KTsKICAgICBDT01QSUxFX0FTU0VSVChmYWxzZSkgICAgdmlydHVhbCBpbnQgY2FsbGJhY2tXaXRo
Tm9uQm9vbFJldHVyblR5cGUoQ2xhc3MzKiBjbGFzczNQYXJhbSk7CiAgICAgdmlydHVhbCBpbnQg
Y3VzdG9tQ2FsbGJhY2soQ2xhc3M1KiBjbGFzczVQYXJhbSwgQ2xhc3M2KiBjbGFzczZQYXJhbSk7
Ci0gICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoRE9NU3RyaW5nTGlzdCog
bGlzdFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSk7CiAgICAgdmlydHVhbCBib29sIGNhbGxi
YWNrV2l0aEJvb2xlYW4oYm9vbCBib29sUGFyYW0pOwogICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFj
a1JlcXVpcmVzVGhpc1RvUGFzcyhDbGFzczgqIGNsYXNzOFBhcmFtLCBUaGlzQ2xhc3MqIHRoaXND
bGFzc1BhcmFtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBhOGE2MDIzMTljN2NjODJiM2M1MjU2MWY2ZTFm
MTE1YzVjMTJkNTdiLi45N2YyMjc0YWY1ODE4YWQ2ZjM3ZTIzNGQ3ZjUzMzIyMGUzZjViZTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtMjM5Nyw3ICsyMzk3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNigK
ICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OwotICAgIERPTVN0cmluZ0xpc3QqIGxpc3RBcmcodG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKKyAgICBSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gbGlzdEFyZyh0b0RPTVN0cmluZ0xpc3QoZXhlYywgTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9hZGVkTWV0aG9kKGxpc3RBcmcpOwpAQCAtMjQxNCw3
ICsyNDE0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNygKICAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIERPTVN0cmluZ0xpc3Qq
IGFycmF5QXJnKHRvRE9NU3RyaW5nTGlzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGFycmF5
QXJnKHRvRE9NU3RyaW5nTGlzdChleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAw
LCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwt
Pm92ZXJsb2FkZWRNZXRob2QoYXJyYXlBcmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTVN0cmluZ0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTVN0cmluZ0xpc3Qu
aWRsCmluZGV4IDhmMDU5YWUyYjAzNjkyMWYyMmMyNDhlOGNlYjFhNzAwZjY2NTZjNTYuLjViZWY4
ODdiYzhhNzFmNTQ0MWMyYTM4MWFhNWFjM2IzMThiMTIxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
U3RyaW5nTGlzdC5pZGwKQEAgLTI2LDcgKzI2LDggQEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGlu
dGVyZmFjZSBbCi0gICAgICAgIEluZGV4ZWRHZXR0ZXIKKyAgICAgICAgSW5kZXhlZEdldHRlciwK
KyAgICAgICAgSlNDdXN0b21Ub05hdGl2ZU9iamVjdAogICAgIF0gRE9NU3RyaW5nTGlzdCB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgICAg
W1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIGl0ZW0oaW4gW0lzSW5k
ZXgsT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSB1bnNpZ25lZCBsb25nIGluZGV4KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>