<?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>67458</bug_id>
          
          <creation_ts>2011-09-01 17:35:13 -0700</creation_ts>
          <short_desc>Generate a WebKitCSSMatrix constructor of V8 using the IDL &apos;Constructor&apos; extended attribute</short_desc>
          <delta_ts>2011-10-12 01:34:01 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>65839</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>antonm</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>rolandsteiner</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>460956</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-01 17:35:13 -0700</bug_when>
    <thetext>Currently, the WebKitCSSMatrix constructor is written manually as a custom constructor. We should replace this with automatically generated code by the IDL &apos;Constructor&apos; extended attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460969</commentid>
    <comment_count>1</comment_count>
      <attachid>106072</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-01 17:55:44 -0700</bug_when>
    <thetext>Created attachment 106072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460979</commentid>
    <comment_count>2</comment_count>
      <attachid>106074</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-01 18:12:14 -0700</bug_when>
    <thetext>Created attachment 106074
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461065</commentid>
    <comment_count>3</comment_count>
      <attachid>106074</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-01 23:37:06 -0700</bug_when>
    <thetext>Comment on attachment 106074
Rebased Patch

I&apos;m sorry, I don&apos;t fully understand this patch.  We might need someone else to help review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461066</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-01 23:37:24 -0700</bug_when>
    <thetext>@antonm: Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461102</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-02 02:27:35 -0700</bug_when>
    <thetext>Adam and Antonm: The motivation for the change is as follows. 

As you can see in V8WebKitCSSMatrixConstructor.cpp, constructorCallback() expects that...

- If the first argument is a DOMString, the corresponding WTF::String is passed to the first argument of WebKitCSSMatrix::create().
- If the first argument is omitted, a null WTF::String (i.e. String()) is passed to the first argument of WebKitCSSMatrix::create().

I first thought that describing &apos;Constructor(in [Optional=CallWithDefaultValue] DOMString cssValue)&apos; in IDL will generate the code that behaves as above, but it does not. In fact, the generated code behaves...

- If the first argument is a DOMString, the corresponding WTF::String is passed to the first argument of WebKitCSSMatrix::create().
- If the first argument is omitted, a string &quot;undefined&quot; is passed to the first argument of WebKitCSSMatrix::create(). This is because when we execute &apos;V8Parameter cssValue(args[0])&apos; in the situation where args[0] is omitted, args[0] becomes v8::Undefined(), which will make cssValue.toString() &quot;undefined&quot;.

Thus, we need a way to express a null string in V8Parameter (note: V8Parameter is something like an abstraction class for String and AtomicString). The change in V8Binding.h is just doing this. 

The same scenario happens in other constructors, such as V8SharedWorker::constructorCallback().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461147</commentid>
    <comment_count>6</comment_count>
      <attachid>106074</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-09-02 04:05:54 -0700</bug_when>
    <thetext>Comment on attachment 106074
Rebased Patch

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

Overall, won&apos;t WithUndefinedOrNullCheck attribute do what you are looking for?

In general I am not sure (but I didn&apos;t check) that the current implementation correctly processes null, but if your policy regarding null is different, I would still suggest adding another policy to V8Parameter instead of brand-new attribute.

May you give it a try?

And probably add a test to see what happens with new WebKitCSSMatrix(null)

&gt; Source/WebCore/bindings/v8/V8Binding.h:390
&gt; +            if (m_v8Object.IsEmpty())

I would put it differently: if (m_v8Object.IsEmpty()) {  setString(String(); return true; } and remove all special cases below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461342</commentid>
    <comment_count>7</comment_count>
      <attachid>106159</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-02 11:05:36 -0700</bug_when>
    <thetext>Created attachment 106159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461343</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-02 11:05:46 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 106074 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106074&amp;action=review
&gt; 
&gt; Overall, won&apos;t WithUndefinedOrNullCheck attribute do what you are looking for?
&gt; 
&gt; In general I am not sure (but I didn&apos;t check) that the current implementation correctly processes null, but if your policy regarding null is different, 

No.

First of all, as far as I see the current implementation of V8WebKitCSSMatrixConstructor.cpp, the IDL of the WebKitCSSMatrix constructor should be Constructor(optional DOMString string), although there is no spec for the IDL since WebKitCSSMatrix is WebKit-specific. 

Given that we assume the IDL, the expected behavior is as follows (The spec is here: http://www.w3.org/TR/WebIDL/#es-DOMString):

- WebKitCSSMatrix() -&gt; a null string is passed to WebKitCSSMatrix::create().
- WebKitCSSMatrix(null) -&gt; a string &quot;null&quot; is passed to WebKitCSSMatrix::create().
- WebKitCSSMatrix(undefined) -&gt; a string &quot;undefined&quot; is passed to WebKitCSSMatrix::create().

On the other hand, WithUndefinedOrNullCheck behaves as follows:

- WebKitCSSMatrix() -&gt; a string &quot;undefined&quot; is passed to WebKitCSSMatrix::create().
- WebKitCSSMatrix(null) -&gt; a null string is passed to WebKitCSSMatrix::create().
- WebKitCSSMatrix(undefined) -&gt; a null string is passed to WebKitCSSMatrix::create().

&gt; I would still suggest adding another policy to V8Parameter instead of brand-new attribute.

I guess that adding another policy would not solve this problem. The essence is that in the current implementation there is no way to create a V8Parameter object that expresses a null String (or AtomicString). This patch enables to create the V8Parameter object that expresses a null String.


&gt; And probably add a test to see what happens with new WebKitCSSMatrix(null)

Added it to custom-constructors.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461344</commentid>
    <comment_count>9</comment_count>
      <attachid>106074</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-02 11:06:00 -0700</bug_when>
    <thetext>Comment on attachment 106074
Rebased Patch

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

&gt;&gt; Source/WebCore/bindings/v8/V8Binding.h:390
&gt;&gt; +            if (m_v8Object.IsEmpty())
&gt; 
&gt; I would put it differently: if (m_v8Object.IsEmpty()) {  setString(String(); return true; } and remove all special cases below.

Does &quot;all special cases below&quot; mean the object().IsEmpty() checks in the line 459 and 469?

I think that we cannot remove those object().IsEmpty() checks, anyway. Please note that it is not object()-&gt;IsEmpty() but object().IsEmpty(). If we omit the object().IsEmpty() checks, the following object()-&gt;IsNull() causes SEGV if object() does not exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461350</commentid>
    <comment_count>10</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-02 11:12:33 -0700</bug_when>
    <thetext>FYI: The generated code for the WebKitCSSMatrix constructor is as follows.

v8::Handle&lt;v8::Value&gt; V8WebKitCSSMatrix::constructorCallback(const v8::Arguments&amp; args)
{
    INC_STATS(&quot;DOM.WebKitCSSMatrix.Constructor&quot;);

    if (!args.IsConstructCall())
        return throwError(&quot;DOM object constructor cannot be called as a function.&quot;, V8Proxy::TypeError);


    ExceptionCode ec = 0;
    V8Parameter&lt;&gt; cssValue;
    if (args.Length() &gt;= 1)
        cssValue = V8Parameter&lt;&gt;(args[0]);
    if (!cssValue.prepare())
        return v8::Undefined();

    RefPtr&lt;WebKitCSSMatrix&gt; obj = WebKitCSSMatrix::create(cssValue, ec);
    if (ec)
        goto fail;

    V8DOMWrapper::setDOMWrapper(args.Holder(), &amp;info, obj.get());
    obj-&gt;ref();
    V8DOMWrapper::setJSWrapperForDOMObject(obj.get(), v8::Persistent&lt;v8::Object&gt;::New(args.Holder()));
    return args.Holder();
  fail:
    return throwError(ec);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461363</commentid>
    <comment_count>11</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-09-02 11:22:03 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 106074 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106074&amp;action=review
&gt; &gt; 
&gt; &gt; Overall, won&apos;t WithUndefinedOrNullCheck attribute do what you are looking for?
&gt; &gt; 
&gt; &gt; In general I am not sure (but I didn&apos;t check) that the current implementation correctly processes null, but if your policy regarding null is different, 
&gt; 
&gt; No.
&gt; 
&gt; First of all, as far as I see the current implementation of V8WebKitCSSMatrixConstructor.cpp, the IDL of the WebKitCSSMatrix constructor should be Constructor(optional DOMString string), although there is no spec for the IDL since WebKitCSSMatrix is WebKit-specific. 
&gt; 
&gt; Given that we assume the IDL, the expected behavior is as follows (The spec is here: http://www.w3.org/TR/WebIDL/#es-DOMString):
&gt; 
&gt; - WebKitCSSMatrix() -&gt; a null string is passed to WebKitCSSMatrix::create().
&gt; - WebKitCSSMatrix(null) -&gt; a string &quot;null&quot; is passed to WebKitCSSMatrix::create().
&gt; - WebKitCSSMatrix(undefined) -&gt; a string &quot;undefined&quot; is passed to WebKitCSSMatrix::create().
&gt; 
&gt; On the other hand, WithUndefinedOrNullCheck behaves as follows:
&gt; 
&gt; - WebKitCSSMatrix() -&gt; a string &quot;undefined&quot; is passed to WebKitCSSMatrix::create().
&gt; - WebKitCSSMatrix(null) -&gt; a null string is passed to WebKitCSSMatrix::create().
&gt; - WebKitCSSMatrix(undefined) -&gt; a null string is passed to WebKitCSSMatrix::create().

This strikes me as very un-JSy: in JS foo() and foo(undefined) is almost indistingishable and it appears sketchy to me distingish between those in DOM.

&gt; 
&gt; &gt; I would still suggest adding another policy to V8Parameter instead of brand-new attribute.
&gt; 
&gt; I guess that adding another policy would not solve this problem. The essence is that in the current implementation there is no way to create a V8Parameter object that expresses a null String (or AtomicString). This patch enables to create the V8Parameter object that expresses a null String.

If by null string you mean result of String() (or isNull()), then apparently V8Parameter&lt;WithNullCheck&gt; and V8Parameter&lt;WithUndefinedOrNullCheck&gt; provide exactly null strings in the proper conditions.  If you really like (but I honestly find it pretty much unJSy), you can implement &lt;WithEmptyCheck&gt; which will give you exactly your semantics.

&gt; 
&gt; 
&gt; &gt; And probably add a test to see what happens with new WebKitCSSMatrix(null)
&gt; 
&gt; Added it to custom-constructors.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461368</commentid>
    <comment_count>12</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-09-02 11:27:18 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 106074 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106074&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/v8/V8Binding.h:390
&gt; &gt;&gt; +            if (m_v8Object.IsEmpty())
&gt; &gt; 
&gt; &gt; I would put it differently: if (m_v8Object.IsEmpty()) {  setString(String(); return true; } and remove all special cases below.
&gt; 
&gt; Does &quot;all special cases below&quot; mean the object().IsEmpty() checks in the line 459 and 469?
&gt; 
&gt; I think that we cannot remove those object().IsEmpty() checks, anyway. Please note that it is not object()-&gt;IsEmpty() but object().IsEmpty(). If we omit the object().IsEmpty() checks, the following object()-&gt;IsNull() causes SEGV if object() does not exist.

Yes, I meant that.  object()-&gt;IsEmpty() just doesn&apos;t exist.

You should be able to remove the checks as at least as of now, empty handles should never reach &lt;WithNullCheck&gt; or &lt;WithUndefinedOrNullCheck&gt; and, even with your change, can only appear on &lt;Default&gt; path.

And that&apos;s exactly the reason why I suggest you to add another conversion policy into V8Parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461380</commentid>
    <comment_count>13</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-02 11:44:07 -0700</bug_when>
    <thetext>&gt; &gt; - WebKitCSSMatrix() -&gt; a null string is passed to WebKitCSSMatrix::create().
&gt; &gt; - WebKitCSSMatrix(null) -&gt; a string &quot;null&quot; is passed to WebKitCSSMatrix::create().
&gt; &gt; - WebKitCSSMatrix(undefined) -&gt; a string &quot;undefined&quot; is passed to WebKitCSSMatrix::create().
&gt; 
&gt; This strikes me as very un-JSy: in JS foo() and foo(undefined) is almost indistingishable and it appears sketchy to me distingish between those in DOM.

I feel so! However, the spec does not say so (http://www.w3.org/TR/WebIDL/#es-DOMString and http://www.w3.org/TR/WebIDL/#es-interface-call). You can find the similar discussion here (https://bugs.webkit.org/show_bug.cgi?id=62288).

&gt; &gt; I guess that adding another policy would not solve this problem. The essence is that in the current implementation there is no way to create a V8Parameter object that expresses a null String (or AtomicString). This patch enables to create the V8Parameter object that expresses a null String.
&gt; 
&gt; If by null string you mean result of String() (or isNull()), then apparently V8Parameter&lt;WithNullCheck&gt; and V8Parameter&lt;WithUndefinedOrNullCheck&gt; provide exactly null strings in the proper conditions.  If you really like (but I honestly find it pretty much unJSy), you can implement &lt;WithEmptyCheck&gt; which will give you exactly your semantics.

Hmmm, sorry for the confusion but I still think that we cannot implement &lt;WithEmptyCheck&gt;.

The current implementation does not have a V8Parameter constructor with no arguments. Thus, the following code is not allowed:

(Code I):
    V8Parameter&lt;&gt; cssValue;
    if (args.Length() &gt;= 1)
        cssValue = V8Parameter&lt;&gt;(args[0]);

Instead, we will need to write as follows:

(Code II):
    V8Parameter&lt;&gt; cssValue(args[0]);

Here, please note that args[0] returns v8::Undefined() if args[0] does not exist. args[0] also returns v8::Undefined() if args[0] exists and the value is undefined. Therefore, we cannot distinguish inside V8Parameter code whether the argument is omitted or the value of argument is undefined. To distinguish these two cases, I think that we need to allow a V8Parameter constructor with no arguments and write a code like the Code I.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461438</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-02 12:43:48 -0700</bug_when>
    <thetext>&gt; This strikes me as very un-JSy: in JS foo() and foo(undefined) is almost indistinguishable

Historically, built-in JavaScript functions and HTML DOM ones had different conventions in this regard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463282</commentid>
    <comment_count>15</comment_count>
      <attachid>106159</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-09-07 04:06:39 -0700</bug_when>
    <thetext>Comment on attachment 106159
Patch

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

First of all, sorry for delay.  And thanks a lot for clarifications.  I still dare to suggest approach which I find more systematic, but feel free to ignore the suggestion.  I do not LGTM it yet as I have two separate question, but I think this is pretty much close to LGTM.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1419
&gt; +        # Optional arguments with default values [Optional=CallWithDefaultValue] or [Optional=CallWithNullValue] should not generate an early call.

Are you sure it&apos;s a valid semantics?

For f([CallWithNullValue] a) we&apos;ll get

WebCoreTypeOfA a = convert(args[0]);

So we convert undefined to the object.  You&apos;ll generate exactly the same code for WithNullValue.  Are you sure only strings need this distinction between CallWithDefault and CallWithNull?  For example ToNumber(undefined) = Nan and that may apply to floats.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1460
&gt; +            if ($optional &amp;&amp; $optional eq &quot;CallWithNullValue&quot;) {

Sorry for being repetitive, but still one another suggestion.  Idea: if we need this distinction (missing parameter vs. undefined), let&apos;s make clear:

V8Binding.h:
enum Policy {
  MISSING_IS_UNDEFINED,
  MISSING_IS_EMPTY
}

v8::Handle&lt;v8::Value&gt; parameter(v8::Arguments&amp; args, unsigned index, Policy policy) {
  if ((policy == MISSING_IS_EMPTY) &amp;&amp; (index &lt; args.Length()))
    return v8::Handle&lt;v8::Value&gt;();
  return args[index];
}

And now instead direct args[i] we use parameter(args, i, properPolicy).

WDYT?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1470
&gt; +                    $parameterCheckString .= &quot;    $nativeType $parameterName(args[$paramIndex], true);\n&quot;;

that&apos;s probably not what you want: if didn&apos;t pass CallWithNullValue&apos;d DOMUserData, it will convert it to WebCore string &quot;undefined&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463284</commentid>
    <comment_count>16</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-09-07 04:07:22 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; This strikes me as very un-JSy: in JS foo() and foo(undefined) is almost indistinguishable
&gt; 
&gt; Historically, built-in JavaScript functions and HTML DOM ones had different conventions in this regard.

Thanks a lot, Alexey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463756</commentid>
    <comment_count>17</comment_count>
      <attachid>106670</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-07 16:26:21 -0700</bug_when>
    <thetext>Created attachment 106670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463758</commentid>
    <comment_count>18</comment_count>
      <attachid>106159</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-07 16:27:04 -0700</bug_when>
    <thetext>Comment on attachment 106159
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1419
&gt;&gt; +        # Optional arguments with default values [Optional=CallWithDefaultValue] or [Optional=CallWithNullValue] should not generate an early call.
&gt; 
&gt; Are you sure it&apos;s a valid semantics?
&gt; 
&gt; For f([CallWithNullValue] a) we&apos;ll get
&gt; 
&gt; WebCoreTypeOfA a = convert(args[0]);
&gt; 
&gt; So we convert undefined to the object.  You&apos;ll generate exactly the same code for WithNullValue.  Are you sure only strings need this distinction between CallWithDefault and CallWithNull?  For example ToNumber(undefined) = Nan and that may apply to floats.

You are right. When CallWithNullValue is set, we need to handle a missing argument as null not only for DOMString but also other type objects. Fixed.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1460

&gt; 
&gt; Sorry for being repetitive, but still one another suggestion.  Idea: if we need this distinction (missing parameter vs. undefined), let&apos;s make clear:
&gt; 
&gt; V8Binding.h:
&gt; enum Policy {
&gt;   MISSING_IS_UNDEFINED,
&gt;   MISSING_IS_EMPTY
&gt; }
&gt; 
&gt; v8::Handle&lt;v8::Value&gt; parameter(v8::Arguments&amp; args, unsigned index, Policy policy) {
&gt;   if ((policy == MISSING_IS_EMPTY) &amp;&amp; (index &lt; args.Length()))
&gt;     return v8::Handle&lt;v8::Value&gt;();
&gt;   return args[index];
&gt; }
&gt; 
&gt; And now instead direct args[i] we use parameter(args, i, properPolicy).
&gt; 
&gt; WDYT?

Makes sense! Followed your idea. (I named the method &apos;maybeMissingParameter&apos;, since &apos;parameter&apos; is already used in another place.)

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1470
&gt;&gt; +                    $parameterCheckString .= &quot;    $nativeType $parameterName(args[$paramIndex], true);\n&quot;;
&gt; 
&gt; that&apos;s probably not what you want: if didn&apos;t pass CallWithNullValue&apos;d DOMUserData, it will convert it to WebCore string &quot;undefined&quot;

You are definitely right. We should handle a missing argument as null for all type objects. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464044</commentid>
    <comment_count>19</comment_count>
      <attachid>106670</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-09-08 07:51:12 -0700</bug_when>
    <thetext>Comment on attachment 106670
Patch

LGTM!

Although I am slightly concerned that we can hit empty path due to some bugs (see the comment you removed).  But that&apos;s definitely not blocking.

Thanks a lot for the nice patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464057</commentid>
    <comment_count>20</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-08 08:17:25 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 106670 [details])
&gt; LGTM!
&gt; 
&gt; Although I am slightly concerned that we can hit empty path due to some bugs (see the comment you removed).  But that&apos;s definitely not blocking.
&gt; 
&gt; Thanks a lot for the nice patch.

antonm: Thanks for the dedicated review.

abarth: Would you please take a look (as a reviewer)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464059</commentid>
    <comment_count>21</comment_count>
      <attachid>106740</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-08 08:29:26 -0700</bug_when>
    <thetext>Created attachment 106740
Updated run-binding-tests results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464178</commentid>
    <comment_count>22</comment_count>
      <attachid>106765</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-08 11:09:45 -0700</bug_when>
    <thetext>Created attachment 106765
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464856</commentid>
    <comment_count>23</comment_count>
      <attachid>106765</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 10:09:08 -0700</bug_when>
    <thetext>Comment on attachment 106765
Rebased patch

Does this have any perf impact?  It looks like we&apos;re adding a bunch of function calls to a number of hot code paths.  Probably the Dromaeo DOM benchmark is a good one to run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464982</commentid>
    <comment_count>24</comment_count>
      <attachid>106904</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-09 12:38:50 -0700</bug_when>
    <thetext>Created attachment 106904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464983</commentid>
    <comment_count>25</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-09 12:39:55 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 106765 [details])
&gt; Does this have any perf impact?  It looks like we&apos;re adding a bunch of function calls to a number of hot code paths.  Probably the Dromaeo DOM benchmark is a good one to run.

I changed the function to MAYBE_MISSING_PARAMETER() macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465109</commentid>
    <comment_count>26</comment_count>
      <attachid>106904</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 16:55:53 -0700</bug_when>
    <thetext>Comment on attachment 106904
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.h:477
&gt; +        MISSING_IS_UNDEFINED,
&gt; +        MISSING_IS_EMPTY

These names should be in CamelCase instead of ALL_CAPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465110</commentid>
    <comment_count>27</comment_count>
      <attachid>106904</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-09 16:57:04 -0700</bug_when>
    <thetext>Comment on attachment 106904
Patch

It seems like it&apos;s about time to add the JSC implementation of these attribute.  Is there some reason we haven&apos;t done it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465114</commentid>
    <comment_count>28</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-09-09 17:01:16 -0700</bug_when>
    <thetext>&gt; These names should be in CamelCase instead of ALL_CAPS.

Sorry, I&apos;ll fix it.

(In reply to comment #27)
&gt; (From update of attachment 106904 [details])
&gt; It seems like it&apos;s about time to add the JSC implementation of these attribute.  Is there some reason we haven&apos;t done it yet.

Yes. After replacing the V8 custom constructor of SharedWorker, I am planning to implement [Constructor] in JSC. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465136</commentid>
    <comment_count>29</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-09-09 17:28:11 -0700</bug_when>
    <thetext>Committed r94891: &lt;http://trac.webkit.org/changeset/94891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482295</commentid>
    <comment_count>30</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-10-12 01:34:01 -0700</bug_when>
    <thetext>*** Bug 66276 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106072</attachid>
            <date>2011-09-01 17:55:44 -0700</date>
            <delta_ts>2011-09-01 18:12:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67458-20110901175543.patch</filename>
            <type>text/plain</type>
            <size>13240</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQyOTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZmJmYzU0MzVkNTgwZDZh
ZjA1NmY5NmE0MDU4OTgyMjJmMjJkMDJiLi4zNjlhNDQxZjFiMGJlMDQ1YWJlMTJhNDIxZjdiNzUw
NDBjN2MwYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDktMDEgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBhIFdlYktp
dENTU01hdHJpeCBjb25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25zdHJ1Y3Rvcicg
ZXh0ZW5kZWQgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIGEgJ0NhbGxXaXRoTnVsbFZhbHVlJyBleHRlbmRlZCBhdHRyaWJ1dGUu
CisgICAgICAgICdDYWxsV2l0aE51bGxWYWx1ZScgYW5kICdDYWxsV2l0aERlZmF1bHRWYWx1ZScg
YmVoYXZlIHRoZSBzYW1lCisgICAgICAgIGZvciBhIG5vbi1ET01TdHJpbmcgYXJndW1lbnQuIEZv
ciBhIERPTVN0cmluZyBhcmd1bWVudCwgaWYKKyAgICAgICAgdGhlIERPTVN0cmluZyBpcyBvcHRp
b25hbCBhbmQgb21pdHRlZCwgJ0NhbGxXaXRoRGVmYXVsdFZhbHVlJworICAgICAgICBoYW5kbGVz
IGl0IGFzIGEgc3RyaW5nICJ1bmRlZmluZWQiLCBidXQgJ0NhbGxXaXRoTnVsbFZhbHVlJworICAg
ICAgICBoYW5kbGVzIGl0IGFzIGEgbnVsbCBzdHJpbmcuCisKKyAgICAgICAgVGVzdHM6IHRyYW5z
Zm9ybXMvc3ZnLXZzLWNzcy54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3NtYXRy
aXgtMmQtaW50ZXJmYWNlLnhodG1sCisgICAgICAgICAgICAgICB0cmFuc2Zvcm1zL2Nzc21hdHJp
eC0zZC1pbnRlcmZhY2UueGh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogUmVtb3ZlZCBW
OFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzog
UmVtb3ZlZCBWOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrKTogU2V0cyBhIG51bGwgVjhQYXJhbWV0ZXIsIGlmIHRoZSBhcmd1bWVudCBzcGVj
aWZpZWQgYXMgJ0NhbGxXaXRoTnVsbFZhbHVlJyBpcyBvbWl0dGVkLgorICAgICAgICAoUmVxdWly
ZXNDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgor
ICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjpWOFBhcmFtZXRlckJhc2UpOiBBZGRl
ZCBhIFY4UGFyYW1ldGVyQmFzZSBjb25zdHJ1Y3RvciB3aXRoIG5vIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OlY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UpOiBUaGUgZmFjdCB0aGF0
IFY4UGFyYW1ldGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmplY3QgbWVhbnMgdGhhdCB3ZSBk
byBub3QgbmVlZCB0byBwcmVwYXJlIGFueXRoaW5nLCBpLmUuIHdlIHNob3VsZCBqdXN0IHJldHVy
biB0cnVlIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ojo6cHJlcGFyZSk6IElmIFY4
UGFyYW1ldGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmplY3QsIHRoZW4gd2Ugc2V0IGEgbnVs
bCBzdHJpbmcuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4
Q29uc3RydWN0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXgu
aWRsOiBBZGRlZCB0aGUgJ0NvbnN0cnVjdG9yJyBleHRlbmRlZCBhdHRyaWJ1dGUuCisKIDIwMTEt
MDktMDEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogRGVjb2RlIHF1ZXJ5L2Zvcm0gcGFyYW1ldGVycyBuYW1lcyBhcyB3ZWxs
IGFzIHZhbHVlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzNjA4YTYzNmJmYzY2MTIzODkzMGEzNzAw
Njg1M2Y3NGNkYTlmMzMwLi4xMzI4MjNmMjdjMWQyZGIzMjQxZjg1ZWU4ZmZmMzYwZTE3YzU5N2Y4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjE3LDcgKzIyMTcsNiBAQAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3Bw
JywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25z
dHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBv
aW50Q29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDBmMzM1MDI2MzMwYTE3
NmI3NWYyMGFiZDIwOGM0MTM5ZTc4MzgxMzIuLjc0MTliZDVjOTk0NTg5OTUzNzIzZjc5NjVkNzU4
MTRhYTk5NTNhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMDgsNyArMjA4LDYgQEAgdjggewogICAg
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAotICAgICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDNmY2I3MmQ4NGIzN2Q1MjkwNjIzMmRiOWZkOGZmNThjMGZmM2YyOGQuLjg5OGQ4ZDEzMzZkMTFk
ZjE4N2NjN2ZkYjg4NjZhNDMyYTFiNjJiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xMzg4LDkgKzEzODgsOSBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIAogICAgICAgICAjIE9wdGlvbmFsIGNhbGxiYWNr
cyBzaG91bGQgYmUgdHJlYXRlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB0aGV5IGFsd2F5cyBoYXZl
IGEgZGVmYXVsdCB2YWx1ZSAoMCksCiAgICAgICAgICMgYW5kIHdlIGNhbiByZWR1Y2UgdGhlIG51
bWJlciBvZiBvdmVybG9hZGVkIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBkaWZmZXJlbnQgbnVtYmVy
IG9mIHBhcmFtZXRlcnMuCi0gICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVmYXVs
dCB2YWx1ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBzaG91bGQgbm90IGdlbmVy
YXRlIGFuIGVhcmx5IGNhbGwuCisgICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVm
YXVsdCB2YWx1ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBvciBbT3B0aW9uYWw9
Q2FsbFdpdGhOdWxsVmFsdWVdIHNob3VsZCBub3QgZ2VuZXJhdGUgYW4gZWFybHkgY2FsbC4KICAg
ICAgICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn07ICAgICAgICAKLSAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUg
IkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhbGxiYWNrIn0pIHsKKyAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUg
IkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoTnVsbFZhbHVl
IiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKICAg
ICAgICAgICAgICMgR2VuZXJhdGUgZWFybHkgY2FsbCBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBw
YXJhbWV0ZXJzLgogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgpIHtcbiI7CiAgICAgICAgICAgICBteSAkZnVu
Y3Rpb25DYWxsID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1J
bmRleCwgIiAgICAiIHggMiwgJGltcGxDbGFzc05hbWUpOwpAQCAtMTQyOSw4ICsxNDI5LDIyIEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNr
U3RyaW5nIC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7CiAgICAgICAgICAgICAkcGFyYW1ldGVy
Q2hlY2tTdHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9
fiAvXlY4UGFyYW1ldGVyLykgewotICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0
aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpOwotICAgICAgICAgICAgJHBhcmFt
ZXRlckNoZWNrU3RyaW5nIC49ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0
ZXIsICRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiI7CisgICAgICAg
ICAgICBpZiAoJG9wdGlvbmFsICYmICRvcHRpb25hbCBlcSAiQ2FsbFdpdGhOdWxsVmFsdWUiKSB7
CisgICAgICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIs
ICJhcmdzWyRwYXJhbUluZGV4XSIpOworICAgICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT50
eXBlIGVxICJET01TdHJpbmciKSB7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyAuPSAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lO1xuIjsKKyAgICAgICAg
ICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPj0gIiAuICgkcGFyYW1JbmRleCArIDEpIC4gIilcbiI7CisgICAgICAgICAgICAgICAgICAg
ICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICRuYXRp
dmVUeXBlKGFyZ3NbJHBhcmFtSW5kZXhdKTtcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJh
bWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmICghJHtwYXJhbWV0ZXJOYW1lfS5wcmVwYXJlKCkp
XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTtcbiI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBrbm93IGhvdyB0byBwcm9wZXJseSBjaGVjayBm
b3IgY29udmVyc2lvbiBleGNlcHRpb25zIHdoZW4gJHBhcmFtZXRlci0+dHlwZSBpcyAiRE9NVXNl
ckRhdGEiCisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
ICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lKGFyZ3NbJHBhcmFtSW5kZXhdLCB0cnVlKTtcbiI7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBteSAkdmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5k
ZXhdIik7CisgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgIiAu
IENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0ZXIsICRuYXRpdmVUeXBlLCAkcGFyYW1ldGVy
TmFtZSwgJHZhbHVlKSAuICJcbiI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOEJpbmRpbmdNYWNyb3MuaCJ9ID0gMTsKICAgICAg
ICAgICAgICMgSWYgdGhlICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0ZSBp
cyBwcmVzZW50LCBhbmQgdGhlIGFyZ3VtZW50J3MgdHlwZSBpcyBhbgpAQCAtMzIzNyw3ICszMjUx
LDcgQEAgc3ViIFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlCiAgICAgfQogICAgIGZvcmVhY2ggbXkg
JHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CiAgICAgICAgIG15ICRvcHRp
b25hbCA9ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OwotICAg
ICAgICBpZiAoKCRvcHRpb25hbCAmJiAoJG9wdGlvbmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1
ZSIpKSB8fCAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewor
ICAgICAgICBpZiAoKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZh
bHVlIiAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoTnVsbFZhbHVlIikgfHwgJHBhcmFtZXRlci0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApp
bmRleCA1MzVkOWMxNjI1ZWQ5ZGJhYzg4Njg1MzU2ZmFlZmJkOTJiYTMyM2EwLi5mODBiOTMyMGFj
YTUxYTU4M2I0ZTE3NzkwZWU4NmQxNzAyYzc2ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaApAQCAtMzgyLDEwICszODIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBvcGVyYXRvciBBdG9taWNTdHJpbmcoKSB7IHJldHVybiB0b1N0cmluZzxBdG9taWNT
dHJpbmc+KCk7IH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgVjhQYXJhbWV0ZXJCYXNlKCkg
eyB9CiAgICAgICAgIFY4UGFyYW1ldGVyQmFzZSh2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3Qp
IDogbV92OE9iamVjdChvYmplY3QpLCBtX21vZGUoRXh0ZXJuYWxpemUpLCBtX3N0cmluZygpIHsg
fQogCiAgICAgICAgIGJvb2wgcHJlcGFyZUJhc2UoKQogICAgICAgICB7CisgICAgICAgICAgICBp
ZiAobV92OE9iamVjdC5Jc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
ICAgICAgICAgICAgIGlmIChMSUtFTFkobV92OE9iamVjdC0+SXNTdHJpbmcoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQwMiwxNSArNDA2LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgICAgIGJsb2NrLlJlVGhyb3coKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgcGF0
aCBpcyB1bmV4cGVjdGVkLiAgSG93ZXZlciB0aGVyZSBpcyBoeXBvdGhlc2lzIHRoYXQgaXQKLSAg
ICAgICAgICAgIC8vIG1pZ2h0IGJlIGNvbWJpbmF0aW9uIG9mIHY4IGFuZCB2OCBiaW5kaW5ncyBi
dWdzLiAgRm9yIG5vdwotICAgICAgICAgICAgLy8ganVzdCBiYWlsb3V0IGFzIHdlJ2xsIGNyYXNo
IGlmIGF0dGVtcHQgdG8gY29udmVydCBlbXB0eSBoYW5kbGUgaW50byBhIHN0cmluZy4KLSAgICAg
ICAgICAgIGlmIChtX3Y4T2JqZWN0LklzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtNDQ3LDYg
KzQ0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZSA8VjhQYXJhbWV0ZXJN
b2RlIE1PREUgPSBEZWZhdWx0TW9kZT4KICAgICBjbGFzcyBWOFBhcmFtZXRlcjogcHVibGljIFY4
UGFyYW1ldGVyQmFzZSB7CiAgICAgcHVibGljOgorICAgICAgICBWOFBhcmFtZXRlcigpIDogVjhQ
YXJhbWV0ZXJCYXNlKCkgeyB9CiAgICAgICAgIFY4UGFyYW1ldGVyKHY4OjpMb2NhbDx2ODo6VmFs
dWU+IG9iamVjdCkgOiBWOFBhcmFtZXRlckJhc2Uob2JqZWN0KSB7IH0KICAgICAgICAgVjhQYXJh
bWV0ZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0LCBib29sKSA6IFY4UGFyYW1ldGVyQmFz
ZShvYmplY3QpIHsgcHJlcGFyZSgpOyB9CiAKQEAgLTQ2MCw3ICs0NTYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29sIFY4UGFyYW1ldGVyPFdpdGhO
dWxsQ2hlY2s+OjpwcmVwYXJlKCkKICAgICB7Ci0gICAgICAgIGlmIChvYmplY3QoKS0+SXNOdWxs
KCkpIHsKKyAgICAgICAgaWYgKG9iamVjdCgpLklzRW1wdHkoKSB8fCBvYmplY3QoKS0+SXNOdWxs
KCkpIHsKICAgICAgICAgICAgIHNldFN0cmluZyhTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDcwLDcgKzQ2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHRlbXBsYXRlPD4gaW5saW5lIGJvb2wgVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5l
ZE9yTnVsbENoZWNrPjo6cHJlcGFyZSgpCiAgICAgewotICAgICAgICBpZiAob2JqZWN0KCktPklz
TnVsbCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmIChvYmplY3Qo
KS5Jc0VtcHR5KCkgfHwgb2JqZWN0KCktPklzTnVsbCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVmaW5l
ZCgpKSB7CiAgICAgICAgICAgICBzZXRTdHJpbmcoU3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk3ZDBlODg5ZWQyNWJjMGI2MjQ3MmQ0YTEy
YjMyNDJlMWIxMDJjYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhD
b25zdHJ1Y3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJWOFdlYktpdENTU01hdHJpeC5oIgotCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiTm9kZS5o
IgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIlY4Tm9kZS5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKLQotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhXZWJLaXRDU1NNYXRyaXg6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5XZWJLaXRDU1NNYXRyaXguQ29uc3RydWN0
b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLiIpOwotCi0gICAgLy8gRklYTUU6IFRoZSBsb2dpYyBoZXJlIGlzIGFsbW9zdCBl
eGFjdCBkdXBsaWNhdGUgb2YgVjg6OmNvbnN0cnVjdERPTU9iamVjdC4KLSAgICAvLyBDb25zaWRl
ciByZWZhY3RvcmluZyB0byByZWR1Y2UgZHVwbGljYXRpb24uCi0gICAgU3RyaW5nIGNzc1ZhbHVl
OwotICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDEpCi0gICAgICAgIGNzc1ZhbHVlID0gdG9XZWJD
b3JlU3RyaW5nKGFyZ3NbMF0pOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVm
UHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUoY3Nz
VmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHRocm93RXJyb3IoZWMpOwotCi0gICAg
Ly8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgbWF0
cml4LgotICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5m
bywgbWF0cml4LmdldCgpKTsKLSAgICByZXR1cm4gdG9WOChtYXRyaXgucmVsZWFzZSgpLCBhcmdz
LkhvbGRlcigpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTTWF0cml4LmlkbAppbmRleCA3NmZmNjAxY2Y4YzM0NzRiYmI0NTJhZWI4ZjdmYjQ2
YjlhMjRkYmMyLi45MGFhMzM0ZWYwYmM3MGU0YjJkZDQ5ODkxN2U2NjI4ZWY4M2EyNmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbApAQCAtMzAsNyArMzAsOCBAQCBtb2R1
bGUgY3NzIHsKICAgICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKICAgICAgICAgQ3VzdG9tQ29uc3Ry
dWN0RnVuY3Rpb24sCiAgICAgICAgIENvbnN0cnVjdG9yUGFyYW1ldGVycz0xLAotICAgICAgICBW
OEN1c3RvbUNvbnN0cnVjdG9yCisgICAgICAgIENvbnN0cnVjdG9yKGluIFtPcHRpb25hbD1DYWxs
V2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIGNzc1ZhbHVlKSwKKyAgICAgICAgQ29uc3RydWN0b3JS
YWlzZXNFeGNlcHRpb24sCiAgICAgXSBXZWJLaXRDU1NNYXRyaXggewogCiAgICAgICAgIC8vIFRo
ZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBsZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9m
IHRoZSA0eDQgbWF0cml4Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106074</attachid>
            <date>2011-09-01 18:12:14 -0700</date>
            <delta_ts>2011-09-07 16:26:12 -0700</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>bug-67458-20110901181212.patch</filename>
            <type>text/plain</type>
            <size>13331</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQzNzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYWZhYzUxZjMxZTFjNDlj
Y2VjNWYwMzJiZDhlMzFiOTI0NTYwNjA3Li44MmEzZjUxOTgxYTk1MzEyYWZiZmY3N2I2NTQzMzYw
YzFjOGUzODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUgQEAKIDIwMTEtMDktMDEgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KIAorICAgICAgICBHZW5lcmF0ZSBhIFdlYktp
dENTU01hdHJpeCBjb25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25zdHJ1Y3Rvcicg
ZXh0ZW5kZWQgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIGEgJ0NhbGxXaXRoTnVsbFZhbHVlJyBleHRlbmRlZCBhdHRyaWJ1dGUu
CisgICAgICAgICdDYWxsV2l0aE51bGxWYWx1ZScgYW5kICdDYWxsV2l0aERlZmF1bHRWYWx1ZScg
YmVoYXZlIHRoZSBzYW1lCisgICAgICAgIGZvciBhIG5vbi1ET01TdHJpbmcgYXJndW1lbnQuIEZv
ciBhIERPTVN0cmluZyBhcmd1bWVudCwgaWYKKyAgICAgICAgdGhlIERPTVN0cmluZyBpcyBvcHRp
b25hbCBhbmQgb21pdHRlZCwgJ0NhbGxXaXRoRGVmYXVsdFZhbHVlJworICAgICAgICBoYW5kbGVz
IGl0IGFzIGEgc3RyaW5nICJ1bmRlZmluZWQiLCBidXQgJ0NhbGxXaXRoTnVsbFZhbHVlJworICAg
ICAgICBoYW5kbGVzIGl0IGFzIGEgbnVsbCBzdHJpbmcuCisKKyAgICAgICAgVGVzdHM6IHRyYW5z
Zm9ybXMvc3ZnLXZzLWNzcy54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3NtYXRy
aXgtMmQtaW50ZXJmYWNlLnhodG1sCisgICAgICAgICAgICAgICB0cmFuc2Zvcm1zL2Nzc21hdHJp
eC0zZC1pbnRlcmZhY2UueGh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogUmVtb3ZlZCBW
OFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzog
UmVtb3ZlZCBWOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrKTogU2V0cyBhIG51bGwgVjhQYXJhbWV0ZXIsIGlmIHRoZSBhcmd1bWVudCBzcGVj
aWZpZWQgYXMgJ0NhbGxXaXRoTnVsbFZhbHVlJyBpcyBvbWl0dGVkLgorICAgICAgICAoUmVxdWly
ZXNDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgor
ICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjpWOFBhcmFtZXRlckJhc2UpOiBBZGRl
ZCBhIFY4UGFyYW1ldGVyQmFzZSBjb25zdHJ1Y3RvciB3aXRoIG5vIGFyZ3VtZW50cy4KKyAgICAg
ICAgKFdlYkNvcmU6OlY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UpOiBUaGUgZmFjdCB0aGF0
IFY4UGFyYW1ldGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmplY3QgbWVhbnMgdGhhdCB3ZSBk
byBub3QgbmVlZCB0byBwcmVwYXJlIGFueXRoaW5nLCBpLmUuIHdlIHNob3VsZCBqdXN0IHJldHVy
biB0cnVlIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ojo6cHJlcGFyZSk6IElmIFY4
UGFyYW1ldGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmplY3QsIHRoZW4gd2Ugc2V0IGEgbnVs
bCBzdHJpbmcuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4
Q29uc3RydWN0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXgu
aWRsOiBBZGRlZCB0aGUgJ0NvbnN0cnVjdG9yJyBleHRlbmRlZCBhdHRyaWJ1dGUuCisKKzIwMTEt
MDktMDEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKwogICAgICAgICBHZW5l
cmF0ZSBhIEZpbGVSZWFkZXIgY29uc3RydWN0b3Igb2YgVjggdXNpbmcgdGhlIElETCAnQ29uc3Ry
dWN0b3InIGV4dGVuZGVkIGF0dHJpYnV0ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njc0MTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI4MzYzZmUxYzZj
YTA1ZTA2YTRjYTBiNWY2ODIzYmE3NjU5YTQ1M2YuLjQ2YTE0YzlmOGFmM2JiMDg0MThkMjY3Mjlj
YTViMDhiZThjMjlmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIyMTgsNyArMjIxOCw2IEBACiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1h
dGlvbkN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktp
dENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXgg
OGY1MzJjYzc2MjZmZjg5YjBlYzAxZTI3YjdmMDZjMjJiNTM4NGYxMi4uN2RiYTcwZTFiNjJjMWQy
MWM0MWI5NTNiYzQ5N2I2Njc4MThlMWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIwOCw3ICsyMDgs
NiBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0QW5pbWF0aW9uQ3VzdG9t
LmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0
cnVjdG9yLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29u
c3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4
dEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20u
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KaW5kZXggOWUyNjM0MDViNzQ1MmRlZjRiZTU0YTM5OTBmN2UxYTlhMGY2ZDhlMy4u
MWQxZGVlNzJhNzhiYmExMTMxMTQ2YjMwMjg3ZTllYjJiOGQwYTZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE0MTYs
OSArMTQxNiw5IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAgICAgICMgT3B0
aW9uYWwgY2FsbGJhY2tzIHNob3VsZCBiZSB0cmVhdGVkIGRpZmZlcmVudGx5LCBiZWNhdXNlIHRo
ZXkgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHZhbHVlICgwKSwKICAgICAgICAgIyBhbmQgd2UgY2Fu
IHJlZHVjZSB0aGUgbnVtYmVyIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHRoYXQgdGFrZSBhIGRp
ZmZlcmVudCBudW1iZXIgb2YgcGFyYW1ldGVycy4KLSAgICAgICAgIyBPcHRpb25hbCBhcmd1bWVu
dHMgd2l0aCBkZWZhdWx0IHZhbHVlcyBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIHNo
b3VsZCBub3QgZ2VuZXJhdGUgYW4gZWFybHkgY2FsbC4KKyAgICAgICAgIyBPcHRpb25hbCBhcmd1
bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVd
IG9yIFtPcHRpb25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbiBl
YXJseSBjYWxsLgogICAgICAgICBteSAkb3B0aW9uYWwgPSAkcGFyYW1ldGVyLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiT3B0aW9uYWwifTsgICAgICAgIAotICAgICAgICBpZiAoJG9wdGlvbmFsICYm
ICRvcHRpb25hbCBuZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiICYmICEkcGFyYW1ldGVyLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgeworICAgICAgICBpZiAoJG9wdGlvbmFsICYm
ICRvcHRpb25hbCBuZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiICYmICRvcHRpb25hbCBuZSAiQ2Fs
bFdpdGhOdWxsVmFsdWUiICYmICEkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2Fs
bGJhY2sifSkgewogICAgICAgICAgICAgIyBHZW5lcmF0ZSBlYXJseSBjYWxsIGlmIHRoZXJlIGFy
ZSBub3QgZW5vdWdoIHBhcmFtZXRlcnMuCiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAkcGFyYW1JbmRleCkge1xuIjsKICAgICAg
ICAgICAgIG15ICRmdW5jdGlvbkNhbGwgPSBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVu
Y3Rpb24sICRwYXJhbUluZGV4LCAiICAgICIgeCAyLCAkaW1wbENsYXNzTmFtZSk7CkBAIC0xNDU3
LDggKzE0NTcsMjIgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgZ290byBmYWlsO1xuIjsKICAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAgIH0gZWxzaWYg
KCRuYXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvKSB7Ci0gICAgICAgICAgICBteSAkdmFsdWUg
PSBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIik7Ci0gICAg
ICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJh
bWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4g
IlxuIjsKKyAgICAgICAgICAgIGlmICgkb3B0aW9uYWwgJiYgJG9wdGlvbmFsIGVxICJDYWxsV2l0
aE51bGxWYWx1ZSIpIHsKKyAgICAgICAgICAgICAgICBteSAkdmFsdWUgPSBKU1ZhbHVlVG9OYXRp
dmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIik7CisgICAgICAgICAgICAgICAgaWYg
KCRwYXJhbWV0ZXItPnR5cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgICAgICAgICAgICAg
JHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5hbWU7
XG4iOworICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBp
ZiAoYXJncy5MZW5ndGgoKSA+PSAiIC4gKCRwYXJhbUluZGV4ICsgMSkgLiAiKVxuIjsKKyAgICAg
ICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgICRwYXJhbWV0
ZXJOYW1lID0gJG5hdGl2ZVR5cGUoYXJnc1skcGFyYW1JbmRleF0pO1xuIjsKKyAgICAgICAgICAg
ICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKCEke3BhcmFtZXRlck5h
bWV9LnByZXBhcmUoKSlcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0
cmluZyAuPSAiICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpO1xuIjsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAjIERvbid0IGtub3cgaG93IHRvIHBy
b3Blcmx5IGNoZWNrIGZvciBjb252ZXJzaW9uIGV4Y2VwdGlvbnMgd2hlbiAkcGFyYW1ldGVyLT50
eXBlIGlzICJET01Vc2VyRGF0YSIKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNr
U3RyaW5nIC49ICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFtZXRlck5hbWUoYXJnc1skcGFyYW1JbmRl
eF0sIHRydWUpO1xuIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIG15ICR2YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAi
YXJnc1skcGFyYW1JbmRleF0iKTsKKyAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5
cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEJpbmRpbmdNYWNy
b3MuaCIpOwogICAgICAgICAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5k
ZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCkBA
IC0zMjY4LDcgKzMyODIsNyBAQCBzdWIgUmVxdWlyZXNDdXN0b21TaWduYXR1cmUKICAgICB9CiAg
ICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAg
ICAgICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9w
dGlvbmFsIn07Ci0gICAgICAgIGlmICgoJG9wdGlvbmFsICYmICgkb3B0aW9uYWwgbmUgIkNhbGxX
aXRoRGVmYXVsdFZhbHVlIikpIHx8ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YWxsYmFjayJ9KSB7CisgICAgICAgIGlmICgoJG9wdGlvbmFsICYmICRvcHRpb25hbCBuZSAiQ2Fs
bFdpdGhEZWZhdWx0VmFsdWUiICYmICRvcHRpb25hbCBuZSAiQ2FsbFdpdGhOdWxsVmFsdWUiKSB8
fCAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oCmluZGV4IDUzNWQ5YzE2MjVlZDlkYmFjODg2ODUzNTZmYWVmYmQ5MmJhMzIz
YTAuLmY4MGI5MzIwYWNhNTFhNTgzYjRlMTc3OTBlZTg2ZDE3MDJjNzZlNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0zODIsMTAgKzM4MiwxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIG9wZXJhdG9yIEF0b21pY1N0cmluZygpIHsgcmV0dXJuIHRv
U3RyaW5nPEF0b21pY1N0cmluZz4oKTsgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBWOFBh
cmFtZXRlckJhc2UoKSB7IH0KICAgICAgICAgVjhQYXJhbWV0ZXJCYXNlKHY4OjpMb2NhbDx2ODo6
VmFsdWU+IG9iamVjdCkgOiBtX3Y4T2JqZWN0KG9iamVjdCksIG1fbW9kZShFeHRlcm5hbGl6ZSks
IG1fc3RyaW5nKCkgeyB9CiAKICAgICAgICAgYm9vbCBwcmVwYXJlQmFzZSgpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChtX3Y4T2JqZWN0LklzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKwogICAgICAgICAgICAgaWYgKExJS0VMWShtX3Y4T2JqZWN0LT5Jc1N0cmlu
ZygpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNDAyLDE1ICs0MDYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgYmxvY2suUmVUaHJvdygpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgLy8gVGhpcyBwYXRoIGlzIHVuZXhwZWN0ZWQuICBIb3dldmVyIHRoZXJlIGlzIGh5cG90aGVz
aXMgdGhhdCBpdAotICAgICAgICAgICAgLy8gbWlnaHQgYmUgY29tYmluYXRpb24gb2YgdjggYW5k
IHY4IGJpbmRpbmdzIGJ1Z3MuICBGb3Igbm93Ci0gICAgICAgICAgICAvLyBqdXN0IGJhaWxvdXQg
YXMgd2UnbGwgY3Jhc2ggaWYgYXR0ZW1wdCB0byBjb252ZXJ0IGVtcHR5IGhhbmRsZSBpbnRvIGEg
c3RyaW5nLgotICAgICAgICAgICAgaWYgKG1fdjhPYmplY3QuSXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCkBAIC00NDcsNiArNDQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHRlbXBsYXRl
IDxWOFBhcmFtZXRlck1vZGUgTU9ERSA9IERlZmF1bHRNb2RlPgogICAgIGNsYXNzIFY4UGFyYW1l
dGVyOiBwdWJsaWMgVjhQYXJhbWV0ZXJCYXNlIHsKICAgICBwdWJsaWM6CisgICAgICAgIFY4UGFy
YW1ldGVyKCkgOiBWOFBhcmFtZXRlckJhc2UoKSB7IH0KICAgICAgICAgVjhQYXJhbWV0ZXIodjg6
OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0KSA6IFY4UGFyYW1ldGVyQmFzZShvYmplY3QpIHsgfQog
ICAgICAgICBWOFBhcmFtZXRlcih2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIGJvb2wpIDog
VjhQYXJhbWV0ZXJCYXNlKG9iamVjdCkgeyBwcmVwYXJlKCk7IH0KIApAQCAtNDYwLDcgKzQ1Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHRlbXBsYXRlPD4gaW5saW5lIGJvb2wgVjhQ
YXJhbWV0ZXI8V2l0aE51bGxDaGVjaz46OnByZXBhcmUoKQogICAgIHsKLSAgICAgICAgaWYgKG9i
amVjdCgpLT5Jc051bGwoKSkgeworICAgICAgICBpZiAob2JqZWN0KCkuSXNFbXB0eSgpIHx8IG9i
amVjdCgpLT5Jc051bGwoKSkgewogICAgICAgICAgICAgc2V0U3RyaW5nKFN0cmluZygpKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC00NzAsNyArNDY2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgdGVtcGxhdGU8PiBpbmxpbmUgYm9vbCBWOFBhcmFtZXRl
cjxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+OjpwcmVwYXJlKCkKICAgICB7Ci0gICAgICAgIGlm
IChvYmplY3QoKS0+SXNOdWxsKCkgfHwgb2JqZWN0KCktPklzVW5kZWZpbmVkKCkpIHsKKyAgICAg
ICAgaWYgKG9iamVjdCgpLklzRW1wdHkoKSB8fCBvYmplY3QoKS0+SXNOdWxsKCkgfHwgb2JqZWN0
KCktPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIHNldFN0cmluZyhTdHJpbmcoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29u
c3RydWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWZhNDlkZTFiNDNl
MDRkZjE2NmU0ODUzMTAyN2MzNzEyMmE5ZDc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKiAKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4V2ViS2l0Q1NTTWF0cml4LmgiCi0K
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNp
bmNsdWRlICJOb2RlLmgiCi0KLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOERv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiVjhOb2RlLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYktpdENTU01hdHJpeDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLldlYktpdENTU01h
dHJpeC5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3Qg
YmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKLQotICAgIC8v
IEZJWE1FOiBUaGUgbG9naWMgaGVyZSBpcyBhbG1vc3QgZXhhY3QgZHVwbGljYXRlIG9mIFY4Ojpj
b25zdHJ1Y3RET01PYmplY3QuCi0gICAgLy8gQ29uc2lkZXIgcmVmYWN0b3JpbmcgdG8gcmVkdWNl
IGR1cGxpY2F0aW9uLgotICAgIFN0cmluZyBjc3NWYWx1ZTsKLSAgICBpZiAoYXJncy5MZW5ndGgo
KSA+PSAxKQotICAgICAgICBjc3NWYWx1ZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1h
dHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKGNzc1ZhbHVlLCBlYyk7Ci0gICAgaWYgKGVj
KQotICAgICAgICB0aHJvd0Vycm9yKGVjKTsKLQotICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVy
IGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIG1hdHJpeC4KLSAgICBWOERPTVdyYXBwZXI6
OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8sIG1hdHJpeC5nZXQoKSk7Ci0gICAg
cmV0dXJuIHRvVjgobWF0cml4LnJlbGVhc2UoKSwgYXJncy5Ib2xkZXIoKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NNYXRyaXguaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKaW5k
ZXggNzZmZjYwMWNmOGMzNDc0YmJiNDUyYWViOGY3ZmI0NmI5YTI0ZGJjMi4uOTBhYTMzNGVmMGJj
NzBlNGIyZGQ0OTg5MTdlNjYyOGVmODNhMjZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U01hdHJpeC5pZGwKQEAgLTMwLDcgKzMwLDggQEAgbW9kdWxlIGNzcyB7CiAgICAgICAgIENhbkJl
Q29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uLAogICAgICAgICBD
b25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKLSAgICAgICAgVjhDdXN0b21Db25zdHJ1Y3RvcgorICAg
ICAgICBDb25zdHJ1Y3RvcihpbiBbT3B0aW9uYWw9Q2FsbFdpdGhOdWxsVmFsdWVdIERPTVN0cmlu
ZyBjc3NWYWx1ZSksCisgICAgICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAogICAgIF0g
V2ViS2l0Q1NTTWF0cml4IHsKIAogICAgICAgICAvLyBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBzaW1w
bGUgYWxpYXNlcyBmb3IgY2VydGFpbiBlbGVtZW50cyBvZiB0aGUgNHg0IG1hdHJpeAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106159</attachid>
            <date>2011-09-02 11:05:36 -0700</date>
            <delta_ts>2011-09-08 08:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67458-20110902110535.patch</filename>
            <type>text/plain</type>
            <size>16602</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0MjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMzc2Y2JhMzI2MTQzZDUzMDYxNGVj
M2VhYjUzYjI2ZmE3MjI5NmM5Li5kZTZiNzdiZGE4OGQ0N2EzN2Y4NDg5YjI1MjE1ZmRkZjYzNTM5
N2M1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMDIgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBhIFdlYktpdENTU01hdHJpeCBj
b25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25zdHJ1Y3RvcicgZXh0ZW5kZWQgYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICBB
ZGRlZCBhIHRlc3QgY2FzZSBmb3IgIm5ldyBXZWJLaXRDU1NNYXRyaXgobnVsbCkiIGFuZCAibmV3
IFdlYktpdENTU01hdHJpeCh1bmRlZmluZWQpIi4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRv
dy9jdXN0b20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9X
aW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy5odG1sOgorCiAyMDExLTA5LTAyICBNaWhuZWEgT3Zp
ZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIEJPUkRFUiBhdHRyaWJ1dGUgcGVy
Y2VudCB3aXRoIHRoZSBpbnB1dCBpbWFnZSB0YWcgbm90IHdvcmtpbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy1leHBl
Y3RlZC50eHQKaW5kZXggM2QyN2M0ZmJlNmYzMDYzZWUwNGYzODBjZmJkZmE2YTRkNGJjMjAzYy4u
MmU3YmIwZjAzNWFiNGFkMjQ2YWYzZjQwNWQxOGUyOGMwMzc2YjljYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLWV4
cGVjdGVkLnR4dApAQCAtNyw2ICs3LDkgQEAgUEFTUyBJbWFnZS5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChuZXcgSW1hZ2UpIGlzICdbb2JqZWN0IEhUTUxJbWFnZUVsZW1lbnRdJwogUEFTUyBPcHRp
b24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IE9wdGlvbikgaXMgJ1tvYmplY3QgSFRNTE9w
dGlvbkVsZW1lbnRdJwogUEFTUyBXZWJLaXRQb2ludC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChu
ZXcgV2ViS2l0UG9pbnQpIGlzICdbb2JqZWN0IFdlYktpdFBvaW50XScKIFBBU1MgV2ViS2l0Q1NT
TWF0cml4LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgpIGlzICdt
YXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAw
LjAwMDAwMCknCitQQVNTIFdlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChu
ZXcgV2ViS2l0Q1NTTWF0cml4KCkpIGlzICdtYXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAw
MDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknCitQQVNTIG5ldyBXZWJLaXRDU1NN
YXRyaXgobnVsbCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0
aW9uIDEyLgorUEFTUyBuZXcgV2ViS2l0Q1NTTWF0cml4KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBYTUxIdHRwUmVx
dWVzdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgWE1MSHR0cFJlcXVlc3QpIGlzICdbb2Jq
ZWN0IFhNTEh0dHBSZXF1ZXN0XScKIFBBU1MgWFNMVFByb2Nlc3Nvci5wcm90b3R5cGUudG9TdHJp
bmcuY2FsbChuZXcgWFNMVFByb2Nlc3NvcikgaXMgJ1tvYmplY3QgWFNMVFByb2Nlc3Nvcl0nCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbAppbmRleCBlZmQ2MTFjNmFlYmE1
ZTNlZDE2ZGUzMGQyMWQ5YTg2ZDNlZDZjYzU5Li41MjI1Y2ZhMDI2MjViMGRjOTI4NmI3MDdlOWQ3
ZDA4MTJjNzYwYWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3Vz
dG9tLWNvbnN0cnVjdG9ycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9j
dXN0b20tY29uc3RydWN0b3JzLmh0bWwKQEAgLTE3LDYgKzE3LDkgQEAKICAgICBzaG91bGRCZSgi
T3B0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBPcHRpb24pIiwgIidbb2JqZWN0IEhU
TUxPcHRpb25FbGVtZW50XSciKTsKICAgICBzaG91bGRCZSgiV2ViS2l0UG9pbnQucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwobmV3IFdlYktpdFBvaW50KSIsICInW29iamVjdCBXZWJLaXRQb2ludF0n
Iik7CiAgICAgc2hvdWxkQmUoIldlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2Fs
bChuZXcgV2ViS2l0Q1NTTWF0cml4KSIsICInbWF0cml4KDEuMDAwMDAwLCAwLjAwMDAwMCwgMC4w
MDAwMDAsIDEuMDAwMDAwLCAwLjAwMDAwMCwgMC4wMDAwMDApJyIpOworICAgIHNob3VsZEJlKCJX
ZWJLaXRDU1NNYXRyaXgucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFdlYktpdENTU01hdHJp
eCgpKSIsICInbWF0cml4KDEuMDAwMDAwLCAwLjAwMDAwMCwgMC4wMDAwMDAsIDEuMDAwMDAwLCAw
LjAwMDAwMCwgMC4wMDAwMDApJyIpOworICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0Q1NTTWF0
cml4KG51bGwpIik7CisgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRDU1NNYXRyaXgodW5kZWZp
bmVkKSIpOwogICAgIHNob3VsZEJlKCJYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUudG9TdHJpbmcu
Y2FsbChuZXcgWE1MSHR0cFJlcXVlc3QpIiwgIidbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0XSciKTsK
ICAgICBzaG91bGRCZSgiWFNMVFByb2Nlc3Nvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcg
WFNMVFByb2Nlc3NvcikiLCAiJ1tvYmplY3QgWFNMVFByb2Nlc3Nvcl0nIik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA5ZDI3ZDZiNDJiMjNiYmJlOGUwYjEwYjJjODcyODc1NjkwMWQ2OTcyLi4zZWRmNTc1NDQz
MDZmYmU3MmY0NTIzOTM1MmY2ZDE2YTY3NzI4Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTEtMDktMDIgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAg
ICAgICBHZW5lcmF0ZSBhIFdlYktpdENTU01hdHJpeCBjb25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0
aGUgSURMICdDb25zdHJ1Y3RvcicgZXh0ZW5kZWQgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzQ1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgJ0NhbGxXaXRoTnVsbFZhbHVl
JyBleHRlbmRlZCBhdHRyaWJ1dGUuCisgICAgICAgICdDYWxsV2l0aE51bGxWYWx1ZScgYW5kICdD
YWxsV2l0aERlZmF1bHRWYWx1ZScgYmVoYXZlIHRoZSBzYW1lCisgICAgICAgIGZvciBhIG5vbi1E
T01TdHJpbmcgYXJndW1lbnQuIEZvciBhIERPTVN0cmluZyBhcmd1bWVudCwgaWYKKyAgICAgICAg
dGhlIERPTVN0cmluZyBpcyBvcHRpb25hbCBhbmQgb21pdHRlZCwgJ0NhbGxXaXRoRGVmYXVsdFZh
bHVlJworICAgICAgICBoYW5kbGVzIGl0IGFzIGEgc3RyaW5nICJ1bmRlZmluZWQiLCBidXQgJ0Nh
bGxXaXRoTnVsbFZhbHVlJworICAgICAgICBoYW5kbGVzIGl0IGFzIGEgbnVsbCBzdHJpbmcuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWwK
KyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvc3ZnLXZzLWNzcy54aHRtbAorICAgICAgICAgICAg
ICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgtMmQtaW50ZXJmYWNlLnhodG1sCisgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1zL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UueGh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaTogUmVtb3ZlZCBWOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcC4KKyAg
ICAgICAgKiBXZWJDb3JlLnBybzogUmVtb3ZlZCBWOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9y
LmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAg
ICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogU2V0cyBhIG51bGwgVjhQYXJhbWV0ZXIs
IGlmIHRoZSBhcmd1bWVudCBzcGVjaWZpZWQgYXMgJ0NhbGxXaXRoTnVsbFZhbHVlJyBpcyBvbWl0
dGVkLgorICAgICAgICAoUmVxdWlyZXNDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjpW
OFBhcmFtZXRlckJhc2UpOiBBZGRlZCBhIFY4UGFyYW1ldGVyQmFzZSBjb25zdHJ1Y3RvciB3aXRo
IG5vIGFyZ3VtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlY4UGFyYW1ldGVyQmFzZTo6cHJlcGFy
ZUJhc2UpOiBUaGUgZmFjdCB0aGF0IFY4UGFyYW1ldGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBv
YmplY3QgbWVhbnMgdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBwcmVwYXJlIGFueXRoaW5nLCBpLmUu
IHdlIHNob3VsZCBqdXN0IHJldHVybiB0cnVlIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKFdlYkNv
cmU6Ojo6cHJlcGFyZSk6IElmIFY4UGFyYW1ldGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmpl
Y3QsIHRoZW4gd2Ugc2V0IGEgbnVsbCBzdHJpbmcuCisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NNYXRyaXguaWRsOiBBZGRlZCB0aGUgJ0NvbnN0cnVjdG9yJyBleHRlbmRl
ZCBhdHRyaWJ1dGUuCisKIDIwMTEtMDktMDIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjk0MDkzKTogUHJpdmF0ZSBicm93c2luZyBk
b2Vzbid0IHN0YXJ0IHdpdGggYSBjbGVhbiBzdGF0ZSBvbiBTbm93IExlb3BhcmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBjOWFhZjEzOTExNzkzNDcwNDkyOWNhZDU3YzExYzRkMDRlMzBlZTc5Li5kMTJj
NmM2MjU1NGY5MTQ2OTZhYzAxYzU5NDBmNjZhZWQ4YmY0MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0yMjE4LDcgKzIyMTgsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVp
bnQ4QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IDUxODliNWY5MTdjNjFlYWU1OTNiNmVjM2RhMmEyOGMxNGFk
MWJhMjMuLmQzZTllNWRlY2MzNmY1MzFkZmY5OTQ4ZDllYTY2Njg2YjY3NjlhMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCkBAIC0yMDgsNyArMjA4LDYgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAotICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDllMjYzNDA1Yjc0NTJkZWY0YmU1
NGEzOTkwZjdlMWE5YTBmNmQ4ZTMuLjFkMWRlZTcyYTc4YmJhMTEzMTE0NmIzMDI4N2U5ZWIyYjhk
MGE2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtCkBAIC0xNDE2LDkgKzE0MTYsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2sKIAogICAgICAgICAjIE9wdGlvbmFsIGNhbGxiYWNrcyBzaG91bGQgYmUgdHJlYXRlZCBk
aWZmZXJlbnRseSwgYmVjYXVzZSB0aGV5IGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAoMCks
CiAgICAgICAgICMgYW5kIHdlIGNhbiByZWR1Y2UgdGhlIG51bWJlciBvZiBvdmVybG9hZGVkIGZ1
bmN0aW9ucyB0aGF0IHRha2UgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIHBhcmFtZXRlcnMuCi0gICAg
ICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMgW09wdGlvbmFsPUNh
bGxXaXRoRGVmYXVsdFZhbHVlXSBzaG91bGQgbm90IGdlbmVyYXRlIGFuIGVhcmx5IGNhbGwuCisg
ICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMgW09wdGlvbmFs
PUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBvciBbT3B0aW9uYWw9Q2FsbFdpdGhOdWxsVmFsdWVdIHNo
b3VsZCBub3QgZ2VuZXJhdGUgYW4gZWFybHkgY2FsbC4KICAgICAgICAgbXkgJG9wdGlvbmFsID0g
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07ICAgICAgICAKLSAg
ICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZhbHVl
IiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKKyAg
ICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZhbHVl
IiAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoTnVsbFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKICAgICAgICAgICAgICMgR2VuZXJhdGUg
ZWFybHkgY2FsbCBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBwYXJhbWV0ZXJzLgogICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gJHBh
cmFtSW5kZXgpIHtcbiI7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25DYWxsID0gR2VuZXJhdGVG
dW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiIHggMiwgJGlt
cGxDbGFzc05hbWUpOwpAQCAtMTQ1Nyw4ICsxNDU3LDIyIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdv
dG8gZmFpbDtcbiI7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9
XG4iOwogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewot
ICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdz
WyRwYXJhbUluZGV4XSIpOwotICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIg
ICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0ZXIsICRuYXRpdmVUeXBlLCAkcGFy
YW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiI7CisgICAgICAgICAgICBpZiAoJG9wdGlvbmFsICYm
ICRvcHRpb25hbCBlcSAiQ2FsbFdpdGhOdWxsVmFsdWUiKSB7CisgICAgICAgICAgICAgICAgbXkg
JHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIp
OworICAgICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT50eXBlIGVxICJET01TdHJpbmciKSB7
CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICRuYXRp
dmVUeXBlICRwYXJhbWV0ZXJOYW1lO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gIiAuICgkcGFyYW1JbmRl
eCArIDEpIC4gIilcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmlu
ZyAuPSAiICAgICAgICAkcGFyYW1ldGVyTmFtZSA9ICRuYXRpdmVUeXBlKGFyZ3NbJHBhcmFtSW5k
ZXhdKTtcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAi
ICAgIGlmICghJHtwYXJhbWV0ZXJOYW1lfS5wcmVwYXJlKCkpXG4iOworICAgICAgICAgICAgICAg
ICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTtcbiI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
IyBEb24ndCBrbm93IGhvdyB0byBwcm9wZXJseSBjaGVjayBmb3IgY29udmVyc2lvbiBleGNlcHRp
b25zIHdoZW4gJHBhcmFtZXRlci0+dHlwZSBpcyAiRE9NVXNlckRhdGEiCisgICAgICAgICAgICAg
ICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0
ZXJOYW1lKGFyZ3NbJHBhcmFtSW5kZXhdLCB0cnVlKTtcbiI7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBteSAkdmFsdWUgPSBKU1ZhbHVl
VG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFtSW5kZXhdIik7CisgICAgICAgICAgICAg
ICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVy
KCRwYXJhbWV0ZXIsICRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiI7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiVjhCaW5kaW5nTWFjcm9zLmgiKTsKICAgICAgICAgICAgICMgSWYgdGhlICJTdHJp
Y3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBhbmQgdGhlIGFy
Z3VtZW50J3MgdHlwZSBpcyBhbgpAQCAtMzI2OCw3ICszMjgyLDcgQEAgc3ViIFJlcXVpcmVzQ3Vz
dG9tU2lnbmF0dXJlCiAgICAgfQogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rp
b24tPnBhcmFtZXRlcnN9KSB7CiAgICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXItPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OwotICAgICAgICBpZiAoKCRvcHRpb25hbCAm
JiAoJG9wdGlvbmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1ZSIpKSB8fCAkcGFyYW1ldGVyLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgeworICAgICAgICBpZiAoKCRvcHRpb25h
bCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAkb3B0aW9uYWwgbmUg
IkNhbGxXaXRoTnVsbFZhbHVlIikgfHwgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbGxiYWNrIn0pIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA1MzVkOWMxNjI1ZWQ5ZGJh
Yzg4Njg1MzU2ZmFlZmJkOTJiYTMyM2EwLi5mODBiOTMyMGFjYTUxYTU4M2I0ZTE3NzkwZWU4NmQx
NzAyYzc2ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzgy
LDEwICszODIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBvcGVyYXRvciBBdG9t
aWNTdHJpbmcoKSB7IHJldHVybiB0b1N0cmluZzxBdG9taWNTdHJpbmc+KCk7IH0KIAogICAgIHBy
b3RlY3RlZDoKKyAgICAgICAgVjhQYXJhbWV0ZXJCYXNlKCkgeyB9CiAgICAgICAgIFY4UGFyYW1l
dGVyQmFzZSh2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QpIDogbV92OE9iamVjdChvYmplY3Qp
LCBtX21vZGUoRXh0ZXJuYWxpemUpLCBtX3N0cmluZygpIHsgfQogCiAgICAgICAgIGJvb2wgcHJl
cGFyZUJhc2UoKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAobV92OE9iamVjdC5Jc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAgICAgICAgIGlmIChMSUtF
TFkobV92OE9iamVjdC0+SXNTdHJpbmcoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKQEAgLTQwMiwxNSArNDA2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
ICAgIGJsb2NrLlJlVGhyb3coKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgcGF0aCBpcyB1bmV4cGVjdGVkLiAgSG93
ZXZlciB0aGVyZSBpcyBoeXBvdGhlc2lzIHRoYXQgaXQKLSAgICAgICAgICAgIC8vIG1pZ2h0IGJl
IGNvbWJpbmF0aW9uIG9mIHY4IGFuZCB2OCBiaW5kaW5ncyBidWdzLiAgRm9yIG5vdwotICAgICAg
ICAgICAgLy8ganVzdCBiYWlsb3V0IGFzIHdlJ2xsIGNyYXNoIGlmIGF0dGVtcHQgdG8gY29udmVy
dCBlbXB0eSBoYW5kbGUgaW50byBhIHN0cmluZy4KLSAgICAgICAgICAgIGlmIChtX3Y4T2JqZWN0
LklzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtNDQ3LDYgKzQ0Miw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICB0ZW1wbGF0ZSA8VjhQYXJhbWV0ZXJNb2RlIE1PREUgPSBEZWZhdWx0TW9k
ZT4KICAgICBjbGFzcyBWOFBhcmFtZXRlcjogcHVibGljIFY4UGFyYW1ldGVyQmFzZSB7CiAgICAg
cHVibGljOgorICAgICAgICBWOFBhcmFtZXRlcigpIDogVjhQYXJhbWV0ZXJCYXNlKCkgeyB9CiAg
ICAgICAgIFY4UGFyYW1ldGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9iamVjdCkgOiBWOFBhcmFt
ZXRlckJhc2Uob2JqZWN0KSB7IH0KICAgICAgICAgVjhQYXJhbWV0ZXIodjg6OkxvY2FsPHY4OjpW
YWx1ZT4gb2JqZWN0LCBib29sKSA6IFY4UGFyYW1ldGVyQmFzZShvYmplY3QpIHsgcHJlcGFyZSgp
OyB9CiAKQEAgLTQ2MCw3ICs0NTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB0ZW1w
bGF0ZTw+IGlubGluZSBib29sIFY4UGFyYW1ldGVyPFdpdGhOdWxsQ2hlY2s+OjpwcmVwYXJlKCkK
ICAgICB7Ci0gICAgICAgIGlmIChvYmplY3QoKS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG9i
amVjdCgpLklzRW1wdHkoKSB8fCBvYmplY3QoKS0+SXNOdWxsKCkpIHsKICAgICAgICAgICAgIHNl
dFN0cmluZyhTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpA
QCAtNDcwLDcgKzQ2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHRlbXBsYXRlPD4g
aW5saW5lIGJvb2wgVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPjo6cHJlcGFy
ZSgpCiAgICAgewotICAgICAgICBpZiAob2JqZWN0KCktPklzTnVsbCgpIHx8IG9iamVjdCgpLT5J
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIGlmIChvYmplY3QoKS5Jc0VtcHR5KCkgfHwgb2JqZWN0
KCktPklzTnVsbCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBz
ZXRTdHJpbmcoU3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENT
U01hdHJpeENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYWVmYTQ5ZGUxYjQzZTA0ZGYxNjZlNDg1MzEwMjdjMzcxMjJhOWQ3OC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJW
OFdlYktpdENTU01hdHJpeC5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJE
b2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgotCi0jaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCi0jaW5jbHVkZSAiVjhEb2N1bWVudC5oIgotI2luY2x1ZGUgIlY4Tm9kZS5oIgotI2lu
Y2x1ZGUgIlY4UHJveHkuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRDU1NNYXRyaXg6OmNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNf
U1RBVFMoIkRPTS5XZWJLaXRDU1NNYXRyaXguQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJn
cy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6
OlR5cGVFcnJvcik7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGxvZ2ljIGhlcmUgaXMgYWxtb3N0IGV4
YWN0IGR1cGxpY2F0ZSBvZiBWODo6Y29uc3RydWN0RE9NT2JqZWN0LgotICAgIC8vIENvbnNpZGVy
IHJlZmFjdG9yaW5nIHRvIHJlZHVjZSBkdXBsaWNhdGlvbi4KLSAgICBTdHJpbmcgY3NzVmFsdWU7
Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gMSkKLSAgICAgICAgY3NzVmFsdWUgPSB0b1dlYkNv
cmVTdHJpbmcoYXJnc1swXSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQ
dHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShjc3NW
YWx1ZSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgdGhyb3dFcnJvcihlYyk7Ci0KLSAgICAv
LyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBtYXRy
aXguCi0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZv
LCBtYXRyaXguZ2V0KCkpOwotICAgIHJldHVybiB0b1Y4KG1hdHJpeC5yZWxlYXNlKCksIGFyZ3Mu
SG9sZGVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NNYXRyaXguaWRsCmluZGV4IDc2ZmY2MDFjZjhjMzQ3NGJiYjQ1MmFlYjhmN2ZiNDZi
OWEyNGRiYzIuLjkwYWEzMzRlZjBiYzcwZTRiMmRkNDk4OTE3ZTY2MjhlZjgzYTI2Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCkBAIC0zMCw3ICszMCw4IEBAIG1vZHVs
ZSBjc3MgewogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAogICAgICAgICBDdXN0b21Db25zdHJ1
Y3RGdW5jdGlvbiwKICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCi0gICAgICAgIFY4
Q3VzdG9tQ29uc3RydWN0b3IKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gW09wdGlvbmFsPUNhbGxX
aXRoTnVsbFZhbHVlXSBET01TdHJpbmcgY3NzVmFsdWUpLAorICAgICAgICBDb25zdHJ1Y3RvclJh
aXNlc0V4Y2VwdGlvbiwKICAgICBdIFdlYktpdENTU01hdHJpeCB7CiAKICAgICAgICAgLy8gVGhl
c2UgYXR0cmlidXRlcyBhcmUgc2ltcGxlIGFsaWFzZXMgZm9yIGNlcnRhaW4gZWxlbWVudHMgb2Yg
dGhlIDR4NCBtYXRyaXgK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106670</attachid>
            <date>2011-09-07 16:26:21 -0700</date>
            <delta_ts>2011-09-08 08:29:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67458-20110907162619.patch</filename>
            <type>text/plain</type>
            <size>17118</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ3MjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYzliNzcwMmM5YTAzYzc1NzcwNjcz
NzIxNDljYjhmOTQzMDJjMTg3Li41NGNjZGQ4ZDFjNGI1OTEwOTA3MDM5NTFhMzM0NGUxZmI0MmU4
N2RmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMDcgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBhIFdlYktpdENTU01hdHJpeCBj
b25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25zdHJ1Y3RvcicgZXh0ZW5kZWQgYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgdGVzdCBjYXNlIGZvciAibmV3IFdlYktpdENTU01hdHJpeChudWxsKSIgYW5kICJuZXcg
V2ViS2l0Q1NTTWF0cml4KHVuZGVmaW5lZCkiLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93
L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dp
bmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWw6CisKIDIwMTEtMDktMDcgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgQ2hyb21p
dW0gYmFzZWxpbmVzIGZvciBzdmcvY3VzdG9tL3NpbXBsZS10ZXh0LWRvdWJsZS1zaGFkb3cKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3Jz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3Ry
dWN0b3JzLWV4cGVjdGVkLnR4dAppbmRleCAzZDI3YzRmYmU2ZjMwNjNlZTA0ZjM4MGNmYmRmYTZh
NGQ0YmMyMDNjLi4yZTdiYjBmMDM1YWI0YWQyNDZhZjNmNDA1ZDE4ZTI4YzAzNzZiOWNhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25z
dHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CkBAIC03LDYgKzcsOSBAQCBQQVNTIEltYWdlLnByb3RvdHlw
ZS50b1N0cmluZy5jYWxsKG5ldyBJbWFnZSkgaXMgJ1tvYmplY3QgSFRNTEltYWdlRWxlbWVudF0n
CiBQQVNTIE9wdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgT3B0aW9uKSBpcyAnW29i
amVjdCBIVE1MT3B0aW9uRWxlbWVudF0nCiBQQVNTIFdlYktpdFBvaW50LnByb3RvdHlwZS50b1N0
cmluZy5jYWxsKG5ldyBXZWJLaXRQb2ludCkgaXMgJ1tvYmplY3QgV2ViS2l0UG9pbnRdJwogUEFT
UyBXZWJLaXRDU1NNYXRyaXgucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFdlYktpdENTU01h
dHJpeCkgaXMgJ21hdHJpeCgxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwLCAxLjAwMDAwMCwg
MC4wMDAwMDAsIDAuMDAwMDAwKScKK1BBU1MgV2ViS2l0Q1NTTWF0cml4LnByb3RvdHlwZS50b1N0
cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgoKSkgaXMgJ21hdHJpeCgxLjAwMDAwMCwgMC4w
MDAwMDAsIDAuMDAwMDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKScKK1BBU1MgbmV3
IFdlYktpdENTU01hdHJpeChudWxsKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6
IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIG5ldyBXZWJLaXRDU1NNYXRyaXgodW5kZWZpbmVkKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCiBQQVNT
IFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBYTUxIdHRwUmVxdWVz
dCkgaXMgJ1tvYmplY3QgWE1MSHR0cFJlcXVlc3RdJwogUEFTUyBYU0xUUHJvY2Vzc29yLnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKG5ldyBYU0xUUHJvY2Vzc29yKSBpcyAnW29iamVjdCBYU0xUUHJv
Y2Vzc29yXScKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy5odG1sCmluZGV4IGVm
ZDYxMWM2YWViYTVlM2VkMTZkZTMwZDIxZDlhODZkM2VkNmNjNTkuLjUyMjVjZmEwMjYyNWIwZGM5
Mjg2YjcwN2U5ZDdkMDgxMmM3NjBhYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbApAQCAtMTcsNiArMTcsOSBAQAogICAg
IHNob3VsZEJlKCJPcHRpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IE9wdGlvbikiLCAi
J1tvYmplY3QgSFRNTE9wdGlvbkVsZW1lbnRdJyIpOwogICAgIHNob3VsZEJlKCJXZWJLaXRQb2lu
dC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0UG9pbnQpIiwgIidbb2JqZWN0IFdl
YktpdFBvaW50XSciKTsKICAgICBzaG91bGRCZSgiV2ViS2l0Q1NTTWF0cml4LnByb3RvdHlwZS50
b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgpIiwgIidtYXRyaXgoMS4wMDAwMDAsIDAu
MDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknIik7CisgICAg
c2hvdWxkQmUoIldlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2Vi
S2l0Q1NTTWF0cml4KCkpIiwgIidtYXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCwg
MS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknIik7CisgICAgc2hvdWxkVGhyb3coIm5ldyBX
ZWJLaXRDU1NNYXRyaXgobnVsbCkiKTsKKyAgICBzaG91bGRUaHJvdygibmV3IFdlYktpdENTU01h
dHJpeCh1bmRlZmluZWQpIik7CiAgICAgc2hvdWxkQmUoIlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlw
ZS50b1N0cmluZy5jYWxsKG5ldyBYTUxIdHRwUmVxdWVzdCkiLCAiJ1tvYmplY3QgWE1MSHR0cFJl
cXVlc3RdJyIpOwogICAgIHNob3VsZEJlKCJYU0xUUHJvY2Vzc29yLnByb3RvdHlwZS50b1N0cmlu
Zy5jYWxsKG5ldyBYU0xUUHJvY2Vzc29yKSIsICInW29iamVjdCBYU0xUUHJvY2Vzc29yXSciKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDE0NDc0NjMzOTBlZmQzMzcyOGJhMWUxZjIxMzI0ZjE5ZTIxZjk0NDcu
LjJiOWM3NTczMjlkZDUxNDM2NGMzZDI4OGVlYWY1MWQ0YWRlYzg4NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNCBAQAorMjAxMS0wOS0wNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBnb29nbGUu
Y29tPgorCisgICAgICAgIEdlbmVyYXRlIGEgV2ViS2l0Q1NTTWF0cml4IGNvbnN0cnVjdG9yIG9m
IFY4IHVzaW5nIHRoZSBJREwgJ0NvbnN0cnVjdG9yJyBleHRlbmRlZCBhdHRyaWJ1dGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NDU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSAnQ2FsbFdp
dGhOdWxsVmFsdWUnIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAgICAgICAgSWYgYSBwYXJhbWV0ZXIg
aXMgb3B0aW9uYWwgYW5kIG1pc3NpbmcsICdDYWxsV2l0aERlZmF1bHRWYWx1ZScKKyAgICAgICAg
aGFuZGxlcyBpdCBhcyBhIHN0cmluZyAidW5kZWZpbmVkIi4gT24gdGhlIG90aGVyIGhhbmQsCisg
ICAgICAgICdDYWxsV2l0aE51bGxWYWx1ZScgaGFuZGxlcyBpdCBhcyBhIG51bGwgc3RyaW5nCisg
ICAgICAgIChOb3RlOiBub3QgYSBzdHJpbmcgIm51bGwiLCBidXQgYSBudWxsIHN0cmluZykuCisK
KyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWwK
KyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvc3ZnLXZzLWNzcy54aHRtbAorICAgICAgICAgICAg
ICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgtMmQtaW50ZXJmYWNlLnhodG1sCisgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1zL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UueGh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZ3lwaTogUmVtb3ZlZCBWOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcC4KKyAg
ICAgICAgKiBXZWJDb3JlLnBybzogUmVtb3ZlZCBWOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9y
LmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAg
ICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogSWYgdGhlICdDYWxsV2l0aE51bGxWYWx1
ZScgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHNldCwgd2UgY2FsbCBtYXliZU1pc3NpbmdQYXJhbWV0
ZXIoKSB3aXRoIE1JU1NJTkdfSVNfRU1QVFkgbW9kZSB0byBvYnRhaW4gYSBtYXliZSBtaXNzaW5n
IHBhcmFtZXRlci4gT3RoZXJ3aXNlLCB3ZSBjYWxsIG1heWJlTWlzc2luZ1BhcmFtZXRlcigpIHdp
dGggTUlTU0lOR19JU19VTkRFRklORUQgbW9kZS4KKyAgICAgICAgKFJlcXVpcmVzQ3VzdG9tU2ln
bmF0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bWF5YmVNaXNzaW5nUGFyYW1ldGVyKTogUmV0dXJucyB0aGUgcGFyYW1ldGVyIG9m
IGEgZ2l2ZW4gaW5kZXggaWYgdGhlIHBhcmFtZXRlciBleGlzdHMuIElmIHRoZSBwYXJhbWV0ZXIg
ZG9lcyBub3QgZXhpc3QgYW5kIE1JU1NJTkdfSVNfVU5ERUZJTkVEIGlzIHNldCwgdGhpcyBtZXRo
b2QgcmV0dXJucyBhbiBvYmplY3QgdGhhdCByZXByZXNlbnRzIHVuZGVmaW5lZC4gSWYgdGhlIHBh
cmFtZXRlciBkb2VzIG5vdCBleGlzdCBhbmQgTUlTU0lOR19JU19FTVBUWSBpcyBzZXQsIHRoaXMg
bWV0aG9kIHJldHVybnMgYW4gZW1wdHkgb2JqZWN0LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjpwcmVwYXJlQmFz
ZSk6IFRoZSBmYWN0IHRoYXQgVjhQYXJhbWV0ZXJCYXNlIGRvZXMgbm90IGhhdmUgYW55IG9iamVj
dCBtZWFucyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIHByZXBhcmUgYW55dGhpbmcsIGkuZS4gd2Ug
c2hvdWxkIGp1c3QgcmV0dXJuIHRydWUgaW4gdGhpcyBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6
OjpwcmVwYXJlKTogSWYgVjhQYXJhbWV0ZXJCYXNlIGRvZXMgbm90IGhhdmUgYW55IG9iamVjdCwg
dGhlbiB3ZSBzZXQgYSBudWxsIHN0cmluZy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY3Nz
L1dlYktpdENTU01hdHJpeC5pZGw6IEFkZGVkIHRoZSAnQ29uc3RydWN0b3InIGV4dGVuZGVkIGF0
dHJpYnV0ZS4KKwogMjAxMS0wOS0wNyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIENoYW5nZXMgdG8gYXJpYS1oaWRkZW4gZG9uJ3QgY2hhbmdlIFZPIG5h
dmlnYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwMzk4NjRiYmE5ZjgzNThkNjQ2Nzk2NDIzNzY5
OWEwOTM4OThiZmNjLi5jMTMwMGY1NzI2NzJmYmJiZDUzYmMzM2Q0OWFmZWRiNzM1ODFmMzQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yMjE4LDcgKzIyMTgsNiBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywK
LSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50
Q29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJT
b2NrZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDIyYTg0NWQ4OThlMTUwZTUw
NjU1ZmQ3OWYwZGQxYTUwNDZhYmRkMjkuLjIyOWQ4YzM4NWNjNDY3MWM4YTI2YTZmNjg3NzA1Njc4
OTliOTIyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMDgsNyArMjA4LDYgQEAgdjggewogICAgICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAotICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDll
MjYzNDA1Yjc0NTJkZWY0YmU1NGEzOTkwZjdlMWE5YTBmNmQ4ZTMuLmRmOTM0MWE1ODU0OTMzZWY4
NzllZWU0ZTkyZWU1MWI5OTMzNDE3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xNDE2LDkgKzE0MTYsOSBAQCBzdWIg
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIAogICAgICAgICAjIE9wdGlvbmFsIGNhbGxiYWNrcyBz
aG91bGQgYmUgdHJlYXRlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB0aGV5IGFsd2F5cyBoYXZlIGEg
ZGVmYXVsdCB2YWx1ZSAoMCksCiAgICAgICAgICMgYW5kIHdlIGNhbiByZWR1Y2UgdGhlIG51bWJl
ciBvZiBvdmVybG9hZGVkIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBkaWZmZXJlbnQgbnVtYmVyIG9m
IHBhcmFtZXRlcnMuCi0gICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2
YWx1ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBzaG91bGQgbm90IGdlbmVyYXRl
IGFuIGVhcmx5IGNhbGwuCisgICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVmYXVs
dCB2YWx1ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBvciBbT3B0aW9uYWw9Q2Fs
bFdpdGhOdWxsVmFsdWVdIHNob3VsZCBub3QgZ2VuZXJhdGUgYW4gZWFybHkgY2FsbC4KICAgICAg
ICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlv
bmFsIn07ICAgICAgICAKLSAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNh
bGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbGxiYWNrIn0pIHsKKyAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNh
bGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoTnVsbFZhbHVlIiAm
JiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKICAgICAg
ICAgICAgICMgR2VuZXJhdGUgZWFybHkgY2FsbCBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBwYXJh
bWV0ZXJzLgogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgpIHtcbiI7CiAgICAgICAgICAgICBteSAkZnVuY3Rp
b25DYWxsID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRl
eCwgIiAgICAiIHggMiwgJGltcGxDbGFzc05hbWUpOwpAQCAtMTQyNiw2ICsxNDI2LDExIEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3Ry
aW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgfQogCisgICAgICAgIG15ICRwYXJhbWV0ZXJNaXNz
aW5nUG9saWN5ID0gIk1JU1NJTkdfSVNfVU5ERUZJTkVEIjsKKyAgICAgICAgaWYgKCRvcHRpb25h
bCAmJiAkb3B0aW9uYWwgZXEgIkNhbGxXaXRoTnVsbFZhbHVlIikgeworICAgICAgICAgICAgJHBh
cmFtZXRlck1pc3NpbmdQb2xpY3kgPSAiTUlTU0lOR19JU19FTVBUWSI7CisgICAgICAgIH0KKwog
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9uQ29kZS5oIik7CiAgICAgICAgIG15
ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlciwgJHBh
cmFtSW5kZXgpOwogICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbGxiYWNrIn0pIHsKQEAgLTE0NTcsNyArMTQ2Miw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdv
dG8gZmFpbDtcbiI7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9
XG4iOwogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewot
ICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdz
WyRwYXJhbUluZGV4XSIpOworICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZl
KCRwYXJhbWV0ZXIsICJtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgJHBhcmFtSW5kZXgsICRw
YXJhbWV0ZXJNaXNzaW5nUG9saWN5KSIpOwogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3Ry
aW5nIC49ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0ZXIsICRuYXRpdmVU
eXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiI7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhCaW5kaW5nTWFjcm9zLmgiKTsKQEAgLTE0
NzgsNyArMTQ4Myw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAu
PSAiICAgIEVYQ0VQVElPTl9CTE9DSygkbmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICIgLgot
ICAgICAgICAgICAgICAgICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgImFyZ3NbJHBhcmFt
SW5kZXhdIikgLiAiKTtcbiI7CisgICAgICAgICAgICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFy
YW1ldGVyLCAibWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsICRwYXJhbUluZGV4LCAkcGFyYW1l
dGVyTWlzc2luZ1BvbGljeSkiKSAuICIpO1xuIjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgk
cGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNJbmRleCJ9KSB7CkBAIC0zMjY4LDcg
KzMyNzMsNyBAQCBzdWIgUmVxdWlyZXNDdXN0b21TaWduYXR1cmUKICAgICB9CiAgICAgZm9yZWFj
aCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgbXkg
JG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn07
Ci0gICAgICAgIGlmICgoJG9wdGlvbmFsICYmICgkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVs
dFZhbHVlIikpIHx8ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9
KSB7CisgICAgICAgIGlmICgoJG9wdGlvbmFsICYmICRvcHRpb25hbCBuZSAiQ2FsbFdpdGhEZWZh
dWx0VmFsdWUiICYmICRvcHRpb25hbCBuZSAiQ2FsbFdpdGhOdWxsVmFsdWUiKSB8fCAkcGFyYW1l
dGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcAppbmRleCAxNzkyMzc0NGMwZGY5M2Y3MTA3ZGEzYmEyOGQ4N2NkZWU2ODY3NjU0Li4x
YzlmNDNiMWY4YjQxNzc0ZDZhNDlkMjNmMGE3NDM4NmY2MzNkNDBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTYzMSw0ICs2MzEsMTEgQEAgUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiB2OFZhbHVlVG9XZWJDb3JlRE9NU3RyaW5nTGlzdCh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmEKICAgICByZXR1cm4gcmV0LnJlbGVhc2UoKTsKIH0KIAordjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gbWF5YmVNaXNzaW5nUGFyYW1ldGVyKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MsIGludCBpbmRleCwgUGFyYW1ldGVyTWlzc2luZ1BvbGljeSBwb2xpY3kpCit7CisgICAgaWYg
KHBvbGljeSA9PSBNSVNTSU5HX0lTX0VNUFRZICYmIGluZGV4ID49IGFyZ3MuTGVuZ3RoKCkpCisg
ICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworICAgIHJldHVybiBhcmdzW2lu
ZGV4XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaAppbmRleCA1MzVkOWMxNjI1ZWQ5ZGJhYzg4Njg1MzU2ZmFlZmJkOTJiYTMy
M2EwLi5mYzVhMGI3ODkwMmE0ZGViOTQzYjM2NGM5ZjZiOGQ3MGJmNzI3NzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzg2LDYgKzM4Niw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIHByZXBhcmVCYXNlKCkKICAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1fdjhPYmplY3QuSXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgICAgICAgICBpZiAoTElLRUxZKG1fdjhPYmplY3QtPklzU3RyaW5nKCkp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC00MDIsMTUgKzQwNSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICBibG9jay5SZVRocm93KCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBUaGlzIHBhdGggaXMgdW5leHBlY3RlZC4gIEhvd2V2ZXIgdGhlcmUgaXMgaHlwb3RoZXNpcyB0
aGF0IGl0Ci0gICAgICAgICAgICAvLyBtaWdodCBiZSBjb21iaW5hdGlvbiBvZiB2OCBhbmQgdjgg
YmluZGluZ3MgYnVncy4gIEZvciBub3cKLSAgICAgICAgICAgIC8vIGp1c3QgYmFpbG91dCBhcyB3
ZSdsbCBjcmFzaCBpZiBhdHRlbXB0IHRvIGNvbnZlcnQgZW1wdHkgaGFuZGxlIGludG8gYSBzdHJp
bmcuCi0gICAgICAgICAgICBpZiAobV92OE9iamVjdC5Jc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAK
QEAgLTQ2MCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB0ZW1wbGF0ZTw+
IGlubGluZSBib29sIFY4UGFyYW1ldGVyPFdpdGhOdWxsQ2hlY2s+OjpwcmVwYXJlKCkKICAgICB7
Ci0gICAgICAgIGlmIChvYmplY3QoKS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG9iamVjdCgp
LklzRW1wdHkoKSB8fCBvYmplY3QoKS0+SXNOdWxsKCkpIHsKICAgICAgICAgICAgIHNldFN0cmlu
ZyhTdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDcw
LDcgKzQ2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHRlbXBsYXRlPD4gaW5saW5l
IGJvb2wgVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPjo6cHJlcGFyZSgpCiAg
ICAgewotICAgICAgICBpZiAob2JqZWN0KCktPklzTnVsbCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIGlmIChvYmplY3QoKS5Jc0VtcHR5KCkgfHwgb2JqZWN0KCktPklz
TnVsbCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBzZXRTdHJp
bmcoU3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTQ3
OCw2ICs0NzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gVjhQYXJh
bWV0ZXJCYXNlOjpwcmVwYXJlQmFzZSgpOwogICAgIH0KIAorICAgIGVudW0gUGFyYW1ldGVyTWlz
c2luZ1BvbGljeSB7CisgICAgICAgIE1JU1NJTkdfSVNfVU5ERUZJTkVELAorICAgICAgICBNSVNT
SU5HX0lTX0VNUFRZCisgICAgfTsKKworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG1heWJlTWlz
c2luZ1BhcmFtZXRlcihjb25zdCB2ODo6QXJndW1lbnRzJiwgaW50LCBQYXJhbWV0ZXJNaXNzaW5n
UG9saWN5KTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVjhCaW5kaW5n
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktp
dENTU01hdHJpeENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWVmYTQ5ZGUxYjQzZTA0ZGYxNjZlNDg1MzEwMjdjMzcxMjJhOWQ3OC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJWOFdlYktpdENTU01hdHJpeC5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgotCi0jaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhEb2N1bWVudC5oIgotI2luY2x1ZGUgIlY4Tm9kZS5oIgot
I2luY2x1ZGUgIlY4UHJveHkuaCIKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRDU1NNYXRyaXg6
OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJ
TkNfU1RBVFMoIkRPTS5XZWJLaXRDU1NNYXRyaXguQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICgh
YXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBv
YmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJv
eHk6OlR5cGVFcnJvcik7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGxvZ2ljIGhlcmUgaXMgYWxtb3N0
IGV4YWN0IGR1cGxpY2F0ZSBvZiBWODo6Y29uc3RydWN0RE9NT2JqZWN0LgotICAgIC8vIENvbnNp
ZGVyIHJlZmFjdG9yaW5nIHRvIHJlZHVjZSBkdXBsaWNhdGlvbi4KLSAgICBTdHJpbmcgY3NzVmFs
dWU7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gMSkKLSAgICAgICAgY3NzVmFsdWUgPSB0b1dl
YkNvcmVTdHJpbmcoYXJnc1swXSk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShj
c3NWYWx1ZSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgdGhyb3dFcnJvcihlYyk7Ci0KLSAg
ICAvLyBUcmFuc2Zvcm0gdGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBt
YXRyaXguCi0gICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZp
bmZvLCBtYXRyaXguZ2V0KCkpOwotICAgIHJldHVybiB0b1Y4KG1hdHJpeC5yZWxlYXNlKCksIGFy
Z3MuSG9sZGVyKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNYXRyaXguaWRsCmluZGV4IDc2ZmY2MDFjZjhjMzQ3NGJiYjQ1MmFlYjhmN2Zi
NDZiOWEyNGRiYzIuLjkwYWEzMzRlZjBiYzcwZTRiMmRkNDk4OTE3ZTY2MjhlZjgzYTI2Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCkBAIC0zMCw3ICszMCw4IEBAIG1v
ZHVsZSBjc3MgewogICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAogICAgICAgICBDdXN0b21Db25z
dHJ1Y3RGdW5jdGlvbiwKICAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCi0gICAgICAg
IFY4Q3VzdG9tQ29uc3RydWN0b3IKKyAgICAgICAgQ29uc3RydWN0b3IoaW4gW09wdGlvbmFsPUNh
bGxXaXRoTnVsbFZhbHVlXSBET01TdHJpbmcgY3NzVmFsdWUpLAorICAgICAgICBDb25zdHJ1Y3Rv
clJhaXNlc0V4Y2VwdGlvbiwKICAgICBdIFdlYktpdENTU01hdHJpeCB7CiAKICAgICAgICAgLy8g
VGhlc2UgYXR0cmlidXRlcyBhcmUgc2ltcGxlIGFsaWFzZXMgZm9yIGNlcnRhaW4gZWxlbWVudHMg
b2YgdGhlIDR4NCBtYXRyaXgK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106740</attachid>
            <date>2011-09-08 08:29:26 -0700</date>
            <delta_ts>2011-09-08 11:09:40 -0700</delta_ts>
            <desc>Updated run-binding-tests results</desc>
            <filename>bug-67458-20110908082924.patch</filename>
            <type>text/plain</type>
            <size>54424</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ3NDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNWIyOTkxOWMxZTY2Y2NlNjJlMmJm
YTUzMDdhNDY2N2Q3YmFiOTZkLi4xNDZkNGNhM2VhMmZmYjY4YjcyOWJlZjFmZTNlNjI2YTU0ZWVj
NzdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDktMDcgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBhIFdlYktpdENTU01hdHJpeCBj
b25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25zdHJ1Y3RvcicgZXh0ZW5kZWQgYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgdGVzdCBjYXNlIGZvciAibmV3IFdlYktpdENTU01hdHJpeChudWxsKSIgYW5kICJuZXcg
V2ViS2l0Q1NTTWF0cml4KHVuZGVmaW5lZCkiLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93
L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dp
bmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWw6CisKKzIwMTEtMDktMDcgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBTbm93IExlb3BhcmQgcmVzdWx0
cyBmb3IgdGhpcyBuZXcgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy1zbm93bGVvcGFy
ZC9mYXN0L3RleHQvaHlwaGVuYXRlLWxpbWl0LWxpbmVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisK
IDIwMTEtMDktMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NDY3NCBhbmQgcjk0Njg5LgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1
Y3RvcnMtZXhwZWN0ZWQudHh0CmluZGV4IDNkMjdjNGZiZTZmMzA2M2VlMDRmMzgwY2ZiZGZhNmE0
ZDRiYzIwM2MuLjJlN2JiMGYwMzVhYjRhZDI0NmFmM2Y0MDVkMThlMjhjMDM3NmI5Y2EgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0
cnVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTcsNiArNyw5IEBAIFBBU1MgSW1hZ2UucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwobmV3IEltYWdlKSBpcyAnW29iamVjdCBIVE1MSW1hZ2VFbGVtZW50XScK
IFBBU1MgT3B0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBPcHRpb24pIGlzICdbb2Jq
ZWN0IEhUTUxPcHRpb25FbGVtZW50XScKIFBBU1MgV2ViS2l0UG9pbnQucHJvdG90eXBlLnRvU3Ry
aW5nLmNhbGwobmV3IFdlYktpdFBvaW50KSBpcyAnW29iamVjdCBXZWJLaXRQb2ludF0nCiBQQVNT
IFdlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0
cml4KSBpcyAnbWF0cml4KDEuMDAwMDAwLCAwLjAwMDAwMCwgMC4wMDAwMDAsIDEuMDAwMDAwLCAw
LjAwMDAwMCwgMC4wMDAwMDApJworUEFTUyBXZWJLaXRDU1NNYXRyaXgucHJvdG90eXBlLnRvU3Ry
aW5nLmNhbGwobmV3IFdlYktpdENTU01hdHJpeCgpKSBpcyAnbWF0cml4KDEuMDAwMDAwLCAwLjAw
MDAwMCwgMC4wMDAwMDAsIDEuMDAwMDAwLCAwLjAwMDAwMCwgMC4wMDAwMDApJworUEFTUyBuZXcg
V2ViS2l0Q1NTTWF0cml4KG51bGwpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjog
RE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1MgbmV3IFdlYktpdENTU01hdHJpeCh1bmRlZmluZWQpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KIFBBU1Mg
WE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFhNTEh0dHBSZXF1ZXN0
KSBpcyAnW29iamVjdCBYTUxIdHRwUmVxdWVzdF0nCiBQQVNTIFhTTFRQcm9jZXNzb3IucHJvdG90
eXBlLnRvU3RyaW5nLmNhbGwobmV3IFhTTFRQcm9jZXNzb3IpIGlzICdbb2JqZWN0IFhTTFRQcm9j
ZXNzb3JdJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWwKaW5kZXggZWZk
NjExYzZhZWJhNWUzZWQxNmRlMzBkMjFkOWE4NmQzZWQ2Y2M1OS4uNTIyNWNmYTAyNjI1YjBkYzky
ODZiNzA3ZTlkN2QwODEyYzc2MGFiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy5odG1sCkBAIC0xNyw2ICsxNyw5IEBACiAgICAg
c2hvdWxkQmUoIk9wdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgT3B0aW9uKSIsICIn
W29iamVjdCBIVE1MT3B0aW9uRWxlbWVudF0nIik7CiAgICAgc2hvdWxkQmUoIldlYktpdFBvaW50
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRQb2ludCkiLCAiJ1tvYmplY3QgV2Vi
S2l0UG9pbnRdJyIpOwogICAgIHNob3VsZEJlKCJXZWJLaXRDU1NNYXRyaXgucHJvdG90eXBlLnRv
U3RyaW5nLmNhbGwobmV3IFdlYktpdENTU01hdHJpeCkiLCAiJ21hdHJpeCgxLjAwMDAwMCwgMC4w
MDAwMDAsIDAuMDAwMDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKSciKTsKKyAgICBz
aG91bGRCZSgiV2ViS2l0Q1NTTWF0cml4LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJL
aXRDU1NNYXRyaXgoKSkiLCAiJ21hdHJpeCgxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwLCAx
LjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKSciKTsKKyAgICBzaG91bGRUaHJvdygibmV3IFdl
YktpdENTU01hdHJpeChudWxsKSIpOworICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0Q1NTTWF0
cml4KHVuZGVmaW5lZCkiKTsKICAgICBzaG91bGRCZSgiWE1MSHR0cFJlcXVlc3QucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwobmV3IFhNTEh0dHBSZXF1ZXN0KSIsICInW29iamVjdCBYTUxIdHRwUmVx
dWVzdF0nIik7CiAgICAgc2hvdWxkQmUoIlhTTFRQcm9jZXNzb3IucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwobmV3IFhTTFRQcm9jZXNzb3IpIiwgIidbb2JqZWN0IFhTTFRQcm9jZXNzb3JdJyIpOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtc25vd2xlb3BhcmQvZmFzdC90
ZXh0L2h5cGhlbmF0ZS1saW1pdC1saW5lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtc25vd2xlb3BhcmQvZmFzdC90ZXh0L2h5cGhlbmF0ZS1saW1pdC1saW5lcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZkNmRmNWJiNDE5YzczOWU3ZDcyNzAyYWEyMzZhMzBlNDc1
MWM5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zbm93bGVv
cGFyZC9mYXN0L3RleHQvaHlwaGVuYXRlLWxpbWl0LWxpbmVzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4MTA2NgorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4MTA2NgorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4MTA2NgorICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDgpIHNpemUgNzY5eDU4NAorICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7
RElWfSBhdCAoNCwwKSBzaXplIDIwMng1MjkgW2JvcmRlcjogKDFweCBzb2xpZCAjQUREOEU2KV0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgMjAweDUyNworICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDIwMDogImFsc28gdGhlIGRpdmlzaW9uIG9mIgor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDMyKSB3aWR0aCAyMDA6ICJ0aGUgbWluZCBpbnRvIHRo
ZSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSw2Mykgd2lkdGggODc6ICJyYXRpb25hbCwiCisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDEsOTQpIHdpZHRoIDIwMDogImNvbmN1cGlzY2VudCwgYW5k
IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEyNSkgd2lkdGggMjAwOiAiaXJhc2NpYmxlIGVs
ZW1lbnRzLCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxNTYpIHdpZHRoIDIwMDogIm9yIG9m
IHBsZWFzdXJlcyIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxODcpIHdpZHRoIDIwMDogImFu
ZCBkZXNpcmVzIGludG8iCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMjE4KSB3aWR0aCAyMDA6
ICJuZWNlc3NhcnkgYW5kIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDI0OSkgd2lkdGggMTU1
OiAidW5uZWNlc3NhcnlceHsyMDE0fSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwyODApIHdp
ZHRoIDIwMDogInRoZXNlIGFuZCBvdGhlciIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwzMTEp
IHdpZHRoIDIwMDogImdyZWF0IGZvcm1zIG9mIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDM0
Mikgd2lkdGggMjAwOiAidGhvdWdodCBhcmUgYWxsIG9mIgorICAgICAgICAgIHRleHQgcnVuIGF0
ICgxLDM3Mykgd2lkdGggNjY6ICJ0aGVtICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjcsMzcz
KSB3aWR0aCAxMzQ6ICJ0byBiZSBmb3VuZCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSw0MDQp
IHdpZHRoIDIwMDogImluIHRoZSBSZXB1YmxpYywiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEs
NDM1KSB3aWR0aCAyMDA6ICJhbmQgd2VyZSBwcm9iYWJseSIKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMSw0NjYpIHdpZHRoIDIwMDogImZpcnN0IGludmVudGVkIGJ5IgorICAgICAgICAgIHRleHQg
cnVuIGF0ICgxLDQ5Nykgd2lkdGggNjA6ICJQbGF0by4iCisgICAgICBSZW5kZXJCbG9jayAoZmxv
YXRpbmcpIHtESVZ9IGF0ICgyMTQsMCkgc2l6ZSAyMDJ4NTI5IFtib3JkZXI6ICgxcHggc29saWQg
I0FERDhFNildCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDIwMHg1
MjcKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0aCAyMDA6ICJhbHNvIHRoZSBkaXZp
c2lvbiBvZiIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwzMikgd2lkdGggMjAwOiAidGhlIG1p
bmQgaW50byB0aGUiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsNjMpIHdpZHRoIDg3OiAicmF0
aW9uYWwsIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDk0KSB3aWR0aCAyMDA6ICJjb25jdXBp
c2NlbnQsIGFuZCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxMjUpIHdpZHRoIDIwMDogImly
YXNjaWJsZSBlbGVtZW50cywiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMTU2KSB3aWR0aCAy
MDA6ICJvciBvZiBwbGVhc3VyZXMiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMTg3KSB3aWR0
aCAyMDA6ICJhbmQgZGVzaXJlcyBpbnRvIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDIxOCkg
d2lkdGggMjAwOiAibmVjZXNzYXJ5IGFuZCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwyNDkp
IHdpZHRoIDE1NTogInVubmVjZXNzYXJ5XHh7MjAxNH0iCisgICAgICAgICAgdGV4dCBydW4gYXQg
KDEsMjgwKSB3aWR0aCAyMDA6ICJ0aGVzZSBhbmQgb3RoZXIiCisgICAgICAgICAgdGV4dCBydW4g
YXQgKDEsMzExKSB3aWR0aCAyMDA6ICJncmVhdCBmb3JtcyBvZiIKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMSwzNDIpIHdpZHRoIDIwMDogInRob3VnaHQgYXJlIGFsbCBvZiIKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMSwzNzMpIHdpZHRoIDY2OiAidGhlbSAiCisgICAgICAgICAgdGV4dCBydW4g
YXQgKDY3LDM3Mykgd2lkdGggMTM0OiAidG8gYmUgZm91bmQiCisgICAgICAgICAgdGV4dCBydW4g
YXQgKDEsNDA0KSB3aWR0aCAyMDA6ICJpbiB0aGUgUmVwdWJsaWMsIgorICAgICAgICAgIHRleHQg
cnVuIGF0ICgxLDQzNSkgd2lkdGggMjAwOiAiYW5kIHdlcmUgcHJvYmFibHkiCisgICAgICAgICAg
dGV4dCBydW4gYXQgKDEsNDY2KSB3aWR0aCAyMDA6ICJmaXJzdCBpbnZlbnRlZCBieSIKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMSw0OTcpIHdpZHRoIDYwOiAiUGxhdG8uIgorICAgICAgUmVuZGVy
QmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoNDI0LDApIHNpemUgMjAyeDUyOSBbYm9yZGVyOiAo
MXB4IHNvbGlkICNBREQ4RTYpXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkg
c2l6ZSAyMDB4NTI3CisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggMjAwOiAiYWxz
byB0aGUgZGl2aXNpb24gb2YiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMzIpIHdpZHRoIDIw
MDogInRoZSBtaW5kIGludG8gdGhlIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDYzKSB3aWR0
aCA4NzogInJhdGlvbmFsLCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSw5NCkgd2lkdGggMjAw
OiAiY29uY3VwaXNjZW50LCBhbmQiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMTI1KSB3aWR0
aCAyMDA6ICJpcmFzY2libGUgZWxlbWVudHMsIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDE1
Nikgd2lkdGggMjAwOiAib3Igb2YgcGxlYXN1cmVzIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgx
LDE4Nykgd2lkdGggMjAwOiAiYW5kIGRlc2lyZXMgaW50byIKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMSwyMTgpIHdpZHRoIDIwMDogIm5lY2Vzc2FyeSBhbmQiCisgICAgICAgICAgdGV4dCBydW4g
YXQgKDEsMjQ5KSB3aWR0aCAxNTU6ICJ1bm5lY2Vzc2FyeVx4ezIwMTR9IgorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgxLDI4MCkgd2lkdGggMjAwOiAidGhlc2UgYW5kIG90aGVyIgorICAgICAgICAg
IHRleHQgcnVuIGF0ICgxLDMxMSkgd2lkdGggMjAwOiAiZ3JlYXQgZm9ybXMgb2YiCisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDEsMzQyKSB3aWR0aCAyMDA6ICJ0aG91Z2h0IGFyZSBhbGwgb2YiCisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDEsMzczKSB3aWR0aCA2NjogInRoZW0gIgorICAgICAgICAg
IHRleHQgcnVuIGF0ICg2NywzNzMpIHdpZHRoIDEzNDogInRvIGJlIGZvdW5kIgorICAgICAgICAg
IHRleHQgcnVuIGF0ICgxLDQwNCkgd2lkdGggMjAwOiAiaW4gdGhlIFJlcHVibGljLCIKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMSw0MzUpIHdpZHRoIDIwMDogImFuZCB3ZXJlIHByb2JhYmx5Igor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDQ2Nikgd2lkdGggMjAwOiAiZmlyc3QgaW52ZW50ZWQg
YnkiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsNDk3KSB3aWR0aCA2MDogIlBsYXRvLiIKKyAg
ICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDQsNTI5KSBzaXplIDIwMng1Mjkg
W2JvcmRlcjogKDFweCBzb2xpZCAjQUREOEU2KV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxLDEpIHNpemUgMjAweDUyNworICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRo
IDIwMDogImFsc28gdGhlIGRpdmlzaW9uIG9mIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDMy
KSB3aWR0aCAyMDA6ICJ0aGUgbWluZCBpbnRvIHRoZSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MSw2Mykgd2lkdGggODc6ICJyYXRpb25hbCwiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsOTQp
IHdpZHRoIDIwMDogImNvbmN1cGlzY2VudCwgYW5kIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgx
LDEyNSkgd2lkdGggMjAwOiAiaXJhc2NpYmxlIGVsZW1lbnRzLCIKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMSwxNTYpIHdpZHRoIDIwMDogIm9yIG9mIHBsZWFzdXJlcyIKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMSwxODcpIHdpZHRoIDIwMDogImFuZCBkZXNpcmVzIGludG8iCisgICAgICAgICAg
dGV4dCBydW4gYXQgKDEsMjE4KSB3aWR0aCAyMDA6ICJuZWNlc3NhcnkgYW5kIgorICAgICAgICAg
IHRleHQgcnVuIGF0ICgxLDI0OSkgd2lkdGggMTU1OiAidW5uZWNlc3NhcnlceHsyMDE0fSIKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMSwyODApIHdpZHRoIDIwMDogInRoZXNlIGFuZCBvdGhlciIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwzMTEpIHdpZHRoIDIwMDogImdyZWF0IGZvcm1zIG9m
IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDM0Mikgd2lkdGggMjAwOiAidGhvdWdodCBhcmUg
YWxsIG9mIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDM3Mykgd2lkdGggNjY6ICJ0aGVtICIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjcsMzczKSB3aWR0aCAxMzQ6ICJ0byBiZSBmb3VuZCIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSw0MDQpIHdpZHRoIDIwMDogImluIHRoZSBSZXB1Ymxp
YywiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsNDM1KSB3aWR0aCAyMDA6ICJhbmQgd2VyZSBw
cm9iYWJseSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSw0NjYpIHdpZHRoIDIwMDogImZpcnN0
IGludmVudGVkIGJ5IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDQ5Nykgd2lkdGggNjA6ICJQ
bGF0by4iCisgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgyMTQsNTI5KSBz
aXplIDIwMng1MjkgW2JvcmRlcjogKDFweCBzb2xpZCAjQUREOEU2KV0KKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgMjAweDUyNworICAgICAgICAgIHRleHQgcnVuIGF0
ICgxLDEpIHdpZHRoIDIwMDogImFsc28gdGhlIGRpdmlzaW9uIG9mIgorICAgICAgICAgIHRleHQg
cnVuIGF0ICgxLDMyKSB3aWR0aCAyMDA6ICJ0aGUgbWluZCBpbnRvIHRoZSIKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMSw2Mykgd2lkdGggODc6ICJyYXRpb25hbCwiCisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDEsOTQpIHdpZHRoIDIwMDogImNvbmN1cGlzY2VudCwgYW5kIgorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgxLDEyNSkgd2lkdGggMjAwOiAiaXJhc2NpYmxlIGVsZW1lbnRzLCIKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMSwxNTYpIHdpZHRoIDIwMDogIm9yIG9mIHBsZWFzdXJlcyIKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxODcpIHdpZHRoIDIwMDogImFuZCBkZXNpcmVzIGludG8i
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMjE4KSB3aWR0aCAyMDA6ICJuZWNlc3NhcnkgYW5k
IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDI0OSkgd2lkdGggMTU1OiAidW5uZWNlc3Nhcnlc
eHsyMDE0fSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwyODApIHdpZHRoIDIwMDogInRoZXNl
IGFuZCBvdGhlciIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwzMTEpIHdpZHRoIDIwMDogImdy
ZWF0IGZvcm1zIG9mIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDM0Mikgd2lkdGggMjAwOiAi
dGhvdWdodCBhcmUgYWxsIG9mIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDM3Mykgd2lkdGgg
NjY6ICJ0aGVtICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjcsMzczKSB3aWR0aCAxMzQ6ICJ0
byBiZSBmb3VuZCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSw0MDQpIHdpZHRoIDIwMDogImlu
IHRoZSBSZXB1YmxpYywiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDEsNDM1KSB3aWR0aCAyMDA6
ICJhbmQgd2VyZSBwcm9iYWJseSIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSw0NjYpIHdpZHRo
IDIwMDogImZpcnN0IGludmVudGVkIGJ5IgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDQ5Nykg
d2lkdGggNjA6ICJQbGF0by4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTEwNTJkMDIyN2QxNmI1NjU1OTJkNWQ3
NTM4YjI5YzVjYWIzNTA5ZC4uOGQ1ODY1OWU5MjhmM2U0ODBlYzc3NWE3ZjRiOGQyOTlmZjQ3Mzc0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTA5LTA3ICBLZW50YXJvIEhhcmEg
IDxoYXJha2VuQGdvb2dsZS5jb20+CisKKyAgICAgICAgR2VuZXJhdGUgYSBXZWJLaXRDU1NNYXRy
aXggY29uc3RydWN0b3Igb2YgVjggdXNpbmcgdGhlIElETCAnQ29uc3RydWN0b3InIGV4dGVuZGVk
IGF0dHJpYnV0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njc0NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhICdDYWxsV2l0aE51bGxWYWx1ZScgZXh0ZW5kZWQgYXR0cmlidXRlLgorICAgICAg
ICBJZiBhIHBhcmFtZXRlciBpcyBvcHRpb25hbCBhbmQgbWlzc2luZywgJ0NhbGxXaXRoRGVmYXVs
dFZhbHVlJworICAgICAgICBoYW5kbGVzIGl0IGFzIGEgc3RyaW5nICJ1bmRlZmluZWQiLiBPbiB0
aGUgb3RoZXIgaGFuZCwKKyAgICAgICAgJ0NhbGxXaXRoTnVsbFZhbHVlJyBoYW5kbGVzIGl0IGFz
IGEgbnVsbCBzdHJpbmcKKyAgICAgICAgKE5vdGU6IG5vdCBhIHN0cmluZyAibnVsbCIsIGJ1dCBh
IG51bGwgc3RyaW5nKS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vV2luZG93L2N1c3RvbS1j
b25zdHJ1Y3RvcnMuaHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9zdmctdnMtY3NzLnho
dG1sCisgICAgICAgICAgICAgICB0cmFuc2Zvcm1zL2Nzc21hdHJpeC0yZC1pbnRlcmZhY2UueGh0
bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvY3NzbWF0cml4LTNkLWludGVyZmFjZS54aHRt
bAorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBSZW1vdmVkIFY4V2ViS2l0Q1NTTWF0cml4Q29u
c3RydWN0b3IuY3BwLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBSZW1vdmVkIFY4V2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3IuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOiBJZiB0aGUg
J0NhbGxXaXRoTnVsbFZhbHVlJyBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgc2V0LCB3ZSBjYWxsIG1h
eWJlTWlzc2luZ1BhcmFtZXRlcigpIHdpdGggTUlTU0lOR19JU19FTVBUWSBtb2RlIHRvIG9idGFp
biBhIG1heWJlIG1pc3NpbmcgcGFyYW1ldGVyLiBPdGhlcndpc2UsIHdlIGNhbGwgbWF5YmVNaXNz
aW5nUGFyYW1ldGVyKCkgd2l0aCBNSVNTSU5HX0lTX1VOREVGSU5FRCBtb2RlLgorICAgICAgICAo
UmVxdWlyZXNDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXliZU1pc3NpbmdQYXJhbWV0ZXIpOiBSZXR1cm5z
IHRoZSBwYXJhbWV0ZXIgb2YgYSBnaXZlbiBpbmRleCBpZiB0aGUgcGFyYW1ldGVyIGV4aXN0cy4g
SWYgdGhlIHBhcmFtZXRlciBkb2VzIG5vdCBleGlzdCBhbmQgTUlTU0lOR19JU19VTkRFRklORUQg
aXMgc2V0LCB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdW5k
ZWZpbmVkLiBJZiB0aGUgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0IGFuZCBNSVNTSU5HX0lTX0VN
UFRZIGlzIHNldCwgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBvYmplY3QuCisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFBhcmFtZXRl
ckJhc2U6OnByZXBhcmVCYXNlKTogVGhlIGZhY3QgdGhhdCBWOFBhcmFtZXRlckJhc2UgZG9lcyBu
b3QgaGF2ZSBhbnkgb2JqZWN0IG1lYW5zIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8gcHJlcGFyZSBh
bnl0aGluZywgaS5lLiB3ZSBzaG91bGQganVzdCByZXR1cm4gdHJ1ZSBpbiB0aGlzIGNhc2UuCisg
ICAgICAgIChXZWJDb3JlOjo6OnByZXBhcmUpOiBJZiBWOFBhcmFtZXRlckJhc2UgZG9lcyBub3Qg
aGF2ZSBhbnkgb2JqZWN0LCB0aGVuIHdlIHNldCBhIG51bGwgc3RyaW5nLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4LmlkbDogQWRkZWQgdGhlICdDb25zdHJ1
Y3RvcicgZXh0ZW5kZWQgYXR0cmlidXRlLgorCiAyMDExLTA5LTA3ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByOTQ2NzQgYW5kIHI5NDY4OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwMzk4NjRiYmE5Zjgz
NThkNjQ2Nzk2NDIzNzY5OWEwOTM4OThiZmNjLi5jMTMwMGY1NzI2NzJmYmJiZDUzYmMzM2Q0OWFm
ZWRiNzM1ODFmMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjE4LDcgKzIyMTgsNiBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRp
b25DdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRD
U1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDIy
YTg0NWQ4OThlMTUwZTUwNjU1ZmQ3OWYwZGQxYTUwNDZhYmRkMjkuLjIyOWQ4YzM4NWNjNDY3MWM4
YTI2YTZmNjg3NzA1Njc4OTliOTIyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMDgsNyArMjA4LDYg
QEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNw
cCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5j
cHAgXAotICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0
cnVjdG9yLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRD
dXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCmluZGV4IDllMjYzNDA1Yjc0NTJkZWY0YmU1NGEzOTkwZjdlMWE5YTBmNmQ4ZTMuLmRm
OTM0MWE1ODU0OTMzZWY4NzllZWU0ZTkyZWU1MWI5OTMzNDE3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xNDE2LDkg
KzE0MTYsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIAogICAgICAgICAjIE9wdGlv
bmFsIGNhbGxiYWNrcyBzaG91bGQgYmUgdHJlYXRlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB0aGV5
IGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAoMCksCiAgICAgICAgICMgYW5kIHdlIGNhbiBy
ZWR1Y2UgdGhlIG51bWJlciBvZiBvdmVybG9hZGVkIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBkaWZm
ZXJlbnQgbnVtYmVyIG9mIHBhcmFtZXRlcnMuCi0gICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRz
IHdpdGggZGVmYXVsdCB2YWx1ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBzaG91
bGQgbm90IGdlbmVyYXRlIGFuIGVhcmx5IGNhbGwuCisgICAgICAgICMgT3B0aW9uYWwgYXJndW1l
bnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBv
ciBbT3B0aW9uYWw9Q2FsbFdpdGhOdWxsVmFsdWVdIHNob3VsZCBub3QgZ2VuZXJhdGUgYW4gZWFy
bHkgY2FsbC4KICAgICAgICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik9wdGlvbmFsIn07ICAgICAgICAKLSAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAk
b3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKKyAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAk
b3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAkb3B0aW9uYWwgbmUgIkNhbGxX
aXRoTnVsbFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxi
YWNrIn0pIHsKICAgICAgICAgICAgICMgR2VuZXJhdGUgZWFybHkgY2FsbCBpZiB0aGVyZSBhcmUg
bm90IGVub3VnaCBwYXJhbWV0ZXJzLgogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgpIHtcbiI7CiAgICAgICAg
ICAgICBteSAkZnVuY3Rpb25DYWxsID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0
aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiIHggMiwgJGltcGxDbGFzc05hbWUpOwpAQCAtMTQyNiw2
ICsxNDI2LDExIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgfQogCisgICAgICAgIG15
ICRwYXJhbWV0ZXJNaXNzaW5nUG9saWN5ID0gIk1JU1NJTkdfSVNfVU5ERUZJTkVEIjsKKyAgICAg
ICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgZXEgIkNhbGxXaXRoTnVsbFZhbHVlIikgewor
ICAgICAgICAgICAgJHBhcmFtZXRlck1pc3NpbmdQb2xpY3kgPSAiTUlTU0lOR19JU19FTVBUWSI7
CisgICAgICAgIH0KKwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9uQ29kZS5o
Iik7CiAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUo
JHBhcmFtZXRlciwgJHBhcmFtSW5kZXgpOwogICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKQEAgLTE0NTcsNyArMTQ2Miw3IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgICAgIGdvdG8gZmFpbDtcbiI7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tT
dHJpbmcgLj0gIiAgICB9XG4iOwogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4
UGFyYW1ldGVyLykgewotICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRw
YXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpOworICAgICAgICAgICAgbXkgJHZhbHVlID0g
SlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywg
JHBhcmFtSW5kZXgsICRwYXJhbWV0ZXJNaXNzaW5nUG9saWN5KSIpOwogICAgICAgICAgICAgJHBh
cmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJh
bWV0ZXIsICRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiI7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhCaW5kaW5nTWFj
cm9zLmgiKTsKQEAgLTE0NzgsNyArMTQ4Myw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
awogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgICRwYXJhbWV0
ZXJDaGVja1N0cmluZyAuPSAiICAgIEVYQ0VQVElPTl9CTE9DSygkbmF0aXZlVHlwZSwgJHBhcmFt
ZXRlck5hbWUsICIgLgotICAgICAgICAgICAgICAgICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRl
ciwgImFyZ3NbJHBhcmFtSW5kZXhdIikgLiAiKTtcbiI7CisgICAgICAgICAgICAgICAgIEpTVmFs
dWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAibWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsICRwYXJh
bUluZGV4LCAkcGFyYW1ldGVyTWlzc2luZ1BvbGljeSkiKSAuICIpO1xuIjsKICAgICAgICAgfQog
CiAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNJbmRleCJ9
KSB7CkBAIC0zMjY4LDcgKzMyNzMsNyBAQCBzdWIgUmVxdWlyZXNDdXN0b21TaWduYXR1cmUKICAg
ICB9CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30p
IHsKICAgICAgICAgbXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ik9wdGlvbmFsIn07Ci0gICAgICAgIGlmICgoJG9wdGlvbmFsICYmICgkb3B0aW9uYWwgbmUg
IkNhbGxXaXRoRGVmYXVsdFZhbHVlIikpIHx8ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDYWxsYmFjayJ9KSB7CisgICAgICAgIGlmICgoJG9wdGlvbmFsICYmICRvcHRpb25hbCBu
ZSAiQ2FsbFdpdGhEZWZhdWx0VmFsdWUiICYmICRvcHRpb25hbCBuZSAiQ2FsbFdpdGhOdWxsVmFs
dWUiKSB8fCAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IGEwZGUyM2Y0NmFjZTdjNTY0OWQwOWRmNmRjMjc1ZWY5MzYxNWMyZTYuLmM1NjZm
YTk3OGNmZmU5NWNhNTUzYWIyMGQwZTc3OTNlZmRlZDIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVz
dEludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogCiAjdW5kZWYgVEhVTktfR0VORVJB
VE9SCiBzdGF0aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlVGFibGUgPSB7IDEsIDAsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFs
dWVzLCAwIH07Ci1jb25zdCBDbGFzc0luZm8gSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0SW50ZXJmYWNlUHJvdG90eXBlIiwgJkpTQzo6SlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0OjpzX2luZm8sICZKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgMCB9OworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdElu
dGVyZmFjZVByb3RvdHlwZSIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgJkpTVGVz
dEludGVyZmFjZVByb3RvdHlwZVRhYmxlLCAwIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCmluZGV4IDE3ODhhZWIzYmY3ODk3NWVlNmIzYWRm
MWQxYjk3MDcxMDhjOTIzZjUuLmI3NGQ2OTE4MTAwYmNmODRkZTBhZTgxNDRmNTJhZTBjYTI4NTdk
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDkgKzYy
LDkgQEAgcHJvdGVjdGVkOgogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFRlc3RJbnRlcmZhY2UqKTsKIFRlc3RJbnRlcmZhY2UqIHRvVGVzdElu
dGVyZmFjZShKU0M6OkpTVmFsdWUpOwogCi1jbGFzcyBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUg
OiBwdWJsaWMgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgeworY2xhc3MgSlNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6
Ci0gICAgdHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOworICAgIHR5
cGVkZWYgSlNDOjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3Rh
dGljIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSkgeyBmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QpOyB9CisgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgOiBKU0M6OkpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IGZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEpOyB9CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDJjMWU3MmI1MGZl
ZjI0NzgyODY3MjdkMmI5NWUyMGM3YWMwYWZjMzcuLjdkM2Q5MDIxZDY1MDA3NDcxYmRjZWRhMGFh
NmUzODk2ZWEwM2ZlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogCiAj
dW5kZWYgVEhVTktfR0VORVJBVE9SCiBzdGF0aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFi
bGUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZVRhYmxlID0geyAyLCAxLCBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKLWNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSIsICZKU0M6OkpTT2Jq
ZWN0V2l0aEdsb2JhbE9iamVjdDo6c19pbmZvLCAmSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
clByb3RvdHlwZVRhYmxlLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJQcm90b3R5cGUiLCAmSlNDOjpKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlVGFibGUsIDAgfTsKIAogSlNPYmplY3QqIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgKaW5kZXggZWQ4NmIwNDVmNTVhN2Q0Yzk2ZDcwMzJhN2NiODQ2ZjUx
Mzc0ZWY4Yi4uZTM1NWFkODAwODhmYzZkNTg0ZDdlNWRlMjI5NzBhYWQ1ZDdmNmJlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC0yNCw3ICsyNCw3IEBA
CiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9PYmplY3RQcm90b3R5cGUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsOSArNjAsOSBAQCBwcm90ZWN0ZWQ6CiBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqKTsKIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyKEpTQzo6SlNWYWx1ZSk7CiAKLWNsYXNzIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QgeworY2xhc3MgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgotICAgIHR5cGVkZWYgSlNDOjpK
U09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKKyAgICB0eXBlZGVmIEpTQzo6SlNOb25GaW5h
bE9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZShKU0M6OkpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkgeyBmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QpOyB9CisgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZShK
U0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEs
IHN0cnVjdHVyZSkgeyBmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsgfQogcHJvdGVjdGVkOgog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApp
bmRleCAwZGIzZDg4YmExYTM3ZjNkMzc5ZmVmMjU1MWU2MWMzZmQ5OTliNjJlLi4zYTNmYTU3NTM4
MDVhZDc1OGM2ZDJiMWI5M2RmMTdiZDdmNjNlMzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjc0LDcgKzI3
NCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJs
ZVZhbHVlc1tdID0KIAogI3VuZGVmIFRIVU5LX0dFTkVSQVRPUgogc3RhdGljIEpTQ19DT05TVF9I
QVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlID0geyAxMzcsIDEyNywg
SlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmpQcm90b3R5cGUiLCAmSlNDOjpKU09i
amVjdFdpdGhHbG9iYWxPYmplY3Q6OnNfaW5mbywgJkpTVGVzdE9ialByb3RvdHlwZVRhYmxlLCAw
IH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
T2JqUHJvdG90eXBlIiwgJkpTQzo6SlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAmSlNUZXN0T2Jq
UHJvdG90eXBlVGFibGUsIDAgfTsKIAogSlNPYmplY3QqIEpTVGVzdE9ialByb3RvdHlwZTo6c2Vs
ZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgK
aW5kZXggZDcxYjhhOTllZGU0OWQ2N2NmMWY0NGI4MDc1NGUwY2EzMGFjZTJlMS4uNGQwZjc5N2Mz
ZGM1MjU5YjdiZmMxOWEwMjk4Nzk3NDY5ZTE3ZjNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtMjQsNyArMjQsNyBA
QAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIlRlc3RPYmouaCIKICNpbmNs
dWRlIDxydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU09iamVj
dFdpdGhHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CiAjaW5j
bHVkZSA8cnVudGltZS9PYmplY3RQcm90b3R5cGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjksOSArNjksOSBAQCBwcm90ZWN0ZWQ6CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNT
dGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE9iaiopOwogVGVzdE9iaiogdG9UZXN0T2Jq
KEpTQzo6SlNWYWx1ZSk7CiAKLWNsYXNzIEpTVGVzdE9ialByb3RvdHlwZSA6IHB1YmxpYyBKU0M6
OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CitjbGFzcyBKU1Rlc3RPYmpQcm90b3R5cGUgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQzo6
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CisgICAgdHlwZWRlZiBKU0M6OkpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNUZXN0T2JqUHJvdG90
eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CkBA
IC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0T2Jq
UHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IGZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCk7IH0KKyAgICBKU1Rlc3RPYmpQcm90b3R5cGUo
SlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpIHsgZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7IH0KIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5k
ZXggNzdmOWJkZDI3ZTk3NTljNDE0MDNiOTIwYjk5ZjMwOWY2OGU1ZDM4YS4uMjIxY2E0ZGZlNjU3
OTIzZmY0NTNjZDA4NTEwZTIzMWZjMTc4MGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJvdG90eXBlVGFibGVWYQogCiAjdW5kZWYgVEhVTktfR0VORVJBVE9SCiBzdGF0
aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlVGFibGUgPSB7IDEsIDAsIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07Ci1jb25zdCBDbGFzc0lu
Zm8gSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlIiwgJkpTQzo6
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpzX2luZm8sICZKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVUYWJsZSwgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSIsICZKU0M6OkpTTm9uRmlu
YWxPYmplY3Q6OnNfaW5mbywgJkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBy
b3RvdHlwZVRhYmxlLCAwIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oCmluZGV4IDMwNTEzZjVjM2I5MjM0MTg3YTM5YjAzN2E1OGVi
ZWY3MGZjODcxODkuLjZkZmE3ODEwZWMzNjMzODE5NmE3YmNmOTQzYjYyYWM4NTJhY2U5OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRl
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDkgKzYy
LDkgQEAgcHJvdGVjdGVkOgogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqKTsKIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRvVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZShKU0M6OkpTVmFsdWUpOwogCi1jbGFzcyBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QgeworY2xhc3MgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJv
dG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6Ci0gICAgdHlw
ZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOworICAgIHR5cGVkZWYgSlND
OjpKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewpAQCAtNzgsNyArNzgsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpT
Qzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkgeyBmaW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QpOyB9CisgICAgSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
OiBKU0M6OkpTTm9uRmluYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKSB7IGZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEpOyB9CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcAppbmRleCAzNWIzODJkNTRjZTZjMDdlYTJkOTBkYmRkZjNiNjdlNmUzNDFlNjUw
Li45MjhiNWQzN2E3ODE4ZTk3OWFkMTQ1ZTAxODZiYTY4NTBiOTI2M2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcApAQCAtNTQsOCArNTQsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0
SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5
cGVFcnJvcik7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTVFJJTkdfVE9fVjhQ
QVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjEsIGFyZ3NbMF0pOwot
ICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwg
c3RyMiwgYXJnc1sxXSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFBhcmFtZXRlcjw+LCBzdHIxLCBtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlT
U0lOR19JU19VTkRFRklORUQpKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9O
X0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjIsIG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAx
LCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggZTVi
MmNiNGQ4NzRhZjFkYTZiNGMzYzY3ZGE5OGMwMDdhZWQzNGE0Yy4uYWY0NDRlZjVmYTFkYjg4MjJl
MGQ3Njg2NzljZGFkNTc1NzgwNDUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIubWV0aG9kIik7CiAgICAg
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcCA9IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhSZWZQ
dHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4sIGxpc3RlbmVyLCBNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpjcmVhdGUoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhSZWZQdHI8TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcj4sIGxpc3RlbmVyLCBNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVh
dGUobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkp
OwogICAgIGltcC0+bWV0aG9kKGxpc3RlbmVyKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IGVkNjMyZGY1NmRkM2UxOTQyMjk3ZDU0Mzg3MjE0
YTA0NmUwMWJiMmUuLjY5ODU1NjI5NjA1YTcwYTNmMWE5MDEzZTI5OGIxYWFiZjRjMjBiMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCkBAIC02NjIsOSArNjYyLDkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2b2lkTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnZvaWRNZXRob2RXaXRoQXJncyIpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKLSAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgYXJn
c1sxXSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6
SGFzSW5zdGFuY2UoYXJnc1syXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwg
aW50QXJnLCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lT
X1VOREVGSU5FRCkpKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgbWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1J
U1NJTkdfSVNfVU5ERUZJTkVEKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpB
cmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDIs
IE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDIsIE1JU1NJTkdf
SVNfVU5ERUZJTkVEKSkpIDogMCk7CiAgICAgaW1wLT52b2lkTWV0aG9kV2l0aEFyZ3MoaW50QXJn
LCBzdHJBcmcsIG9iakFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwog
fQpAQCAtNjgwLDkgKzY4MCw5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW50TWV0
aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5pbnRNZXRob2RXaXRoQXJncyIpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JM
T0NLKGludCwgaW50QXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgYXJnc1sxXSk7Ci0g
ICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UoYXJnc1syXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoYXJnc1syXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0
b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5F
RCkpKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1l
dGVyPD4sIHN0ckFyZywgbWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJTkdfSVNf
VU5ERUZJTkVEKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDIsIE1JU1NJTkdf
SVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDIsIE1JU1NJTkdfSVNfVU5ERUZJ
TkVEKSkpIDogMCk7CiAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW1wLT5pbnRNZXRob2RX
aXRoQXJncyhpbnRBcmcsIHN0ckFyZywgb2JqQXJnKSk7CiB9CiAKQEAgLTY5Nyw5ICs2OTcsOSBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iak1ldGhvZFdpdGhBcmdzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
b2JqTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9J
bnQzMihhcmdzWzBdKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFBhcmFtZXRlcjw+LCBzdHJBcmcsIGFyZ3NbMV0pOwotICAgIEVYQ0VQVElPTl9CTE9DSyhU
ZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMl0pID8gVjhUZXN0
T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0pKSA6IDAp
OworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihtYXliZU1pc3NpbmdQ
YXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7CisgICAgU1RSSU5HX1RP
X1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdHJBcmcsIG1heWJl
TWlzc2luZ1BhcmFtZXRlcihhcmdzLCAxLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpOworICAgIEVY
Q0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKG1h
eWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAyLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpID8gVjhU
ZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1heWJlTWlzc2lu
Z1BhcmFtZXRlcihhcmdzLCAyLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKSA6IDApOwogICAgIHJl
dHVybiB0b1Y4KGltcC0+b2JqTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIG9iakFyZykp
OwogfQogCkBAIC03MDksOCArNzA5LDggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBt
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0
ZXI8Piwgc3RyQXJnLCBhcmdzWzBdKTsKLSAgICBFWENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9i
akFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzFdKSA/IFY4VGVzdE9iajo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwKTsKKyAgICBTVFJJ
TkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywg
bWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7Cisg
ICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkg
PyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWF5YmVN
aXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpIDogMCk7CiAg
ICAgcmV0dXJuIHRvVjgoaW1wLT5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzKHN0ckFyZywgb2Jq
QXJnKSk7CiB9CiAKQEAgLTcyMiw4ICs3MjIsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxsYmFjayhjb25zdCB2OAog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIFNUUklOR19UT19WOFBBUkFNRVRF
Ul9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzBdKTsKLSAgICBF
WENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShh
cmdzWzFdKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzFdKSkgOiAwKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgbWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAs
IE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBv
YmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3Ms
IDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJ
TkdfSVNfVU5ERUZJTkVEKSkpIDogMCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGlt
cC0+bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhzdHJBcmcsIG9iakFyZywgZWMp
OwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTc2OSwxMiAr
NzY5LDEyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3B0aW9uc09iamVjdENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVz
dE9iai5vcHRpb25zT2JqZWN0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soT3B0aW9uc09iamVjdCwg
b28sIGFyZ3NbMF0pOworICAgIEVYQ0VQVElPTl9CTE9DSyhPcHRpb25zT2JqZWN0LCBvbywgbWF5
YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPm9wdGlvbnNPYmplY3Qob28p
OwogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiAgICAgfQotICAgIEVY
Q0VQVElPTl9CTE9DSyhPcHRpb25zT2JqZWN0LCBvb28sIGFyZ3NbMV0pOworICAgIEVYQ0VQVElP
Tl9CTE9DSyhPcHRpb25zT2JqZWN0LCBvb28sIG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAx
LCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpOwogICAgIGltcC0+b3B0aW9uc09iamVjdChvbywgb29v
KTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC04MDYsNyArODA2
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21BcmdzQW5kRXhjZXB0aW9u
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKG1heFN0YWNrU2l6ZSkpOwogICAgIGlm
ICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIEVYQ0VQ
VElPTl9CTE9DSyhsb2cqLCBpbnRBcmcsIFY4bG9nOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IFY4
bG9nOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDAp
OworICAgIEVYQ0VQVElPTl9CTE9DSyhsb2cqLCBpbnRBcmcsIFY4bG9nOjpIYXNJbnN0YW5jZSht
YXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSA/IFY4
bG9nOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1heWJlTWlzc2luZ1Bh
cmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKSA6IDApOwogICAgIGltcC0+
Y3VzdG9tQXJnc0FuZEV4Y2VwdGlvbihpbnRBcmcsIHNjcmlwdEFyZ3VtZW50cywgY2FsbFN0YWNr
LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgZ290byBmYWlsOwpAQCAtODU0
LDcgKzg1NCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFtaWNGcmFt
ZUFuZEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai53aXRoRHluYW1pY0ZyYW1lQW5kQXJnIik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IGludEFyZywgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19J
U19VTkRFRklORUQpKSk7CiAgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJp
ZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOwogICAgIGlmICghZW50ZXJlZEZyYW1lKQogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtODY2LDcgKzg2Niw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoRHluYW1p
Y0ZyYW1lQW5kT3B0aW9uYWxBcmciKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywg
dG9JbnQzMihhcmdzWzBdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0lu
dDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkp
KTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7CiAgICAgICAgIEZyYW1lKiBlbnRlcmVk
RnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKICAgICAg
ICAgaWYgKCFlbnRlcmVkRnJhbWUpCkBAIC04NzQsNyArODc0LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB3aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmdDYWxsYmFjayhjb25z
dCB2ODo6QXIKICAgICAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoZW50
ZXJlZEZyYW1lLCBpbnRBcmcpOwogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCk7CiAgICAgfQotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIG9wdGlvbmFsQXJnLCB0b0ludDMy
KGFyZ3NbMV0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHRpb25hbEFyZywgdG9JbnQz
MihtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMSwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7
CiAgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRl
cmVkQ29udGV4dCgpOwogICAgIGlmICghZW50ZXJlZEZyYW1lKQogICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwpAQCAtODg2LDcgKzg4Niw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdl
c3R1cmUiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihhcmdzWzBd
KSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMyKG1heWJlTWlzc2lu
Z1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBGcmFtZSog
ZW50ZXJlZEZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7
CiAgICAgaWYgKCFlbnRlcmVkRnJhbWUpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CkBAIC04OTgsNyArODk4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEQ2FsbGJhY2soY29uc3QgdjgKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQiKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwot
ICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihhcmdzWzBdKSk7CisgICAg
RVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRl
cihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8PSAxKSB7CiAgICAgICAgIEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2
ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKICAgICAgICAgaWYgKCFlbnRlcmVkRnJhbWUpCkBA
IC05MDYsNyArOTA2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHluYW1p
Y0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEQ2FsbGJhY2soY29uc3QgdjgKICAgICAgICAgaW1wLT53
aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGVudGVyZWRGcmFtZSwgaW50QXJnLCBT
Y3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CiAgICAgICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAgICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGlu
dCwgb3B0aW9uYWxBcmcsIHRvSW50MzIoYXJnc1sxXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhp
bnQsIG9wdGlvbmFsQXJnLCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAxLCBN
SVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBGcmFtZSogZW50ZXJlZEZyYW1lID0gVjhQcm94
eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CiAgICAgaWYgKCFlbnRlcmVkRnJh
bWUpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC05OTMsNyArOTkzLDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgICAgICBpbXAtPm1ldGhvZFdpdGhPcHRpb25hbEFy
ZygpOwogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiAgICAgfQotICAg
IEVYQ0VQVElPTl9CTE9DSyhpbnQsIG9wdCwgdG9JbnQzMihhcmdzWzBdKSk7CisgICAgRVhDRVBU
SU9OX0JMT0NLKGludCwgb3B0LCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAw
LCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhPcHRpb25hbEFy
ZyhvcHQpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KQEAgLTEwMDIs
MTIgKzEwMDIsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnMKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBub25PcHQsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIG5vbk9wdCwgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIo
YXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PD0gMSkgewogICAgICAgICBpbXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFs
QXJnKG5vbk9wdCk7CiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAg
ICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgb3B0LCB0b0ludDMyKGFyZ3NbMV0pKTsKKyAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHQsIHRvSW50MzIobWF5YmVNaXNzaW5nUGFyYW1ldGVy
KGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpOwogICAgIGltcC0+bWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcobm9uT3B0LCBvcHQpOwogICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KQEAgLTEwMTYsMTMgKzEwMTYsMTMgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25h
bEFyZ3NDYWxsYmFjaygKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhO
b25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGlu
dCwgbm9uT3B0LCB0b0ludDMyKGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBu
b25PcHQsIHRvSW50MzIobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNf
VU5ERUZJTkVEKSkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKICAgICAgICAgaW1w
LT5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uT3B0KTsKICAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogICAgIH0KLSAgICBFWENFUFRJ
T05fQkxPQ0soaW50LCBvcHQxLCB0b0ludDMyKGFyZ3NbMV0pKTsKLSAgICBFWENFUFRJT05fQkxP
Q0soaW50LCBvcHQyLCB0b0ludDMyKGFyZ3NbMl0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50
LCBvcHQxLCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAxLCBNSVNTSU5HX0lT
X1VOREVGSU5FRCkpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHQyLCB0b0ludDMyKG1h
eWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAyLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAg
ICBpbXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhub25PcHQs
IG9wdDEsIG9wdDIpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KQEAg
LTEwNDIsNyArMTA0Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdDYWxsYmFjayhjb25zCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbm9uQ2FsbGJhY2ssIHRvSW50MzIoYXJnc1swXSkp
OworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIG5vbkNhbGxiYWNrLCB0b0ludDMyKG1heWJlTWlz
c2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8PSAxIHx8ICFhcmdzWzFdLT5Jc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFj
az4gY2FsbGJhY2sgPSBWOFRlc3RDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMV0sIGdldFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC0xMDkxLDggKzEwOTEsOCBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDEi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0pID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENF
UFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzFdKTsKKyAgICBFWENFUFRJ
T05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShtYXliZU1p
c3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSA/IFY4VGVzdE9i
ajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtYXliZU1pc3NpbmdQYXJh
bWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSkgOiAwKTsKKyAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgbWF5
YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7CiAgICAg
aW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgc3RyQXJnKTsKICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC0xMTAxLDEyICsxMTAxLDEyIEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0
aG9kMiIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6
SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RP
YmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVy
KGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAs
IE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpIDogMCk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0g
MSkgewogICAgICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJnKTsKICAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogICAgIH0KLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1sxXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IGludEFyZywgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMSwgTUlTU0lOR19J
U19VTkRFRklORUQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgaW50QXJn
KTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC0xMTE1LDcgKzEx
MTUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QzQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoub3ZlcmxvYWRlZE1ldGhvZDMiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENF
UFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzBdKTsKKyAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgbWF5
YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7CiAgICAg
aW1wLT5vdmVybG9hZGVkTWV0aG9kKHN0ckFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOwogfQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2Q0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIo
YXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0
aG9kKGludEFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpAQCAt
MTE3MCw3ICsxMTcwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhv
ZFdpdGhPcHRpb25hbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8PSAwKSB7CiAgICAgICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KFRlc3RPYmo6
OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKCkpOwogICAgIH0KLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBhcmcsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGFy
ZywgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRF
RklORUQpKSk7CiAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoVGVzdE9iajo6Y2xhc3NNZXRo
b2RXaXRoT3B0aW9uYWwoYXJnKSk7CiB9CiAKQEAgLTExNzgsNyArMTE3OCw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZU1ldGhvZDFDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRS
dW50aW1lTWV0aG9kMSIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCBWOGludDo6
SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOGludDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRB
cmcsIFY4aW50OjpIYXNJbnN0YW5jZShtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlT
U0lOR19JU19VTkRFRklORUQpKSA/IFY4aW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVG
SU5FRCkpKSA6IDApOwogICAgIGltcC0+ZW5hYmxlZEF0UnVudGltZU1ldGhvZDEoaW50QXJnKTsK
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC0xMTg3LDcgKzExODcs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2Qy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RP
YmouZW5hYmxlZEF0UnVudGltZU1ldGhvZDIiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGlu
dEFyZywgVjhpbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gVjhpbnQ6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JM
T0NLKGludCwgaW50QXJnLCBWOGludDo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVy
KGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOGludDo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlT
U0lOR19JU19VTkRFRklORUQpKSkgOiAwKTsKICAgICBpbXAtPmVuYWJsZWRBdFJ1bnRpbWVNZXRo
b2QyKGludEFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggMTc5MjM3NDRjMGRmOTNm
NzEwN2RhM2JhMjhkODdjZGVlNjg2NzY1NC4uMWM5ZjQzYjFmOGI0MTc3NGQ2YTQ5ZDIzZjBhNzQz
ODZmNjMzZDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBA
IC02MzEsNCArNjMxLDExIEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdjhWYWx1ZVRvV2Vi
Q29yZURPTVN0cmluZ0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhCiAgICAgcmV0dXJuIHJl
dC5yZWxlYXNlKCk7CiB9CiAKK3Y4OjpMb2NhbDx2ODo6VmFsdWU+IG1heWJlTWlzc2luZ1BhcmFt
ZXRlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBpbnQgaW5kZXgsIFBhcmFtZXRlck1pc3Np
bmdQb2xpY3kgcG9saWN5KQoreworICAgIGlmIChwb2xpY3kgPT0gTUlTU0lOR19JU19FTVBUWSAm
JiBpbmRleCA+PSBhcmdzLkxlbmd0aCgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpW
YWx1ZT4oKTsKKyAgICByZXR1cm4gYXJnc1tpbmRleF07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNTM1ZDljMTYy
NWVkOWRiYWM4ODY4NTM1NmZhZWZiZDkyYmEzMjNhMC4uZmM1YTBiNzg5MDJhNGRlYjk0M2IzNjRj
OWY2YjhkNzBiZjcyNzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgK
QEAgLTM4Niw2ICszODYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBw
cmVwYXJlQmFzZSgpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3Y4T2JqZWN0LklzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgICAgICAgICAgaWYgKExJ
S0VMWShtX3Y4T2JqZWN0LT5Jc1N0cmluZygpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIApAQCAtNDAyLDE1ICs0MDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICAgICAgYmxvY2suUmVUaHJvdygpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVGhpcyBwYXRoIGlzIHVuZXhwZWN0ZWQuICBI
b3dldmVyIHRoZXJlIGlzIGh5cG90aGVzaXMgdGhhdCBpdAotICAgICAgICAgICAgLy8gbWlnaHQg
YmUgY29tYmluYXRpb24gb2YgdjggYW5kIHY4IGJpbmRpbmdzIGJ1Z3MuICBGb3Igbm93Ci0gICAg
ICAgICAgICAvLyBqdXN0IGJhaWxvdXQgYXMgd2UnbGwgY3Jhc2ggaWYgYXR0ZW1wdCB0byBjb252
ZXJ0IGVtcHR5IGhhbmRsZSBpbnRvIGEgc3RyaW5nLgotICAgICAgICAgICAgaWYgKG1fdjhPYmpl
Y3QuSXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC00NjAsNyArNDU0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgdGVtcGxhdGU8PiBpbmxpbmUgYm9vbCBWOFBhcmFtZXRlcjxXaXRo
TnVsbENoZWNrPjo6cHJlcGFyZSgpCiAgICAgewotICAgICAgICBpZiAob2JqZWN0KCktPklzTnVs
bCgpKSB7CisgICAgICAgIGlmIChvYmplY3QoKS5Jc0VtcHR5KCkgfHwgb2JqZWN0KCktPklzTnVs
bCgpKSB7CiAgICAgICAgICAgICBzZXRTdHJpbmcoU3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTQ3MCw3ICs0NjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29sIFY4UGFyYW1ldGVyPFdpdGhVbmRlZmlu
ZWRPck51bGxDaGVjaz46OnByZXBhcmUoKQogICAgIHsKLSAgICAgICAgaWYgKG9iamVjdCgpLT5J
c051bGwoKSB8fCBvYmplY3QoKS0+SXNVbmRlZmluZWQoKSkgeworICAgICAgICBpZiAob2JqZWN0
KCkuSXNFbXB0eSgpIHx8IG9iamVjdCgpLT5Jc051bGwoKSB8fCBvYmplY3QoKS0+SXNVbmRlZmlu
ZWQoKSkgewogICAgICAgICAgICAgc2V0U3RyaW5nKFN0cmluZygpKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC00NzgsNiArNDcyLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgcmV0dXJuIFY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UoKTsKICAg
ICB9CiAKKyAgICBlbnVtIFBhcmFtZXRlck1pc3NpbmdQb2xpY3kgeworICAgICAgICBNSVNTSU5H
X0lTX1VOREVGSU5FRCwKKyAgICAgICAgTUlTU0lOR19JU19FTVBUWQorICAgIH07CisKKyAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiBtYXliZU1pc3NpbmdQYXJhbWV0ZXIoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYsIGludCwgUGFyYW1ldGVyTWlzc2luZ1BvbGljeSk7CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFY4QmluZGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZmE0OWRlMWI0M2UwNGRm
MTY2ZTQ4NTMxMDI3YzM3MTIyYTlkNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0
Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVjhXZWJLaXRDU1NNYXRyaXguaCIKLQotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1
ZGUgIk5vZGUuaCIKLQotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4RG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJWOE5vZGUuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0KLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViS2l0Q1NTTWF0cml4Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViS2l0Q1NTTWF0cml4
LkNvbnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBj
YWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwotCi0gICAgLy8gRklY
TUU6IFRoZSBsb2dpYyBoZXJlIGlzIGFsbW9zdCBleGFjdCBkdXBsaWNhdGUgb2YgVjg6OmNvbnN0
cnVjdERPTU9iamVjdC4KLSAgICAvLyBDb25zaWRlciByZWZhY3RvcmluZyB0byByZWR1Y2UgZHVw
bGljYXRpb24uCi0gICAgU3RyaW5nIGNzc1ZhbHVlOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID49
IDEpCi0gICAgICAgIGNzc1ZhbHVlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4
ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUoY3NzVmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpCi0g
ICAgICAgIHRocm93RXJyb3IoZWMpOwotCi0gICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50
byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgbWF0cml4LgotICAgIFY4RE9NV3JhcHBlcjo6c2V0
RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgbWF0cml4LmdldCgpKTsKLSAgICByZXR1
cm4gdG9WOChtYXRyaXgucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAppbmRleCA3
NmZmNjAxY2Y4YzM0NzRiYmI0NTJhZWI4ZjdmYjQ2YjlhMjRkYmMyLi45MGFhMzM0ZWYwYmM3MGU0
YjJkZDQ5ODkxN2U2NjI4ZWY4M2EyNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTTWF0cml4LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0
cml4LmlkbApAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgY3NzIHsKICAgICAgICAgQ2FuQmVDb25z
dHJ1Y3RlZCwKICAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24sCiAgICAgICAgIENvbnN0
cnVjdG9yUGFyYW1ldGVycz0xLAotICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yCisgICAgICAg
IENvbnN0cnVjdG9yKGluIFtPcHRpb25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIGNz
c1ZhbHVlKSwKKyAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCiAgICAgXSBXZWJL
aXRDU1NNYXRyaXggewogCiAgICAgICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBsZSBh
bGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106765</attachid>
            <date>2011-09-08 11:09:45 -0700</date>
            <delta_ts>2011-09-09 12:38:44 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>bug-67458-20110908110944.patch</filename>
            <type>text/plain</type>
            <size>37723</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ3NjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MGJlOGQ3MjY1NGI0ZTcwZDMyNjIw
NzExNDQ2MDFkOWNhZGM4YWY1Li40YmY3NmVjODhiMThlMWQ4NWVkNDRlYmM3MTcyZGIxZTg1MzMw
NTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMDggIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBhIFdlYktpdENTU01hdHJpeCBj
b25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25zdHJ1Y3RvcicgZXh0ZW5kZWQgYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgdGVzdCBjYXNlIGZvciAibmV3IFdlYktpdENTU01hdHJpeChudWxsKSIgYW5kICJuZXcg
V2ViS2l0Q1NTTWF0cml4KHVuZGVmaW5lZCkiLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93
L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dp
bmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWw6CisKIDIwMTEtMDktMDggIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBjb29raWUgcmVsYXRlZCB0
ZXN0cyBmYWlsIG9uIExpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9jdXN0b20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAppbmRleCAzZDI3YzRmYmU2
ZjMwNjNlZTA0ZjM4MGNmYmRmYTZhNGQ0YmMyMDNjLi4yZTdiYjBmMDM1YWI0YWQyNDZhZjNmNDA1
ZDE4ZTI4YzAzNzZiOWNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cv
Y3VzdG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CkBAIC03LDYgKzcsOSBA
QCBQQVNTIEltYWdlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBJbWFnZSkgaXMgJ1tvYmpl
Y3QgSFRNTEltYWdlRWxlbWVudF0nCiBQQVNTIE9wdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2Fs
bChuZXcgT3B0aW9uKSBpcyAnW29iamVjdCBIVE1MT3B0aW9uRWxlbWVudF0nCiBQQVNTIFdlYktp
dFBvaW50LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRQb2ludCkgaXMgJ1tvYmpl
Y3QgV2ViS2l0UG9pbnRdJwogUEFTUyBXZWJLaXRDU1NNYXRyaXgucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwobmV3IFdlYktpdENTU01hdHJpeCkgaXMgJ21hdHJpeCgxLjAwMDAwMCwgMC4wMDAwMDAs
IDAuMDAwMDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwKScKK1BBU1MgV2ViS2l0Q1NT
TWF0cml4LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgoKSkgaXMg
J21hdHJpeCgxLjAwMDAwMCwgMC4wMDAwMDAsIDAuMDAwMDAwLCAxLjAwMDAwMCwgMC4wMDAwMDAs
IDAuMDAwMDAwKScKK1BBU1MgbmV3IFdlYktpdENTU01hdHJpeChudWxsKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIG5ldyBXZWJLaXRD
U1NNYXRyaXgodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFNZTlRBWF9FUlI6IERP
TSBFeGNlcHRpb24gMTIuCiBQQVNTIFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKG5ldyBYTUxIdHRwUmVxdWVzdCkgaXMgJ1tvYmplY3QgWE1MSHR0cFJlcXVlc3RdJwogUEFT
UyBYU0xUUHJvY2Vzc29yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBYU0xUUHJvY2Vzc29y
KSBpcyAnW29iamVjdCBYU0xUUHJvY2Vzc29yXScKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29u
c3RydWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0
cnVjdG9ycy5odG1sCmluZGV4IGVmZDYxMWM2YWViYTVlM2VkMTZkZTMwZDIxZDlhODZkM2VkNmNj
NTkuLjUyMjVjZmEwMjYyNWIwZGM5Mjg2YjcwN2U5ZDdkMDgxMmM3NjBhYmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbApA
QCAtMTcsNiArMTcsOSBAQAogICAgIHNob3VsZEJlKCJPcHRpb24ucHJvdG90eXBlLnRvU3RyaW5n
LmNhbGwobmV3IE9wdGlvbikiLCAiJ1tvYmplY3QgSFRNTE9wdGlvbkVsZW1lbnRdJyIpOwogICAg
IHNob3VsZEJlKCJXZWJLaXRQb2ludC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0
UG9pbnQpIiwgIidbb2JqZWN0IFdlYktpdFBvaW50XSciKTsKICAgICBzaG91bGRCZSgiV2ViS2l0
Q1NTTWF0cml4LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgpIiwg
IidtYXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAw
LCAwLjAwMDAwMCknIik7CisgICAgc2hvdWxkQmUoIldlYktpdENTU01hdHJpeC5wcm90b3R5cGUu
dG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NTTWF0cml4KCkpIiwgIidtYXRyaXgoMS4wMDAwMDAs
IDAuMDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknIik7Cisg
ICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRDU1NNYXRyaXgobnVsbCkiKTsKKyAgICBzaG91bGRU
aHJvdygibmV3IFdlYktpdENTU01hdHJpeCh1bmRlZmluZWQpIik7CiAgICAgc2hvdWxkQmUoIlhN
TEh0dHBSZXF1ZXN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBYTUxIdHRwUmVxdWVzdCki
LCAiJ1tvYmplY3QgWE1MSHR0cFJlcXVlc3RdJyIpOwogICAgIHNob3VsZEJlKCJYU0xUUHJvY2Vz
c29yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ldyBYU0xUUHJvY2Vzc29yKSIsICInW29iamVj
dCBYU0xUUHJvY2Vzc29yXSciKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRjMjlmYTc4OTgxMjIzNWMwNWM1
MmY4ZDI3ZmQzZGExYzNlYTZhNzUuLjY4MGEwNDBlYjE3MzM2NTQ4MDE1MzIyZWVhMDY1MDI1Nzlj
ZTUzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMS0wOS0wOCAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBnb29nbGUuY29tPgorCisgICAgICAgIEdlbmVyYXRlIGEgV2ViS2l0Q1NT
TWF0cml4IGNvbnN0cnVjdG9yIG9mIFY4IHVzaW5nIHRoZSBJREwgJ0NvbnN0cnVjdG9yJyBleHRl
bmRlZCBhdHRyaWJ1dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY3NDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYSAnQ2FsbFdpdGhOdWxsVmFsdWUnIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKyAg
ICAgICAgSWYgYSBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwgYW5kIG1pc3NpbmcsICdDYWxsV2l0aERl
ZmF1bHRWYWx1ZScKKyAgICAgICAgaGFuZGxlcyBpdCBhcyBhIHN0cmluZyAidW5kZWZpbmVkIi4g
T24gdGhlIG90aGVyIGhhbmQsCisgICAgICAgICdDYWxsV2l0aE51bGxWYWx1ZScgaGFuZGxlcyBp
dCBhcyBhIG51bGwgc3RyaW5nCisgICAgICAgIChOb3RlOiBub3QgYSBzdHJpbmcgIm51bGwiLCBi
dXQgYSBudWxsIHN0cmluZykuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL1dpbmRvdy9jdXN0
b20tY29uc3RydWN0b3JzLmh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvc3ZnLXZzLWNz
cy54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgtMmQtaW50ZXJmYWNl
LnhodG1sCisgICAgICAgICAgICAgICB0cmFuc2Zvcm1zL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2Uu
eGh0bWxHZW5lcmF0ZSBhIFdlYktpdENTU01hdHJpeCBjb25zdHJ1Y3RvcgorCisgICAgICAgICog
V2ViQ29yZS5neXBpOiBSZW1vdmVkIFY4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwLgor
ICAgICAgICAqIFdlYkNvcmUucHJvOiBSZW1vdmVkIFY4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0
b3IuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgor
ICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOiBJZiB0aGUgJ0NhbGxXaXRoTnVsbFZh
bHVlJyBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgc2V0LCB3ZSBjYWxsIG1heWJlTWlzc2luZ1BhcmFt
ZXRlcigpIHdpdGggTUlTU0lOR19JU19FTVBUWSBtb2RlIHRvIG9idGFpbiBhIG1heWJlIG1pc3Np
bmcgcGFyYW1ldGVyLiBPdGhlcndpc2UsIHdlIGNhbGwgbWF5YmVNaXNzaW5nUGFyYW1ldGVyKCkg
d2l0aCBNSVNTSU5HX0lTX1VOREVGSU5FRCBtb2RlLgorICAgICAgICAoUmVxdWlyZXNDdXN0b21T
aWduYXR1cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwOiBVcGRhdGVkIHRlc3QgcmVzdWx0cy4KKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVySW50ZXJuYWw6Om1ldGhv
ZENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OnZvaWRNZXRo
b2RXaXRoQXJnc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6
aW50TWV0aG9kV2l0aEFyZ3NDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50
ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9iakludGVybmFsOjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpvcHRp
b25zT2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpj
dXN0b21BcmdzQW5kRXhjZXB0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
akludGVybmFsOjp3aXRoRHluYW1pY0ZyYW1lQW5kQXJnQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmdDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhEeW5hbWljRnJh
bWVBbmRVc2VyR2VzdHVyZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRl
cm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRENhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFsQXJnQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjptZXRob2RXaXRoTm9uT3B0
aW9uYWxBcmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpJbnRlcm5hbDo6bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjptZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqSW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kM0NhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDRDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OmNsYXNzTWV0aG9kV2l0
aE9wdGlvbmFsQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpl
bmFibGVkQXRSdW50aW1lTWV0aG9kMUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZU1ldGhvZDJDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1heWJlTWlzc2lu
Z1BhcmFtZXRlcik6IFJldHVybnMgdGhlIHBhcmFtZXRlciBvZiBhIGdpdmVuIGluZGV4IGlmIHRo
ZSBwYXJhbWV0ZXIgZXhpc3RzLiBJZiB0aGUgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0IGFuZCBN
SVNTSU5HX0lTX1VOREVGSU5FRCBpcyBzZXQsIHRoaXMgbWV0aG9kIHJldHVybnMgYW4gb2JqZWN0
IHRoYXQgcmVwcmVzZW50cyB1bmRlZmluZWQuIElmIHRoZSBwYXJhbWV0ZXIgZG9lcyBub3QgZXhp
c3QgYW5kIE1JU1NJTkdfSVNfRU1QVFkgaXMgc2V0LCB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIGVt
cHR5IG9iamVjdC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UpOiBUaGUgZmFjdCB0aGF0IFY4
UGFyYW1ldGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmplY3QgbWVhbnMgdGhhdCB3ZSBkbyBu
b3QgbmVlZCB0byBwcmVwYXJlIGFueXRoaW5nLCBpLmUuIHdlIHNob3VsZCBqdXN0IHJldHVybiB0
cnVlIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ojo6cHJlcGFyZSk6IElmIFY4UGFy
YW1ldGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmplY3QsIHRoZW4gd2Ugc2V0IGEgbnVsbCBz
dHJpbmcuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4Q29u
c3RydWN0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguaWRs
OiBBZGRlZCB0aGUgJ0NvbnN0cnVjdG9yJyBleHRlbmRlZCBhdHRyaWJ1dGUuCisKIDIwMTEtMDkt
MDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBiaW5k
aW5ncyB0ZXN0cyBxdWlldCBhZnRlciByOTQ3MDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDM5ODY0
YmJhOWY4MzU4ZDY0Njc5NjQyMzc2OTlhMDkzODk4YmZjYy4uYzEzMDBmNTcyNjcyZmJiYmQ1M2Jj
MzNkNDlhZmVkYjczNTgxZjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjIxOCw3ICsyMjE4LDYg
QEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0
QW5pbWF0aW9uQ3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCAyMmE4NDVkODk4ZTE1MGU1MDY1NWZkNzlmMGRkMWE1MDQ2YWJkZDI5Li4yMjlkOGMzODVj
YzQ2NzFjOGEyNmE2ZjY4NzcwNTY3ODk5YjkyMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjA4LDcg
KzIwOCw2IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1
c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1
c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25D
dXN0b20uY3BwIFwKLSAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NTTWF0cml4
Q29uc3RydWN0b3IuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9p
bnRDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1
c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCA5ZTI2MzQwNWI3NDUyZGVmNGJlNTRhMzk5MGY3ZTFhOWEwZjZk
OGUzLi5kZjkzNDFhNTg1NDkzM2VmODc5ZWVlNGU5MmVlNTFiOTkzMzQxNzQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
MTQxNiw5ICsxNDE2LDkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAKICAgICAgICAg
IyBPcHRpb25hbCBjYWxsYmFja3Mgc2hvdWxkIGJlIHRyZWF0ZWQgZGlmZmVyZW50bHksIGJlY2F1
c2UgdGhleSBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgKDApLAogICAgICAgICAjIGFuZCB3
ZSBjYW4gcmVkdWNlIHRoZSBudW1iZXIgb2Ygb3ZlcmxvYWRlZCBmdW5jdGlvbnMgdGhhdCB0YWtl
IGEgZGlmZmVyZW50IG51bWJlciBvZiBwYXJhbWV0ZXJzLgotICAgICAgICAjIE9wdGlvbmFsIGFy
Z3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1
ZV0gc2hvdWxkIG5vdCBnZW5lcmF0ZSBhbiBlYXJseSBjYWxsLgorICAgICAgICAjIE9wdGlvbmFs
IGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRW
YWx1ZV0gb3IgW09wdGlvbmFsPUNhbGxXaXRoTnVsbFZhbHVlXSBzaG91bGQgbm90IGdlbmVyYXRl
IGFuIGVhcmx5IGNhbGwuCiAgICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXItPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9OyAgICAgICAgCi0gICAgICAgIGlmICgkb3B0aW9u
YWwgJiYgJG9wdGlvbmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1ZSIgJiYgISRwYXJhbWV0ZXIt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9KSB7CisgICAgICAgIGlmICgkb3B0aW9u
YWwgJiYgJG9wdGlvbmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1ZSIgJiYgJG9wdGlvbmFsIG5l
ICJDYWxsV2l0aE51bGxWYWx1ZSIgJiYgISRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDYWxsYmFjayJ9KSB7CiAgICAgICAgICAgICAjIEdlbmVyYXRlIGVhcmx5IGNhbGwgaWYgdGhl
cmUgYXJlIG5vdCBlbm91Z2ggcGFyYW1ldGVycy4KICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyAuPSAiICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4KSB7XG4iOwog
ICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ2FsbCA9IEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5n
KCRmdW5jdGlvbiwgJHBhcmFtSW5kZXgsICIgICAgIiB4IDIsICRpbXBsQ2xhc3NOYW1lKTsKQEAg
LTE0MjYsNiArMTQyNiwxMSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CiAgICAgICAgIH0KIAorICAg
ICAgICBteSAkcGFyYW1ldGVyTWlzc2luZ1BvbGljeSA9ICJNSVNTSU5HX0lTX1VOREVGSU5FRCI7
CisgICAgICAgIGlmICgkb3B0aW9uYWwgJiYgJG9wdGlvbmFsIGVxICJDYWxsV2l0aE51bGxWYWx1
ZSIpIHsKKyAgICAgICAgICAgICRwYXJhbWV0ZXJNaXNzaW5nUG9saWN5ID0gIk1JU1NJTkdfSVNf
RU1QVFkiOworICAgICAgICB9CisKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkV4Y2VwdGlv
bkNvZGUuaCIpOwogICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVGcm9tU2ln
bmF0dXJlKCRwYXJhbWV0ZXIsICRwYXJhbUluZGV4KTsKICAgICAgICAgaWYgKCRwYXJhbWV0ZXIt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsYmFjayJ9KSB7CkBAIC0xNDU3LDcgKzE0NjIsNyBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVj
a1N0cmluZyAuPSAiICAgICAgICBnb3RvIGZhaWw7XG4iOwogICAgICAgICAgICAgJHBhcmFtZXRl
ckNoZWNrU3RyaW5nIC49ICIgICAgfVxuIjsKICAgICAgICAgfSBlbHNpZiAoJG5hdGl2ZVR5cGUg
PX4gL15WOFBhcmFtZXRlci8pIHsKLSAgICAgICAgICAgIG15ICR2YWx1ZSA9IEpTVmFsdWVUb05h
dGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iKTsKKyAgICAgICAgICAgIG15ICR2
YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAibWF5YmVNaXNzaW5nUGFyYW1ldGVy
KGFyZ3MsICRwYXJhbUluZGV4LCAkcGFyYW1ldGVyTWlzc2luZ1BvbGljeSkiKTsKICAgICAgICAg
ICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICIgLiBDb252ZXJ0VG9WOFBhcmFtZXRl
cigkcGFyYW1ldGVyLCAkbmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICR2YWx1ZSkgLiAiXG4i
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4Qmlu
ZGluZ01hY3Jvcy5oIik7CkBAIC0xNDc4LDcgKzE0ODMsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICBFWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUs
ICRwYXJhbWV0ZXJOYW1lLCAiIC4KLSAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRw
YXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIpIC4gIik7XG4iOworICAgICAgICAgICAgICAg
ICBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgIm1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdz
LCAkcGFyYW1JbmRleCwgJHBhcmFtZXRlck1pc3NpbmdQb2xpY3kpIikgLiAiKTtcbiI7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Iklz
SW5kZXgifSkgewpAQCAtMzI2OCw3ICszMjczLDcgQEAgc3ViIFJlcXVpcmVzQ3VzdG9tU2lnbmF0
dXJlCiAgICAgfQogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9KSB7CiAgICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJPcHRpb25hbCJ9OwotICAgICAgICBpZiAoKCRvcHRpb25hbCAmJiAoJG9wdGlv
bmFsIG5lICJDYWxsV2l0aERlZmF1bHRWYWx1ZSIpKSB8fCAkcGFyYW1ldGVyLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgeworICAgICAgICBpZiAoKCRvcHRpb25hbCAmJiAkb3B0
aW9uYWwgbmUgIkNhbGxXaXRoRGVmYXVsdFZhbHVlIiAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRo
TnVsbFZhbHVlIikgfHwgJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNr
In0pIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcAppbmRleCAzNWIzODJkNTRjZTZjMDdlYTJkOTBkYmRkZjNiNjdlNmUzNDFlNjUw
Li45MjhiNWQzN2E3ODE4ZTk3OWFkMTQ1ZTAxODZiYTY4NTBiOTI2M2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcApAQCAtNTQsOCArNTQsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0
SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5
cGVFcnJvcik7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTVFJJTkdfVE9fVjhQ
QVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjEsIGFyZ3NbMF0pOwot
ICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwg
c3RyMiwgYXJnc1sxXSk7CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFBhcmFtZXRlcjw+LCBzdHIxLCBtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlT
U0lOR19JU19VTkRFRklORUQpKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9O
X0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0cjIsIG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAx
LCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggZTVi
MmNiNGQ4NzRhZjFkYTZiNGMzYzY3ZGE5OGMwMDdhZWQzNGE0Yy4uYWY0NDRlZjVmYTFkYjg4MjJl
MGQ3Njg2NzljZGFkNTc1NzgwNDUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIubWV0aG9kIik7CiAgICAg
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcCA9IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhSZWZQ
dHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4sIGxpc3RlbmVyLCBNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpjcmVhdGUoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhSZWZQdHI8TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcj4sIGxpc3RlbmVyLCBNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVh
dGUobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkp
OwogICAgIGltcC0+bWV0aG9kKGxpc3RlbmVyKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IGVkNjMyZGY1NmRkM2UxOTQyMjk3ZDU0Mzg3MjE0
YTA0NmUwMWJiMmUuLjY5ODU1NjI5NjA1YTcwYTNmMWE5MDEzZTI5OGIxYWFiZjRjMjBiMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCkBAIC02NjIsOSArNjYyLDkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2b2lkTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnZvaWRNZXRob2RXaXRoQXJncyIpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKLSAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgYXJn
c1sxXSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6
SGFzSW5zdGFuY2UoYXJnc1syXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwg
aW50QXJnLCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lT
X1VOREVGSU5FRCkpKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgbWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1J
U1NJTkdfSVNfVU5ERUZJTkVEKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpB
cmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDIs
IE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3QobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDIsIE1JU1NJTkdf
SVNfVU5ERUZJTkVEKSkpIDogMCk7CiAgICAgaW1wLT52b2lkTWV0aG9kV2l0aEFyZ3MoaW50QXJn
LCBzdHJBcmcsIG9iakFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwog
fQpAQCAtNjgwLDkgKzY4MCw5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW50TWV0
aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai5pbnRNZXRob2RXaXRoQXJncyIpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JM
T0NLKGludCwgaW50QXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgYXJnc1sxXSk7Ci0g
ICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UoYXJnc1syXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoYXJnc1syXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0
b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5F
RCkpKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1l
dGVyPD4sIHN0ckFyZywgbWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJTkdfSVNf
VU5ERUZJTkVEKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDIsIE1JU1NJTkdf
SVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDIsIE1JU1NJTkdfSVNfVU5ERUZJ
TkVEKSkpIDogMCk7CiAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW1wLT5pbnRNZXRob2RX
aXRoQXJncyhpbnRBcmcsIHN0ckFyZywgb2JqQXJnKSk7CiB9CiAKQEAgLTY5Nyw5ICs2OTcsOSBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iak1ldGhvZFdpdGhBcmdzQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
b2JqTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9J
bnQzMihhcmdzWzBdKSk7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9D
SyhWOFBhcmFtZXRlcjw+LCBzdHJBcmcsIGFyZ3NbMV0pOwotICAgIEVYQ0VQVElPTl9CTE9DSyhU
ZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMl0pID8gVjhUZXN0
T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0pKSA6IDAp
OworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihtYXliZU1pc3NpbmdQ
YXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7CisgICAgU1RSSU5HX1RP
X1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdHJBcmcsIG1heWJl
TWlzc2luZ1BhcmFtZXRlcihhcmdzLCAxLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpOworICAgIEVY
Q0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKG1h
eWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAyLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpID8gVjhU
ZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1heWJlTWlzc2lu
Z1BhcmFtZXRlcihhcmdzLCAyLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKSA6IDApOwogICAgIHJl
dHVybiB0b1Y4KGltcC0+b2JqTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIG9iakFyZykp
OwogfQogCkBAIC03MDksOCArNzA5LDggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBt
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0
ZXI8Piwgc3RyQXJnLCBhcmdzWzBdKTsKLSAgICBFWENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9i
akFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzFdKSA/IFY4VGVzdE9iajo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwKTsKKyAgICBTVFJJ
TkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywg
bWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7Cisg
ICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkg
PyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWF5YmVN
aXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpIDogMCk7CiAg
ICAgcmV0dXJuIHRvVjgoaW1wLT5tZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzKHN0ckFyZywgb2Jq
QXJnKSk7CiB9CiAKQEAgLTcyMiw4ICs3MjIsOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxsYmFjayhjb25zdCB2OAog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIFNUUklOR19UT19WOFBBUkFNRVRF
Ul9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzBdKTsKLSAgICBF
WENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShh
cmdzWzFdKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzFdKSkgOiAwKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgbWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAs
IE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBv
YmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3Ms
IDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJ
TkdfSVNfVU5ERUZJTkVEKSkpIDogMCk7CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGlt
cC0+bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhzdHJBcmcsIG9iakFyZywgZWMp
OwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTc2OSwxMiAr
NzY5LDEyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3B0aW9uc09iamVjdENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVz
dE9iai5vcHRpb25zT2JqZWN0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soT3B0aW9uc09iamVjdCwg
b28sIGFyZ3NbMF0pOworICAgIEVYQ0VQVElPTl9CTE9DSyhPcHRpb25zT2JqZWN0LCBvbywgbWF5
YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPm9wdGlvbnNPYmplY3Qob28p
OwogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiAgICAgfQotICAgIEVY
Q0VQVElPTl9CTE9DSyhPcHRpb25zT2JqZWN0LCBvb28sIGFyZ3NbMV0pOworICAgIEVYQ0VQVElP
Tl9CTE9DSyhPcHRpb25zT2JqZWN0LCBvb28sIG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAx
LCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpOwogICAgIGltcC0+b3B0aW9uc09iamVjdChvbywgb29v
KTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC04MDYsNyArODA2
LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21BcmdzQW5kRXhjZXB0aW9u
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKG1heFN0YWNrU2l6ZSkpOwogICAgIGlm
ICghY2FsbFN0YWNrKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotICAgIEVYQ0VQ
VElPTl9CTE9DSyhsb2cqLCBpbnRBcmcsIFY4bG9nOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IFY4
bG9nOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDAp
OworICAgIEVYQ0VQVElPTl9CTE9DSyhsb2cqLCBpbnRBcmcsIFY4bG9nOjpIYXNJbnN0YW5jZSht
YXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSA/IFY4
bG9nOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1heWJlTWlzc2luZ1Bh
cmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKSA6IDApOwogICAgIGltcC0+
Y3VzdG9tQXJnc0FuZEV4Y2VwdGlvbihpbnRBcmcsIHNjcmlwdEFyZ3VtZW50cywgY2FsbFN0YWNr
LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgZ290byBmYWlsOwpAQCAtODU0
LDcgKzg1NCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFtaWNGcmFt
ZUFuZEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiB7CiAgICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai53aXRoRHluYW1pY0ZyYW1lQW5kQXJnIik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IGludEFyZywgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19J
U19VTkRFRklORUQpKSk7CiAgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJp
ZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOwogICAgIGlmICghZW50ZXJlZEZyYW1lKQogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtODY2LDcgKzg2Niw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoRHluYW1p
Y0ZyYW1lQW5kT3B0aW9uYWxBcmciKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywg
dG9JbnQzMihhcmdzWzBdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0lu
dDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkp
KTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7CiAgICAgICAgIEZyYW1lKiBlbnRlcmVk
RnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKICAgICAg
ICAgaWYgKCFlbnRlcmVkRnJhbWUpCkBAIC04NzQsNyArODc0LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB3aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmdDYWxsYmFjayhjb25z
dCB2ODo6QXIKICAgICAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoZW50
ZXJlZEZyYW1lLCBpbnRBcmcpOwogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCk7CiAgICAgfQotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIG9wdGlvbmFsQXJnLCB0b0ludDMy
KGFyZ3NbMV0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHRpb25hbEFyZywgdG9JbnQz
MihtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMSwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7
CiAgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRl
cmVkQ29udGV4dCgpOwogICAgIGlmICghZW50ZXJlZEZyYW1lKQogICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwpAQCAtODg2LDcgKzg4Niw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdl
c3R1cmUiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihhcmdzWzBd
KSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMyKG1heWJlTWlzc2lu
Z1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBGcmFtZSog
ZW50ZXJlZEZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7
CiAgICAgaWYgKCFlbnRlcmVkRnJhbWUpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CkBAIC04OTgsNyArODk4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEQ2FsbGJhY2soY29uc3QgdjgKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQiKTsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwot
ICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihhcmdzWzBdKSk7CisgICAg
RVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRl
cihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8PSAxKSB7CiAgICAgICAgIEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2
ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKICAgICAgICAgaWYgKCFlbnRlcmVkRnJhbWUpCkBA
IC05MDYsNyArOTA2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHluYW1p
Y0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEQ2FsbGJhY2soY29uc3QgdjgKICAgICAgICAgaW1wLT53
aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGVudGVyZWRGcmFtZSwgaW50QXJnLCBT
Y3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CiAgICAgICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAgICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGlu
dCwgb3B0aW9uYWxBcmcsIHRvSW50MzIoYXJnc1sxXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhp
bnQsIG9wdGlvbmFsQXJnLCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAxLCBN
SVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBGcmFtZSogZW50ZXJlZEZyYW1lID0gVjhQcm94
eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CiAgICAgaWYgKCFlbnRlcmVkRnJh
bWUpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC05OTMsNyArOTkzLDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgICAgICBpbXAtPm1ldGhvZFdpdGhPcHRpb25hbEFy
ZygpOwogICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiAgICAgfQotICAg
IEVYQ0VQVElPTl9CTE9DSyhpbnQsIG9wdCwgdG9JbnQzMihhcmdzWzBdKSk7CisgICAgRVhDRVBU
SU9OX0JMT0NLKGludCwgb3B0LCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAw
LCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBpbXAtPm1ldGhvZFdpdGhPcHRpb25hbEFy
ZyhvcHQpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KQEAgLTEwMDIs
MTIgKzEwMDIsMTIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnMKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBub25PcHQsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIG5vbk9wdCwgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIo
YXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PD0gMSkgewogICAgICAgICBpbXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFs
QXJnKG5vbk9wdCk7CiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAg
ICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgb3B0LCB0b0ludDMyKGFyZ3NbMV0pKTsKKyAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHQsIHRvSW50MzIobWF5YmVNaXNzaW5nUGFyYW1ldGVy
KGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpOwogICAgIGltcC0+bWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcobm9uT3B0LCBvcHQpOwogICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KQEAgLTEwMTYsMTMgKzEwMTYsMTMgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25h
bEFyZ3NDYWxsYmFjaygKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhO
b25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGlu
dCwgbm9uT3B0LCB0b0ludDMyKGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBu
b25PcHQsIHRvSW50MzIobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNf
VU5ERUZJTkVEKSkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKICAgICAgICAgaW1w
LT5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mobm9uT3B0KTsKICAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogICAgIH0KLSAgICBFWENFUFRJ
T05fQkxPQ0soaW50LCBvcHQxLCB0b0ludDMyKGFyZ3NbMV0pKTsKLSAgICBFWENFUFRJT05fQkxP
Q0soaW50LCBvcHQyLCB0b0ludDMyKGFyZ3NbMl0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50
LCBvcHQxLCB0b0ludDMyKG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAxLCBNSVNTSU5HX0lT
X1VOREVGSU5FRCkpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHQyLCB0b0ludDMyKG1h
eWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAyLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAg
ICBpbXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhub25PcHQs
IG9wdDEsIG9wdDIpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KQEAg
LTEwNDIsNyArMTA0Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdDYWxsYmFjayhjb25zCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbm9uQ2FsbGJhY2ssIHRvSW50MzIoYXJnc1swXSkp
OworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIG5vbkNhbGxiYWNrLCB0b0ludDMyKG1heWJlTWlz
c2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8PSAxIHx8ICFhcmdzWzFdLT5Jc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihUWVBFX01JU01BVENIX0VSUik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFj
az4gY2FsbGJhY2sgPSBWOFRlc3RDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMV0sIGdldFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC0xMDkxLDggKzEwOTEsOCBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDEi
KTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0pID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENF
UFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzFdKTsKKyAgICBFWENFUFRJ
T05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShtYXliZU1p
c3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSA/IFY4VGVzdE9i
ajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtYXliZU1pc3NpbmdQYXJh
bWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSkgOiAwKTsKKyAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgbWF5
YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7CiAgICAg
aW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgc3RyQXJnKTsKICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC0xMTAxLDEyICsxMTAxLDEyIEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vdmVybG9hZGVkTWV0
aG9kMiIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6
SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RP
YmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVy
KGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobWF5YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAs
IE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpIDogMCk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0g
MSkgewogICAgICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2Qob2JqQXJnKTsKICAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogICAgIH0KLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1sxXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IGludEFyZywgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMSwgTUlTU0lOR19J
U19VTkRFRklORUQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKG9iakFyZywgaW50QXJn
KTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC0xMTE1LDcgKzEx
MTUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QzQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoub3ZlcmxvYWRlZE1ldGhvZDMiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENF
UFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzBdKTsKKyAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgbWF5
YmVNaXNzaW5nUGFyYW1ldGVyKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7CiAgICAg
aW1wLT5vdmVybG9hZGVkTWV0aG9kKHN0ckFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOwogfQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2Q0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIo
YXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0
aG9kKGludEFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpAQCAt
MTE3MCw3ICsxMTcwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhv
ZFdpdGhPcHRpb25hbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8PSAwKSB7CiAgICAgICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KFRlc3RPYmo6
OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKCkpOwogICAgIH0KLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBhcmcsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGFy
ZywgdG9JbnQzMihtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlTU0lOR19JU19VTkRF
RklORUQpKSk7CiAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoVGVzdE9iajo6Y2xhc3NNZXRo
b2RXaXRoT3B0aW9uYWwoYXJnKSk7CiB9CiAKQEAgLTExNzgsNyArMTE3OCw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZU1ldGhvZDFDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRS
dW50aW1lTWV0aG9kMSIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCBWOGludDo6
SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOGludDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRB
cmcsIFY4aW50OjpIYXNJbnN0YW5jZShtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlT
U0lOR19JU19VTkRFRklORUQpKSA/IFY4aW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KG1heWJlTWlzc2luZ1BhcmFtZXRlcihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVG
SU5FRCkpKSA6IDApOwogICAgIGltcC0+ZW5hYmxlZEF0UnVudGltZU1ldGhvZDEoaW50QXJnKTsK
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC0xMTg3LDcgKzExODcs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2Qy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RP
YmouZW5hYmxlZEF0UnVudGltZU1ldGhvZDIiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGlu
dEFyZywgVjhpbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gVjhpbnQ6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JM
T0NLKGludCwgaW50QXJnLCBWOGludDo6SGFzSW5zdGFuY2UobWF5YmVNaXNzaW5nUGFyYW1ldGVy
KGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOGludDo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtYXliZU1pc3NpbmdQYXJhbWV0ZXIoYXJncywgMCwgTUlT
U0lOR19JU19VTkRFRklORUQpKSkgOiAwKTsKICAgICBpbXAtPmVuYWJsZWRBdFJ1bnRpbWVNZXRo
b2QyKGludEFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggMTc5MjM3NDRjMGRmOTNm
NzEwN2RhM2JhMjhkODdjZGVlNjg2NzY1NC4uMWM5ZjQzYjFmOGI0MTc3NGQ2YTQ5ZDIzZjBhNzQz
ODZmNjMzZDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBA
IC02MzEsNCArNjMxLDExIEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdjhWYWx1ZVRvV2Vi
Q29yZURPTVN0cmluZ0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhCiAgICAgcmV0dXJuIHJl
dC5yZWxlYXNlKCk7CiB9CiAKK3Y4OjpMb2NhbDx2ODo6VmFsdWU+IG1heWJlTWlzc2luZ1BhcmFt
ZXRlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBpbnQgaW5kZXgsIFBhcmFtZXRlck1pc3Np
bmdQb2xpY3kgcG9saWN5KQoreworICAgIGlmIChwb2xpY3kgPT0gTUlTU0lOR19JU19FTVBUWSAm
JiBpbmRleCA+PSBhcmdzLkxlbmd0aCgpKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpW
YWx1ZT4oKTsKKyAgICByZXR1cm4gYXJnc1tpbmRleF07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggNTM1ZDljMTYy
NWVkOWRiYWM4ODY4NTM1NmZhZWZiZDkyYmEzMjNhMC4uZmM1YTBiNzg5MDJhNGRlYjk0M2IzNjRj
OWY2YjhkNzBiZjcyNzc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgK
QEAgLTM4Niw2ICszODYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBw
cmVwYXJlQmFzZSgpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX3Y4T2JqZWN0LklzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgICAgICAgICAgaWYgKExJ
S0VMWShtX3Y4T2JqZWN0LT5Jc1N0cmluZygpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKIApAQCAtNDAyLDE1ICs0MDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICAgICAgYmxvY2suUmVUaHJvdygpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVGhpcyBwYXRoIGlzIHVuZXhwZWN0ZWQuICBI
b3dldmVyIHRoZXJlIGlzIGh5cG90aGVzaXMgdGhhdCBpdAotICAgICAgICAgICAgLy8gbWlnaHQg
YmUgY29tYmluYXRpb24gb2YgdjggYW5kIHY4IGJpbmRpbmdzIGJ1Z3MuICBGb3Igbm93Ci0gICAg
ICAgICAgICAvLyBqdXN0IGJhaWxvdXQgYXMgd2UnbGwgY3Jhc2ggaWYgYXR0ZW1wdCB0byBjb252
ZXJ0IGVtcHR5IGhhbmRsZSBpbnRvIGEgc3RyaW5nLgotICAgICAgICAgICAgaWYgKG1fdjhPYmpl
Y3QuSXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC00NjAsNyArNDU0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgdGVtcGxhdGU8PiBpbmxpbmUgYm9vbCBWOFBhcmFtZXRlcjxXaXRo
TnVsbENoZWNrPjo6cHJlcGFyZSgpCiAgICAgewotICAgICAgICBpZiAob2JqZWN0KCktPklzTnVs
bCgpKSB7CisgICAgICAgIGlmIChvYmplY3QoKS5Jc0VtcHR5KCkgfHwgb2JqZWN0KCktPklzTnVs
bCgpKSB7CiAgICAgICAgICAgICBzZXRTdHJpbmcoU3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTQ3MCw3ICs0NjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29sIFY4UGFyYW1ldGVyPFdpdGhVbmRlZmlu
ZWRPck51bGxDaGVjaz46OnByZXBhcmUoKQogICAgIHsKLSAgICAgICAgaWYgKG9iamVjdCgpLT5J
c051bGwoKSB8fCBvYmplY3QoKS0+SXNVbmRlZmluZWQoKSkgeworICAgICAgICBpZiAob2JqZWN0
KCkuSXNFbXB0eSgpIHx8IG9iamVjdCgpLT5Jc051bGwoKSB8fCBvYmplY3QoKS0+SXNVbmRlZmlu
ZWQoKSkgewogICAgICAgICAgICAgc2V0U3RyaW5nKFN0cmluZygpKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC00NzgsNiArNDcyLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgcmV0dXJuIFY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UoKTsKICAg
ICB9CiAKKyAgICBlbnVtIFBhcmFtZXRlck1pc3NpbmdQb2xpY3kgeworICAgICAgICBNSVNTSU5H
X0lTX1VOREVGSU5FRCwKKyAgICAgICAgTUlTU0lOR19JU19FTVBUWQorICAgIH07CisKKyAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiBtYXliZU1pc3NpbmdQYXJhbWV0ZXIoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYsIGludCwgUGFyYW1ldGVyTWlzc2luZ1BvbGljeSk7CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFY4QmluZGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlZmE0OWRlMWI0M2UwNGRm
MTY2ZTQ4NTMxMDI3YzM3MTIyYTlkNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0
Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVjhXZWJLaXRDU1NNYXRyaXguaCIKLQotI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1
ZGUgIk5vZGUuaCIKLQotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4RG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJWOE5vZGUuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0KLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViS2l0Q1NTTWF0cml4Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViS2l0Q1NTTWF0cml4
LkNvbnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBj
YWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOwotCi0gICAgLy8gRklY
TUU6IFRoZSBsb2dpYyBoZXJlIGlzIGFsbW9zdCBleGFjdCBkdXBsaWNhdGUgb2YgVjg6OmNvbnN0
cnVjdERPTU9iamVjdC4KLSAgICAvLyBDb25zaWRlciByZWZhY3RvcmluZyB0byByZWR1Y2UgZHVw
bGljYXRpb24uCi0gICAgU3RyaW5nIGNzc1ZhbHVlOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID49
IDEpCi0gICAgICAgIGNzc1ZhbHVlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwotCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4
ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUoY3NzVmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpCi0g
ICAgICAgIHRocm93RXJyb3IoZWMpOwotCi0gICAgLy8gVHJhbnNmb3JtIHRoZSBob2xkZXIgaW50
byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgbWF0cml4LgotICAgIFY4RE9NV3JhcHBlcjo6c2V0
RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywgbWF0cml4LmdldCgpKTsKLSAgICByZXR1
cm4gdG9WOChtYXRyaXgucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAppbmRleCA3
NmZmNjAxY2Y4YzM0NzRiYmI0NTJhZWI4ZjdmYjQ2YjlhMjRkYmMyLi45MGFhMzM0ZWYwYmM3MGU0
YjJkZDQ5ODkxN2U2NjI4ZWY4M2EyNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTTWF0cml4LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0
cml4LmlkbApAQCAtMzAsNyArMzAsOCBAQCBtb2R1bGUgY3NzIHsKICAgICAgICAgQ2FuQmVDb25z
dHJ1Y3RlZCwKICAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24sCiAgICAgICAgIENvbnN0
cnVjdG9yUGFyYW1ldGVycz0xLAotICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yCisgICAgICAg
IENvbnN0cnVjdG9yKGluIFtPcHRpb25hbD1DYWxsV2l0aE51bGxWYWx1ZV0gRE9NU3RyaW5nIGNz
c1ZhbHVlKSwKKyAgICAgICAgQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24sCiAgICAgXSBXZWJL
aXRDU1NNYXRyaXggewogCiAgICAgICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBsZSBh
bGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106904</attachid>
            <date>2011-09-09 12:38:50 -0700</date>
            <delta_ts>2011-09-09 16:57:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67458-20110909123849.patch</filename>
            <type>text/plain</type>
            <size>37748</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4N2RlMzYwM2JkNWZmZjYyMGQyMTgx
YzgzYWQ2MjExODZhMjdlMDkwLi43MjI2ZjhlOGZmYmFjM2I5OGM5YzNjOTY4ZjgzOTgxZjJmMDM1
YTM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMDkgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZSBhIFdlYktpdENTU01hdHJpeCBj
b25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25zdHJ1Y3RvcicgZXh0ZW5kZWQgYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgdGVzdCBjYXNlIGZvciAibmV3IFdlYktpdENTU01hdHJpeChudWxsKSIgYW5kICJuZXcg
V2ViS2l0Q1NTTWF0cml4KHVuZGVmaW5lZCkiLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93
L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dp
bmRvdy9jdXN0b20tY29uc3RydWN0b3JzLmh0bWw6CisKIDIwMTEtMDktMDkgIENhcnkgQ2xhcmsg
IDxjYXJ5Y2xhcmtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkOyBuZXcgYmFzZWxp
bmVzIChTa2lhIG9uIE1hYywgR1BVIGVkaXRpb24pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKaW5k
ZXggM2QyN2M0ZmJlNmYzMDYzZWUwNGYzODBjZmJkZmE2YTRkNGJjMjAzYy4uMmU3YmIwZjAzNWFi
NGFkMjQ2YWYzZjQwNWQxOGUyOGMwMzc2YjljYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L2N1c3RvbS1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dApA
QCAtNyw2ICs3LDkgQEAgUEFTUyBJbWFnZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgSW1h
Z2UpIGlzICdbb2JqZWN0IEhUTUxJbWFnZUVsZW1lbnRdJwogUEFTUyBPcHRpb24ucHJvdG90eXBl
LnRvU3RyaW5nLmNhbGwobmV3IE9wdGlvbikgaXMgJ1tvYmplY3QgSFRNTE9wdGlvbkVsZW1lbnRd
JwogUEFTUyBXZWJLaXRQb2ludC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0UG9p
bnQpIGlzICdbb2JqZWN0IFdlYktpdFBvaW50XScKIFBBU1MgV2ViS2l0Q1NTTWF0cml4LnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKG5ldyBXZWJLaXRDU1NNYXRyaXgpIGlzICdtYXRyaXgoMS4wMDAw
MDAsIDAuMDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknCitQ
QVNTIFdlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0Q1NT
TWF0cml4KCkpIGlzICdtYXRyaXgoMS4wMDAwMDAsIDAuMDAwMDAwLCAwLjAwMDAwMCwgMS4wMDAw
MDAsIDAuMDAwMDAwLCAwLjAwMDAwMCknCitQQVNTIG5ldyBXZWJLaXRDU1NNYXRyaXgobnVsbCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorUEFT
UyBuZXcgV2ViS2l0Q1NTTWF0cml4KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgogUEFTUyBYTUxIdHRwUmVxdWVzdC5wcm90b3R5
cGUudG9TdHJpbmcuY2FsbChuZXcgWE1MSHR0cFJlcXVlc3QpIGlzICdbb2JqZWN0IFhNTEh0dHBS
ZXF1ZXN0XScKIFBBU1MgWFNMVFByb2Nlc3Nvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcg
WFNMVFByb2Nlc3NvcikgaXMgJ1tvYmplY3QgWFNMVFByb2Nlc3Nvcl0nCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvY3VzdG9tLWNvbnN0cnVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L2N1c3RvbS1jb25zdHJ1Y3RvcnMuaHRtbAppbmRleCBlZmQ2MTFjNmFlYmE1ZTNlZDE2ZGUzMGQy
MWQ5YTg2ZDNlZDZjYzU5Li41MjI1Y2ZhMDI2MjViMGRjOTI4NmI3MDdlOWQ3ZDA4MTJjNzYwYWJi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVj
dG9ycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jdXN0b20tY29uc3Ry
dWN0b3JzLmh0bWwKQEAgLTE3LDYgKzE3LDkgQEAKICAgICBzaG91bGRCZSgiT3B0aW9uLnByb3Rv
dHlwZS50b1N0cmluZy5jYWxsKG5ldyBPcHRpb24pIiwgIidbb2JqZWN0IEhUTUxPcHRpb25FbGVt
ZW50XSciKTsKICAgICBzaG91bGRCZSgiV2ViS2l0UG9pbnQucHJvdG90eXBlLnRvU3RyaW5nLmNh
bGwobmV3IFdlYktpdFBvaW50KSIsICInW29iamVjdCBXZWJLaXRQb2ludF0nIik7CiAgICAgc2hv
dWxkQmUoIldlYktpdENTU01hdHJpeC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgV2ViS2l0
Q1NTTWF0cml4KSIsICInbWF0cml4KDEuMDAwMDAwLCAwLjAwMDAwMCwgMC4wMDAwMDAsIDEuMDAw
MDAwLCAwLjAwMDAwMCwgMC4wMDAwMDApJyIpOworICAgIHNob3VsZEJlKCJXZWJLaXRDU1NNYXRy
aXgucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobmV3IFdlYktpdENTU01hdHJpeCgpKSIsICInbWF0
cml4KDEuMDAwMDAwLCAwLjAwMDAwMCwgMC4wMDAwMDAsIDEuMDAwMDAwLCAwLjAwMDAwMCwgMC4w
MDAwMDApJyIpOworICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0Q1NTTWF0cml4KG51bGwpIik7
CisgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRDU1NNYXRyaXgodW5kZWZpbmVkKSIpOwogICAg
IHNob3VsZEJlKCJYTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgWE1M
SHR0cFJlcXVlc3QpIiwgIidbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0XSciKTsKICAgICBzaG91bGRC
ZSgiWFNMVFByb2Nlc3Nvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXcgWFNMVFByb2Nlc3Nv
cikiLCAiJ1tvYmplY3QgWFNMVFByb2Nlc3Nvcl0nIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NmMzYTkz
Y2YyMGVkNjM0YzQ5ZmEyMWI5ZGE0NzliY2M0OTY5Y2JmLi4zODQ5YTllNDQ2MzI3MzhmZWJjNmQz
MjU4NzlhYWViMTJiNzUwNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDkt
MDkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBHZW5lcmF0
ZSBhIFdlYktpdENTU01hdHJpeCBjb25zdHJ1Y3RvciBvZiBWOCB1c2luZyB0aGUgSURMICdDb25z
dHJ1Y3RvcicgZXh0ZW5kZWQgYXR0cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NzQ1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgJ0NhbGxXaXRoTnVsbFZhbHVlJyBleHRlbmRlZCBh
dHRyaWJ1dGUuCisgICAgICAgIElmIGEgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGFuZCBtaXNzaW5n
LCAnQ2FsbFdpdGhEZWZhdWx0VmFsdWUnCisgICAgICAgIGhhbmRsZXMgaXQgYXMgYSBzdHJpbmcg
InVuZGVmaW5lZCIuIE9uIHRoZSBvdGhlciBoYW5kLAorICAgICAgICAnQ2FsbFdpdGhOdWxsVmFs
dWUnIGhhbmRsZXMgaXQgYXMgYSBudWxsIHN0cmluZworICAgICAgICAoTm90ZTogbm90IGEgc3Ry
aW5nICJudWxsIiwgYnV0IGEgbnVsbCBzdHJpbmcpLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Rv
bS9XaW5kb3cvY3VzdG9tLWNvbnN0cnVjdG9ycy5odG1sCisgICAgICAgICAgICAgICB0cmFuc2Zv
cm1zL3N2Zy12cy1jc3MueGh0bWwKKyAgICAgICAgICAgICAgIHRyYW5zZm9ybXMvY3NzbWF0cml4
LTJkLWludGVyZmFjZS54aHRtbAorICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy9jc3NtYXRyaXgt
M2QtaW50ZXJmYWNlLnhodG1sR2VuZXJhdGUgYSBXZWJLaXRDU1NNYXRyaXggY29uc3RydWN0b3IK
KworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogUmVtb3ZlZCBWOFdlYktpdENTU01hdHJpeENvbnN0
cnVjdG9yLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnBybzogUmVtb3ZlZCBWOFdlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogSWYgdGhlICdD
YWxsV2l0aE51bGxWYWx1ZScgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHNldCwgd2UgY2FsbCBNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUigpIHdpdGggTUlTU0lOR19JU19FTVBUWSBtb2RlIHRvIG9idGFp
biBhIG1heWJlIG1pc3NpbmcgcGFyYW1ldGVyLiBPdGhlcndpc2UsIHdlIGNhbGwgTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoKSB3aXRoIE1JU1NJTkdfSVNfVU5ERUZJTkVEIG1vZGUuCisgICAgICAg
IChSZXF1aXJlc0N1c3RvbVNpZ25hdHVyZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6IFVwZGF0ZWQgdGVzdCByZXN1bHRzLgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJJbnRlcm5hbDo6bWV0aG9kQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJ
bnRlcm5hbDo6dm9pZE1ldGhvZFdpdGhBcmdzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9iakludGVybmFsOjppbnRNZXRob2RXaXRoQXJnc0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3ND
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqSW50ZXJuYWw6Om9wdGlvbnNPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqSW50ZXJuYWw6OmN1c3RvbUFyZ3NBbmRFeGNlcHRpb25DYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVBbmRBcmdDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVB
bmRPcHRpb25hbEFyZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5h
bDo6d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FE
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjptZXRob2RXaXRo
T3B0aW9uYWxBcmdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6
Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjptZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRU
d29PcHRpb25hbEFyZ3NDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJu
YWw6Om1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6Om92ZXJsb2FkZWRN
ZXRob2QzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpvdmVy
bG9hZGVkTWV0aG9kNENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5h
bDo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqSW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjplbmFibGVkQXRSdW50aW1lTWV0aG9kMkNhbGxi
YWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UpOiBUaGUgZmFjdCB0aGF0IFY4UGFyYW1l
dGVyQmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmplY3QgbWVhbnMgdGhhdCB3ZSBkbyBub3QgbmVl
ZCB0byBwcmVwYXJlIGFueXRoaW5nLCBpLmUuIHdlIHNob3VsZCBqdXN0IHJldHVybiB0cnVlIGlu
IHRoaXMgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6Ojo6cHJlcGFyZSk6IElmIFY4UGFyYW1ldGVy
QmFzZSBkb2VzIG5vdCBoYXZlIGFueSBvYmplY3QsIHRoZW4gd2Ugc2V0IGEgbnVsbCBzdHJpbmcu
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5oOiBNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUigpIHJldHVybnMgdGhlIHBhcmFtZXRlciBvZiBhIGdpdmVuIGluZGV4
IGlmIHRoZSBwYXJhbWV0ZXIgZXhpc3RzLiBJZiB0aGUgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0
IGFuZCBNSVNTSU5HX0lTX1VOREVGSU5FRCBpcyBzZXQsIHRoaXMgbWFjcm8gcmV0dXJucyBhbiBv
YmplY3QgdGhhdCByZXByZXNlbnRzIHVuZGVmaW5lZC4gSWYgdGhlIHBhcmFtZXRlciBkb2VzIG5v
dCBleGlzdCBhbmQgTUlTU0lOR19JU19FTVBUWSBpcyBzZXQsIHRoaXMgbWFjcm8gcmV0dXJucyBh
biBlbXB0eSBvYmplY3QuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3IuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NN
YXRyaXguaWRsOiBBZGRlZCB0aGUgJ0NvbnN0cnVjdG9yJyBleHRlbmRlZCBhdHRyaWJ1dGUuCisK
IDIwMTEtMDktMDkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogaW50cm9kdWNlIEphdmFTY3JpcHRTb3VyY2VGcmFtZSBj
bGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyNTY2YjFjN2MxYjJmYjI2MWQzMDU5NjkyZWZhMDNm
MGRmZjQ5MWVmLi5mYmI3ZmEwZmE2ZjUwZTgyYmVkNTdmOWNjY2RkOWVmNjI4OGQ1YjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yMjIxLDcgKzIyMjEsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKLSAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rv
ci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29u
c3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2Nr
ZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
byBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDcwODRmYjM0MjhkMjlhYWNmMjYx
N2E5ZWVlNGYwZDg2NTAyM2UxODMuLjgwMzBjZDk4NTEyNWM4OThkNDkzNzEzYWQ2NjA2NzlhYWM4
NDE5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMDgsNyArMjA4LDYgQEAgdjggewogICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAotICAgICAgICBiaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDllMjYz
NDA1Yjc0NTJkZWY0YmU1NGEzOTkwZjdlMWE5YTBmNmQ4ZTMuLjFkNjczYTMyYmMzNWQ4M2Q3NzM0
NTUyOTFjMmRmNjlmMGQyNWVjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xNDE2LDkgKzE0MTYsOSBAQCBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIAogICAgICAgICAjIE9wdGlvbmFsIGNhbGxiYWNrcyBzaG91
bGQgYmUgdHJlYXRlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB0aGV5IGFsd2F5cyBoYXZlIGEgZGVm
YXVsdCB2YWx1ZSAoMCksCiAgICAgICAgICMgYW5kIHdlIGNhbiByZWR1Y2UgdGhlIG51bWJlciBv
ZiBvdmVybG9hZGVkIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIHBh
cmFtZXRlcnMuCi0gICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1
ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBzaG91bGQgbm90IGdlbmVyYXRlIGFu
IGVhcmx5IGNhbGwuCisgICAgICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2
YWx1ZXMgW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBvciBbT3B0aW9uYWw9Q2FsbFdp
dGhOdWxsVmFsdWVdIHNob3VsZCBub3QgZ2VuZXJhdGUgYW4gZWFybHkgY2FsbC4KICAgICAgICAg
bXkgJG9wdGlvbmFsID0gJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFs
In07ICAgICAgICAKLSAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxX
aXRoRGVmYXVsdFZhbHVlIiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
bGxiYWNrIn0pIHsKKyAgICAgICAgaWYgKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxX
aXRoRGVmYXVsdFZhbHVlIiAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoTnVsbFZhbHVlIiAmJiAh
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKICAgICAgICAg
ICAgICMgR2VuZXJhdGUgZWFybHkgY2FsbCBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCBwYXJhbWV0
ZXJzLgogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPD0gJHBhcmFtSW5kZXgpIHtcbiI7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25D
YWxsID0gR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwg
IiAgICAiIHggMiwgJGltcGxDbGFzc05hbWUpOwpAQCAtMTQyNiw2ICsxNDI2LDExIEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5n
IC49ICIgICAgfVxuIjsKICAgICAgICAgfQogCisgICAgICAgIG15ICRwYXJhbWV0ZXJNaXNzaW5n
UG9saWN5ID0gIk1JU1NJTkdfSVNfVU5ERUZJTkVEIjsKKyAgICAgICAgaWYgKCRvcHRpb25hbCAm
JiAkb3B0aW9uYWwgZXEgIkNhbGxXaXRoTnVsbFZhbHVlIikgeworICAgICAgICAgICAgJHBhcmFt
ZXRlck1pc3NpbmdQb2xpY3kgPSAiTUlTU0lOR19JU19FTVBUWSI7CisgICAgICAgIH0KKwogICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRXhjZXB0aW9uQ29kZS5oIik7CiAgICAgICAgIG15ICRu
YXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlciwgJHBhcmFt
SW5kZXgpOwogICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
bGxiYWNrIn0pIHsKQEAgLTE0NTcsNyArMTQ2Miw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjawogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAgIGdvdG8g
ZmFpbDtcbiI7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICB9XG4i
OwogICAgICAgICB9IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewotICAg
ICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRw
YXJhbUluZGV4XSIpOworICAgICAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRw
YXJhbWV0ZXIsICJNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRleCwgJHBh
cmFtZXRlck1pc3NpbmdQb2xpY3kpIik7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJHBhcmFtZXRlciwgJG5hdGl2ZVR5
cGUsICRwYXJhbWV0ZXJOYW1lLCAkdmFsdWUpIC4gIlxuIjsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEJpbmRpbmdNYWNyb3MuaCIpOwpAQCAtMTQ3
OCw3ICsxNDgzLDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49
ICIgICAgRVhDRVBUSU9OX0JMT0NLKCRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgIiAuCi0g
ICAgICAgICAgICAgICAgIEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAiYXJnc1skcGFyYW1J
bmRleF0iKSAuICIpO1xuIjsKKyAgICAgICAgICAgICAgICAgSlNWYWx1ZVRvTmF0aXZlKCRwYXJh
bWV0ZXIsICJNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAkcGFyYW1JbmRleCwgJHBhcmFt
ZXRlck1pc3NpbmdQb2xpY3kpIikgLiAiKTtcbiI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
JHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzSW5kZXgifSkgewpAQCAtMzI2OCw3
ICszMjczLDcgQEAgc3ViIFJlcXVpcmVzQ3VzdG9tU2lnbmF0dXJlCiAgICAgfQogICAgIGZvcmVh
Y2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CiAgICAgICAgIG15
ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9
OwotICAgICAgICBpZiAoKCRvcHRpb25hbCAmJiAoJG9wdGlvbmFsIG5lICJDYWxsV2l0aERlZmF1
bHRWYWx1ZSIpKSB8fCAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2si
fSkgeworICAgICAgICBpZiAoKCRvcHRpb25hbCAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoRGVm
YXVsdFZhbHVlIiAmJiAkb3B0aW9uYWwgbmUgIkNhbGxXaXRoTnVsbFZhbHVlIikgfHwgJHBhcmFt
ZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxiYWNrIn0pIHsKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAzNWIz
ODJkNTRjZTZjMDdlYTJkOTBkYmRkZjNiNjdlNmUzNDFlNjUwLi5lMGQ5NjA2ZmUwNDU3MzI3ZjJh
NmEyNDcyNmYwMDczZWQwMGQ1OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtNTQsOCAr
NTQsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JM
T0NLKFY4UGFyYW1ldGVyPD4sIHN0cjEsIGFyZ3NbMF0pOwotICAgIFNUUklOR19UT19WOFBBUkFN
RVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyMiwgYXJnc1sxXSk7CisgICAg
U1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdHIx
LCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkp
OworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8
Piwgc3RyMiwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgTUlTU0lOR19JU19VTkRF
RklORUQpKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGU1YjJjYjRkODc0YWYxZGE2YjRj
M2M2N2RhOThjMDA3YWVkMzRhNGMuLjZkMDk3OGU2ZDM3MWRlNmJlY2ZjMzE4Yzk1YTlhNGUwYzIx
ODU3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygiRE9NLlRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLm1ldGhvZCIpOwogICAgIFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyKiBpbXAgPSBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soUmVmUHRyPE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI+LCBsaXN0ZW5lciwgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKGFyZ3Nb
MF0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+
LCBsaXN0ZW5lciwgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpOwogICAgIGltcC0+bWV0
aG9kKGxpc3RlbmVyKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwCmluZGV4IGVkNjMyZGY1NmRkM2UxOTQyMjk3ZDU0Mzg3MjE0YTA0NmUwMWJiMmUuLjQx
YzY5ZGVjYjQxMWQxNTMxY2FjZWY1ZTY4ZWFiZWEyNmRlMjg5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC02
NjIsOSArNjYyLDkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2b2lkTWV0aG9kV2l0
aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLnZvaWRNZXRob2RXaXRoQXJncyIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGlu
dCwgaW50QXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJf
RVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgYXJnc1sxXSk7Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJn
c1syXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
YXJnc1syXSkpIDogMCk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMy
KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkp
OworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8
Piwgc3RyQXJnLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBNSVNTSU5HX0lTX1VO
REVGSU5FRCkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIE1JU1NJTkdf
SVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMiwgTUlTU0lOR19JU19VTkRF
RklORUQpKSkgOiAwKTsKICAgICBpbXAtPnZvaWRNZXRob2RXaXRoQXJncyhpbnRBcmcsIHN0ckFy
Zywgb2JqQXJnKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC02
ODAsOSArNjgwLDkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbnRNZXRob2RXaXRo
QXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLmludE1ldGhvZFdpdGhBcmdzIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50
LCBpbnRBcmcsIHRvSW50MzIoYXJnc1swXSkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9F
WENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzFdKTsKLSAgICBFWENF
UFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdz
WzJdKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzJdKSkgOiAwKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIHRvSW50MzIo
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7
CisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+
LCBzdHJBcmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5E
RUZJTkVEKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9i
ajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMiwgTUlTU0lOR19J
U19VTkRFRklORUQpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBNSVNTSU5HX0lTX1VOREVG
SU5FRCkpKSA6IDApOwogICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KGltcC0+aW50TWV0aG9k
V2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIG9iakFyZykpOwogfQogCkBAIC02OTcsOSArNjk3LDkg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpNZXRob2RXaXRoQXJnc0NhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
Lm9iak1ldGhvZFdpdGhBcmdzIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIHRv
SW50MzIoYXJnc1swXSkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxP
Q0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzFdKTsKLSAgICBFWENFUFRJT05fQkxPQ0so
VGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzJdKSA/IFY4VGVz
dE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzJdKSkgOiAw
KTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7CisgICAgU1RSSU5H
X1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBzdHJBcmcsIE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSk7Cisg
ICAgRVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMiwgTUlTU0lOR19JU19VTkRFRklORUQp
KSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlC
RV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAyLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKSA6IDAp
OwogICAgIHJldHVybiB0b1Y4KGltcC0+b2JqTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcs
IG9iakFyZykpOwogfQogCkBAIC03MDksOCArNzA5LDggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW4KICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0so
VjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBhcmdzWzBdKTsKLSAgICBFWENFUFRJT05fQkxPQ0soVGVz
dE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzFdKSA/IFY4VGVzdE9i
ajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwKTsK
KyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4s
IHN0ckFyZywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgTUlTU0lOR19JU19VTkRF
RklORUQpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2Jq
OjpIYXNJbnN0YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBNSVNTSU5HX0lT
X1VOREVGSU5FRCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJ
TkVEKSkpIDogMCk7CiAgICAgcmV0dXJuIHRvVjgoaW1wLT5tZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzKHN0ckFyZywgb2JqQXJnKSk7CiB9CiAKQEAgLTcyMiw4ICs3MjIsOCBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxs
YmFjayhjb25zdCB2OAogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIFNUUklO
R19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBh
cmdzWzBdKTsKLSAgICBFWENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2Jq
OjpIYXNJbnN0YW5jZShhcmdzWzFdKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwKTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVU
RVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKTsKKyAgICBFWENFUFRJT05f
QkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAxLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpID8gVjhUZXN0T2Jq
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpIDogMCk7CiAgICAgUmVmUHRy
PFRlc3RPYmo+IHJlc3VsdCA9IGltcC0+bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
cyhzdHJBcmcsIG9iakFyZywgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdv
dG8gZmFpbDsKQEAgLTc2OSwxMiArNzY5LDEyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gb3B0aW9uc09iamVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5vcHRpb25zT2JqZWN0Iik7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05f
QkxPQ0soT3B0aW9uc09iamVjdCwgb28sIGFyZ3NbMF0pOworICAgIEVYQ0VQVElPTl9CTE9DSyhP
cHRpb25zT2JqZWN0LCBvbywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgTUlTU0lO
R19JU19VTkRFRklORUQpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7CiAgICAgICAg
IGltcC0+b3B0aW9uc09iamVjdChvbyk7CiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKICAgICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NLKE9wdGlvbnNPYmplY3QsIG9vbywg
YXJnc1sxXSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKE9wdGlvbnNPYmplY3QsIG9vbywgTUFZQkVf
TUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgTUlTU0lOR19JU19VTkRFRklORUQpKTsKICAgICBp
bXAtPm9wdGlvbnNPYmplY3Qob28sIG9vbyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOwogfQpAQCAtODA2LDcgKzgwNiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY3VzdG9tQXJnc0FuZEV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAg
ICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFj
ayhtYXhTdGFja1NpemUpKTsKICAgICBpZiAoIWNhbGxTdGFjaykKICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLSAgICBFWENFUFRJT05fQkxPQ0sobG9nKiwgaW50QXJnLCBWOGxvZzo6
SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOGxvZzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBFWENFUFRJT05fQkxPQ0sobG9nKiwgaW50
QXJnLCBWOGxvZzo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
TUlTU0lOR19JU19VTkRFRklORUQpKSA/IFY4bG9nOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIE1JU1NJTkdfSVNf
VU5ERUZJTkVEKSkpIDogMCk7CiAgICAgaW1wLT5jdXN0b21BcmdzQW5kRXhjZXB0aW9uKGludEFy
Zywgc2NyaXB0QXJndW1lbnRzLCBjYWxsU3RhY2ssIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMp
KQogICAgICAgICBnb3RvIGZhaWw7CkBAIC04NTQsNyArODU0LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB3aXRoRHluYW1pY0ZyYW1lQW5kQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhEeW5hbWljRnJhbWVB
bmRBcmciKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihhcmdzWzBd
KSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMyKE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpOwogICAgIEZyYW1l
KiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQo
KTsKICAgICBpZiAoIWVudGVyZWRGcmFtZSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKQEAgLTg2Niw3ICs4NjYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhE
eW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcgogewogICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoud2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnIik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8PSAxKSB7CiAgICAgICAgIEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2
ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKICAgICAgICAgaWYgKCFlbnRlcmVkRnJhbWUpCkBA
IC04NzQsNyArODc0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHluYW1p
Y0ZyYW1lQW5kT3B0aW9uYWxBcmdDYWxsYmFjayhjb25zdCB2ODo6QXIKICAgICAgICAgaW1wLT53
aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoZW50ZXJlZEZyYW1lLCBpbnRBcmcpOwogICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiAgICAgfQotICAgIEVYQ0VQVElP
Tl9CTE9DSyhpbnQsIG9wdGlvbmFsQXJnLCB0b0ludDMyKGFyZ3NbMV0pKTsKKyAgICBFWENFUFRJ
T05fQkxPQ0soaW50LCBvcHRpb25hbEFyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihhcmdzLCAxLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBGcmFtZSogZW50ZXJlZEZy
YW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CiAgICAgaWYg
KCFlbnRlcmVkRnJhbWUpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC04ODYs
NyArODg2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHluYW1pY0ZyYW1l
QW5kVXNlckdlc3R1cmVDYWxsYmFjayhjb25zdCB2ODo6QXIKIHsKICAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZSIpOwogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9O
X0JMT0NLKGludCwgaW50QXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05fQkxP
Q0soaW50LCBpbnRBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
TUlTU0lOR19JU19VTkRFRklORUQpKSk7CiAgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJv
eHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOwogICAgIGlmICghZW50ZXJlZEZy
YW1lKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtODk4LDcgKzg5OCw3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0
dXJlQVNBRENhbGxiYWNrKGNvbnN0IHY4CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53
aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEIik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IGludEFyZywgdG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBNSVNTSU5H
X0lTX1VOREVGSU5FRCkpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7CiAgICAgICAg
IEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENv
bnRleHQoKTsKICAgICAgICAgaWYgKCFlbnRlcmVkRnJhbWUpCkBAIC05MDYsNyArOTA2LDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1
cmVBU0FEQ2FsbGJhY2soY29uc3QgdjgKICAgICAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5k
VXNlckdlc3R1cmVBU0FEKGVudGVyZWRGcmFtZSwgaW50QXJnLCBTY3JpcHRDb250cm9sbGVyOjpw
cm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKICAgICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwgb3B0aW9uYWxBcmcsIHRv
SW50MzIoYXJnc1sxXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIG9wdGlvbmFsQXJnLCB0
b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEsIE1JU1NJTkdfSVNfVU5ERUZJ
TkVEKSkpOwogICAgIEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1l
Rm9yRW50ZXJlZENvbnRleHQoKTsKICAgICBpZiAoIWVudGVyZWRGcmFtZSkKICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTk5Myw3ICs5OTMsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmCiAgICAgICAgIGltcC0+bWV0aG9kV2l0aE9wdGlvbmFsQXJnKCk7CiAgICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAgICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NL
KGludCwgb3B0LCB0b0ludDMyKGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBv
cHQsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgTUlTU0lOR19JU19V
TkRFRklORUQpKSk7CiAgICAgaW1wLT5tZXRob2RXaXRoT3B0aW9uYWxBcmcob3B0KTsKICAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CkBAIC0xMDAyLDEyICsxMDAyLDEyIEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5k
T3B0aW9uYWxBcmdDYWxsYmFjayhjb25zCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5t
ZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIpOwogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhDRVBUSU9OX0JM
T0NLKGludCwgbm9uT3B0LCB0b0ludDMyKGFyZ3NbMF0pKTsKKyAgICBFWENFUFRJT05fQkxPQ0so
aW50LCBub25PcHQsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgTUlT
U0lOR19JU19VTkRFRklORUQpKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAg
ICAgICBpbXAtPm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKG5vbk9wdCk7
CiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAgICB9Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKGludCwgb3B0LCB0b0ludDMyKGFyZ3NbMV0pKTsKKyAgICBFWENFUFRJT05f
QkxPQ0soaW50LCBvcHQsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwg
TUlTU0lOR19JU19VTkRFRklORUQpKSk7CiAgICAgaW1wLT5tZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRPcHRpb25hbEFyZyhub25PcHQsIG9wdCk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOwogfQpAQCAtMTAxNiwxMyArMTAxNiwxMyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxi
YWNrKAogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBub25PcHQs
IHRvSW50MzIoYXJnc1swXSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIG5vbk9wdCwgdG9J
bnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5F
RCkpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7CiAgICAgICAgIGltcC0+bWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKG5vbk9wdCk7CiAgICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAgICB9Ci0gICAgRVhDRVBUSU9OX0JMT0NL
KGludCwgb3B0MSwgdG9JbnQzMihhcmdzWzFdKSk7Ci0gICAgRVhDRVBUSU9OX0JMT0NLKGludCwg
b3B0MiwgdG9JbnQzMihhcmdzWzJdKSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKGludCwgb3B0MSwg
dG9JbnQzMihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBNSVNTSU5HX0lTX1VOREVG
SU5FRCkpKTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBvcHQyLCB0b0ludDMyKE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDIsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpOwogICAgIGlt
cC0+bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKG5vbk9wdCwgb3B0
MSwgb3B0Mik7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpAQCAtMTA0
Miw3ICsxMDQyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZ0NhbGxiYWNrKGNvbnMKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAg
ICBFWENFUFRJT05fQkxPQ0soaW50LCBub25DYWxsYmFjaywgdG9JbnQzMihhcmdzWzBdKSk7Cisg
ICAgRVhDRVBUSU9OX0JMT0NLKGludCwgbm9uQ2FsbGJhY2ssIHRvSW50MzIoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSk7CiAgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPD0gMSB8fCAhYXJnc1sxXS0+SXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoVFlQRV9NSVNNQVRDSF9FUlIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+
IGNhbGxiYWNrID0gVjhUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhcmdzWzFdLCBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwpAQCAtMTA5MSw4ICsxMDkxLDggQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2QxIik7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
LSAgICBFWENFUFRJT05fQkxPQ0soVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0
YW5jZShhcmdzWzBdKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBU
SU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgYXJnc1sxXSk7CisgICAgRVhDRVBUSU9O
X0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSA/IFY4VGVzdE9i
ajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKSA6IDApOworICAgIFNUUklO
R19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8Piwgc3RyQXJnLCBN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpOwog
ICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcsIHN0ckFyZyk7CiAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpAQCAtMTEwMSwxMiArMTEwMSwxMiBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncwogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRl
ZE1ldGhvZDIiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhUZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOworICAgIEVYQ0VQVElPTl9CTE9DSyhU
ZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkgPyBWOFRlc3RPYmo6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
YXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSkgOiAwKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8PSAxKSB7CiAgICAgICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcpOwogICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiAgICAgfQotICAgIEVYQ0VQVElP
Tl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihhcmdzWzFdKSk7CisgICAgRVhDRVBUSU9OX0JM
T0NLKGludCwgaW50QXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDEs
IE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpB
cmcsIGludEFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpAQCAt
MTExNSw3ICsxMTE1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVk
TWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIHsKICAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRNZXRob2QzIik7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgYXJnc1swXSk7Cisg
ICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBz
dHJBcmcsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIE1JU1NJTkdfSVNfVU5ERUZJ
TkVEKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKHN0ckFyZyk7CiAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm92ZXJsb2FkZWRN
ZXRob2Q0Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKLSAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIHRvSW50MzIoYXJnc1sw
XSkpOworICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIGludEFyZywgdG9JbnQzMihNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpKTsKICAgICBpbXAt
Pm92ZXJsb2FkZWRNZXRob2QoaW50QXJnKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7CiB9CkBAIC0xMTcwLDcgKzExNzAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDApIHsKICAgICAgICAgcmV0dXJuIHY4OjpJbnRlZ2Vy
OjpOZXcoVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoKSk7CiAgICAgfQotICAgIEVY
Q0VQVElPTl9CTE9DSyhpbnQsIGFyZywgdG9JbnQzMihhcmdzWzBdKSk7CisgICAgRVhDRVBUSU9O
X0JMT0NLKGludCwgYXJnLCB0b0ludDMyKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAs
IE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpOwogICAgIHJldHVybiB2ODo6SW50ZWdlcjo6TmV3KFRl
c3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGFyZykpOwogfQogCkBAIC0xMTc4LDcgKzEx
NzgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRo
b2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogewogICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmouZW5hYmxlZEF0UnVudGltZU1ldGhvZDEiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQs
IGludEFyZywgVjhpbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gVjhpbnQ6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgRVhDRVBUSU9O
X0JMT0NLKGludCwgaW50QXJnLCBWOGludDo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSA/IFY4aW50Ojp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3Ms
IDAsIE1JU1NJTkdfSVNfVU5ERUZJTkVEKSkpIDogMCk7CiAgICAgaW1wLT5lbmFibGVkQXRSdW50
aW1lTWV0aG9kMShpbnRBcmcpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsK
IH0KQEAgLTExODcsNyArMTE4Nyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5h
YmxlZEF0UnVudGltZU1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiB7CiAgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5lbmFibGVkQXRSdW50aW1lTWV0aG9kMiIpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRVhD
RVBUSU9OX0JMT0NLKGludCwgaW50QXJnLCBWOGludDo6SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBW
OGludDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAw
KTsKKyAgICBFWENFUFRJT05fQkxPQ0soaW50LCBpbnRBcmcsIFY4aW50OjpIYXNJbnN0YW5jZShN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBNSVNTSU5HX0lTX1VOREVGSU5FRCkpID8g
VjhpbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgTUlTU0lOR19JU19VTkRFRklORUQpKSkgOiAwKTsKICAgICBp
bXAtPmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyKGludEFyZyk7CiAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApp
bmRleCA1MzVkOWMxNjI1ZWQ5ZGJhYzg4Njg1MzU2ZmFlZmJkOTJiYTMyM2EwLi40NjM5MTViY2Rk
MmJmMzdkMDJjYzlhNjQ2ZTllYmI5ZjhmY2RlM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaApAQCAtMzg2LDYgKzM4Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBib29sIHByZXBhcmVCYXNlKCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKG1f
djhPYmplY3QuSXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAg
ICAgICAgICBpZiAoTElLRUxZKG1fdjhPYmplY3QtPklzU3RyaW5nKCkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogCkBAIC00MDIsMTUgKzQwNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICAgICBibG9jay5SZVRocm93KCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBUaGlzIHBhdGggaXMg
dW5leHBlY3RlZC4gIEhvd2V2ZXIgdGhlcmUgaXMgaHlwb3RoZXNpcyB0aGF0IGl0Ci0gICAgICAg
ICAgICAvLyBtaWdodCBiZSBjb21iaW5hdGlvbiBvZiB2OCBhbmQgdjggYmluZGluZ3MgYnVncy4g
IEZvciBub3cKLSAgICAgICAgICAgIC8vIGp1c3QgYmFpbG91dCBhcyB3ZSdsbCBjcmFzaCBpZiBh
dHRlbXB0IHRvIGNvbnZlcnQgZW1wdHkgaGFuZGxlIGludG8gYSBzdHJpbmcuCi0gICAgICAgICAg
ICBpZiAobV92OE9iamVjdC5Jc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9
Ci0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTQ2MCw3ICs0NTQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29sIFY4
UGFyYW1ldGVyPFdpdGhOdWxsQ2hlY2s+OjpwcmVwYXJlKCkKICAgICB7Ci0gICAgICAgIGlmIChv
YmplY3QoKS0+SXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG9iamVjdCgpLklzRW1wdHkoKSB8fCBv
YmplY3QoKS0+SXNOdWxsKCkpIHsKICAgICAgICAgICAgIHNldFN0cmluZyhTdHJpbmcoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNDcwLDcgKzQ2NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHRlbXBsYXRlPD4gaW5saW5lIGJvb2wgVjhQYXJhbWV0
ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPjo6cHJlcGFyZSgpCiAgICAgewotICAgICAgICBp
ZiAob2JqZWN0KCktPklzTnVsbCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVmaW5lZCgpKSB7CisgICAg
ICAgIGlmIChvYmplY3QoKS5Jc0VtcHR5KCkgfHwgb2JqZWN0KCktPklzTnVsbCgpIHx8IG9iamVj
dCgpLT5Jc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBzZXRTdHJpbmcoU3RyaW5nKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTQ3OCw2ICs0NzIsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gVjhQYXJhbWV0ZXJCYXNlOjpwcmVw
YXJlQmFzZSgpOwogICAgIH0KIAorICAgIGVudW0gUGFyYW1ldGVyTWlzc2luZ1BvbGljeSB7Cisg
ICAgICAgIE1JU1NJTkdfSVNfVU5ERUZJTkVELAorICAgICAgICBNSVNTSU5HX0lTX0VNUFRZCisg
ICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVjhCaW5kaW5nX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdN
YWNyb3MuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNy
b3MuaAppbmRleCBhZDAyYzNlNjE5YzczNTQ3MjZjZjA0ZmU4YzAzMmQ1OWNmYjZjNzhiLi5hZDM5
YWZjZDU2YmM0ZjJiNWFjNThlZmEzMzRiMjlhMzgzZGJmNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5oCkBAIC00NiwzICs0
Niw2IEBACiAgICAgdHlwZSB2YXIodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKCF2YXIucHJlcGFyZSgpKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybjsKKwor
I2RlZmluZSBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCBpbmRleCwgcG9saWN5KSBcCisg
ICAgKCgocG9saWN5KSA9PSBNSVNTSU5HX0lTX0VNUFRZICYmIChpbmRleCkgPj0gKGFyZ3MpLkxl
bmd0aCgpKSA/ICh2ODo6TG9jYWw8djg6OlZhbHVlPigpKSA6ICgoYXJncylbKGluZGV4KV0pKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhZWZhNDlkZTFiNDNlMDRkZjE2NmU0ODUzMTAyN2MzNzEyMmE5ZDc4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4
V2ViS2l0Q1NTTWF0cml4LmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJOb2RlLmgiCi0KLSNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKLSNpbmNsdWRlICJWOERvY3VtZW50LmgiCi0jaW5jbHVkZSAiVjhOb2RlLmgiCi0jaW5j
bHVkZSAiVjhQcm94eS5oIgotCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYktpdENTU01hdHJpeDo6Y29u
c3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19T
VEFUUygiRE9NLldlYktpdENTU01hdHJpeC5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdz
LklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVj
dCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6
VHlwZUVycm9yKTsKLQotICAgIC8vIEZJWE1FOiBUaGUgbG9naWMgaGVyZSBpcyBhbG1vc3QgZXhh
Y3QgZHVwbGljYXRlIG9mIFY4Ojpjb25zdHJ1Y3RET01PYmplY3QuCi0gICAgLy8gQ29uc2lkZXIg
cmVmYWN0b3JpbmcgdG8gcmVkdWNlIGR1cGxpY2F0aW9uLgotICAgIFN0cmluZyBjc3NWYWx1ZTsK
LSAgICBpZiAoYXJncy5MZW5ndGgoKSA+PSAxKQotICAgICAgICBjc3NWYWx1ZSA9IHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzBdKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0
cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKGNzc1Zh
bHVlLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICB0aHJvd0Vycm9yKGVjKTsKLQotICAgIC8v
IFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIG1hdHJp
eC4KLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmluZm8s
IG1hdHJpeC5nZXQoKSk7Ci0gICAgcmV0dXJuIHRvVjgobWF0cml4LnJlbGVhc2UoKSwgYXJncy5I
b2xkZXIoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU01hdHJpeC5pZGwKaW5kZXggNzZmZjYwMWNmOGMzNDc0YmJiNDUyYWViOGY3ZmI0NmI5
YTI0ZGJjMi4uOTBhYTMzNGVmMGJjNzBlNGIyZGQ0OTg5MTdlNjYyOGVmODNhMjZjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKQEAgLTMwLDcgKzMwLDggQEAgbW9kdWxl
IGNzcyB7CiAgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCiAgICAgICAgIEN1c3RvbUNvbnN0cnVj
dEZ1bmN0aW9uLAogICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MSwKLSAgICAgICAgVjhD
dXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1Y3RvcihpbiBbT3B0aW9uYWw9Q2FsbFdp
dGhOdWxsVmFsdWVdIERPTVN0cmluZyBjc3NWYWx1ZSksCisgICAgICAgIENvbnN0cnVjdG9yUmFp
c2VzRXhjZXB0aW9uLAogICAgIF0gV2ViS2l0Q1NTTWF0cml4IHsKIAogICAgICAgICAvLyBUaGVz
ZSBhdHRyaWJ1dGVzIGFyZSBzaW1wbGUgYWxpYXNlcyBmb3IgY2VydGFpbiBlbGVtZW50cyBvZiB0
aGUgNHg0IG1hdHJpeAo=
</data>
<flag name="review"
          id="103454"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="103503"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>