<?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>98898</bug_id>
          
          <creation_ts>2012-10-10 06:57:27 -0700</creation_ts>
          <short_desc>Support op_typeof in the DFG</short_desc>
          <delta_ts>2013-01-08 22:33:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>106415</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Valery Ignatyev">valery.ignatyev</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>738921</commentid>
    <comment_count>0</comment_count>
    <who name="Valery Ignatyev">valery.ignatyev</who>
    <bug_when>2012-10-10 06:57:27 -0700</bug_when>
    <thetext>Allows to apply DFG on functions with typeof. Replace Typeof DFG node with appropriate constant using profile data.
Atrificial example:
function f() {
    var i,s;
    for (i = 0; i &lt; 1000000000; i++) {
      var k = [];
  	  s = typeof(k);
    }
  return s;
}

without patch
real	0m51.053s
user	0m50.963s
sys	0m0.068s

with patch
real	0m1.960s
user	0m1.948s
sys	0m0.008s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738923</commentid>
    <comment_count>1</comment_count>
      <attachid>167992</attachid>
    <who name="Valery Ignatyev">valery.ignatyev</who>
    <bug_when>2012-10-10 06:58:43 -0700</bug_when>
    <thetext>Created attachment 167992
patch with fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739135</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-10-10 11:05:01 -0700</bug_when>
    <thetext>Is this patch ready for review? If so, please mark it as &quot;review?&quot; by going to Details view (link is to the right from the patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739232</commentid>
    <comment_count>3</comment_count>
      <attachid>167992</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-10 12:52:13 -0700</bug_when>
    <thetext>Comment on attachment 167992
patch with fix

Attachment 167992 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14253344

New failing tests:
fast/workers/worker-close-more.html
fast/js/JSON-parse.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739261</commentid>
    <comment_count>4</comment_count>
      <attachid>167992</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-10 13:32:27 -0700</bug_when>
    <thetext>Comment on attachment 167992
patch with fix

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

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:1545
&gt; +    case Typeof:
&gt; +        node.setCanExit(true);
&gt; +        m_foundConstants = true;
&gt; +        break;

This should at the *very least* say forNode(nodeIndex).set(SpecString).  At this point you have no knowledge of what Typeof will return.

And as I say in comments in ConstantFolding, this should do type casing to see if we can prove Typeof away.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:2941
&gt; +            NEXT_OPCODE(op_new_func_exp);

This should be NEXT_OPCODE(op_new_func_exp)

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:114
&gt; +                SpeculatedType child = m_graph[node.child1()].prediction();

You meant m_state.forNode(node.child1()).m_type.

The prediction is unsound - it&apos;s just what we *thing* that the node *might* be, rather than what we *know* the node *to* be.

If you want to optimize Typeof based on predictions, then it cause Typeof to get compiled into a speculation check followed by the relevant constant.

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:126
&gt; +                if (isObjectSpeculation(child))
&gt; +                    value = JSValue(jsString(&amp;m_graph.m_globalData, String(&quot;object&quot;)));
&gt; +                else if (isNumberSpeculation(child))
&gt; +                    value = JSValue(jsString(&amp;m_graph.m_globalData, String(&quot;number&quot;)));
&gt; +                else if (isStringSpeculation(child))
&gt; +                    value = JSValue(jsString(&amp;m_graph.m_globalData, String(&quot;string&quot;)));
&gt; +                else if (isFunctionSpeculation(child))
&gt; +                    value = JSValue(jsString(&amp;m_graph.m_globalData, String(&quot;function&quot;)));
&gt; +                else if (isBooleanSpeculation(child))
&gt; +                    value = JSValue(jsString(&amp;m_graph.m_globalData, String(&quot;boolean&quot;)));

This does not belong here.  Prediction-based optimizations should be done in Fixup rather than ConstantFolding.  But, as I say above, the fact that you&apos;re doing a prediction-based optimization is probably wrong.

You should take this code and move it to AbstractState so that the CFA can fixpoint on it.

Probably the right thing is to have both:

1) If the predictions say Blah then Fixup should emit a node to speculate Blah and then emit the constant node in place of the Typeof.

2) If the proofs (i.e. AbstractState) say Blah then the AbstractState will use logic like the thing you have above to mark the Typeof node as being known-constant, and then constant folding will just do the right things.

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:133
&gt; +                    Node foe(ForceOSRExit, node.codeOrigin);
&gt; +                    foe.setRefCount(1);
&gt; +                    NodeIndex foeNodeIndex = m_graph.size();
&gt; +                    m_graph.append(foe);
&gt; +                    m_insertionSet.append(indexInBlock - 1, foeNodeIndex);
&gt; +                    break;

I don&apos;t like this at all.  Why not just have the Typeof node call a C function if it&apos;s not optimized out?

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:188
&gt; +                Node&amp; child1 = m_graph[node.child1()];
&gt; +                if (child1.op() == GetLocal) {
&gt; +                    NodeIndex previousLocalAccess = NoNode;
&gt; +                    if (block-&gt;variablesAtHead.operand(child1.local()) == node.child1()
&gt; +                        &amp;&amp; m_graph[child1.child1()].op() == Phi) {
&gt; +                    // We expect this to be the common case.
&gt; +                        ASSERT(block-&gt;isInPhis(child1.child1().index()));
&gt; +                        previousLocalAccess = child1.child1().index();
&gt; +                        block-&gt;variablesAtHead.operand(child1.local()) = previousLocalAccess;
&gt; +                    } else {
&gt; +                        ASSERT(indexInBlock - 1 &gt; 0);
&gt; +                        // Must search for the previous access to this local.
&gt; +                        for (BlockIndex subIndexInBlock = indexInBlock - 1 ; subIndexInBlock--;) {
&gt; +                            NodeIndex subNodeIndex = block-&gt;at(subIndexInBlock);
&gt; +                            Node&amp; subNode = m_graph[subNodeIndex];
&gt; +                            if (!subNode.shouldGenerate())
&gt; +                                continue;
&gt; +                            if (!subNode.hasVariableAccessData())
&gt; +                                continue;
&gt; +                            if (subNode.local() != child1.local())
&gt; +                                continue;
&gt; +                            // The two must have been unified.
&gt; +                            ASSERT(subNode.variableAccessData() == child1.variableAccessData());
&gt; +                            previousLocalAccess = subNodeIndex;
&gt; +                            break;
&gt; +                        }
&gt; +                        if (previousLocalAccess == NoNode) {
&gt; +                            // The previous access must have been a Phi.
&gt; +                            for (BlockIndex phiIndexInBlock = block-&gt;phis.size(); phiIndexInBlock--;) {
&gt; +                                NodeIndex phiNodeIndex = block-&gt;phis[phiIndexInBlock];
&gt; +                                Node&amp; phiNode = m_graph[phiNodeIndex];
&gt; +                                if (!phiNode.shouldGenerate())
&gt; +                                    continue;
&gt; +                                if (phiNode.local() != child1.local())
&gt; +                                    continue;
&gt; +                                // The two must have been unified.
&gt; +                                ASSERT(phiNode.variableAccessData() == child1.variableAccessData());
&gt; +                                previousLocalAccess = phiNodeIndex;
&gt; +                                break;
&gt; +                            }
&gt; +                            ASSERT(previousLocalAccess != NoNode);
&gt; +                        }
&gt; +                    }
&gt; +
&gt; +                    ASSERT(previousLocalAccess != NoNode);
&gt; +                    NodeIndex tailNodeIndex = block-&gt;variablesAtTail.operand(child1.local());
&gt; +                    if (tailNodeIndex == node.child1())
&gt; +                        block-&gt;variablesAtTail.operand(child1.local()) = previousLocalAccess;
&gt; +                    else {
&gt; +                        ASSERT(m_graph[tailNodeIndex].op() == Flush);
&gt; +                        ASSERT(m_graph[tailNodeIndex].op() == SetLocal);
&gt; +                    }
&gt; +                    child1.setOpAndDefaultFlags(Phantom);

Are you duplicating code here?  Why?

And why are you killing the GetLocal child of the Typeof node?

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:689
&gt; +        }
&gt; +            break;

break; should be inside the { }.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4287
&gt; +    case Typeof:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        break;

As I said in my comments in ConstantFolding, the fall back for Typeof should be a procedure call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743116</commentid>
    <comment_count>5</comment_count>
      <attachid>168940</attachid>
    <who name="Valery Ignatyev">valery.ignatyev</who>
    <bug_when>2012-10-16 06:55:38 -0700</bug_when>
    <thetext>Created attachment 168940
patch

Everything fixed according to the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743164</commentid>
    <comment_count>6</comment_count>
      <attachid>168940</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-16 08:28:01 -0700</bug_when>
    <thetext>Comment on attachment 168940
patch

Attachment 168940 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14386164

New failing tests:
fast/workers/worker-close-more.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750629</commentid>
    <comment_count>7</comment_count>
      <attachid>170602</attachid>
    <who name="Valery Ignatyev">valery.ignatyev</who>
    <bug_when>2012-10-25 03:45:16 -0700</bug_when>
    <thetext>Created attachment 170602
test_patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751233</commentid>
    <comment_count>8</comment_count>
      <attachid>170602</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 14:51:52 -0700</bug_when>
    <thetext>Comment on attachment 170602
test_patch

Attachment 170602 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14566772

New failing tests:
fast/workers/worker-close-more.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751687</commentid>
    <comment_count>9</comment_count>
    <who name="Valery Ignatyev">valery.ignatyev</who>
    <bug_when>2012-10-26 01:45:04 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 170602 [details])
&gt; Attachment 170602 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/14566772
&gt; 
&gt; New failing tests:
&gt; fast/workers/worker-close-more.html

Can anybody help me to fix bug in the patch?
I have no idea where to look. I can&apos;t write any simple test with error.
&apos;run-webkit-test&apos; shows to much failing tests, maybe by reason of incorrect setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751700</commentid>
    <comment_count>10</comment_count>
      <attachid>170602</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-26 01:53:32 -0700</bug_when>
    <thetext>Comment on attachment 170602
test_patch

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

I think you&apos;re almost there.  You just need a solution to *really weird* the object-is-undefined and object-is-function cases.

When you do so, be careful about the possibility that doing what jsTypeStringForValue() would cause side-effects.  In fact, I don&apos;t think you can do the whole getCallData() thing without a call frame (you don&apos;t really have a call frame in the JIT - I mean, I think we pass one in, but it&apos;s not really meant to be used because it can be in a pretty weird state since we&apos;re in the middle of OSR), and I&apos;m pretty sure that it can have weird side effects.

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:699
&gt; +    case Typeof: {
&gt; +        JSValue child = forNode(node.child1()).value();
&gt; +        if (child) {
&gt; +            bool constantWasSet = false;
&gt; +            SpeculatedType type = forNode(node.child1()).m_type;
&gt; +            if (isObjectSpeculation(type))
&gt; +                constantWasSet = trySetConstant(nodeIndex, jsString(&amp;m_graph.m_globalData, String(&quot;object&quot;)));
&gt; +            else if (isNumberSpeculation(type))
&gt; +                constantWasSet = trySetConstant(nodeIndex, jsString(&amp;m_graph.m_globalData, String(&quot;number&quot;)));
&gt; +            else if (isStringSpeculation(type))
&gt; +                constantWasSet = trySetConstant(nodeIndex, jsString(&amp;m_graph.m_globalData, String(&quot;string&quot;)));
&gt; +            else if (isFunctionSpeculation(type))
&gt; +                constantWasSet = trySetConstant(nodeIndex, jsString(&amp;m_graph.m_globalData, String(&quot;function&quot;)));
&gt; +            else if (isBooleanSpeculation(type))
&gt; +                constantWasSet = trySetConstant(nodeIndex, jsString(&amp;m_graph.m_globalData, String(&quot;boolean&quot;)));
&gt; +
&gt; +            if (constantWasSet) {
&gt; +                m_foundConstants = true;
&gt; +                break;
&gt; +            }
&gt; +        }
&gt; +        forNode(nodeIndex).set(SpecString);
&gt; +        break;
&gt; +    }

This is mostly right.  You&apos;ve written it in the right form and style.  But, it has a bug: you&apos;re not matching the behavior of jsTypeStringForValue:

JSValue jsTypeStringForValue(CallFrame* callFrame, JSValue v)
{
    JSGlobalData&amp; globalData = callFrame-&gt;globalData();
    if (v.isUndefined())
        return globalData.smallStrings.undefinedString(&amp;globalData);
    if (v.isBoolean())
        return globalData.smallStrings.booleanString(&amp;globalData);
    if (v.isNumber())
        return globalData.smallStrings.numberString(&amp;globalData);
    if (v.isString())
        return globalData.smallStrings.stringString(&amp;globalData);
    if (v.isObject()) {
        // Return &quot;undefined&quot; for objects that should be treated
        // as null when doing comparisons.
        if (asObject(v)-&gt;structure()-&gt;masqueradesAsUndefined(callFrame-&gt;lexicalGlobalObject()))
            return globalData.smallStrings.undefinedString(&amp;globalData);
        CallData callData;
        JSObject* object = asObject(v);
        if (object-&gt;methodTable()-&gt;getCallData(object, callData) != CallTypeNone)
            return globalData.smallStrings.functionString(&amp;globalData);
    }
    return globalData.smallStrings.objectString(&amp;globalData);
}

In particular, if you have an object constant, you still need to check if it masquerades as undefined, or if it&apos;s callable.  Even things that aren&apos;t functions can pretend to be, by providing a call trap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755213</commentid>
    <comment_count>11</comment_count>
      <attachid>171631</attachid>
    <who name="Valery Ignatyev">valery.ignatyev</who>
    <bug_when>2012-10-31 06:17:54 -0700</bug_when>
    <thetext>Created attachment 171631
test_patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755509</commentid>
    <comment_count>12</comment_count>
      <attachid>171631</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-31 11:49:10 -0700</bug_when>
    <thetext>Comment on attachment 171631
test_patch

Attachment 171631 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14693202

New failing tests:
fast/workers/worker-close-more.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756033</commentid>
    <comment_count>13</comment_count>
    <who name="Valery Ignatyev">valery.ignatyev</who>
    <bug_when>2012-11-01 03:17:07 -0700</bug_when>
    <thetext>I&apos;ve tried to fix the problem, and think that the last patch performs conservative replacement with the constant.
I didn&apos;t completely understand, when the object can pretend to be a function. Can you please provide an example? Is it concerned with valueOf?

&gt;  CallData callData;
&gt;  JSObject* object = asObject(v);
&gt;  if (object-&gt;methodTable()-&gt;getCallData(object, callData) != CallTypeNone)
&gt;      return globalData.smallStrings.functionString(&amp;globalData);
Also I didn&apos;t find any way to emulate this behaviour without &apos;getCallData&apos;.
I found that &apos;CallTypeNone&apos; returns only &apos;InternalFunction&apos; and &apos;JSCell&apos;.

And the last one question. Is it possible to run the failing test without all testing enviroment? If so, how to do it? Is it necessary to run it on Mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788794</commentid>
    <comment_count>14</comment_count>
      <attachid>178875</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-12-11 14:20:32 -0800</bug_when>
    <thetext>Created attachment 178875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788810</commentid>
    <comment_count>15</comment_count>
      <attachid>178875</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-11 14:33:27 -0800</bug_when>
    <thetext>Comment on attachment 178875
Patch

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

You&apos;re almost there.  Just fix the CFA (AbstractState) to filter the same way that the codegen speculates.

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:736
&gt; +        node.setCanExit(true);
&gt; +        forNode(nodeIndex).set(SpecString);

Somewhere in here you should filter according to the speculations that the codegen does.  Like, if codegen speculates cell, this should filter cell.  Same for string, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788822</commentid>
    <comment_count>16</comment_count>
      <attachid>178883</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-12-11 14:46:13 -0800</bug_when>
    <thetext>Created attachment 178883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789032</commentid>
    <comment_count>17</comment_count>
      <attachid>178931</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-12-11 17:31:46 -0800</bug_when>
    <thetext>Created attachment 178931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790038</commentid>
    <comment_count>18</comment_count>
      <attachid>178931</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-12 16:20:19 -0800</bug_when>
    <thetext>Comment on attachment 178931
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:715
&gt; +            case IsObject:
&gt; +                if (child.isNull() || !child.isObject()) {
&gt; +                    constantWasSet = trySetConstant(nodeIndex, jsBoolean(child.isNull()));
&gt; +                    break;
&gt; +                }

Can you add the same smarts you added for TypeOf to the IsThingies?

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:749
&gt; +        if (isStringSpeculation(abstractChild.m_type)) {

else if

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:756
&gt; +        if (isFinalObjectSpeculation(abstractChild.m_type) || isArraySpeculation(abstractChild.m_type) || isArgumentsSpeculation(abstractChild.m_type)) {

ditto

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:763
&gt; +        if (isFunctionSpeculation(abstractChild.m_type)) {

ditto

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:770
&gt; +        if (isBooleanSpeculation(abstractChild.m_type)) {

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790044</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-12-12 16:25:20 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 178931 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178931&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:715
&gt; &gt; +            case IsObject:
&gt; &gt; +                if (child.isNull() || !child.isObject()) {
&gt; &gt; +                    constantWasSet = trySetConstant(nodeIndex, jsBoolean(child.isNull()));
&gt; &gt; +                    break;
&gt; &gt; +                }
&gt; 
&gt; Can you add the same smarts you added for TypeOf to the IsThingies?

When I did, things started to get slower.  I wanted to deal with them separately because my assumption is that i&apos;ll need to change their codegen as well and i&apos;d rather not conflate that with this patch.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:749
&gt; &gt; +        if (isStringSpeculation(abstractChild.m_type)) {
&gt; 
&gt; else if
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:756
&gt; &gt; +        if (isFinalObjectSpeculation(abstractChild.m_type) || isArraySpeculation(abstractChild.m_type) || isArgumentsSpeculation(abstractChild.m_type)) {
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:763
&gt; &gt; +        if (isFunctionSpeculation(abstractChild.m_type)) {
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:770
&gt; &gt; +        if (isBooleanSpeculation(abstractChild.m_type)) {
&gt; 
&gt; ditto

K, i&apos;d gone for not using the else as it seemed that in the general case break would have prevented those paths from going further.  Incidentally when can trySetConstant fail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790099</commentid>
    <comment_count>20</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-12 17:24:26 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 178931 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178931&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:715
&gt; &gt; &gt; +            case IsObject:
&gt; &gt; &gt; +                if (child.isNull() || !child.isObject()) {
&gt; &gt; &gt; +                    constantWasSet = trySetConstant(nodeIndex, jsBoolean(child.isNull()));
&gt; &gt; &gt; +                    break;
&gt; &gt; &gt; +                }
&gt; &gt; 
&gt; &gt; Can you add the same smarts you added for TypeOf to the IsThingies?
&gt; 
&gt; When I did, things started to get slower.  I wanted to deal with them separately because my assumption is that i&apos;ll need to change their codegen as well and i&apos;d rather not conflate that with this patch.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:749
&gt; &gt; &gt; +        if (isStringSpeculation(abstractChild.m_type)) {
&gt; &gt; 
&gt; &gt; else if
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:756
&gt; &gt; &gt; +        if (isFinalObjectSpeculation(abstractChild.m_type) || isArraySpeculation(abstractChild.m_type) || isArgumentsSpeculation(abstractChild.m_type)) {
&gt; &gt; 
&gt; &gt; ditto
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:763
&gt; &gt; &gt; +        if (isFunctionSpeculation(abstractChild.m_type)) {
&gt; &gt; 
&gt; &gt; ditto
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:770
&gt; &gt; &gt; +        if (isBooleanSpeculation(abstractChild.m_type)) {
&gt; &gt; 
&gt; &gt; ditto
&gt; 
&gt; K, i&apos;d gone for not using the else as it seemed that in the general case break would have prevented those paths from going further.  Incidentally when can trySetConstant fail?

When the proven constant value is different from the predicted value.  There&apos;s no way to say that a constant has a different prediction than the speculated type you wouldn&apos;t compute for that constant.

This can happen due to inlining.  We guard against it by simply not constant propagating over those pathologies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790143</commentid>
    <comment_count>21</comment_count>
      <attachid>179170</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-12-12 17:57:17 -0800</bug_when>
    <thetext>Created attachment 179170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791097</commentid>
    <comment_count>22</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-12-13 16:33:51 -0800</bug_when>
    <thetext>Committed r137683: &lt;http://trac.webkit.org/changeset/137683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791237</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-13 19:15:04 -0800</bug_when>
    <thetext>This breaks gmail (insta-crash).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791240</commentid>
    <comment_count>24</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-13 19:18:13 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/137699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791266</commentid>
    <comment_count>25</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-13 20:06:49 -0800</bug_when>
    <thetext>It also looks like this had set the bots on fire with loads of crashes:

http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r137685%20(5317)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802873</commentid>
    <comment_count>26</comment_count>
      <attachid>181816</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-01-08 18:28:22 -0800</bug_when>
    <thetext>Created attachment 181816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802878</commentid>
    <comment_count>27</comment_count>
      <attachid>181817</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-01-08 18:33:24 -0800</bug_when>
    <thetext>Created attachment 181817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802880</commentid>
    <comment_count>28</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-01-08 18:38:45 -0800</bug_when>
    <thetext>Committed r139145: &lt;http://trac.webkit.org/changeset/139145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802988</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-08 21:20:57 -0800</bug_when>
    <thetext>It appears that this patch broke two worker tests:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;tests=fast%2Fworkers%2Fworker-close-more.html%2Cfast%2Fworkers%2Fworker-lifecycle.html

http://build.webkit.org/results/Apple%20MountainLion%20Release%20WK2%20(Tests)/r139154%20(4586)/results.html

fast/workers/worker-close-more.html and fast/workers/worker-lifecycle.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167992</attachid>
            <date>2012-10-10 06:58:43 -0700</date>
            <delta_ts>2012-10-16 06:55:38 -0700</delta_ts>
            <desc>patch with fix</desc>
            <filename>typeof_p2.patch</filename>
            <type>text/plain</type>
            <size>10933</size>
            <attacher name="Valery Ignatyev">valery.ignatyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGYxMjJjN2UuLmNlOWU1MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTEwICBWYWxlcnkgSWduYXR5
ZXYgIDx2YWxlcnkuaWduYXR5ZXZAaXNwcmFzLnJ1PgorCisgICAgICAgIFBhcnRpYWwgc3VwcG9y
dCBvZiAndHlwZW9mJyBub2RlIGluIERGRy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWxsb3dzIHRvIGFwcGx5IERGRyBvbiBmdW5jdGlvbnMgd2l0aCB0
eXBlb2YuIFJlcGxhY2UgVHlwZW9mIERGRyBub2RlIHdpdGgKKyAgICAgICAgYXBwcm9wcmlhdGUg
Y29uc3RhbnQgdXNpbmcgcHJvZmlsZSBkYXRhLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0
YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5
cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTItMTAtMTAgIFBldGVyIEdhbCAgPGdhbHBldGVy
QGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBBZGQgbW92ZURvdWJsZVRvSW50cyBhbmQgbW92
ZUludHNUb0RvdWJsZSB0byBNYWNyb0Fzc2VtYmxlckFSTQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggMDIyZjMzYS4uMTQxMDhkMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCkBAIC0x
NTM4LDYgKzE1MzgsMTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGlu
ZGV4SW5CbG9jaykKICAgICBjYXNlIE5vcDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNl
KTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFR5cGVvZjoKKyAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KHRydWUpOworICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAg
YnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggYWMxYzcxMS4uMGJlMjcwMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTI5MzUsNiArMjkzNSwxMSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoTmV3RnVuY3Rpb25FeHByZXNzaW9uLCBPcEluZm8oY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X25ld19mdW5jX2V4cCk7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF90eXBlb2YgOiB7Cisg
ICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgYWRkVG9HcmFwaChUeXBlb2YsIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9uZXdfZnVuY19leHApOworICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIC8vIFBhcnNlIGZhaWxlZCEgVGhpcyBzaG91bGQgbm90IGhhcHBlbiBiZWNhdXNlIHRoZSBj
YXBhYmlsaXRpZXMgY2hlY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmgKaW5kZXggYmNjZGU3Yy4uOWFmMWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCkBAIC0xODAsNiArMTgwLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sq
LCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudF9ieV92YWw6CiAgICAgY2FzZSBv
cF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKICAgICBjYXNlIG9wX2puZXFfcHRyOgorICAgIGNhc2Ug
b3BfdHlwZW9mOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZTsKICAgICAgICAgCiAgICAgY2Fz
ZSBvcF9jYWxsX3ZhcmFyZ3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDhhMjYxYWQuLjVmYmUwZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCkBAIC0xMTAsMTYgKzExMCw5OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVs
aW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBUeXBlb2Y6IHsKKyAgICAgICAgICAg
ICAgICBTcGVjdWxhdGVkVHlwZSBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGlj
dGlvbigpOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWU7CisKKyAgICAgICAgICAgICAg
ICBpZiAoaXNPYmplY3RTcGVjdWxhdGlvbihjaGlsZCkpCisgICAgICAgICAgICAgICAgICAgIHZh
bHVlID0gSlNWYWx1ZShqc1N0cmluZygmbV9ncmFwaC5tX2dsb2JhbERhdGEsIFN0cmluZygib2Jq
ZWN0IikpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpc051bWJlclNwZWN1bGF0aW9uKGNo
aWxkKSkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBKU1ZhbHVlKGpzU3RyaW5nKCZtX2dy
YXBoLm1fZ2xvYmFsRGF0YSwgU3RyaW5nKCJudW1iZXIiKSkpOworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGlzU3RyaW5nU3BlY3VsYXRpb24oY2hpbGQpKQorICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IEpTVmFsdWUoanNTdHJpbmcoJm1fZ3JhcGgubV9nbG9iYWxEYXRhLCBTdHJpbmcoInN0
cmluZyIpKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNGdW5jdGlvblNwZWN1bGF0aW9u
KGNoaWxkKSkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBKU1ZhbHVlKGpzU3RyaW5nKCZt
X2dyYXBoLm1fZ2xvYmFsRGF0YSwgU3RyaW5nKCJmdW5jdGlvbiIpKSk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24oY2hpbGQpKQorICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IEpTVmFsdWUoanNTdHJpbmcoJm1fZ3JhcGgubV9nbG9iYWxEYXRhLCBTdHJp
bmcoImJvb2xlYW4iKSkpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBOb2RlIGZvZShGb3JjZU9TUkV4aXQsIG5vZGUuY29kZU9yaWdpbik7CisgICAgICAgICAg
ICAgICAgICAgIGZvZS5zZXRSZWZDb3VudCgxKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZUlu
ZGV4IGZvZU5vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLmFwcGVuZChmb2UpOworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5h
cHBlbmQoaW5kZXhJbkJsb2NrIC0gMSwgZm9lTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgTm9kZSYgY2hp
bGQxID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQx
Lm9wKCkgPT0gR2V0TG9jYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHByZXZp
b3VzTG9jYWxBY2Nlc3MgPSBOb05vZGU7CisgICAgICAgICAgICAgICAgICAgIGlmIChibG9jay0+
dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQoY2hpbGQxLmxvY2FsKCkpID09IG5vZGUuY2hpbGQxKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICYmIG1fZ3JhcGhbY2hpbGQxLmNoaWxkMSgpXS5vcCgp
ID09IFBoaSkgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSBleHBlY3QgdGhpcyB0byBiZSB0
aGUgY29tbW9uIGNhc2UuCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlz
SW5QaGlzKGNoaWxkMS5jaGlsZDEoKS5pbmRleCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwcmV2aW91c0xvY2FsQWNjZXNzID0gY2hpbGQxLmNoaWxkMSgpLmluZGV4KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBibG9jay0+dmFyaWFibGVzQXRIZWFkLm9wZXJhbmQoY2hpbGQxLmxv
Y2FsKCkpID0gcHJldmlvdXNMb2NhbEFjY2VzczsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEluQmxvY2sgLSAxID4gMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBNdXN0IHNlYXJjaCBmb3IgdGhlIHByZXZpb3Vz
IGFjY2VzcyB0byB0aGlzIGxvY2FsLgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChCbG9j
a0luZGV4IHN1YkluZGV4SW5CbG9jayA9IGluZGV4SW5CbG9jayAtIDEgOyBzdWJJbmRleEluQmxv
Y2stLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggc3ViTm9kZUlu
ZGV4ID0gYmxvY2stPmF0KHN1YkluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSYgc3ViTm9kZSA9IG1fZ3JhcGhbc3ViTm9kZUluZGV4XTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXN1Yk5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFzdWJOb2RlLmhhc1ZhcmlhYmxlQWNjZXNzRGF0YSgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc3ViTm9kZS5sb2NhbCgpICE9IGNoaWxkMS5sb2NhbCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgdHdvIG11c3QgaGF2ZSBiZWVuIHVuaWZpZWQuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN1Yk5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCkgPT0gY2hpbGQxLnZhcmlh
YmxlQWNjZXNzRGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0xv
Y2FsQWNjZXNzID0gc3ViTm9kZUluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHByZXZpb3VzTG9jYWxBY2Nlc3MgPT0gTm9Ob2RlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlIHByZXZpb3VzIGFjY2VzcyBtdXN0IGhhdmUgYmVlbiBhIFBoaS4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXggcGhpSW5kZXhJbkJsb2Nr
ID0gYmxvY2stPnBoaXMuc2l6ZSgpOyBwaGlJbmRleEluQmxvY2stLTspIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IHBoaU5vZGVJbmRleCA9IGJsb2NrLT5waGlz
W3BoaUluZGV4SW5CbG9ja107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUm
IHBoaU5vZGUgPSBtX2dyYXBoW3BoaU5vZGVJbmRleF07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghcGhpTm9kZS5zaG91bGRHZW5lcmF0ZSgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChwaGlOb2RlLmxvY2FsKCkgIT0gY2hpbGQxLmxvY2FsKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhlIHR3byBtdXN0IGhhdmUgYmVlbiB1bmlmaWVkLgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocGhpTm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEo
KSA9PSBjaGlsZDEudmFyaWFibGVBY2Nlc3NEYXRhKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmV2aW91c0xvY2FsQWNjZXNzID0gcGhpTm9kZUluZGV4OworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHByZXZpb3VzTG9jYWxBY2Nl
c3MgIT0gTm9Ob2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c0xvY2FsQWNjZXNz
ICE9IE5vTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCB0YWlsTm9kZUluZGV4
ID0gYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5vcGVyYW5kKGNoaWxkMS5sb2NhbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRhaWxOb2RlSW5kZXggPT0gbm9kZS5jaGlsZDEoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZChjaGlsZDEu
bG9jYWwoKSkgPSBwcmV2aW91c0xvY2FsQWNjZXNzOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoW3RhaWxOb2RlSW5kZXhd
Lm9wKCkgPT0gRmx1c2gpOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGhb
dGFpbE5vZGVJbmRleF0ub3AoKSA9PSBTZXRMb2NhbCk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgY2hpbGQxLnNldE9wQW5kRGVmYXVsdEZsYWdzKFBoYW50b20p
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBjaGlsZDEuZGVy
ZWYoKTsKKworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZUlu
ZGV4LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGVsaW1pbmF0ZWQp
IHsKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgbV9z
dGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBpZiAoIW5vZGUuc2hvdWxk
R2VuZXJhdGUoKSB8fCBtX3N0YXRlLmRpZENsb2JiZXIoKSB8fCBub2RlLmhhc0NvbnN0YW50KCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yNjMsNCArMzQ1LDMgQEAgYm9vbCBwZXJm
b3JtQ29uc3RhbnRGb2xkaW5nKEdyYXBoJiBncmFwaCkKIAogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQogCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA5Yzkz
YThiLi43NmM2Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBA
IC0yMzMsNiArMjMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRocm93LCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVGhyb3dSZWZlcmVuY2VFcnJvciwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKFR5cGVvZiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8q
IFRoaXMgaXMgYSBwc2V1ZG8tdGVybWluYWwuIEl0IG1lYW5zIHRoYXQgZXhlY3V0aW9uIHNob3Vs
ZCBmYWxsIG91dCBvZiBERkcgYXQgKi9cCiAgICAgLyogdGhpcyBwb2ludCwgYnV0IGV4ZWN1dGlv
biBkb2VzIGNvbnRpbnVlIGluIHRoZSBiYXNpYyBibG9jayAtIGp1c3QgaW4gYSAqL1wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKaW5kZXggZDc2ZmQ4MC4uN2JlNTYwOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTY4Miw3ICs2ODIsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbmxpbmVT
dGFydDoKICAgICAgICAgY2FzZSBOb3A6CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IAorCisgICAgICAgIGNhc2UgVHlwZW9mOiB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFBy
ZWRpY3Rpb24oU3BlY1N0cmluZyk7CisgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAg
ICAgICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDgxODNmNzguLjBkNzZkOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNDI4Miw2ICs0MjgyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBUeXBlb2Y6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgUGhpOgogICAgIGNhc2UgRmx1c2g6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNWFmNTA2Ni4u
YmIxNDVlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCkBAIC00MjQ4LDYgKzQyNDgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFR5
cGVvZjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBGbHVzaDoKICAgICBjYXNlIFBoaToKICAgICAgICAgYnJlYWs7Cg==
</data>
<flag name="review"
          id="180938"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="180940"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168940</attachid>
            <date>2012-10-16 06:55:38 -0700</date>
            <delta_ts>2012-10-25 03:45:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>typeof_p2_final.patch</filename>
            <type>text/plain</type>
            <size>7847</size>
            <attacher name="Valery Ignatyev">valery.ignatyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCmluZGV4
IGRhNTY4MmYuLjFmMzgxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcApAQCAtNjcyLDcgKzY3MiwzMiBAQCBib29sIEFic3RyYWN0U3RhdGU6
OmV4ZWN1dGUodW5zaWduZWQgaW5kZXhJbkJsb2NrKQogICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFNwZWNCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAgICAg
CisgICAgICAgIAorICAgIGNhc2UgVHlwZW9mOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCkgeworICAg
ICAgICAgICAgYm9vbCBjb25zdGFudFdhc1NldCA9IGZhbHNlOworICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgdHlwZSA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlOworICAgICAgICAg
ICAgaWYgKGlzT2JqZWN0U3BlY3VsYXRpb24odHlwZSkpCisgICAgICAgICAgICAgICAgY29uc3Rh
bnRXYXNTZXQgPSB0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGpzU3RyaW5nKCZtX2dyYXBoLm1f
Z2xvYmFsRGF0YSwgU3RyaW5nKCJvYmplY3QiKSkpOworICAgICAgICAgICAgZWxzZSBpZiAoaXNO
dW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKKyAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9
IHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwganNTdHJpbmcoJm1fZ3JhcGgubV9nbG9iYWxEYXRh
LCBTdHJpbmcoIm51bWJlciIpKSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc1N0cmluZ1NwZWN1
bGF0aW9uKHR5cGUpKQorICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0Q29u
c3RhbnQobm9kZUluZGV4LCBqc1N0cmluZygmbV9ncmFwaC5tX2dsb2JhbERhdGEsIFN0cmluZygi
c3RyaW5nIikpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzRnVuY3Rpb25TcGVjdWxhdGlvbih0
eXBlKSkKKyAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRyeVNldENvbnN0YW50KG5v
ZGVJbmRleCwganNTdHJpbmcoJm1fZ3JhcGgubV9nbG9iYWxEYXRhLCBTdHJpbmcoImZ1bmN0aW9u
IikpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHR5cGUpKQor
ICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4
LCBqc1N0cmluZygmbV9ncmFwaC5tX2dsb2JhbERhdGEsIFN0cmluZygiYm9vbGVhbiIpKSk7CisK
KyAgICAgICAgICAgIGlmIChjb25zdGFudFdhc1NldCkgeworICAgICAgICAgICAgICAgIG1fZm91
bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY1N0cmluZyk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBDb21wYXJlTGVzczoK
ICAgICBjYXNlIENvbXBhcmVMZXNzRXE6CiAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZGM2
NjhkOS4uNjA0ODUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKQEAgLTMwMDgsNyArMzAwOCwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
TmV3RnVuY3Rpb25FeHByZXNzaW9uLCBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jX2V4cCk7CiAgICAg
ICAgIH0KLQorICAgICAgICAgICAgCisgICAgICAgIGNhc2Ugb3BfdHlwZW9mOiB7CisgICAgICAg
ICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRk
VG9HcmFwaChUeXBlb2YsIHZhbHVlKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90eXBl
b2YpOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIC8vIFBhcnNlIGZhaWxlZCEgVGhpcyBzaG91bGQgbm90IGhhcHBlbiBiZWNhdXNlIHRoZSBj
YXBhYmlsaXRpZXMgY2hlY2tlcgogICAgICAgICAgICAgLy8gc2hvdWxkIGhhdmUgY2F1Z2h0IGl0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKaW5kZXggZTE3
NjA2OS4uYzI0NzBiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCkBAIC0xODAsNiArMTgwLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqLCBJbnN0cnVjdGkKICAgICBj
YXNlIG9wX2dldF9hcmd1bWVudF9ieV92YWw6CiAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDoKICAgICBjYXNlIG9wX2puZXFfcHRyOgorICAgIGNhc2Ugb3BfdHlwZW9mOgogICAgICAg
ICByZXR1cm4gQ2FuQ29tcGlsZTsKICAgICAgICAgCiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggOWM5M2E4Yi4uNzZj
NjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjMzLDYg
KzIzMyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhSZXR1
cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUaHJvdywgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKFRocm93UmVmZXJlbmNlRXJyb3IsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhUeXBlb2YsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBUaGlzIGlz
IGEgcHNldWRvLXRlcm1pbmFsLiBJdCBtZWFucyB0aGF0IGV4ZWN1dGlvbiBzaG91bGQgZmFsbCBv
dXQgb2YgREZHIGF0ICovXAogICAgIC8qIHRoaXMgcG9pbnQsIGJ1dCBleGVjdXRpb24gZG9lcyBj
b250aW51ZSBpbiB0aGUgYmFzaWMgYmxvY2sgLSBqdXN0IGluIGEgKi9cCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkYjczNmZlLi4zZDQzMjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTEyNzEs
NiArMTI3MSwxMSBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1bmN0aW9uKEVu
Y29kZWRKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBqc0lzRnVuY3Rpb25UeXBlKEpTVmFsdWU6
OmRlY29kZSh2YWx1ZSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvblR5cGVTdHJpbmdGb3JWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHZh
bHVlKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNUeXBlU3RyaW5nRm9yVmFsdWUo
ZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSkpOworfQorCiB2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAppbmRleCBiNjUzMGI3Li43Mjg0Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTkwLDYgKzE5MCw3IEBAIEpTQ2VsbCogREZHX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbkV4cHJlc3Npb24oRXhlY1N0YXRlKiwgSlNDZWxsKikg
V1RGX0lOCiBkb3VibGUgREZHX09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3Qs
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklz
T2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3Qg
REZHX09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblR5cGVTdHJpbmdG
b3JWYWx1ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5kRmluaXNoUHV0KEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQsIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0eShFeGVjU3RhdGUqKSBXVEZfSU5URVJO
QUw7CiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KEV4ZWNTdGF0ZSosIHNpemVfdCBuZXdTaXplKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCmluZGV4IGQ3NmZkODAuLmI0ODNjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC00MTQsNiArNDE0LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVHlwZW9mOiB7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0QnlJZDogewogICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKTsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApp
bmRleCAwMzk2Zjg2Li42YjgyZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQyNjQsNiArNDI2NCwyMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgVHlwZW9mOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSB2YWx1
ZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiA9IHZhbHVlLnBheWxv
YWRHUFIoKTsKKyAgICAgICAgR1BSUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7CisgICAgICAg
IEdQUlJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIg
PSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVHlwZVN0cmluZ0ZvclZhbHVlLCByZXN1bHRUYWdHUFIsIHJl
c3VsdFBheWxvYWRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpOworICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5k
ZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFBoaToKICAgICBjYXNlIEZs
dXNoOgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDA5MjhkZmEuLmZkODgzZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDIz
OSw2ICs0MjM5LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBUeXBlb2Y6IHsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyB2
YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwor
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVTdHJpbmdGb3JW
YWx1ZSwgcmVzdWx0R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2Ug
Rmx1c2g6CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIGJyZWFrOwo=
</data>
<flag name="commit-queue"
          id="182075"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170602</attachid>
            <date>2012-10-25 03:45:16 -0700</date>
            <delta_ts>2012-10-31 06:17:54 -0700</delta_ts>
            <desc>test_patch</desc>
            <filename>typeof_p2.2.patch</filename>
            <type>text/plain</type>
            <size>9068</size>
            <attacher name="Valery Ignatyev">valery.ignatyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGI4MzYxMmIuLmQyZTFhM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTI1ICBWYWxlcnkgSWduYXR5
ZXYgIDx2YWxlcnkuaWduYXR5ZXZAaXNwcmFzLnJ1PgorCisgICAgICAgIFN1cHBvcnQgb2YgJ3R5
cGVvZicgbm9kZSBpbiBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWxsb3dzIHRvIGFwcGx5IERGRyBvbiBmdW5jdGlvbnMgd2l0aCB0eXBlb2YuIFJl
cGxhY2UgVHlwZW9mIERGRyBub2RlIHdpdGgKKyAgICAgICAgYXBwcm9wcmlhdGUgY29uc3RhbnQg
aWYgcG9zc2libGUuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMi0xMC0yNCAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBjb21waWxlQmxhaEJsYWhCeVZhbCBtZXRo
b2RzIGZvciBDb250aWd1b3VzIGFuZCBBcnJheVN0b3JhZ2UgaGF2ZSBvbmx5IG9uZSBjYWxsZXIg
YW5kIHNob3VsZCBiZSByZW1vdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAppbmRleCA1OGZmN2QyLi4xNTM1ZGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTY3Miw3ICs2NzIsMzIg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZGV4SW5CbG9jaykKICAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjQm9vbGVhbik7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICAgICAgICAgIAorICAgICAgICAKKyAgICBjYXNlIFR5cGVvZjogeworICAg
ICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAg
ICAgICBpZiAoY2hpbGQpIHsKKyAgICAgICAgICAgIGJvb2wgY29uc3RhbnRXYXNTZXQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZTsKKyAgICAgICAgICAgIGlmIChpc09iamVjdFNwZWN1bGF0aW9uKHR5cGUpKQor
ICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4
LCBqc1N0cmluZygmbV9ncmFwaC5tX2dsb2JhbERhdGEsIFN0cmluZygib2JqZWN0IikpKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24odHlwZSkpCisgICAgICAgICAg
ICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGpzU3RyaW5n
KCZtX2dyYXBoLm1fZ2xvYmFsRGF0YSwgU3RyaW5nKCJudW1iZXIiKSkpOworICAgICAgICAgICAg
ZWxzZSBpZiAoaXNTdHJpbmdTcGVjdWxhdGlvbih0eXBlKSkKKyAgICAgICAgICAgICAgICBjb25z
dGFudFdhc1NldCA9IHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwganNTdHJpbmcoJm1fZ3JhcGgu
bV9nbG9iYWxEYXRhLCBTdHJpbmcoInN0cmluZyIpKSk7CisgICAgICAgICAgICBlbHNlIGlmIChp
c0Z1bmN0aW9uU3BlY3VsYXRpb24odHlwZSkpCisgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNT
ZXQgPSB0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGpzU3RyaW5nKCZtX2dyYXBoLm1fZ2xvYmFs
RGF0YSwgU3RyaW5nKCJmdW5jdGlvbiIpKSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc0Jvb2xl
YW5TcGVjdWxhdGlvbih0eXBlKSkKKyAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRy
eVNldENvbnN0YW50KG5vZGVJbmRleCwganNTdHJpbmcoJm1fZ3JhcGgubV9nbG9iYWxEYXRhLCBT
dHJpbmcoImJvb2xlYW4iKSkpOworCisgICAgICAgICAgICBpZiAoY29uc3RhbnRXYXNTZXQpIHsK
KyAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFNwZWNTdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAog
ICAgIGNhc2UgQ29tcGFyZUxlc3M6CiAgICAgY2FzZSBDb21wYXJlTGVzc0VxOgogICAgIGNhc2Ug
Q29tcGFyZUdyZWF0ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IDM2ZDE4ZDcuLjMxZTBmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zMjE2LDcgKzMyMTYsMTMg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKE5ld0Z1bmN0aW9uRXhwcmVzc2lvbiwgT3BJbmZvKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9uZXdfZnVuY19leHApOwogICAgICAgICB9Ci0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNl
IG9wX3R5cGVvZjogeworICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoVHlwZW9mLCB2YWx1ZSkpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfdHlwZW9mKTsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBQYXJzZSBmYWlsZWQhIFRoaXMgc2hvdWxkIG5v
dCBoYXBwZW4gYmVjYXVzZSB0aGUgY2FwYWJpbGl0aWVzIGNoZWNrZXIKICAgICAgICAgICAgIC8v
IHNob3VsZCBoYXZlIGNhdWdodCBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5oCmluZGV4IGU4MGNjMjguLjI2MTIxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApAQCAtMjE2LDYgKzIxNiw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9qbmVxX3B0cjoKICAgICBjYXNlIG9wX3B1dF90
b19iYXNlX3ZhcmlhYmxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX2Jhc2U6CisgICAgY2FzZSBvcF90
eXBlb2Y6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlOwogICAgICAgICAKICAgICBjYXNlIG9w
X2NhbGxfdmFyYXJnczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRl
eCAxZDI0NjA2Li5kNjAzYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCkBAIC0yMzMsNiArMjMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRocm93LCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVGhyb3dSZWZlcmVuY2VFcnJvciwgTm9kZU11
c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFR5cGVvZiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAog
ICAgIG1hY3JvKEdhcmJhZ2VWYWx1ZSwgTm9kZVJlc3VsdEpTIHwgTm9kZUNsb2JiZXJzV29ybGQp
IFwKICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApp
bmRleCAxM2UwNDM4Li4zYTJmNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKQEAgLTEyNzgsNiArMTI3OCwxMSBAQCBzaXplX3QgREZHX09QRVJBVElP
TiBvcGVyYXRpb25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBq
c0lzRnVuY3Rpb25UeXBlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCitFbmNvZGVkSlNW
YWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblR5cGVTdHJpbmdGb3JWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKSkpOwor
fQorCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5p
c2hQdXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA4ZDJiZWFjLi45NzdmY2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTkwLDYgKzE5
MCw3IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbkV4cHJlc3Np
b24oRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOCiBkb3VibGUgREZHX09QRVJBVElPTiBvcGVy
YXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbklzT2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1bmN0aW9u
KEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvblR5cGVTdHJpbmdGb3JWYWx1ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVT
dG9yYWdlQW5kRmluaXNoUHV0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgU3RydWN0dXJlKiwgUHJv
cGVydHlPZmZzZXQsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkFsbG9jYXRlUHJvcGVydHlTdG9yYWdlV2l0aEluaXRpYWxDYXBhY2l0
eShFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKEV4ZWNTdGF0ZSosIHNpemVfdCBuZXdTaXplKSBXVEZf
SU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGZlZTdhM2MuLjI5ZTQ1ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC00MjgsNiArNDI4LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVHlw
ZW9mOiB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgR2V0QnlJZDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9k
ZS5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZh
dWx0RmxhZ3Mobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBhZGY5MDc3Li5jNTE5N2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
QEAgLTQyMzAsNiArNDIzMCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgVHlwZW9mOiB7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBH
UFJSZWcgdmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVl
UGF5bG9hZEdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgR1BSUmVzdWx0IHJlc3Vs
dFBheWxvYWQodGhpcyk7CisgICAgICAgIEdQUlJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAg
ICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHlwZVN0cmluZ0Zv
clZhbHVlLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIHZhbHVlVGFnR1BSLCB2YWx1
ZVBheWxvYWRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0
UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIFBoaToKICAgICBjYXNlIEZsdXNoOgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDQ5NjE3
NjMuLmIyYTAxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtNDIxMyw2ICs0MjEzLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBUeXBlb2Y6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGls
ZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBH
UFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblR5cGVTdHJpbmdGb3JWYWx1ZSwgcmVzdWx0R1BSLCB2YWx1ZUdQUik7CisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgRmx1c2g6CiAgICAgY2FzZSBQaGk6CiAgICAgICAgIGJy
ZWFrOwo=
</data>
<flag name="commit-queue"
          id="184426"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171631</attachid>
            <date>2012-10-31 06:17:54 -0700</date>
            <delta_ts>2012-12-11 14:20:26 -0800</delta_ts>
            <desc>test_patch</desc>
            <filename>typeof_v4.patch</filename>
            <type>text/plain</type>
            <size>9928</size>
            <attacher name="Valery Ignatyev">valery.ignatyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVjMGNjNWEuLmExZjBiZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTMxICBWYWxlcnkgSWduYXR5
ZXYgIDx2YWxlcnkuaWduYXR5ZXZAaXNwcmFzLnJ1PgorCisgICAgICAgIFN1cHBvcnQgb2YgJ3R5
cGVvZicgbm9kZSBpbiBERkcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWxsb3dzIHRvIGFwcGx5IERGRyBvbiBmdW5jdGlvbnMgd2l0aCB0eXBlb2YuIFJl
cGxhY2UgVHlwZW9mIERGRyBub2RlIHdpdGgKKyAgICAgICAgYXBwcm9wcmlhdGUgY29uc3RhbnQg
aWYgcG9zc2libGUuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMi0xMC0zMCAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFN5bmMgdXAgRmVhdHVyZURl
ZmluZSBDb25maWd1cmF0aW9uIEZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAppbmRleCBlNTE4YzI0Li4wNTUyZDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTY3Miw3ICs2NzIs
NDIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZGV4SW5CbG9jaykK
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjQm9vbGVhbik7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICAgICAgICAgIAorICAgICAgICAKKyAgICBjYXNlIFR5cGVvZjogewor
ICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOwor
ICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBtX2dyYXBoLm1fZ2xvYmFsRGF0YTsK
KyAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBib29sIGNvbnN0YW50V2FzU2V0ID0g
ZmFsc2U7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGU7CisgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbih0eXBl
KSkKKyAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IHRyeVNldENvbnN0YW50KG5vZGVJ
bmRleCwgZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5nKCZnbG9iYWxEYXRhKSk7
CisgICAgICAgICAgICBlbHNlIGlmIChpc1N0cmluZ1NwZWN1bGF0aW9uKHR5cGUpKQorICAgICAg
ICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCBnbG9i
YWxEYXRhLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoJmdsb2JhbERhdGEpKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHR5cGUpKQorICAgICAgICAgICAgICAg
IGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCBnbG9iYWxEYXRhLnNt
YWxsU3RyaW5ncy5ib29sZWFuU3RyaW5nKCZnbG9iYWxEYXRhKSk7CisgICAgICAgICAgICBlbHNl
IGlmIChpc0Z1bmN0aW9uU3BlY3VsYXRpb24odHlwZSkpCisgICAgICAgICAgICAgICAgY29uc3Rh
bnRXYXNTZXQgPSB0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGdsb2JhbERhdGEuc21hbGxTdHJp
bmdzLmZ1bmN0aW9uU3RyaW5nKCZnbG9iYWxEYXRhKSk7CisgICAgICAgICAgICBlbHNlIGlmIChp
c09iamVjdFNwZWN1bGF0aW9uKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmlzQ2VsbCgpICYmIGNoaWxkLmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbikpKQorICAgICAgICAgICAgICAgICAgICBjb25z
dGFudFdhc1NldCA9IHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwgZ2xvYmFsRGF0YS5zbWFsbFN0
cmluZ3MudW5kZWZpbmVkU3RyaW5nKCZnbG9iYWxEYXRhKSk7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHR5cGUpIHx8IGlzRmluYWxPYmplY3RTcGVjdWxhdGlv
bih0eXBlKQorICAgICAgICAgICAgICAgICAgICB8fCBpc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJy
YXlTcGVjdWxhdGlvbih0eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQg
PSB0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLm9iamVj
dFN0cmluZygmZ2xvYmFsRGF0YSkpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmlz
Q2VsbCgpCisgICAgICAgICAgICAgICAgICAgICYmIGNoaWxkLmFzQ2VsbCgpLT5tZXRob2RUYWJs
ZSgpLT5nZXRDYWxsRGF0YShjaGlsZC5hc0NlbGwoKSwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9u
ZSkKKyAgICAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25zdGFudChu
b2RlSW5kZXgsIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCZnbG9iYWxE
YXRhKSk7CisgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSBvZiBwb3NzaWJsZSBpbmNvbnNpc3Rl
bmN5IG9mIGNhbGxEYXRhIHdlIGNhbid0IHNldCBjb25zdGFudCB2YWx1ZSAib2JqZWN0IiBpbiBv
dGhlciBjYXNlcworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnN0YW50V2FzU2V0
KSB7CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChTcGVjU3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAg
ICAKICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKICAgICBj
YXNlIENvbXBhcmVHcmVhdGVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCA0MzMxZDBkLi4wZTBlNTA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzIzMCw3ICszMjMw
LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdGdW5jdGlvbkV4cHJlc3Npb24sIE9wSW5mbyhj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQotCisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBvcF90eXBlb2Y6IHsKKyAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIHNldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKFR5cGVvZiwgdmFsdWUpKTsKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX3R5cGVvZik7CisgICAgICAgIH0KKyAgICAgICAgICAgIAog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gUGFyc2UgZmFpbGVkISBUaGlzIHNob3Vs
ZCBub3QgaGFwcGVuIGJlY2F1c2UgdGhlIGNhcGFiaWxpdGllcyBjaGVja2VyCiAgICAgICAgICAg
ICAvLyBzaG91bGQgaGF2ZSBjYXVnaHQgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAppbmRleCBlODBjYzI4Li4yNjEyMWNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTIxNiw2ICsyMTYsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQsIENv
ZGVCbG9jayosIEluc3RydWN0aQogICAgIGNhc2Ugb3Bfam5lcV9wdHI6CiAgICAgY2FzZSBvcF9w
dXRfdG9fYmFzZV92YXJpYWJsZToKICAgICBjYXNlIG9wX3B1dF90b19iYXNlOgorICAgIGNhc2Ug
b3BfdHlwZW9mOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZTsKICAgICAgICAgCiAgICAgY2Fz
ZSBvcF9jYWxsX3ZhcmFyZ3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggNjI0YjFhZS4uZmY5Y2QzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaApAQCAtMjM0LDYgKzIzNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUaHJv
dywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRocm93UmVmZXJlbmNlRXJyb3IsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhUeXBlb2YsIE5vZGVSZXN1bHRKUykgXAogICAg
IFwKICAgICBtYWNybyhHYXJiYWdlVmFsdWUsIE5vZGVSZXN1bHRKUyB8IE5vZGVDbG9iYmVyc1dv
cmxkKSBcCiAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggMTNlMDQzOC4uM2EyZjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMjc4LDYgKzEyNzgsMTEgQEAgc2l6ZV90IERGR19PUEVS
QVRJT04gb3BlcmF0aW9uSXNGdW5jdGlvbihFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1
cm4ganNJc0Z1bmN0aW9uVHlwZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKIH0KIAorRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25UeXBlU3RyaW5nRm9yVmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkp
KTsKK30KKwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJlYWxsb2NhdGVTdG9yYWdlQW5k
RmluaXNoUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2UsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogewog
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggOGQyYmVhYy4uOTc3ZmNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTE5MCw2
ICsxOTAsNyBAQCBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25FeHBy
ZXNzaW9uKEV4ZWNTdGF0ZSosIEpTQ2VsbCopIFdURl9JTgogZG91YmxlIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uRk1vZE9uSW50cyhpbnQzMl90LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBzaXpl
X3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Jc09iamVjdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uSXNGdW5j
dGlvbihFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25UeXBlU3RyaW5nRm9yVmFsdWUoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9j
YXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSos
IFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogREZH
X09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2Fw
YWNpdHkoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVy
YXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBzaXplX3QgbmV3U2l6ZSkg
V1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAzZThlYWQ1Li4xZmNlZWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNDI4LDYgKzQyOCwxMSBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAorICAgICAgICBjYXNl
IFR5cGVvZjogeworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJp
bmcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIEdldEJ5SWQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9u
KG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
RGVmYXVsdEZsYWdzKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNjVmZGY1NS4uNmFmMjNhMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCkBAIC00MjI1LDYgKzQyMjUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFR5cGVvZjogewor
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAg
ICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB2
YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEdQUlJlc3VsdCBy
ZXN1bHRQYXlsb2FkKHRoaXMpOworICAgICAgICBHUFJSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOwor
ICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVTdHJp
bmdGb3JWYWx1ZSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCB2YWx1ZVRhZ0dQUiwg
dmFsdWVQYXlsb2FkR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJl
c3VsdFBheWxvYWRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBGbHVzaDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAw
OGVmZmViZC4uMzZiNzA3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00MjA4LDYgKzQyMDgsMTcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAg
ICBjYXNlIFR5cGVvZjogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAg
ICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVHlwZVN0cmluZ0ZvclZhbHVlLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGbHVzaDoKICAgICBjYXNlIFBoaToKICAgICAg
ICAgYnJlYWs7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178875</attachid>
            <date>2012-12-11 14:20:32 -0800</date>
            <delta_ts>2012-12-11 14:46:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98898-20121211141754.patch</filename>
            <type>text/plain</type>
            <size>18193</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZThhN2ZmZGE0ZDFlOGMxODE1ZDlkM2NjMDYyNzY0YjlmYjljMTZiLi5kYmYyMzY5ZDZiYWVhMzlm
NjJmMGZhMDVjYzI2OWE0ODU2NDY0ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxMi0xMi0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgb3BfdHlwZW9mIGluIHRoZSBERkcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIFR5cGVPZiBub2RlIHRvIHRoZSBE
RkcgdG8gc3VwcG9ydCBvcF90eXBlb2YuIAorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAg
ICAgICAgIFdlIHRyeSB0byBkZXRlcm1pbmUgdGhlIHJlc3VsdCBlYXJseSBoZXJlLCBhbmQgc3Vi
c3RpdHV0ZSBpbiBhIGNvbnN0YW50LgorICAgICAgICAgIE90aGVyd2lzZSB3ZSBsZWF2ZSB0aGUg
bm9kZSBpbnRhY3QsIGFuZCBzZXQgdGhlIHJlc3VsdCB0eXBlIHRvIFNwZWNTdHJpbmcuCisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICAgUGFyc2Ugb3BfdHlwZW9mCisgICAg
ICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6
cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAgIFR5cGVPZiBub2RlcyBjYW4gYmUgc3ViamVjdGVk
IHRvIHB1cmUgQ1NFCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAgIFdlIGNhbiBoYW5kbGUgdHlw
ZW9mLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgICBEZWZpbmUgdGhlIG5vZGUuCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICAgQWRkIG9wZXJhdGlvblR5
cGVPZiB0byBzdXBwb3J0IHRoZSBub24tdHJpdmlhbCBjYXNlcy4KKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgICBBY3R1YWwg
Y29kZWdlbgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OmpzVHlwZVN0cmluZ0ZvclZhbHVlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAgIFNvbWUgcmVmYWN0b3Jp
bmcgdG8gYWxsb3cgdXMgdG8gZ2V0IHRoZSB0eXBlIHN0cmluZyBmb3IgYW4KKyAgICAgICAgICBv
YmplY3Qgd2l0aG91dCBuZWVkaW5nIGEgY2FsbGZyYW1lLgorCiAyMDEyLTEyLTEwICBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZGlz
dGNoZWNrIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwCmluZGV4IGFlODRlZjYyNmU4ZTg5M2RhYmViZGJlY2ZlNGU4ZjgyY2RkNjgyNWIuLmVh
MzNlNjg0YzUwMTE3Mjc0YTA5NTQ3ZTAyNDVjNDQyMGI0YzBiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKICNpbmNs
dWRlICJHZXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IlB1dEJ5SWRTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAt
NzE5LDYgKzcyMCwyMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
ZXhJbkJsb2NrKQogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNCb29sZWFuKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBUeXBlT2Y6IHsKKyAgICAgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gbV9jb2RlQmxvY2stPmdsb2JhbERhdGEoKTsKKyAgICAg
ICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAg
ICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHR5cGVTdHJpbmcgPSBqc1R5cGVT
dHJpbmdGb3JWYWx1ZSgqZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihu
b2RlLmNvZGVPcmlnaW4pLCBjaGlsZCk7CisgICAgICAgICAgICBpZiAodHJ5U2V0Q29uc3RhbnQo
bm9kZUluZGV4LCB0eXBlU3RyaW5nKSkgeworICAgICAgICAgICAgICAgIG1fZm91bmRDb25zdGFu
dHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KFNwZWNTdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAg
ICAgICAKICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
ZDg2MDEyODhiMDk3M2FiZjhlNDNjOTdkZDFlZWI1YWMyNWYzYTQ1Yy4uZTI3ZmEyMjYzZjBmNjFj
YmU1ZGFhMGE0ZTU1OTYyMjQzN2MzZGEyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTMyNTUsNiArMzI1NSwxMiBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3Bf
dHlwZW9mOiB7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90eXBlb2Yp
OworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIFBhcnNlIGZh
aWxlZCEgVGhpcyBzaG91bGQgbm90IGhhcHBlbiBiZWNhdXNlIHRoZSBjYXBhYmlsaXRpZXMgY2hl
Y2tlcgogICAgICAgICAgICAgLy8gc2hvdWxkIGhhdmUgY2F1Z2h0IGl0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAppbmRleCBiOTE0ZWUxMGM3MTAwYWUzMWU0N2M0
ODMzZDViYWUyOWQ5M2FiMDVhLi5kNDI2ODdhNmI4ZjY1ZWRjNzRmNGI1OGNiYTM2Y2E5YTY5OThm
MGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcApAQCAtMTEy
Miw2ICsxMTIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTa2lwVG9wU2NvcGU6CiAgICAg
ICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNjb3BlUmVnaXN0ZXJzOgorICAg
ICAgICBjYXNlIFR5cGVPZjoKICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KHB1cmVDU0Uobm9k
ZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCmluZGV4IDM4ZmU3Zjk1ZGU2ZTZmNjZlNjdjYzg3
MWM3MTVjMDcxYTU5Mzk4MTIuLmMwOTNhOGQ3YmU0N2VmNDA0YzRjZmYyODkxYmRlYjE5NWRjNTMz
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApAQCAt
MTk2LDYgKzE5Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZShP
cGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9qbmVx
X3B0cjoKICAgICBjYXNlIG9wX3B1dF90b19iYXNlX3ZhcmlhYmxlOgogICAgIGNhc2Ugb3BfcHV0
X3RvX2Jhc2U6CisgICAgY2FzZSBvcF90eXBlb2Y6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxl
OwogICAgICAgICAKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA3OWRmYzVkMmU3NzMwYjM0MjJmMzU2ODczNWQ3YzBi
MDFhNWFiMDMwLi41OWNkMWNiMGI5OWNiZGE5ZmViZmEwNDA1YzAwODA2YWE5NTExMmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMTAsNiArMjEwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzU3RyaW5nLCBOb2Rl
UmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikg
XAogICAgIG1hY3JvKElzRnVuY3Rpb24sIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFjcm8o
VHlwZU9mLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0
Qm9vbGVhbikgXAogICAgIG1hY3JvKFRvUHJpbWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhTdHJDYXQsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVy
c1dvcmxkKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApp
bmRleCBiYzQ0ZDI1ZmY5OWZlMjFmZjg4NTMwMTE3NmFiNDI0YzdkODU5YjA3Li43NTdmY2QxYjYx
YTAyZGE4MWYwMGZjNjgxMTJkNGRjNjM0ZmY3YmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTEzNzAsNiArMTM3MCwxMSBAQCBzaXplX3QgREZH
X09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogICAg
IHJldHVybiBqc0lzRnVuY3Rpb25UeXBlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCitK
U0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mKEV4ZWNTdGF0ZSogZXhlYywgSlND
ZWxsKiB2YWx1ZSkKK3sKKyAgICByZXR1cm4ganNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgSlNW
YWx1ZSh2YWx1ZSkpLmFzQ2VsbCgpOworfQorCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
UmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgRW5jb2Rl
ZEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApp
bmRleCA2Nzk3YmFkYWRjYTdjOTI1NTc3YzdjMDk1MTNiZTIyOWUzOTc3MTJiLi5hMTdiNTExNGE4
ODE2OWIyYTE2MjExMzEyMDU5NzY5MzJjODNmMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTk3LDYgKzE5Nyw3IEBAIEpTQ2VsbCogREZHX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbkV4cHJlc3Npb24oRXhlY1N0YXRlKiwgSlNDZWxsKikg
V1RGX0lOCiBkb3VibGUgREZHX09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3Qs
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklz
T2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3Qg
REZHX09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CitKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mKEV4ZWNTdGF0ZSos
IEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFs
bG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVy
ZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciog
REZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFs
Q2FwYWNpdHkoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBv
cGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBzaXplX3QgbmV3U2l6
ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA2YWRmYmVmMTgyZTlj
NzMyM2NkMWEwNzY3MmNlYzQyZGM5NjBmNWEwLi44ODczZjk1NzMwMWZhMDQwMGUwOGEyYTZlOWMy
YzQ0ZWY4NzlmNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNDk3LDcgKzQ5NywxMyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAg
ICBjYXNlIFR5cGVPZjogeworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNw
ZWNTdHJpbmcpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRCeUlk
OiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQ
cmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IGZhMzNjNjcyMTE2ZDI4Y2M4YTQxMDkyMjFjN2Q3YjkzZDc3ZWY0
NzMuLjI1OTE2Y2MxN2NhNmNkZDBiMTg2NmVlZTEzNzlhODA2YjcxZGY4MGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtNDU1OCw2ICs0NTU4LDY2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgVHlwZU9mOiB7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJSZWcg
dGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gdmFs
dWUucGF5bG9hZEdQUigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBHUFJSZXN1bHQgcmVzdWx0
KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZUp1bXBzOworCisgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJh
bmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgICAgICBOb2RlJiBjaGlsZCA9IG1faml0Lmdy
YXBoKClbbm9kZS5jaGlsZDEoKV07CisgICAgICAgIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVD
ZWxsKCkpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUuY2hpbGQxKCksIGlzTm90Q2VsbCk7CisKKyAgICAg
ICAgaWYgKCFjaGlsZC5zaG91bGRTcGVjdWxhdGVOb25TdHJpbmdDZWxsKCkpIHsKKyAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocGF5bG9hZEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAgICAgICAgICAgaWYgKGNoaWxkLnNo
b3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS5jaGlsZDEoKSwg
bm90U3RyaW5nKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgp
KSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAo
KSk7CisgICAgICAgICAgICBpZiAoIWNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7Cisg
ICAgICAgICAgICAgICAgbm90U3RyaW5nLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVPZiwgcmVzdWx0R1BSLCBwYXlsb2FkR1BSKTsKKyAg
ICAgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blR5cGVPZiwgcmVzdWx0R1BSLCBwYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5h
cHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2hpbGQuc2hv
dWxkU3BlY3VsYXRlQ2VsbCgpKSB7CisgICAgICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQp
OworCisgICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHRhZ0dQUiwgdGVt
cEdQUik7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5i
cmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6
VHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZyArIDEpKTsKKyAgICAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5udW1i
ZXJTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBk
b25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3ROdW1iZXIubGlu
aygmbV9qaXQpOworCisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RVbmRlZmluZWQg
PSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmlu
ZyhtX2ppdC5nbG9iYWxEYXRhKCkpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1w
cy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIG5vdFVuZGVmaW5lZC5saW5rKCZt
X2ppdCk7CisKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51bGwgPSBtX2ppdC5i
cmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6Ok51bGxUYWcpKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcobV9qaXQuZ2xvYmFsRGF0
YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1
bXAoKSk7CisgICAgICAgICAgICBub3ROdWxsLmxpbmsoJm1faml0KTsKKworICAgICAgICAgICAg
Ly8gT25seSBib29sZWFuIGxlZnQKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5ib29sZWFuU3RyaW5nKG1faml0Lmds
b2JhbERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICB9CisgICAgICAgIGRvbmVKdW1wcy5s
aW5rKCZtX2ppdCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRl
eCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgRmx1
c2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAppbmRleCA5NmE5YTQ0ZDAwYTBmOGI0Nzg4ZGI1YTY4NGMwM2JjNTRlYjM0NzliLi41Njlm
NjRkNDlkZDUzN2NkNzE1MWNkOTdlOTdmYjJlNjY5Yjc0N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQwNjksNyArNDA2
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
Y2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5p
ZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7CiAgICAgICAgIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2Fs
bGVkRXhwbGljaXRseSk7Ci0gICAgICAgIAorCiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
NDQ4NCw2ICs0NDg0LDY0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBUeXBlT2Y6IHsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJl
ZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBHUFJSZXN1
bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZUp1bXBzOworCisgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0g
bV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2ppdC5ncmFwaCgp
W25vZGUuY2hpbGQxKCldOworICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgp
KQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlKHZh
bHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgaXNOb3RDZWxsKTsKKworICAgICAgICBpZiAoIWNoaWxk
LnNob3VsZFNwZWN1bGF0ZU5vblN0cmluZ0NlbGwoKSkgeworICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5n
ID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoU3RyaW5nVHlwZSkpOworICAgICAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0
cmluZygpKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIG5vdFN0cmluZyk7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmlu
Z3Muc3RyaW5nU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgaWYgKCFj
aGlsZC5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIG5vdFN0cmlu
Zy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25U
eXBlT2YsIHJlc3VsdEdQUiwgdmFsdWVHUFIpOworICAgICAgICAgICAgICAgIGRvbmVKdW1wcy5h
cHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHlwZU9mLCByZXN1bHRHUFIsIHZhbHVl
R1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7CisgICAg
ICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90TnVtYmVyID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCB2
YWx1ZUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5u
dW1iZXJTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAg
ICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3ROdW1iZXIu
bGluaygmbV9qaXQpOworCisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RVbmRlZmlu
ZWQgPSBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIHZhbHVlR1BSLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVkKSk7CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3MudW5k
ZWZpbmVkU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICAg
ICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgbm90VW5kZWZp
bmVkLmxpbmsoJm1faml0KTsKKworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TnVs
bCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVHUFIsIEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7CisgICAgICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Mub2JqZWN0U3Ry
aW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1
bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgbm90TnVsbC5saW5rKCZtX2pp
dCk7CisKKyAgICAgICAgICAgIC8vIE9ubHkgYm9vbGVhbiBsZWZ0CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3MuYm9v
bGVhblN0cmluZyhtX2ppdC5nbG9iYWxEYXRhKCkpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgfQor
ICAgICAgICBkb25lSnVtcHMubGluaygmbV9qaXQpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IEZsdXNoOgogICAgIGNhc2UgUGhpOgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXggZDk2YmFlNTc1ZTRjZjJkMmVkNjE4
NWQwYzY5NTlmYWM3MjZjODVmOS4uMjU2ODA2MmM5ZTU2MmYyZDAzMjk2NDI1YWEzM2FjMjFmYWEy
NDI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAK
QEAgLTU2LDkgKzU2LDggQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKICAgICByZXR1cm4ganNO
dW1iZXIocDEudG9OdW1iZXIoY2FsbEZyYW1lKSArIHAyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwog
fQogCi1KU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHYpCitKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogewotICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwogICAg
IGlmICh2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3Ry
aW5ncy51bmRlZmluZWRTdHJpbmcoJmdsb2JhbERhdGEpOwogICAgIGlmICh2LmlzQm9vbGVhbigp
KQpAQCAtNzAsNyArNjksNyBAQCBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewogICAgICAg
ICAvLyBSZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRl
ZAogICAgICAgICAvLyBhcyBudWxsIHdoZW4gZG9pbmcgY29tcGFyaXNvbnMuCi0gICAgICAgIGlm
IChhc09iamVjdCh2KS0+c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZy
YW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQorICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0
cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCZnbG9i
YWxEYXRhKTsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdCh2KTsKQEAgLTgwLDYgKzc5LDExIEBAIEpTVmFsdWUganNUeXBlU3Ry
aW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdikKICAgICByZXR1cm4g
Z2xvYmFsRGF0YS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKCZnbG9iYWxEYXRhKTsKIH0KIAor
SlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSB2KQoreworICAgIHJldHVybiBqc1R5cGVTdHJpbmdGb3JWYWx1ZShjYWxsRnJhbWUtPmdsb2Jh
bERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHYpOworfQorCiBib29s
IGpzSXNPYmplY3RUeXBlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiB7CiAgICAg
aWYgKCF2LmlzQ2VsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oCmluZGV4IDczMDFiZjZlYzU2OTc0NzQ4MWNmOTExNzYzOGI5ZmZjZmI1YTM0NTkuLmExYTNj
YzlmYzYyMTM2MzcxMDdlY2Q2MDNmN2U3ZWZkMzM2ZGJlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKENhbGxGcmFtZSos
IEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2Fs
bEZyYW1lKiwgSlNWYWx1ZSk7CisgICAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShKU0ds
b2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogICAgIGJvb2wganNJc09iamVj
dFR5cGUoQ2FsbEZyYW1lKiwgSlNWYWx1ZSk7CiAgICAgYm9vbCBqc0lzRnVuY3Rpb25UeXBlKEpT
VmFsdWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178883</attachid>
            <date>2012-12-11 14:46:13 -0800</date>
            <delta_ts>2012-12-11 17:31:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98898-20121211144335.patch</filename>
            <type>text/plain</type>
            <size>18511</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZThhN2ZmZGE0ZDFlOGMxODE1ZDlkM2NjMDYyNzY0YjlmYjljMTZiLi5kYmYyMzY5ZDZiYWVhMzlm
NjJmMGZhMDVjYzI2OWE0ODU2NDY0ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxMi0xMi0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgb3BfdHlwZW9mIGluIHRoZSBERkcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIFR5cGVPZiBub2RlIHRvIHRoZSBE
RkcgdG8gc3VwcG9ydCBvcF90eXBlb2YuIAorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAg
ICAgICAgIFdlIHRyeSB0byBkZXRlcm1pbmUgdGhlIHJlc3VsdCBlYXJseSBoZXJlLCBhbmQgc3Vi
c3RpdHV0ZSBpbiBhIGNvbnN0YW50LgorICAgICAgICAgIE90aGVyd2lzZSB3ZSBsZWF2ZSB0aGUg
bm9kZSBpbnRhY3QsIGFuZCBzZXQgdGhlIHJlc3VsdCB0eXBlIHRvIFNwZWNTdHJpbmcuCisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICAgUGFyc2Ugb3BfdHlwZW9mCisgICAg
ICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6
cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAgIFR5cGVPZiBub2RlcyBjYW4gYmUgc3ViamVjdGVk
IHRvIHB1cmUgQ1NFCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAgIFdlIGNhbiBoYW5kbGUgdHlw
ZW9mLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgICBEZWZpbmUgdGhlIG5vZGUuCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICAgQWRkIG9wZXJhdGlvblR5
cGVPZiB0byBzdXBwb3J0IHRoZSBub24tdHJpdmlhbCBjYXNlcy4KKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgICBBY3R1YWwg
Y29kZWdlbgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OmpzVHlwZVN0cmluZ0ZvclZhbHVlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAgIFNvbWUgcmVmYWN0b3Jp
bmcgdG8gYWxsb3cgdXMgdG8gZ2V0IHRoZSB0eXBlIHN0cmluZyBmb3IgYW4KKyAgICAgICAgICBv
YmplY3Qgd2l0aG91dCBuZWVkaW5nIGEgY2FsbGZyYW1lLgorCiAyMDEyLTEyLTEwICBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZGlz
dGNoZWNrIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwCmluZGV4IGFlODRlZjYyNmU4ZTg5M2RhYmViZGJlY2ZlNGU4ZjgyY2RkNjgyNWIuLjMy
ZmI0NmM1NTRhYWU2ODUyYzdjMTI2NWU4NWZhMmEyNjkzMGMzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKICNpbmNs
dWRlICJHZXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IlB1dEJ5SWRTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAt
NzE5LDYgKzcyMCwyOSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
ZXhJbkJsb2NrKQogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNCb29sZWFuKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBUeXBlT2Y6IHsKKyAgICAgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gbV9jb2RlQmxvY2stPmdsb2JhbERhdGEoKTsKKyAgICAg
ICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAg
ICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHR5cGVTdHJpbmcgPSBqc1R5cGVT
dHJpbmdGb3JWYWx1ZSgqZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihu
b2RlLmNvZGVPcmlnaW4pLCBjaGlsZCk7CisgICAgICAgICAgICBpZiAodHJ5U2V0Q29uc3RhbnQo
bm9kZUluZGV4LCB0eXBlU3RyaW5nKSkgeworICAgICAgICAgICAgICAgIG1fZm91bmRDb25zdGFu
dHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICBOb2RlJiBjaGls
ZE5vZGUgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOworICAgICAgICBpZiAoaXNDZWxsU3BlY3Vs
YXRpb24oY2hpbGROb2RlLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIGlmIChpc1N0cmlu
Z1NwZWN1bGF0aW9uKGNoaWxkTm9kZS5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNDZWxs
KTsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNTdHJpbmcp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgICAgICAKICAgICBjYXNlIENvbXBhcmVM
ZXNzOgogICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggZDg2MDEyODhiMDk3M2FiZjhlNDNjOTdk
ZDFlZWI1YWMyNWYzYTQ1Yy4uZTI3ZmEyMjYzZjBmNjFjYmU1ZGFhMGE0ZTU1OTYyMjQzN2MzZGEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKQEAgLTMyNTUsNiArMzI1NSwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhw
KTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfdHlwZW9mOiB7CisgICAgICAgICAgICBz
ZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKFR5cGVPZiwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7Cisg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF90eXBlb2YpOworICAgICAgICB9CisKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIC8vIFBhcnNlIGZhaWxlZCEgVGhpcyBzaG91bGQgbm90IGhh
cHBlbiBiZWNhdXNlIHRoZSBjYXBhYmlsaXRpZXMgY2hlY2tlcgogICAgICAgICAgICAgLy8gc2hv
dWxkIGhhdmUgY2F1Z2h0IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcAppbmRleCBiOTE0ZWUxMGM3MTAwYWUzMWU0N2M0ODMzZDViYWUyOWQ5M2FiMDVhLi5kNDI2
ODdhNmI4ZjY1ZWRjNzRmNGI1OGNiYTM2Y2E5YTY5OThmMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcApAQCAtMTEyMiw2ICsxMTIyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBTa2lwVG9wU2NvcGU6CiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAg
ICAgICBjYXNlIEdldFNjb3BlUmVnaXN0ZXJzOgorICAgICAgICBjYXNlIFR5cGVPZjoKICAgICAg
ICAgICAgIHNldFJlcGxhY2VtZW50KHB1cmVDU0Uobm9kZSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCmluZGV4IDM4ZmU3Zjk1ZGU2ZTZmNjZlNjdjYzg3MWM3MTVjMDcxYTU5Mzk4MTIuLmMwOTNh
OGQ3YmU0N2VmNDA0YzRjZmYyODkxYmRlYjE5NWRjNTMzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApAQCAtMTk2LDYgKzE5Niw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9qbmVxX3B0cjoKICAgICBjYXNlIG9wX3B1dF90
b19iYXNlX3ZhcmlhYmxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX2Jhc2U6CisgICAgY2FzZSBvcF90
eXBlb2Y6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlOwogICAgICAgICAKICAgICBjYXNlIG9w
X2NhbGxfdmFyYXJnczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRl
eCA3OWRmYzVkMmU3NzMwYjM0MjJmMzU2ODczNWQ3YzBiMDFhNWFiMDMwLi41OWNkMWNiMGI5OWNi
ZGE5ZmViZmEwNDA1YzAwODA2YWE5NTExMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCkBAIC0yMTAsNiArMjEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIG1hY3JvKElzU3RyaW5nLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1h
Y3JvKElzT2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzRnVuY3Rpb24s
IE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBtYWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKFRv
UHJpbWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJz
V29ybGQpIFwKICAgICBtYWNybyhTdHJDYXQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBiYzQ0ZDI1ZmY5OWZlMjFmZjg4
NTMwMTE3NmFiNDI0YzdkODU5YjA3Li43NTdmY2QxYjYxYTAyZGE4MWYwMGZjNjgxMTJkNGRjNjM0
ZmY3YmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTEzNzAsNiArMTM3MCwxMSBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1
bmN0aW9uKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBqc0lzRnVuY3Rpb25UeXBl
KEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCitKU0NlbGwqIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uVHlwZU9mKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiB2YWx1ZSkKK3sKKyAgICByZXR1
cm4ganNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgSlNWYWx1ZSh2YWx1ZSkpLmFzQ2VsbCgpOwor
fQorCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5p
c2hQdXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA2Nzk3YmFkYWRjYTdjOTI1NTc3
YzdjMDk1MTNiZTIyOWUzOTc3MTJiLi5hMTdiNTExNGE4ODE2OWIyYTE2MjExMzEyMDU5NzY5MzJj
ODNmMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAt
MTk3LDYgKzE5Nyw3IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bkV4cHJlc3Npb24oRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOCiBkb3VibGUgREZHX09QRVJB
VElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
IHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklzT2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25J
c0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uVHlwZU9mKEV4ZWNTdGF0ZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsK
IHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1
dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNv
ZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25B
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoRXhlY1N0YXRlKikgV1RG
X0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZShFeGVjU3RhdGUqLCBzaXplX3QgbmV3U2l6ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAppbmRleCA2YWRmYmVmMTgyZTljNzMyM2NkMWEwNzY3MmNlYzQyZGM5NjBm
NWEwLi44ODczZjk1NzMwMWZhMDQwMGUwOGEyYTZlOWMyYzQ0ZWY4NzlmNGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcApAQCAtNDk3LDcgKzQ5NywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIFR5cGVPZjogeworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGZhMzNj
NjcyMTE2ZDI4Y2M4YTQxMDkyMjFjN2Q3YjkzZDc3ZWY0NzMuLjI1OTE2Y2MxN2NhNmNkZDBiMTg2
NmVlZTEzNzlhODA2YjcxZGY4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDU1OCw2ICs0NTU4LDY2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYm9vbGVhblJl
c3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIGNhc2UgVHlwZU9mOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFnR1BSKCk7
CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1w
LmdwcigpOworICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
ZG9uZUp1bXBzOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCB0YWdHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
OworICAgICAgICBOb2RlJiBjaGlsZCA9IG1faml0LmdyYXBoKClbbm9kZS5jaGlsZDEoKV07Cisg
ICAgICAgIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5v
ZGUuY2hpbGQxKCksIGlzTm90Q2VsbCk7CisKKyAgICAgICAgaWYgKCFjaGlsZC5zaG91bGRTcGVj
dWxhdGVOb25TdHJpbmdDZWxsKCkpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRl
bXBHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gbV9qaXQu
YnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRlbXBH
UFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5n
VHlwZSkpOworICAgICAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQor
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFn
R1BSLCBwYXlsb2FkR1BSKSwgbm9kZS5jaGlsZDEoKSwgbm90U3RyaW5nKTsKKyAgICAgICAgICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5n
cy5zdHJpbmdTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAg
ICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBpZiAoIWNo
aWxkLnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgbm90U3RyaW5n
LmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5
cGVPZiwgcmVzdWx0R1BSLCBwYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAgICBkb25lSnVtcHMu
YXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVPZiwgcmVzdWx0R1BSLCBwYXls
b2FkR1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7Cisg
ICAgICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOworCisgICAgICAgICAgICBtX2ppdC5h
ZGQzMihUcnVzdGVkSW1tMzIoMSksIHRhZ0dQUiwgdGVtcEdQUik7CisgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJv
dmVPckVxdWFsLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxv
d2VzdFRhZyArIDEpKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcobV9qaXQuZ2xvYmFsRGF0
YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1
bXAoKSk7CisgICAgICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOworCisgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RVbmRlZmluZWQgPSBtX2ppdC5icmFuY2gzMihKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRh
ZykpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+c21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZyhtX2ppdC5nbG9iYWxEYXRhKCkpKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsK
KyAgICAgICAgICAgIG5vdFVuZGVmaW5lZC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdE51bGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90
RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3Ry
aW5ncy5vYmplY3RTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAg
ICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3RO
dWxsLmxpbmsoJm1faml0KTsKKworICAgICAgICAgICAgLy8gT25seSBib29sZWFuIGxlZnQKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNt
YWxsU3RyaW5ncy5ib29sZWFuU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1bHRHUFIp
OworICAgICAgICB9CisgICAgICAgIGRvbmVKdW1wcy5saW5rKCZtX2ppdCk7CisgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KIAogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgRmx1c2g6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5NmE5YTQ0ZDAwYTBm
OGI0Nzg4ZGI1YTY4NGMwM2JjNTRlYjM0NzliLi41NjlmNjRkNDlkZDUzN2NkNzE1MWNkOTdlOTdm
YjJlNjY5Yjc0N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQwNjksNyArNDA2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVP
cmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENl
bGwsIERvbnRTcGlsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
UiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0gICAgICAg
IAorCiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDQ4NCw2ICs0NDg0LDY0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBUeXBlT2Y6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigp
OworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOworICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3QgZG9uZUp1bXBzOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENv
bXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAg
ICAgICAgTm9kZSYgY2hpbGQgPSBtX2ppdC5ncmFwaCgpW25vZGUuY2hpbGQxKCldOworICAgICAg
ICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwg
aXNOb3RDZWxsKTsKKworICAgICAgICBpZiAoIWNoaWxkLnNob3VsZFNwZWN1bGF0ZU5vblN0cmlu
Z0NlbGwoKSkgeworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAgICAg
ICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUu
Y2hpbGQxKCksIG5vdFN0cmluZyk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKG1faml0Lmds
b2JhbERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZCht
X2ppdC5qdW1wKCkpOworICAgICAgICAgICAgaWYgKCFjaGlsZC5zaG91bGRTcGVjdWxhdGVTdHJp
bmcoKSkgeworICAgICAgICAgICAgICAgIG5vdFN0cmluZy5saW5rKCZtX2ppdCk7CisgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UeXBlT2YsIHJlc3VsdEdQUiwgdmFsdWVH
UFIpOworICAgICAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVHlwZU9mLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIGRvbmVK
dW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2hp
bGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7CisgICAgICAgICAgICBpc05vdENlbGwubGluaygm
bV9qaXQpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TnVtYmVyID0gbV9qaXQu
YnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcobV9qaXQuZ2xvYmFs
RGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CisgICAgICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOworCisgICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RVbmRlZmluZWQgPSBtX2ppdC5icmFuY2g2NChKSVRD
b21waWxlcjo6Tm90RXF1YWwsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KFZh
bHVlVW5kZWZpbmVkKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKG1faml0Lmdsb2Jh
bERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2pp
dC5qdW1wKCkpOworICAgICAgICAgICAgbm90VW5kZWZpbmVkLmxpbmsoJm1faml0KTsKKworICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TnVsbCA9IG1faml0LmJyYW5jaDY0KEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoVmFs
dWVOdWxsKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkp
LCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkp
OworICAgICAgICAgICAgbm90TnVsbC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAgIC8vIE9u
bHkgYm9vbGVhbiBsZWZ0CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3MuYm9vbGVhblN0cmluZyhtX2ppdC5nbG9iYWxE
YXRhKCkpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgfQorICAgICAgICBkb25lSnVtcHMubGluaygm
bV9qaXQpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEZsdXNoOgogICAgIGNhc2UgUGhpOgog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5jcHAKaW5kZXggZDk2YmFlNTc1ZTRjZjJkMmVkNjE4NWQwYzY5NTlmYWM3MjZjODVmOS4uMjU2
ODA2MmM5ZTU2MmYyZDAzMjk2NDI1YWEzM2FjMjFmYWEyNDI2MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTU2LDkgKzU2LDggQEAgTkVWRVJf
SU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2MikKICAgICByZXR1cm4ganNOdW1iZXIocDEudG9OdW1iZXIoY2FsbEZy
YW1lKSArIHAyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogfQogCi1KU1ZhbHVlIGpzVHlwZVN0cmlu
Z0ZvclZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCitKU1ZhbHVlIGpzVHlw
ZVN0cmluZ0ZvclZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogewotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwogICAgIGlmICh2LmlzVW5kZWZpbmVkKCkpCiAg
ICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoJmds
b2JhbERhdGEpOwogICAgIGlmICh2LmlzQm9vbGVhbigpKQpAQCAtNzAsNyArNjksNyBAQCBKU1Zh
bHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYp
CiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5lZCIg
Zm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZAogICAgICAgICAvLyBhcyBudWxsIHdo
ZW4gZG9pbmcgY29tcGFyaXNvbnMuCi0gICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJl
KCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpKQorICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5z
bWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCZnbG9iYWxEYXRhKTsKICAgICAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKQEAg
LTgwLDYgKzc5LDExIEBAIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgdikKICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3Mu
b2JqZWN0U3RyaW5nKCZnbG9iYWxEYXRhKTsKIH0KIAorSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JW
YWx1ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQoreworICAgIHJldHVybiBqc1R5
cGVTdHJpbmdGb3JWYWx1ZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHYpOworfQorCiBib29sIGpzSXNPYmplY3RUeXBlKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiB7CiAgICAgaWYgKCF2LmlzQ2VsbCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDczMDFiZjZlYzU2OTc0
NzQ4MWNmOTExNzYzOGI5ZmZjZmI1YTM0NTkuLmExYTNjYzlmYzYyMTM2MzcxMDdlY2Q2MDNmN2U3
ZWZkMzM2ZGJlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBORVZFUl9JTkxJTkUg
SlNWYWx1ZSBqc0FkZFNsb3dDYXNlKENhbGxGcmFtZSosIEpTVmFsdWUsIEpTVmFsdWUpOwogICAg
IEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiwgSlNWYWx1ZSk7CisgICAg
SlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOwogICAgIGJvb2wganNJc09iamVjdFR5cGUoQ2FsbEZyYW1lKiwgSlNWYWx1
ZSk7CiAgICAgYm9vbCBqc0lzRnVuY3Rpb25UeXBlKEpTVmFsdWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178931</attachid>
            <date>2012-12-11 17:31:46 -0800</date>
            <delta_ts>2012-12-12 17:57:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98898-20121211172907.patch</filename>
            <type>text/plain</type>
            <size>21121</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YTExNGMxZTUyNDQ1YTRiNzU0ZjJjMTQ2OWNlZjZkYmU5ZGE3YWVlLi5lZjUyZmQ5NWJiODZmYjkw
ZjI0MmYwOTRlMmEzMDk5ZDY4ZGU1NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxMi0xMi0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgb3BfdHlwZW9mIGluIHRoZSBERkcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIFR5cGVPZiBub2RlIHRvIHRoZSBE
RkcgdG8gc3VwcG9ydCBvcF90eXBlb2YuIAorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAg
ICAgICAgIFdlIHRyeSB0byBkZXRlcm1pbmUgdGhlIHJlc3VsdCBlYXJseSBoZXJlLCBhbmQgc3Vi
c3RpdHV0ZSBpbiBhIGNvbnN0YW50LgorICAgICAgICAgIE90aGVyd2lzZSB3ZSBsZWF2ZSB0aGUg
bm9kZSBpbnRhY3QsIGFuZCBzZXQgdGhlIHJlc3VsdCB0eXBlIHRvIFNwZWNTdHJpbmcuCisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICAgUGFyc2Ugb3BfdHlwZW9mCisgICAg
ICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6
cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAgIFR5cGVPZiBub2RlcyBjYW4gYmUgc3ViamVjdGVk
IHRvIHB1cmUgQ1NFCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAgIFdlIGNhbiBoYW5kbGUgdHlw
ZW9mLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgICBEZWZpbmUgdGhlIG5vZGUuCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICAgQWRkIG9wZXJhdGlvblR5
cGVPZiB0byBzdXBwb3J0IHRoZSBub24tdHJpdmlhbCBjYXNlcy4KKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgICBBY3R1YWwg
Y29kZWdlbgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OmpzVHlwZVN0cmluZ0ZvclZhbHVlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAgIFNvbWUgcmVmYWN0b3Jp
bmcgdG8gYWxsb3cgdXMgdG8gZ2V0IHRoZSB0eXBlIHN0cmluZyBmb3IgYW4KKyAgICAgICAgICBv
YmplY3Qgd2l0aG91dCBuZWVkaW5nIGEgY2FsbGZyYW1lLgorCiAyMDEyLTEyLTExICBPc3dhbGQg
QnVkZGVuaGFnZW4gIDxvc3dhbGQuYnVkZGVuaGFnZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtR
dF0gZGVsZXRlIGRlYWQgaW5jbHVkZSBwYXRocwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggNjU2NDdhNzJjMWMyZTI4ZTkyOTJlNmJhNDRk
MGQ0NDhmZjgzMDU4NC4uNjFjYzZlOTRmZDRiNjRhY2Q1OWMwZmJjOTBiZTY2MGRkMmQ3MGQxZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQmFz
aWNCbG9jay5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CkBAIC03MDcsNiArNzA4LDExIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhl
Y3V0ZSh1bnNpZ25lZCBpbmRleEluQmxvY2spCiAgICAgICAgICAgICBjYXNlIElzU3RyaW5nOgog
ICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gdHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4
LCBqc0Jvb2xlYW4oaXNKU1N0cmluZyhjaGlsZCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgSXNPYmplY3Q6CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmlz
TnVsbCgpIHx8ICFjaGlsZC5pc09iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0
YW50V2FzU2V0ID0gdHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCBqc0Jvb2xlYW4oY2hpbGQuaXNO
dWxsKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZh
bHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzE2LDkgKzcyMiw3MCBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kZXhJbkJsb2NrKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChTcGVjQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAg
IGNhc2UgVHlwZU9mOiB7CisgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IG1fY29k
ZUJsb2NrLT5nbG9iYWxEYXRhKCk7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCkgeworICAgICAgICAgICAg
SlNWYWx1ZSB0eXBlU3RyaW5nID0ganNUeXBlU3RyaW5nRm9yVmFsdWUoKmdsb2JhbERhdGEsIG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKSwgY2hpbGQpOworICAg
ICAgICAgICAgaWYgKHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwgdHlwZVN0cmluZykpIHsKKyAg
ICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEFic3RyYWN0VmFsdWUm
IGFic3RyYWN0Q2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOworICAgICAgICBpZiAoaXNO
dW1iZXJTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlm
ICh0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5udW1i
ZXJTdHJpbmcoZ2xvYmFsRGF0YSkpKSB7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5maWx0ZXIoU3BlY051bWJlcik7CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0
YW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGlzU3RyaW5nU3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5
cGUpKSB7CisgICAgICAgICAgICBpZiAodHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCBnbG9iYWxE
YXRhLT5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKGdsb2JhbERhdGEpKSkgeworICAgICAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOworICAgICAg
ICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChpc0ZpbmFsT2JqZWN0U3Bl
Y3VsYXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUpIHx8IGlzQXJyYXlTcGVjdWxhdGlvbihhYnN0
cmFjdENoaWxkLm1fdHlwZSkgfHwgaXNBcmd1bWVudHNTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxk
Lm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGds
b2JhbERhdGEtPnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoZ2xvYmFsRGF0YSkpKSB7CisgICAg
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ZpbmFsT2JqZWN0
IHwgU3BlY0FycmF5IHwgU3BlY0FyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgbV9mb3VuZENv
bnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGlzRnVuY3Rpb25TcGVjdWxhdGlvbihhYnN0cmFjdENoaWxk
Lm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGds
b2JhbERhdGEtPnNtYWxsU3RyaW5ncy5mdW5jdGlvblN0cmluZyhnbG9iYWxEYXRhKSkpIHsKKyAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRnVuY3Rpb24p
OworICAgICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChpc0Jvb2xl
YW5TcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0
cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5ib29sZWFu
U3RyaW5nKGdsb2JhbERhdGEpKSkgeworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3Rh
bnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIE5vZGUmIGNoaWxkTm9kZSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07
CisgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihjaGlsZE5vZGUucHJlZGljdGlvbigpKSkg
eworICAgICAgICAgICAgaWYgKGlzU3RyaW5nU3BlY3VsYXRpb24oY2hpbGROb2RlLnByZWRpY3Rp
b24oKSkpCisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y1N0cmluZyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOworICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0
KHRydWUpOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY1N0
cmluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2UgQ29t
cGFyZUxlc3M6CiAgICAgY2FzZSBDb21wYXJlTGVzc0VxOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkODYwMTI4OGIwOTczYWJmOGU0
M2M5N2RkMWVlYjVhYzI1ZjNhNDVjLi5lMjdmYTIyNjNmMGY2MWNiZTVkYWEwYTRlNTU5NjIyNDM3
YzNkYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtMzI1NSw2ICszMjU1LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfZnVu
Y19leHApOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF90eXBlb2Y6IHsKKyAgICAgICAg
ICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoVHlwZU9mLCBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkp
KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3R5cGVvZik7CisgICAgICAgIH0KKwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gUGFyc2UgZmFpbGVkISBUaGlzIHNob3VsZCBu
b3QgaGFwcGVuIGJlY2F1c2UgdGhlIGNhcGFiaWxpdGllcyBjaGVja2VyCiAgICAgICAgICAgICAv
LyBzaG91bGQgaGF2ZSBjYXVnaHQgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NF
UGhhc2UuY3BwCmluZGV4IDM0MDcyY2VlMzg1YzViZDkyNjk3Nzg1Mjk4ZDhiYjA0Y2U4NzZiYmMu
LmZjNDUwMDJkNGUwZjE2ZWUzZTU2N2U4ZDM1YjA5NmRhMTZjMTYwOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCkBAIC01NjIsNiArNTYyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICAgICAgICAgIGNhc2UgQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2U6CisgICAgICAgICAgICBjYXNlIFR5cGVPZjoKICAgICAgICAgICAgICAgICByZXR1cm4g
Tm9Ob2RlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlOgpAQCAtMTEyNyw2ICsxMTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBTa2lwVG9wU2NvcGU6CiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdl
dFNjb3BlUmVnaXN0ZXJzOgorICAgICAgICBjYXNlIFR5cGVPZjoKICAgICAgICAgICAgIHNldFJl
cGxhY2VtZW50KHB1cmVDU0Uobm9kZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCmluZGV4IDM4
ZmU3Zjk1ZGU2ZTZmNjZlNjdjYzg3MWM3MTVjMDcxYTU5Mzk4MTIuLmMwOTNhOGQ3YmU0N2VmNDA0
YzRjZmYyODkxYmRlYjE5NWRjNTMzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaApAQCAtMTk2LDYgKzE5Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1
Y3RpCiAgICAgY2FzZSBvcF9qbmVxX3B0cjoKICAgICBjYXNlIG9wX3B1dF90b19iYXNlX3Zhcmlh
YmxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX2Jhc2U6CisgICAgY2FzZSBvcF90eXBlb2Y6CiAgICAg
ICAgIHJldHVybiBDYW5Db21waWxlOwogICAgICAgICAKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJn
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA3OWRmYzVkMmU3
NzMwYjM0MjJmMzU2ODczNWQ3YzBiMDFhNWFiMDMwLi41OWNkMWNiMGI5OWNiZGE5ZmViZmEwNDA1
YzAwODA2YWE5NTExMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC0yMTAsNiArMjEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKElzU3RyaW5nLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzT2JqZWN0
LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzRnVuY3Rpb24sIE5vZGVSZXN1bHRC
b29sZWFuKSBcCisgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhM
b2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKFRvUHJpbWl0aXZlLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAg
ICBtYWNybyhTdHJDYXQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFz
VmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBmYjJmMDE5MWU4NDViNDc1MzJkYWQ2Y2RjNmY2YmJi
MTg2NDBkZWRkLi45MDA0M2Y1YzdhZTU0NDkzOWRhNTczZDFjZTRiZjYzYWM4ODYwYTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTEzNzAsNiAr
MTM3MCwxMSBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1bmN0aW9uKEVuY29k
ZWRKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBqc0lzRnVuY3Rpb25UeXBlKEpTVmFsdWU6OmRl
Y29kZSh2YWx1ZSkpOwogfQogCitKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9m
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiB2YWx1ZSkKK3sKKyAgICByZXR1cm4ganNUeXBlU3Ry
aW5nRm9yVmFsdWUoZXhlYywgSlNWYWx1ZSh2YWx1ZSkpLmFzQ2VsbCgpOworfQorCiB2b2lkIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCAxN2U0YWM1NjNmODM2NzcxMmYwODQwZmY1YzgwN2Uy
MzJiYjdhMzk1Li5lMzI1M2UyNjVjMjIxNzUxNzA3NDdhMmJiMDhlZjY5YmZjZjIwNThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMTk4LDYgKzE5OCw3
IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbkV4cHJlc3Npb24o
RXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOCiBkb3VibGUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHNpemVfdCBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvbklzT2JqZWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Jc0Z1bmN0aW9uKEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uVHlwZU9mKEV4ZWNTdGF0ZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZpbmlzaFB1dChFeGVjU3RhdGUq
LCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0LCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwog
Y2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShFeGVj
U3RhdGUqLCBzaXplX3QgbmV3U2l6ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAppbmRleCA2YWRmYmVmMTgyZTljNzMyM2NkMWEwNzY3MmNlYzQyZGM5NjBmNWEwLi44ODczZjk1
NzMwMWZhMDQwMGUwOGEyYTZlOWMyYzQ0ZWY4NzlmNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cApAQCAtNDk3LDcgKzQ5NywxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgICAgICAKKworICAgICAgICBjYXNlIFR5cGVPZjogeworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZURlZmF1bHRGbGFncyhub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGZhMzNjNjcyMTE2ZDI4Y2M4
YTQxMDkyMjFjN2Q3YjkzZDc3ZWY0NzMuLjI1OTE2Y2MxN2NhNmNkZDBiMTg2NmVlZTEzNzlhODA2
YjcxZGY4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDU1OCw2ICs0NTU4LDY2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHQu
Z3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ug
VHlwZU9mOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOworICAgICAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQ
UlJlZyBwYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAg
ICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZUp1bXBzOwor
CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB0YWdHUFIs
IEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgICAgICBO
b2RlJiBjaGlsZCA9IG1faml0LmdyYXBoKClbbm9kZS5jaGlsZDEoKV07CisgICAgICAgIGlmIChj
aGlsZC5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUuY2hpbGQxKCks
IGlzTm90Q2VsbCk7CisKKyAgICAgICAgaWYgKCFjaGlsZC5zaG91bGRTcGVjdWxhdGVOb25TdHJp
bmdDZWxsKCkpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOworICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRD
b21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVy
ZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAg
ICAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2Fk
R1BSKSwgbm9kZS5jaGlsZDEoKSwgbm90U3RyaW5nKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJp
bmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVt
cHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBpZiAoIWNoaWxkLnNob3VsZFNw
ZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgbm90U3RyaW5nLmxpbmsoJm1faml0
KTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVPZiwgcmVzdWx0
R1BSLCBwYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVPZiwgcmVzdWx0R1BSLCBwYXlsb2FkR1BSKTsKKyAg
ICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7CisgICAgICAgICAgICBp
c05vdENlbGwubGluaygmbV9qaXQpOworCisgICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVk
SW1tMzIoMSksIHRhZ0dQUiwgdGVtcEdQUik7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB0
ZW1wR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZyArIDEp
KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3Vs
dEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAg
ICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOworCisgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RVbmRlZmluZWQgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1
YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOworICAgICAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21hbGxT
dHJpbmdzLnVuZGVmaW5lZFN0cmluZyhtX2ppdC5nbG9iYWxEYXRhKCkpKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAg
IG5vdFVuZGVmaW5lZC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdE51bGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHRhZ0dQ
UiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKKyAgICAgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5vYmplY3RT
dHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25l
SnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3ROdWxsLmxpbmsoJm1f
aml0KTsKKworICAgICAgICAgICAgLy8gT25seSBib29sZWFuIGxlZnQKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5i
b29sZWFuU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICB9
CisgICAgICAgIGRvbmVKdW1wcy5saW5rKCZtX2ppdCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNh
c2UgUGhpOgogICAgIGNhc2UgRmx1c2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA5NmE5YTQ0ZDAwYTBmOGI0Nzg4ZGI1YTY4
NGMwM2JjNTRlYjM0NzliLi41NjlmNjRkNDlkZDUzN2NkNzE1MWNkOTdlOTdmYjJlNjY5Yjc0N2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTQwNjksNyArNDA2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VH
UFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGls
bCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxl
SW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0gICAgICAgIAorCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApAQCAtNDQ4NCw2ICs0NDg0LDY0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBUeXBlT2Y6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGls
ZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBH
UFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdw
cigpOworICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9u
ZUp1bXBzOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25a
ZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgTm9kZSYg
Y2hpbGQgPSBtX2ppdC5ncmFwaCgpW25vZGUuY2hpbGQxKCldOworICAgICAgICBpZiAoY2hpbGQu
c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgaXNOb3RDZWxsKTsK
KworICAgICAgICBpZiAoIWNoaWxkLnNob3VsZFNwZWN1bGF0ZU5vblN0cmluZ0NlbGwoKSkgewor
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgbm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1
YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAgICAgICAgICAgaWYgKGNo
aWxkLnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIG5v
dFN0cmluZyk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkp
LCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkp
OworICAgICAgICAgICAgaWYgKCFjaGlsZC5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgeworICAg
ICAgICAgICAgICAgIG5vdFN0cmluZy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25UeXBlT2YsIHJlc3VsdEdQUiwgdmFsdWVHUFIpOworICAgICAg
ICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHlw
ZU9mLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQo
bV9qaXQuanVtcCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2hpbGQuc2hvdWxkU3Bl
Y3VsYXRlQ2VsbCgpKSB7CisgICAgICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOworICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TnVtYmVyID0gbV9qaXQuYnJhbmNoVGVzdDY0
KEpJVENvbXBpbGVyOjpaZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJl
c3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Cisg
ICAgICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOworCisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBub3RVbmRlZmluZWQgPSBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6Tm90
RXF1YWwsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVk
KSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCBy
ZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwor
ICAgICAgICAgICAgbm90VW5kZWZpbmVkLmxpbmsoJm1faml0KTsKKworICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgbm90TnVsbCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpOb3RF
cXVhbCwgdmFsdWVHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7Cisg
ICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5z
bWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1bHRHUFIp
OworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAg
ICAgbm90TnVsbC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAgIC8vIE9ubHkgYm9vbGVhbiBs
ZWZ0CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5zbWFsbFN0cmluZ3MuYm9vbGVhblN0cmluZyhtX2ppdC5nbG9iYWxEYXRhKCkpKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAgfQorICAgICAgICBkb25lSnVtcHMubGluaygmbV9qaXQpOworICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEZsdXNoOgogICAgIGNhc2UgUGhpOgogICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKaW5kZXgg
ZDk2YmFlNTc1ZTRjZjJkMmVkNjE4NWQwYzY5NTlmYWM3MjZjODVmOS4uMjU2ODA2MmM5ZTU2MmYy
ZDAzMjk2NDI1YWEzM2FjMjFmYWEyNDI2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3BlcmF0aW9ucy5jcHAKQEAgLTU2LDkgKzU2LDggQEAgTkVWRVJfSU5MSU5FIEpTVmFs
dWUganNBZGRTbG93Q2FzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2MSwgSlNWYWx1
ZSB2MikKICAgICByZXR1cm4ganNOdW1iZXIocDEudG9OdW1iZXIoY2FsbEZyYW1lKSArIHAyLnRv
TnVtYmVyKGNhbGxGcmFtZSkpOwogfQogCi1KU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCitKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZh
bHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSB2KQogewotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpOwogICAgIGlmICh2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVy
biBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoJmdsb2JhbERhdGEpOwog
ICAgIGlmICh2LmlzQm9vbGVhbigpKQpAQCAtNzAsNyArNjksNyBAQCBKU1ZhbHVlIGpzVHlwZVN0
cmluZ0ZvclZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgaWYgKHYu
aXNPYmplY3QoKSkgewogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMg
dGhhdCBzaG91bGQgYmUgdHJlYXRlZAogICAgICAgICAvLyBhcyBudWxsIHdoZW4gZG9pbmcgY29t
cGFyaXNvbnMuCi0gICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKCktPm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQorICAgICAg
ICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGds
b2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3Mu
dW5kZWZpbmVkU3RyaW5nKCZnbG9iYWxEYXRhKTsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKQEAgLTgwLDYgKzc5LDEx
IEBAIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
VmFsdWUgdikKICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5n
KCZnbG9iYWxEYXRhKTsKIH0KIAorSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQoreworICAgIHJldHVybiBqc1R5cGVTdHJpbmdGb3JW
YWx1ZShjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIHYpOworfQorCiBib29sIGpzSXNPYmplY3RUeXBlKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIHYpCiB7CiAgICAgaWYgKCF2LmlzQ2VsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDczMDFiZjZlYzU2OTc0NzQ4MWNmOTExNzYz
OGI5ZmZjZmI1YTM0NTkuLmExYTNjYzlmYzYyMTM2MzcxMDdlY2Q2MDNmN2U3ZWZkMzM2ZGJlYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTMyLDYg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0Fk
ZFNsb3dDYXNlKENhbGxGcmFtZSosIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIEpTVmFsdWUganNU
eXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiwgSlNWYWx1ZSk7CisgICAgSlNWYWx1ZSBqc1R5
cGVTdHJpbmdGb3JWYWx1ZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogICAgIGJvb2wganNJc09iamVjdFR5cGUoQ2FsbEZyYW1lKiwgSlNWYWx1ZSk7CiAgICAgYm9v
bCBqc0lzRnVuY3Rpb25UeXBlKEpTVmFsdWUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179170</attachid>
            <date>2012-12-12 17:57:17 -0800</date>
            <delta_ts>2013-01-08 18:28:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98898-20121212175437.patch</filename>
            <type>text/plain</type>
            <size>21215</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MjliNDI4N2U3NDk0MmFmZTk1MjdhMTEyZWZmNjQ5YTVjMTc3NDdlLi5mM2E2NjhhNThlZTViMjhl
Y2VlMjVmMTVhNTRiYWZhYjk5MmM0M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxMi0xMi0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgb3BfdHlwZW9mIGluIHRoZSBERkcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIFR5cGVPZiBub2RlIHRvIHRoZSBE
RkcgdG8gc3VwcG9ydCBvcF90eXBlb2YuIAorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAg
ICAgICAgIFdlIHRyeSB0byBkZXRlcm1pbmUgdGhlIHJlc3VsdCBlYXJseSBoZXJlLCBhbmQgc3Vi
c3RpdHV0ZSBpbiBhIGNvbnN0YW50LgorICAgICAgICAgIE90aGVyd2lzZSB3ZSBsZWF2ZSB0aGUg
bm9kZSBpbnRhY3QsIGFuZCBzZXQgdGhlIHJlc3VsdCB0eXBlIHRvIFNwZWNTdHJpbmcuCisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICAgUGFyc2Ugb3BfdHlwZW9mCisgICAg
ICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6
cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAgIFR5cGVPZiBub2RlcyBjYW4gYmUgc3ViamVjdGVk
IHRvIHB1cmUgQ1NFCisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAo
SlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAgIFdlIGNhbiBoYW5kbGUgdHlw
ZW9mLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgICBEZWZpbmUgdGhlIG5vZGUuCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICAgQWRkIG9wZXJhdGlvblR5
cGVPZiB0byBzdXBwb3J0IHRoZSBub24tdHJpdmlhbCBjYXNlcy4KKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgICBBY3R1YWwg
Y29kZWdlbgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OmpzVHlwZVN0cmluZ0ZvclZhbHVlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGlt
ZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAgIFNvbWUgcmVmYWN0b3Jp
bmcgdG8gYWxsb3cgdXMgdG8gZ2V0IHRoZSB0eXBlIHN0cmluZyBmb3IgYW4KKyAgICAgICAgICBv
YmplY3Qgd2l0aG91dCBuZWVkaW5nIGEgY2FsbGZyYW1lLgorCiAyMDEyLTEyLTEyICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgT1NSIGV4aXQgY29tcGlsZXIgc2hv
dWxkIGVtaXQgY29kZSBmb3IgcmVzZXR0aW5nIHRoZSBleGVjdXRpb24gY291bnRlciB0aGF0IG1h
dGNoZXMgdGhlIGxvZ2ljIG9mIEV4ZWN1dGlvbkNvdW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAppbmRleCA2NTY0N2E3MmMxYzJlMjhl
OTI5MmU2YmE0NGQwZDQ0OGZmODMwNTg0Li5iYjYwNWE4NmQwMGQ1YTc5MzViODNlN2YyODUzZWMx
Mjk0OGU1MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJERkdCYXNpY0Jsb2NrLmgiCiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgorI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTcwNyw2ICs3MDgsMTEgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZGV4SW5CbG9jaykKICAgICAgICAgICAgIGNhc2Ug
SXNTdHJpbmc6CiAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25zdGFu
dChub2RlSW5kZXgsIGpzQm9vbGVhbihpc0pTU3RyaW5nKGNoaWxkKSkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJc09iamVjdDoKKyAgICAgICAgICAgICAgICBp
ZiAoY2hpbGQuaXNOdWxsKCkgfHwgIWNoaWxkLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3RhbnRXYXNTZXQgPSB0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGpzQm9vbGVh
bihjaGlsZC5pc051bGwoKSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGNvbnN0YW50
V2FzU2V0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03MTYsOSArNzIyLDY0
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmRleEluQmxvY2spCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorCisgICAgY2FzZSBUeXBlT2Y6IHsKKyAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gbV9jb2RlQmxvY2stPmdsb2JhbERhdGEoKTsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
YWJzdHJhY3RDaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSk7CisgICAgICAgIGlmIChjaGls
ZCkgeworICAgICAgICAgICAgSlNWYWx1ZSB0eXBlU3RyaW5nID0ganNUeXBlU3RyaW5nRm9yVmFs
dWUoKmdsb2JhbERhdGEsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3Jp
Z2luKSwgY2hpbGQpOworICAgICAgICAgICAgaWYgKHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwg
dHlwZVN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlm
IChpc051bWJlclNwZWN1bGF0aW9uKGFic3RyYWN0Q2hpbGQubV90eXBlKSkgeworICAgICAgICAg
ICAgaWYgKHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwgZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
Lm51bWJlclN0cmluZyhnbG9iYWxEYXRhKSkpIHsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBtX2ZvdW5k
Q29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZ1NwZWN1bGF0aW9uKGFic3RyYWN0Q2hpbGQubV90
eXBlKSkgeworICAgICAgICAgICAgaWYgKHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwgZ2xvYmFs
RGF0YS0+c21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZyhnbG9iYWxEYXRhKSkpIHsKKyAgICAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjU3RyaW5nKTsKKyAgICAg
ICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpc0ZpbmFsT2JqZWN0U3BlY3Vs
YXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUpIHx8IGlzQXJyYXlTcGVjdWxhdGlvbihhYnN0cmFj
dENoaWxkLm1fdHlwZSkgfHwgaXNBcmd1bWVudHNTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1f
dHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0cnlTZXRDb25zdGFudChub2RlSW5kZXgsIGdsb2Jh
bERhdGEtPnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoZ2xvYmFsRGF0YSkpKSB7CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ZpbmFsT2JqZWN0IHwg
U3BlY0FycmF5IHwgU3BlY0FyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0
YW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvblNwZWN1bGF0aW9uKGFic3RyYWN0Q2hpbGQubV90eXBl
KSkgeworICAgICAgICAgICAgaWYgKHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwgZ2xvYmFsRGF0
YS0+c21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKGdsb2JhbERhdGEpKSkgeworICAgICAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNGdW5jdGlvbik7CisgICAg
ICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuU3BlY3VsYXRp
b24oYWJzdHJhY3RDaGlsZC5tX3R5cGUpKSB7CisgICAgICAgICAgICBpZiAodHJ5U2V0Q29uc3Rh
bnQobm9kZUluZGV4LCBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MuYm9vbGVhblN0cmluZyhnbG9i
YWxEYXRhKSkpIHsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRl
cihTcGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBOb2RlJiBjaGlsZE5vZGUgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwor
ICAgICAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKGNoaWxkTm9kZS5wcmVkaWN0aW9uKCkp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nU3BlY3VsYXRpb24oY2hpbGROb2RlLnBy
ZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSku
ZmlsdGVyKFNwZWNTdHJpbmcpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOworICAgICAgICAg
ICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNTdHJpbmcpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgICAgICAgICAKICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgIGNhc2Ug
Q29tcGFyZUxlc3NFcToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggYTU2YWRhYmQzZjZmZjQwMzhkNGE4NGU0ZDkzMmNmZDE5N2M4MmU0
ZS4uNDQwNjNmN2IwNzkwOTNhZmRiODYxMzNiOTEwMTUzMjBhYmJlODY3YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTMyNTUsNiAr
MzI1NSwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQog
CisgICAgICAgIGNhc2Ugb3BfdHlwZW9mOiB7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwg
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7CisgICAgICAgICAgICBORVhU
X09QQ09ERShvcF90eXBlb2YpOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIC8vIFBhcnNlIGZhaWxlZCEgVGhpcyBzaG91bGQgbm90IGhhcHBlbiBiZWNhdXNlIHRo
ZSBjYXBhYmlsaXRpZXMgY2hlY2tlcgogICAgICAgICAgICAgLy8gc2hvdWxkIGhhdmUgY2F1Z2h0
IGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAppbmRleCAzNDA3
MmNlZTM4NWM1YmQ5MjY5Nzc4NTI5OGQ4YmIwNGNlODc2YmJjLi5mYzQ1MDAyZDRlMGYxNmVlM2U1
NjdlOGQzNWIwOTZkYTE2YzE2MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NTRVBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcApAQCAtNTYyLDYgKzU2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNl
IENyZWF0ZVRoaXM6CiAgICAgICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgog
ICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAg
Y2FzZSBUeXBlT2Y6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKQEAgLTEx
MjcsNiArMTEyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU2tpcFRvcFNjb3BlOgogICAg
ICAgICBjYXNlIFNraXBTY29wZToKICAgICAgICAgY2FzZSBHZXRTY29wZVJlZ2lzdGVyczoKKyAg
ICAgICAgY2FzZSBUeXBlT2Y6CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChwdXJlQ1NFKG5v
ZGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAppbmRleCAzOGZlN2Y5NWRlNmU2ZjY2ZTY3Y2M4
NzFjNzE1YzA3MWE1OTM5ODEyLi5jMDkzYThkN2JlNDdlZjQwNGM0Y2ZmMjg5MWJkZWIxOTVkYzUz
MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAg
LTE5Niw2ICsxOTYsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGVPcGNvZGUo
T3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayosIEluc3RydWN0aQogICAgIGNhc2Ugb3Bfam5l
cV9wdHI6CiAgICAgY2FzZSBvcF9wdXRfdG9fYmFzZV92YXJpYWJsZToKICAgICBjYXNlIG9wX3B1
dF90b19iYXNlOgorICAgIGNhc2Ugb3BfdHlwZW9mOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGls
ZTsKICAgICAgICAgCiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNzlkZmM1ZDJlNzczMGIzNDIyZjM1Njg3MzVkN2Mw
YjAxYTVhYjAzMC4uNTljZDFjYjBiOTljYmRhOWZlYmZhMDQwNWMwMDgwNmFhOTUxMTJjYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjEwLDYgKzIxMCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhJc1N0cmluZywgTm9k
ZVJlc3VsdEJvb2xlYW4pIFwKICAgICBtYWNybyhJc09iamVjdCwgTm9kZVJlc3VsdEJvb2xlYW4p
IFwKICAgICBtYWNybyhJc0Z1bmN0aW9uLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAorICAgIG1hY3Jv
KFR5cGVPZiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTG9naWNhbE5vdCwgTm9kZVJlc3Vs
dEJvb2xlYW4pIFwKICAgICBtYWNybyhUb1ByaW1pdGl2ZSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAgICAgbWFjcm8oU3RyQ2F0LCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJl
cnNXb3JsZCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggZmIyZjAxOTFlODQ1YjQ3NTMyZGFkNmNkYzZmNmJiYjE4NjQwZGVkZC4uOTAwNDNmNWM3
YWU1NDQ5MzlkYTU3M2QxY2U0YmY2M2FjODg2MGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xMzcwLDYgKzEzNzAsMTEgQEAgc2l6ZV90IERG
R19PUEVSQVRJT04gb3BlcmF0aW9uSXNGdW5jdGlvbihFbmNvZGVkSlNWYWx1ZSB2YWx1ZSkKICAg
ICByZXR1cm4ganNJc0Z1bmN0aW9uVHlwZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKIH0KIAor
SlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblR5cGVPZihFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogdmFsdWUpCit7CisgICAgcmV0dXJuIGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIEpT
VmFsdWUodmFsdWUpKS5hc0NlbGwoKTsKK30KKwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
blJlYWxsb2NhdGVTdG9yYWdlQW5kRmluaXNoUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGJhc2UsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIEVuY29k
ZWRKU1ZhbHVlIHZhbHVlKQogewogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMt
Pmdsb2JhbERhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
aW5kZXggMTdlNGFjNTYzZjgzNjc3MTJmMDg0MGZmNWM4MDdlMjMyYmI3YTM5NS4uZTMyNTNlMjY1
YzIyMTc1MTcwNzQ3YTJiYjA4ZWY2OWJmY2YyMDU4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTE5OCw2ICsxOTgsNyBAQCBKU0NlbGwqIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25FeHByZXNzaW9uKEV4ZWNTdGF0ZSosIEpTQ2VsbCop
IFdURl9JTgogZG91YmxlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cyhpbnQzMl90
LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25J
c09iamVjdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6ZV90
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uSXNGdW5jdGlvbihFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOworSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblR5cGVPZihFeGVjU3RhdGUq
LCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVh
bGxvY2F0ZVN0b3JhZ2VBbmRGaW5pc2hQdXQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBQcm9wZXJ0eU9mZnNldCwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIGNoYXIq
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5pdGlh
bENhcGFjaXR5KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIGNoYXIqIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoRXhlY1N0YXRlKiwgc2l6ZV90IG5ld1Np
emUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNmFkZmJlZjE4MmU5
YzczMjNjZDFhMDc2NzJjZWM0MmRjOTYwZjVhMC4uODg3M2Y5NTczMDFmYTA0MDBlMDhhMmE2ZTlj
MmM0NGVmODc5ZjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTQ5Nyw3ICs0OTcsMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9k
ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAg
ICAgY2FzZSBUeXBlT2Y6IHsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihT
cGVjU3RyaW5nKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mobm9k
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2V0QnlJ
ZDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obm9kZS5nZXRIZWFw
UHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VEZWZhdWx0RmxhZ3Mo
bm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAppbmRleCBmYTMzYzY3MjExNmQyOGNjOGE0MTA5MjIxYzdkN2I5M2Q3N2Vm
NDczLi4yNTkxNmNjMTdjYTZjZGQwYjE4NjZlZWUxMzc5YTgwNmI3MWRmODBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
QEAgLTQ1NTgsNiArNDU1OCw2NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRl
eCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFR5cGVPZjogeworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVn
IHRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgcGF5bG9hZEdQUiA9IHZh
bHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAg
ICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgR1BSUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmVKdW1wczsKKworICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJy
YW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdGFnR1BSLCBKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2ppdC5n
cmFwaCgpW25vZGUuY2hpbGQxKCldOworICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRl
Q2VsbCgpKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLmNoaWxkMSgpLCBpc05vdENlbGwpOworCisgICAg
ICAgIGlmICghY2hpbGQuc2hvdWxkU3BlY3VsYXRlTm9uU3RyaW5nQ2VsbCgpKSB7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBK
SVRDb21waWxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKKyAgICAgICAgICAgIGlmIChjaGlsZC5z
aG91bGRTcGVjdWxhdGVTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUuY2hpbGQxKCks
IG5vdFN0cmluZyk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKG1faml0Lmdsb2JhbERhdGEo
KSkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1w
KCkpOworICAgICAgICAgICAgaWYgKCFjaGlsZC5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgewor
ICAgICAgICAgICAgICAgIG5vdFN0cmluZy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25UeXBlT2YsIHJlc3VsdEdQUiwgcGF5bG9hZEdQUik7Cisg
ICAgICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25UeXBlT2YsIHJlc3VsdEdQUiwgcGF5bG9hZEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMu
YXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNoaWxkLnNo
b3VsZFNwZWN1bGF0ZUNlbGwoKSkgeworICAgICAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0
KTsKKworICAgICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCB0YWdHUFIsIHRl
bXBHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TnVtYmVyID0gbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgdGVtcEdQUiwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcgKyAxKSk7CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3MubnVt
YmVyU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAg
ZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgbm90TnVtYmVyLmxp
bmsoJm1faml0KTsKKworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VW5kZWZpbmVk
ID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJp
bmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVt
cHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3RVbmRlZmluZWQubGluaygm
bV9qaXQpOworCisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3ROdWxsID0gbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpOdWxsVGFnKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKG1faml0Lmdsb2JhbERh
dGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5q
dW1wKCkpOworICAgICAgICAgICAgbm90TnVsbC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAg
IC8vIE9ubHkgYm9vbGVhbiBsZWZ0CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3MuYm9vbGVhblN0cmluZyhtX2ppdC5n
bG9iYWxEYXRhKCkpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgfQorICAgICAgICBkb25lSnVtcHMu
bGluaygmbV9qaXQpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5k
ZXgpOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBjYXNlIFBoaToKICAgICBjYXNlIEZs
dXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKaW5kZXggOTZhOWE0NGQwMGEwZjhiNDc4OGRiNWE2ODRjMDNiYzU0ZWIzNDc5Yi4uNTY5
ZjY0ZDQ5ZGQ1MzdjZDcxNTFjZDk3ZTk3ZmIyZTY2OWI3NDdjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC00MDY5LDcgKzQw
NjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS5jb2RlT3JpZ2luLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUu
aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwpOwogICAgICAgICAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwotICAgICAgICAKKwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTQ0ODQsNiArNDQ4NCw2NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgVHlwZU9mOiB7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJS
ZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgR1BSUmVz
dWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmVKdW1wczsKKworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9
IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgICAgIE5vZGUmIGNoaWxkID0gbV9qaXQuZ3JhcGgo
KVtub2RlLmNoaWxkMSgpXTsKKyAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZUNlbGwo
KSkKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZSh2
YWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIGlzTm90Q2VsbCk7CisKKyAgICAgICAgaWYgKCFjaGls
ZC5zaG91bGRTcGVjdWxhdGVOb25TdHJpbmdDZWxsKCkpIHsKKyAgICAgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmlu
ZyA9IG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRk
cmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKFN0cmluZ1R5cGUpKTsKKyAgICAgICAgICAgIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVT
dHJpbmcoKSkKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2UodmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBub3RTdHJpbmcpOworICAgICAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21hbGxTdHJp
bmdzLnN0cmluZ1N0cmluZyhtX2ppdC5nbG9iYWxEYXRhKCkpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIGlmICgh
Y2hpbGQuc2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBub3RTdHJp
bmcubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VHlwZU9mLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgICAgICAgICBkb25lSnVtcHMu
YXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVPZiwgcmVzdWx0R1BSLCB2YWx1
ZUdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWNoaWxkLnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkgeworICAg
ICAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdE51bWJlciA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6WmVybywg
dmFsdWVHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Mu
bnVtYmVyU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1bHRHUFIpOworICAgICAgICAg
ICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgbm90TnVtYmVy
LmxpbmsoJm1faml0KTsKKworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VW5kZWZp
bmVkID0gbV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZUdQUiwgSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW02NChWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21hbGxTdHJpbmdzLnVu
ZGVmaW5lZFN0cmluZyhtX2ppdC5nbG9iYWxEYXRhKCkpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
ICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIG5vdFVuZGVm
aW5lZC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51
bGwgPSBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6Tm90RXF1YWwsIHZhbHVlR1BSLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOworICAgICAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21hbGxTdHJpbmdzLm9iamVjdFN0
cmluZyhtX2ppdC5nbG9iYWxEYXRhKCkpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGRvbmVK
dW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIG5vdE51bGwubGluaygmbV9q
aXQpOworCisgICAgICAgICAgICAvLyBPbmx5IGJvb2xlYW4gbGVmdAorICAgICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21hbGxTdHJpbmdzLmJv
b2xlYW5TdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgIH0K
KyAgICAgICAgZG9uZUp1bXBzLmxpbmsoJm1faml0KTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBGbHVzaDoKICAgICBjYXNlIFBoaToKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCmluZGV4IGQ5NmJhZTU3NWU0Y2YyZDJlZDYx
ODVkMGM2OTU5ZmFjNzI2Yzg1ZjkuLjI1NjgwNjJjOWU1NjJmMmQwMzI5NjQyNWFhMzNhYzIxZmFh
MjQyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3Bw
CkBAIC01Niw5ICs1Niw4IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgcmV0dXJuIGpz
TnVtYmVyKHAxLnRvTnVtYmVyKGNhbGxGcmFtZSkgKyBwMi50b051bWJlcihjYWxsRnJhbWUpKTsK
IH0KIAotSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSB2KQorSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKIHsKLSAg
ICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKICAg
ICBpZiAodi5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0
cmluZ3MudW5kZWZpbmVkU3RyaW5nKCZnbG9iYWxEYXRhKTsKICAgICBpZiAodi5pc0Jvb2xlYW4o
KSkKQEAgLTcwLDcgKzY5LDcgQEAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAg
ICAgLy8gUmV0dXJuICJ1bmRlZmluZWQiIGZvciBvYmplY3RzIHRoYXQgc2hvdWxkIGJlIHRyZWF0
ZWQKICAgICAgICAgLy8gYXMgbnVsbCB3aGVuIGRvaW5nIGNvbXBhcmlzb25zLgotICAgICAgICBp
ZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGNhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSkKKyAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5z
dHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygmZ2xv
YmFsRGF0YSk7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3Qodik7CkBAIC04MCw2ICs3OSwxMSBAQCBKU1ZhbHVlIGpzVHlwZVN0
cmluZ0ZvclZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCiAgICAgcmV0dXJu
IGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLm9iamVjdFN0cmluZygmZ2xvYmFsRGF0YSk7CiB9CiAK
K0pTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUgdikKK3sKKyAgICByZXR1cm4ganNUeXBlU3RyaW5nRm9yVmFsdWUoY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB2KTsKK30KKwogYm9v
bCBqc0lzT2JqZWN0VHlwZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQogewogICAg
IGlmICghdi5pc0NlbGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAppbmRleCA3MzAxYmY2ZWM1Njk3NDc0ODFjZjkxMTc2MzhiOWZmY2ZiNWEzNDU5Li5hMWEz
Y2M5ZmM2MjEzNjM3MTA3ZWNkNjAzZjdlN2VmZDMzNmRiZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShDYWxsRnJhbWUq
LCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKENh
bGxGcmFtZSosIEpTVmFsdWUpOworICAgIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoSlNH
bG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBib29sIGpzSXNPYmpl
Y3RUeXBlKENhbGxGcmFtZSosIEpTVmFsdWUpOwogICAgIGJvb2wganNJc0Z1bmN0aW9uVHlwZShK
U1ZhbHVlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181816</attachid>
            <date>2013-01-08 18:28:22 -0800</date>
            <delta_ts>2013-01-08 18:33:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98898-20130108182526.patch</filename>
            <type>text/plain</type>
            <size>32417</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTAyZTM2MmE3NzM4OTNiNjAyYmY5MjU0MjZkZTlhODM4MGJlMmFlLi5lOWYzMjg0YTdkNmM2NzFj
OWUyNjY2NWYzYTlhNzAwNjVhMmJhMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxMy0wMS0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgb3BfdHlwZW9mIGluIHRoZSBERkcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIFR5cGVPZiBub2RlIHRvIHRoZSBE
RkcgdG8gc3VwcG9ydCBvcF90eXBlb2YuCisKKyAgICAgICAgVG8gYXZvaWQgYWRkaW5nIHRvbyBt
dWNoIEdDIGhvcnJvciwgdGhpcyBhbHNvIG1ha2VzIHRoZQorICAgICAgICBjb21tb24gc3RyaW5n
cyBwb3J0aW9uIG9mIHRoZSBTbWFsbFN0cmluZyBjYWNoZSBzdHJvbmdseQorICAgICAgICByZWZl
cmVuY2VkLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAgIFdlIHRyeSB0byBk
ZXRlcm1pbmUgdGhlIHJlc3VsdCBlYXJseSBoZXJlLCBhbmQgc3Vic3RpdHV0ZSBpbiBhIGNvbnN0
YW50LgorICAgICAgICAgIE90aGVyd2lzZSB3ZSBsZWF2ZSB0aGUgbm9kZSBpbnRhY3QsIGFuZCBz
ZXQgdGhlIHJlc3VsdCB0eXBlIHRvIFNwZWNTdHJpbmcuCisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgICAgUGFyc2Ugb3BfdHlwZW9mCisgICAgICAgICogZGZnL0RGR0NTRVBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgor
ICAgICAgICAgIFR5cGVPZiBub2RlcyBjYW4gYmUgc3ViamVjdGVkIHRvIHB1cmUgQ1NFCisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBp
bGVPcGNvZGUpOgorICAgICAgICAgIFdlIGNhbiBoYW5kbGUgdHlwZW9mLgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgICBEZWZpbmUgdGhlIG5v
ZGUuCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmg6CisgICAgICAgICAgQWRkIG9wZXJhdGlvblR5cGVPZiB0byBzdXBwb3J0IHRo
ZSBub24tdHJpdmlhbCBjYXNlcy4KKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgICBBY3R1YWwgY29kZWdlbgorICAgICAgICAq
IHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmluZ0ZvclZh
bHVlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAgIFNvbWUgcmVmYWN0b3JpbmcgdG8gYWxsb3cgdXMgdG8g
Z2V0IHRoZSB0eXBlIHN0cmluZyBmb3IgYW4KKyAgICAgICAgICBvYmplY3Qgd2l0aG91dCBuZWVk
aW5nIGEgY2FsbGZyYW1lLgorCisKIDIwMTMtMDEtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8g
YnVpbGQgSlNDIG9uIEFSTS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCmluZGV4IDk1ODVhZTRkY2FkNDZlYzFmMzZlYTA3Y2ZkY2ZhODczNjhmM2Q1
MjUuLmY0MmMxMDU1NWExZmJkMTJmY2ExYzRkODBhZGU1NzQ1NzQyZWM5NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIK
ICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewpAQCAtNzA3LDYgKzcwOCwxMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kZXhJbkJsb2NrKQogICAgICAgICAgICAgY2FzZSBJc1N0cmluZzoKICAgICAgICAgICAg
ICAgICBjb25zdGFudFdhc1NldCA9IHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwganNCb29sZWFu
KGlzSlNTdHJpbmcoY2hpbGQpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIElzT2JqZWN0OgorICAgICAgICAgICAgICAgIGlmIChjaGlsZC5pc051bGwoKSB8fCAh
Y2hpbGQuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9
IHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwganNCb29sZWFuKGNoaWxkLmlzTnVsbCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTcxNiw5ICs3MjIsNjQgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZGV4SW5CbG9jaykKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoU3BlY0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIFR5cGVP
ZjogeworICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBtX2NvZGVCbG9jay0+Z2xv
YmFsRGF0YSgpOworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLmNoaWxkMSgp
KS52YWx1ZSgpOworICAgICAgICBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdENoaWxkID0gZm9yTm9k
ZShub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBKU1Zh
bHVlIHR5cGVTdHJpbmcgPSBqc1R5cGVTdHJpbmdGb3JWYWx1ZSgqZ2xvYmFsRGF0YSwgbV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLCBjaGlsZCk7CisgICAgICAg
ICAgICBpZiAodHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCB0eXBlU3RyaW5nKSkgeworICAgICAg
ICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24o
YWJzdHJhY3RDaGlsZC5tX3R5cGUpKSB7CisgICAgICAgICAgICBpZiAodHJ5U2V0Q29uc3RhbnQo
bm9kZUluZGV4LCBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5nKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY051bWJlcik7
CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmdTcGVj
dWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0cnlTZXRD
b25zdGFudChub2RlSW5kZXgsIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmco
KSkpIHsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVj
U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpc0Zp
bmFsT2JqZWN0U3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUpIHx8IGlzQXJyYXlTcGVj
dWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkgfHwgaXNBcmd1bWVudHNTcGVjdWxhdGlvbihh
YnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0cnlTZXRDb25zdGFudChu
b2RlSW5kZXgsIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoKSkpIHsKKyAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRmluYWxPYmpl
Y3QgfCBTcGVjQXJyYXkgfCBTcGVjQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBtX2ZvdW5k
Q29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uU3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5t
X3R5cGUpKSB7CisgICAgICAgICAgICBpZiAodHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCBnbG9i
YWxEYXRhLT5zbWFsbFN0cmluZ3MuZnVuY3Rpb25TdHJpbmcoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRnVuY3Rpb24pOworICAgICAgICAg
ICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKGFi
c3RyYWN0Q2hpbGQubV90eXBlKSkgeworICAgICAgICAgICAgaWYgKHRyeVNldENvbnN0YW50KG5v
ZGVJbmRleCwgZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmJvb2xlYW5TdHJpbmcoKSkpIHsKKyAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQm9vbGVhbik7
CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBO
b2RlJiBjaGlsZE5vZGUgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOworICAgICAgICAgICAgaWYg
KGlzQ2VsbFNwZWN1bGF0aW9uKGNoaWxkTm9kZS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzU3RyaW5nU3BlY3VsYXRpb24oY2hpbGROb2RlLnByZWRpY3Rpb24oKSkpCisg
ICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJp
bmcpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIG5vZGUuc2V0
Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KFNwZWNTdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
ICAgICAgICAKICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgIGNhc2UgQ29tcGFyZUxlc3NFcToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggMjdhODVjNWNhNGRhODg1NTUwODM4MGQ4MGY4OTkyNGY2Zjc5ZDQ4OS4uOThkNTc3OTIwODA5
NDA0MjFjMDg1MjBmYmU5ZjBiMzdkZmJhMzMwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTMyMjIsNiArMzIyMiwxMiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ug
b3BfdHlwZW9mOiB7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90eXBl
b2YpOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIFBhcnNl
IGZhaWxlZCEgVGhpcyBzaG91bGQgbm90IGhhcHBlbiBiZWNhdXNlIHRoZSBjYXBhYmlsaXRpZXMg
Y2hlY2tlcgogICAgICAgICAgICAgLy8gc2hvdWxkIGhhdmUgY2F1Z2h0IGl0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAppbmRleCBiN2VmYjkzZTNmNDI0ZjQ3YzMy
NzQ3Yzg1MDA2NTY4N2ViNGE0ZDU5Li5hZjUyZTg5MWQ1ODQ1N2FiMzcwYjA0NWFkYTc2Y2M5NGNj
Mzg1OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcApAQCAt
NTk3LDYgKzU5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAg
ICAgICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgY2Fz
ZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAgY2FzZSBUeXBlT2Y6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKQEAgLTExNjYsNiArMTE2Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNjb3Bl
UmVnaXN0ZXJzOgogICAgICAgICBjYXNlIEdldFNjb3BlOgorICAgICAgICBjYXNlIFR5cGVPZjoK
ICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KHB1cmVDU0Uobm9kZSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCmluZGV4IDdkNDYxMDJlMGJjNzU5NDFlZTRhODI5N2RiMDExNWEzYjQ1OGIxMWYu
LjBhMzlkNjZkZjM0ZWE0YjliZmQ3ZTRhN2FmZGYyYjliNGRjOGYxYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApAQCAtMTk4LDYgKzE5OCw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9qbmVxX3B0cjoKICAgICBjYXNlIG9w
X3B1dF90b19iYXNlX3ZhcmlhYmxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX2Jhc2U6CisgICAgY2Fz
ZSBvcF90eXBlb2Y6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlOwogICAgICAgICAKICAgICBj
YXNlIG9wX2NhbGxfdmFyYXJnczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAppbmRleCAxZDhlNzgwOTVmYzYzNzUyNGQyNGYwNzIwMzE2ZmE2NjYxYmU4NzI1Li40YWZlMTYz
MmRiNWYxOGNlNTc0ZWI1MzAzOWZmNTJhYmZkNWQ1YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMTQsNiArMjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzU3RyaW5nLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAog
ICAgIG1hY3JvKElzT2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzRnVu
Y3Rpb24sIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1h
Y3JvKFRvUHJpbWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNs
b2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhTdHJDYXQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAwYmVhN2I1MTczYjUy
MDBlYmY1NjVmOTZmOGMxNWU3OTQzODkyMWE5Li44ODRlYjc4ZGFlMmIyMzU3ODMwZDEyZWMzN2M0
Y2E0YjAwM2M2ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTE0MjgsNiArMTQyOCwxMSBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRp
b25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBqc0lzRnVuY3Rp
b25UeXBlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCitKU0NlbGwqIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uVHlwZU9mKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4ganNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgSlNWYWx1ZSh2YWx1ZSkpLmFzQ2Vs
bCgpOworfQorCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VB
bmRGaW5pc2hQdXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBmYTZmNjViZTkxY2Fi
ZTJlMDM2NjI2YzliM2RiYjdiOGU0Mzg5Mjk4Li41NTYwNDFmMDE5NTllYWFjZWRlMTMxMjc2MjQ5
ZDk3OTJhZTA1MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aApAQCAtMTk5LDYgKzE5OSw3IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
dW5jdGlvbkV4cHJlc3Npb24oRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOCiBkb3VibGUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklzT2JqZWN0KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVy
YXRpb25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mKEV4ZWNTdGF0ZSosIEpTQ2VsbCopIFdURl9JTlRF
Uk5BTDsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZp
bmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0
LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVy
YXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBzaXplX3QgbmV3U2l6ZSkgV1RGX0lOVEVSTkFMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyZjY2NGYzNDJhODQzOWQ5MzAxZGZlMTlkODFkZTY3
OTkzOTE1OTIzLi44ZDlmNzhlNjVkYzZkNWUyMTkwYWZiOTZiYjUxMTYzMTFjMGJkODc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTE4LDcgKzUxOCwxMyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIFR5cGVPZjogewor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IGIzNTAzMjExZDMxNTc3Nzk5NjM0NDE3NDBlM2M2MTg1M2RjZmQ4N2UuLjZlNWUyOTY3MmJjM2Zh
YjU2NGY5Y2QyMTM3ZGM3Y2UwNjNlYzBiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDU4NCw2ICs0NTg0LDY2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYm9v
bGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIGNhc2UgVHlwZU9mOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFn
R1BSKCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIg
PSB0ZW1wLmdwcigpOworICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3QgZG9uZUp1bXBzOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCB0YWdHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZykpOworICAgICAgICBOb2RlJiBjaGlsZCA9IG1faml0LmdyYXBoKClbbm9kZS5jaGlsZDEo
KV07CisgICAgICAgIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQ
UiksIG5vZGUuY2hpbGQxKCksIGlzTm90Q2VsbCk7CisKKyAgICAgICAgaWYgKCFjaGlsZC5zaG91
bGRTcGVjdWxhdGVOb25TdHJpbmdDZWxsKCkpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHRlbXBHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0g
bV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
U3RyaW5nVHlwZSkpOworICAgICAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0cmlu
ZygpKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS5jaGlsZDEoKSwgbm90U3RyaW5nKTsKKyAgICAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxs
U3RyaW5ncy5zdHJpbmdTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7Cisg
ICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBp
ZiAoIWNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgbm90
U3RyaW5nLmxpbmsoJm1faml0KTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblR5cGVPZiwgcmVzdWx0R1BSLCBwYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAgICBkb25l
SnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVPZiwgcmVzdWx0R1BS
LCBwYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgp
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgp
KSB7CisgICAgICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOworCisgICAgICAgICAgICBt
X2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHRhZ0dQUiwgdGVtcEdQUik7CisgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxl
cjo6QWJvdmVPckVxdWFsLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6Okxvd2VzdFRhZyArIDEpKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcobV9qaXQuZ2xv
YmFsRGF0YSgpKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1f
aml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOworCisgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RVbmRlZmluZWQgPSBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVm
aW5lZFRhZykpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+c21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZyhtX2ppdC5nbG9iYWxEYXRh
KCkpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVt
cCgpKTsKKyAgICAgICAgICAgIG5vdFVuZGVmaW5lZC5saW5rKCZtX2ppdCk7CisKKyAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51bGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxl
cjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNt
YWxsU3RyaW5ncy5vYmplY3RTdHJpbmcobV9qaXQuZ2xvYmFsRGF0YSgpKSksIHJlc3VsdEdQUik7
CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAg
ICBub3ROdWxsLmxpbmsoJm1faml0KTsKKworICAgICAgICAgICAgLy8gT25seSBib29sZWFuIGxl
ZnQKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPnNtYWxsU3RyaW5ncy5ib29sZWFuU3RyaW5nKG1faml0Lmdsb2JhbERhdGEoKSkpLCByZXN1
bHRHUFIpOworICAgICAgICB9CisgICAgICAgIGRvbmVKdW1wcy5saW5rKCZtX2ppdCk7CisgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KIAogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgRmx1c2g6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAzOWM2MzMx
OTgzM2IyMDI5NzZlYzZkZGI0MWM5NTM1ZTJkMDEyNmM2Li44Y2E5NGMzNTVjY2FmNTk1YTU5MWJm
NGM1Y2M4MjEwNDQ2MDUwYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQwODgsNyArNDA4OCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgY2FjaGVkR2V0QnlJZChub2Rl
LmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCks
IG5vdENlbGwsIERvbnRTcGlsbCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0g
ICAgICAgIAorCiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNDUxMSw2ICs0NTExLDY0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCisgICAgY2FzZSBUeXBlT2Y6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVl
LmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwor
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3QgZG9uZUp1bXBzOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisK
KyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0
KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKKyAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2ppdC5ncmFwaCgpW25vZGUuY2hpbGQxKCldOwor
ICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQorICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgaXNOb3RDZWxsKTsKKworICAgICAgICBpZiAoIWNoaWxkLnNob3VsZFNwZWN1bGF0ZU5v
blN0cmluZ0NlbGwoKSkgeworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChK
SVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVj
dHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwor
ICAgICAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQorICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiks
IG5vZGUuY2hpbGQxKCksIG5vdFN0cmluZyk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCkp
LCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkp
OworICAgICAgICAgICAgaWYgKCFjaGlsZC5zaG91bGRTcGVjdWxhdGVTdHJpbmcoKSkgeworICAg
ICAgICAgICAgICAgIG5vdFN0cmluZy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25UeXBlT2YsIHJlc3VsdEdQUiwgdmFsdWVHUFIpOworICAgICAg
ICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHlw
ZU9mLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQo
bV9qaXQuanVtcCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2hpbGQuc2hvdWxkU3Bl
Y3VsYXRlQ2VsbCgpKSB7CisgICAgICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOworICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TnVtYmVyID0gbV9qaXQuYnJhbmNoVGVzdDY0
KEpJVENvbXBpbGVyOjpaZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFs
bFN0cmluZ3MubnVtYmVyU3RyaW5nQWRkcmVzcygpLCByZXN1bHRHUFIpOworICAgICAgICAgICAg
ZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgbm90TnVtYmVyLmxp
bmsoJm1faml0KTsKKworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90VW5kZWZpbmVk
ID0gbV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZUdQUiwgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW02NChWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgbV9qaXQu
bG9hZFB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmdB
ZGRyZXNzKCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CisgICAgICAgICAgICBub3RVbmRlZmluZWQubGluaygmbV9qaXQpOworCisgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3ROdWxsID0gbV9qaXQuYnJhbmNoNjQoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NChWYWx1
ZU51bGwpKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5z
bWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nQWRkcmVzcygpLCByZXN1bHRHUFIpOworICAgICAgICAg
ICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgbm90TnVsbC5s
aW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAgIC8vIE9ubHkgYm9vbGVhbiBsZWZ0CisgICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21hbGxTdHJpbmdzLmJvb2xl
YW5TdHJpbmdBZGRyZXNzKCksIHJlc3VsdEdQUik7CisgICAgICAgIH0KKyAgICAgICAgZG9uZUp1
bXBzLmxpbmsoJm1faml0KTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGls
ZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGbHVzaDoKICAgICBj
YXNlIFBoaToKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmlu
ZGV4IDlmZjMxOGIwOGE0NTk4YzNlNjE4YWEzZmU3Nzg2YmJhOGFjMWMzNzguLjZjZjcwNTBiOGFm
NmU2OWE0M2IxZGRkNDAxNzMwNmY3MmRlN2E3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCkBAIC00OTIsNiArNDkyLDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoYm9vbCBmdWxs
R0MpCiAgICAgICAgICAgICAgICAgbV9nbG9iYWxEYXRhLT5jb2RlQmxvY2tzQmVpbmdDb21waWxl
ZFtpXS0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgICAgIH0KIAorICAgICAgICBtX2ds
b2JhbERhdGEtPnNtYWxsU3RyaW5ncy52aXNpdFN0cm9uZ1JlZmVyZW5jZXModmlzaXRvcik7CisK
ICAgICAgICAgewogICAgICAgICAgICAgR0NQSEFTRShWaXNpdE1hY2hpbmVSb290cyk7CiAgICAg
ICAgICAgICBNQVJLX0xPR19ST09UKHZpc2l0b3IsICJDKysgU3RhY2siKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKaW5kZXggYTMz
MWM2YzE1MDE4Y2E4MmY3NGY5YTI5ZDI5ZDNiZmU5OGFmN2Q3ZC4uOTQ1MDdmOTdlODllZjJkZWMz
ZTI3NzQyNGNkMTkxZTIwZTc1OWE5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKQEAgLTc5LDE5ICs3OSwxOSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKICAgICBp
ZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbihmYWxzZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKGdsb2JhbERhdGEp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5zbWFsbFN0cmlu
Z3MuZmFsc2VTdHJpbmcoKSk7CiAKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbih0cnVl
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5zbWFsbFN0cmlu
Z3MudHJ1ZVN0cmluZyhnbG9iYWxEYXRhKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnRydWVTdHJpbmcoKSk7CiAKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cygmQm9vbGVhbk9iamVjdDo6c19pbmZvKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAKICAgICBpZiAoYXNCb29sZWFuT2JqZWN0KHRoaXNW
YWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZyhn
bG9iYWxEYXRhKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+
c21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKCkpOwogCiAgICAgQVNTRVJUKGFzQm9vbGVhbk9iamVj
dCh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFuKHRydWUpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy50cnVlU3RyaW5n
KGdsb2JhbERhdGEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNt
YWxsU3RyaW5ncy50cnVlU3RyaW5nKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDJkZDhkZjhiMzYz
MzY2ZDU5YWQ2MmZkNzE0NzhhODAzNTMyMWZjMGIuLjhmMGM4OTViMWIwZTZiNjM2ZTU2ZmM3Mjhl
MDFjYmI4NmY5NDllZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcApAQCAtMjMwLDYgKzIzMCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxE
YXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxD
b2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHNt
YWxsU3RyaW5ncy5pbml0aWFsaXplQ29tbW9uU3RyaW5ncygqdGhpcyk7CiAKICAgICB3dGZUaHJl
YWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShleGlzdGluZ0VudHJ5SWRlbnRpZmll
clRhYmxlKTsKIApAQCAtMjQ1LDcgKzI0Niw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRh
KEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNlbmRp
ZgogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKLSAgICAKKwogICAgIExMSW50
OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6
OmVuYWJsZVByb2ZpbGVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAppbmRleCAyNDVjNDhhNTE5ZjkzMGY3MDhhMzhmNzAzNTM0Mjc5MzQ5NWJmYWRlLi5jNGVhNTUy
OTMwZDY1YjBjOTA1ZmMzMGRhM2UyYTY2NDEzYTNmMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTMzMyw3ICszMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGlubGluZSBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmVt
cHR5U3RyaW5nKGdsb2JhbERhdGEpOworICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxT
dHJpbmdzLmVtcHR5U3RyaW5nKCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBKU1N0cmlu
ZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBVQ2hh
ciBjKQpAQCAtMzg2LDcgKzM4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICAgICAg
aW50IHNpemUgPSBzLmxlbmd0aCgpOwogICAgICAgICBpZiAoIXNpemUpCi0gICAgICAgICAgICBy
ZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKGdsb2JhbERhdGEpOwor
ICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygp
OwogICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICBVQ2hhciBjID0gcy5jaGFy
YWN0ZXJBdCgwKTsKICAgICAgICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0cmlu
ZykKQEAgLTQwMiw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKG9m
ZnNldCArIGxlbmd0aCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy0+bGVuZ3RoKCkpKTsKICAg
ICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAg
ICAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxT
dHJpbmdzLmVtcHR5U3RyaW5nKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIGdsb2Jh
bERhdGEtPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZygpOwogICAgICAgICByZXR1cm4ganNTdWJz
dHJpbmcoZ2xvYmFsRGF0YSwgcy0+dmFsdWUoZXhlYyksIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9
CiAKQEAgLTQxMiw3ICs0MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKGxl
bmd0aCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwogICAgICAgICBBU1NF
UlQob2Zmc2V0ICsgbGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7
CiAgICAgICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNt
YWxsU3RyaW5ncy5lbXB0eVN0cmluZyhnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBn
bG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsKICAgICAgICAgaWYgKGxlbmd0
aCA9PSAxKSB7CiAgICAgICAgICAgICBVQ2hhciBjID0gcy5jaGFyYWN0ZXJBdChvZmZzZXQpOwog
ICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQpAQCAtNDI3LDcg
KzQyNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgKyBs
ZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpKTsKICAgICAgICAgaWYg
KCFsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmVt
cHR5U3RyaW5nKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNt
YWxsU3RyaW5ncy5lbXB0eVN0cmluZygpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAg
ICAgICAgICAgIFVDaGFyIGMgPSBzLmNoYXJhY3RlckF0KG9mZnNldCk7CiAgICAgICAgICAgICBp
ZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCkBAIC00NDAsNyArNDQwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBpbnQgc2l6ZSA9IHMubGVuZ3RoKCk7CiAgICAg
ICAgIGlmICghc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmlu
Z3MuZW1wdHlTdHJpbmcoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0
YS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGlmIChzaXplID09IDEpIHsK
ICAgICAgICAgICAgIFVDaGFyIGMgPSBzLmNoYXJhY3RlckF0KDApOwogICAgICAgICAgICAgaWYg
KGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcAppbmRleCA2YjRmZjBmMDhhM2VjOTUxYmFjODA4OGFkMzg1OWZkMmU4
YzU2M2M3Li40NTdlYjBhNjk0MDI2ZDBkYzM2MDIxZDdmYmZmZjZiMmI4OGVjNDAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcApAQCAtMjk1LDEzICsyOTUsMTMg
QEAgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAogICAgIGlmIChpc0RvdWJsZSgpKQogICAgICAgICByZXR1cm4ganNTdHJpbmcoJmdsb2Jh
bERhdGEsIGdsb2JhbERhdGEubnVtZXJpY1N0cmluZ3MuYWRkKGFzRG91YmxlKCkpKTsKICAgICBp
ZiAoaXNUcnVlKCkpCi0gICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy50cnVl
U3RyaW5nKCZnbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJp
bmdzLnRydWVTdHJpbmcoKTsKICAgICBpZiAoaXNGYWxzZSgpKQotICAgICAgICByZXR1cm4gZ2xv
YmFsRGF0YS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoJmdsb2JhbERhdGEpOworICAgICAgICBy
ZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKTsKICAgICBpZiAoaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5udWxsU3RyaW5n
KCZnbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLm51
bGxTdHJpbmcoKTsKICAgICBpZiAoaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIGdsb2Jh
bERhdGEuc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygmZ2xvYmFsRGF0YSk7CisgICAgICAg
IHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsKIAogICAg
IEFTU0VSVChpc0NlbGwoKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGFzQ2VsbCgpLT50b1ByaW1p
dGl2ZShleGVjLCBQcmVmZXJTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmNwcAppbmRleCBkOTZiYWU1NzVlNGNmMmQyZWQ2MTg1ZDBjNjk1OWZhYzcy
NmM4NWY5Li4zZGNjYjJhNWY5MDBhYThlNzNlODA1MDUxNmVjMDM2Y2FiOGEyYWJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtNTYsMjggKzU2
LDMyIEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiAgICAgcmV0dXJuIGpzTnVtYmVyKHAxLnRv
TnVtYmVyKGNhbGxGcmFtZSkgKyBwMi50b051bWJlcihjYWxsRnJhbWUpKTsKIH0KIAotSlNWYWx1
ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQor
SlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKIHsKLSAgICBKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEgPSBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKICAgICBpZiAodi5pc1Vu
ZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MudW5kZWZp
bmVkU3RyaW5nKCZnbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxT
dHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwogICAgIGlmICh2LmlzQm9vbGVhbigpKQotICAgICAg
ICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MuYm9vbGVhblN0cmluZygmZ2xvYmFsRGF0
YSk7CisgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5ib29sZWFuU3RyaW5n
KCk7CiAgICAgaWYgKHYuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21h
bGxTdHJpbmdzLm51bWJlclN0cmluZygmZ2xvYmFsRGF0YSk7CisgICAgICAgIHJldHVybiBnbG9i
YWxEYXRhLnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcoKTsKICAgICBpZiAodi5pc1N0cmluZygp
KQotICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCZn
bG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLnN0cmlu
Z1N0cmluZygpOwogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgLy8gUmV0dXJuICJ1
bmRlZmluZWQiIGZvciBvYmplY3RzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQKICAgICAgICAgLy8g
YXMgbnVsbCB3aGVuIGRvaW5nIGNvbXBhcmlzb25zLgotICAgICAgICBpZiAoYXNPYmplY3Qodikt
PnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGNhbGxGcmFtZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKSkKLSAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5n
cy51bmRlZmluZWRTdHJpbmcoJmdsb2JhbERhdGEpOworICAgICAgICBpZiAoYXNPYmplY3Qodikt
PnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCisgICAg
ICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCk7
CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3Qodik7CiAgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxE
YXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkKLSAgICAgICAgICAgIHJldHVy
biBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5mdW5jdGlvblN0cmluZygmZ2xvYmFsRGF0YSk7Cisg
ICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MuZnVuY3Rpb25TdHJpbmco
KTsKICAgICB9Ci0gICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLm9iamVjdFN0cmlu
ZygmZ2xvYmFsRGF0YSk7CisgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLm9iamVj
dFN0cmluZygpOworfQorCitKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIHYpCit7CisgICAgcmV0dXJuIGpzVHlwZVN0cmluZ0ZvclZhbHVl
KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgdik7CiB9CiAKIGJvb2wganNJc09iamVjdFR5cGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
VmFsdWUgdikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRl
eCA4ZTBhMGEzOTMxNzdiMGNjNTU3OTcxYmQ2OTU1NGI0YmI0OTY3NmIyLi40ZmYwNzQxNmRlZWQ4
YWNkY2FhYTk1YjcwYTEzNjQ2ZDczZGJmMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgTkVWRVJfSU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShDYWxsRnJhbWUqLCBKU1ZhbHVl
LCBKU1ZhbHVlKTsKICAgICBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKENhbGxGcmFtZSos
IEpTVmFsdWUpOworICAgIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoSlNHbG9iYWxEYXRh
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBib29sIGpzSXNPYmplY3RUeXBlKENh
bGxGcmFtZSosIEpTVmFsdWUpOwogICAgIGJvb2wganNJc0Z1bmN0aW9uVHlwZShKU1ZhbHVlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKaW5k
ZXggNTZhMzU5Mjc5ZGNjZGY2NWQxYTljYzVhZWVhZjg2ZTc4NWU1ZmE4ZC4uNjU1MmQ3Y2ZiY2Ri
ODAzMWJjZjljZGNkNzc0ZTdmOThiNTc3M2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCkBAIC04MCw2ICs4MCwyMiBAQCBTbWFsbFN0cmlu
Z3M6OlNtYWxsU3RyaW5ncygpCiAgICAgICAgIG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1tpXSA9
IDA7CiB9CiAKK3ZvaWQgU21hbGxTdHJpbmdzOjppbml0aWFsaXplQ29tbW9uU3RyaW5ncyhKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgY3JlYXRlRW1wdHlTdHJpbmcoJmdsb2JhbERh
dGEpOworI2RlZmluZSBKU0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX0lOSVRJQUxJWkUobmFt
ZSkgaW5pdGlhbGl6ZSgmZ2xvYmFsRGF0YSwgbV8jI25hbWUsICNuYW1lKTsKKyAgICBKU0NfQ09N
TU9OX1NUUklOR1NfRUFDSF9OQU1FKEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVfSU5JVElB
TElaRSkKKyN1bmRlZiBKU0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX0lOSVRJQUxJWkUKK30K
Kwordm9pZCBTbWFsbFN0cmluZ3M6OnZpc2l0U3Ryb25nUmVmZXJlbmNlcyhTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV9lbXB0
eVN0cmluZyk7CisjZGVmaW5lIEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVfVklTSVQobmFt
ZSkgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJm1fIyNuYW1lKTsKKyAgICBKU0Nf
Q09NTU9OX1NUUklOR1NfRUFDSF9OQU1FKEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVfVklT
SVQpCisjdW5kZWYgSlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVURV9WSVNJVAorfQorCiBTbWFs
bFN0cmluZ3M6On5TbWFsbFN0cmluZ3MoKQogewogfQpAQCAtODksOSArMTA1LDYgQEAgdm9pZCBT
bWFsbFN0cmluZ3M6OmZpbmFsaXplU21hbGxTdHJpbmdzKCkKICAgICBmaW5hbGl6ZShtX2VtcHR5
U3RyaW5nKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nQ291bnQ7ICsraSkKICAgICAgICAgZmluYWxpemUobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdz
W2ldKTsKLSNkZWZpbmUgSlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVURV9GSU5BTElaRShuYW1l
KSBmaW5hbGl6ZShtXyMjbmFtZSk7Ci0gICAgSlNDX0NPTU1PTl9TVFJJTkdTX0VBQ0hfTkFNRShK
U0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX0ZJTkFMSVpFKQotI3VuZGVmIEpTQ19DT01NT05f
U1RSSU5HU19BVFRSSUJVVEVfRklOQUxJWkUKIH0KIAogdm9pZCBTbWFsbFN0cmluZ3M6OmNyZWF0
ZUVtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5kZXggNWJjOWQyMjUyMzlmYmQzODkwNjZj
ZWI2ZjRiYzlmNTk5NzFjNzUwZC4uMTViODY2YmJlMmNlMTg1NmI0NTQyN2JlZTMxODk2NDVkYjVm
NDI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJp
bmdzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgK
QEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgU21hbGxTdHJpbmdzX2gKICNkZWZpbmUgU21hbGxT
dHJpbmdzX2gKIAorI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCiAjaW5jbHVkZSA8d3RmL0Zp
eGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CkBAIC02MSwxMCArNjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU21h
bGxTdHJpbmdzKCk7CiAgICAgICAgIH5TbWFsbFN0cmluZ3MoKTsKIAotICAgICAgICBKU1N0cmlu
ZyogZW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorICAgICAgICBKU1N0cmlu
ZyogZW1wdHlTdHJpbmcoKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZW1wdHlTdHJp
bmcpCi0gICAgICAgICAgICAgICAgY3JlYXRlRW1wdHlTdHJpbmcoZ2xvYmFsRGF0YSk7CiAgICAg
ICAgICAgICByZXR1cm4gbV9lbXB0eVN0cmluZzsKICAgICAgICAgfQogCkBAIC04MSwxMiArODEs
MTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNTdHJpbmcqKiBzaW5nbGVDaGFyYWN0
ZXJTdHJpbmdzKCkgeyByZXR1cm4gJm1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5nc1swXTsgfQogCisg
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZUNvbW1vblN0cmluZ3MoSlNHbG9iYWxEYXRhJik7CisgICAg
ICAgIHZvaWQgdmlzaXRTdHJvbmdSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CisKICNkZWZpbmUg
SlNDX0NPTU1PTl9TVFJJTkdTX0FDQ0VTU09SX0RFRklOSVRJT04obmFtZSkgXAotICAgICAgICBK
U1N0cmluZyogbmFtZSMjU3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkgY29uc3QgXAor
ICAgICAgICBKU1N0cmluZyogbmFtZSMjU3RyaW5nKCkgY29uc3QgXAogICAgICAgICB7IFwKLSAg
ICAgICAgICAgIGlmICghbV8jI25hbWUpIFwKLSAgICAgICAgICAgICAgICBpbml0aWFsaXplKGds
b2JhbERhdGEsIG1fIyNuYW1lLCAjbmFtZSk7IFwKICAgICAgICAgICAgIHJldHVybiBtXyMjbmFt
ZTsgXAorICAgICAgICB9IFwKKyAgICAgICAgSlNTdHJpbmcgKiBjb25zdCAqIG5hbWUjI1N0cmlu
Z0FkZHJlc3MoKSBcCisgICAgICAgIHsgXAorICAgICAgICAgICAgcmV0dXJuICZtXyMjbmFtZTsg
XAogICAgICAgICB9CiAgICAgICAgIEpTQ19DT01NT05fU1RSSU5HU19FQUNIX05BTUUoSlNDX0NP
TU1PTl9TVFJJTkdTX0FDQ0VTU09SX0RFRklOSVRJT04pCiAjdW5kZWYgSlNDX0NPTU1PTl9TVFJJ
TkdTX0FDQ0VTU09SX0RFRklOSVRJT04KQEAgLTEwMCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBpbml0aWFsaXplKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNT
dHJpbmcqJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHZhbHVlKSBjb25zdDsKIAogICAgICAgICBKU1N0
cmluZyogbV9lbXB0eVN0cmluZzsKLSNkZWZpbmUgSlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVU
RV9ERUNMQVJBVElPTihuYW1lKSBtdXRhYmxlIEpTU3RyaW5nKiBtXyMjbmFtZTsKKyNkZWZpbmUg
SlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVURV9ERUNMQVJBVElPTihuYW1lKSBKU1N0cmluZyog
bV8jI25hbWU7CiAgICAgICAgIEpTQ19DT01NT05fU1RSSU5HU19FQUNIX05BTUUoSlNDX0NPTU1P
Tl9TVFJJTkdTX0FUVFJJQlVURV9ERUNMQVJBVElPTikKICN1bmRlZiBKU0NfQ09NTU9OX1NUUklO
R1NfQVRUUklCVVRFX0RFQ0xBUkFUSU9OCiAgICAgICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJh
Y3RlclN0cmluZ3Nbc2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnRdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181817</attachid>
            <date>2013-01-08 18:33:24 -0800</date>
            <delta_ts>2013-01-08 18:34:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98898-20130108183028.patch</filename>
            <type>text/plain</type>
            <size>32189</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTAyZTM2MmE3NzM4OTNiNjAyYmY5MjU0MjZkZTlhODM4MGJlMmFlLi5lOWYzMjg0YTdkNmM2NzFj
OWUyNjY2NWYzYTlhNzAwNjVhMmJhMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxMy0wMS0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgb3BfdHlwZW9mIGluIHRoZSBERkcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIFR5cGVPZiBub2RlIHRvIHRoZSBE
RkcgdG8gc3VwcG9ydCBvcF90eXBlb2YuCisKKyAgICAgICAgVG8gYXZvaWQgYWRkaW5nIHRvbyBt
dWNoIEdDIGhvcnJvciwgdGhpcyBhbHNvIG1ha2VzIHRoZQorICAgICAgICBjb21tb24gc3RyaW5n
cyBwb3J0aW9uIG9mIHRoZSBTbWFsbFN0cmluZyBjYWNoZSBzdHJvbmdseQorICAgICAgICByZWZl
cmVuY2VkLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAgIFdlIHRyeSB0byBk
ZXRlcm1pbmUgdGhlIHJlc3VsdCBlYXJseSBoZXJlLCBhbmQgc3Vic3RpdHV0ZSBpbiBhIGNvbnN0
YW50LgorICAgICAgICAgIE90aGVyd2lzZSB3ZSBsZWF2ZSB0aGUgbm9kZSBpbnRhY3QsIGFuZCBz
ZXQgdGhlIHJlc3VsdCB0eXBlIHRvIFNwZWNTdHJpbmcuCisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgICAgUGFyc2Ugb3BfdHlwZW9mCisgICAgICAgICogZGZnL0RGR0NTRVBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgor
ICAgICAgICAgIFR5cGVPZiBub2RlcyBjYW4gYmUgc3ViamVjdGVkIHRvIHB1cmUgQ1NFCisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBp
bGVPcGNvZGUpOgorICAgICAgICAgIFdlIGNhbiBoYW5kbGUgdHlwZW9mLgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgICBEZWZpbmUgdGhlIG5v
ZGUuCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmg6CisgICAgICAgICAgQWRkIG9wZXJhdGlvblR5cGVPZiB0byBzdXBwb3J0IHRo
ZSBub24tdHJpdmlhbCBjYXNlcy4KKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgICBBY3R1YWwgY29kZWdlbgorICAgICAgICAq
IHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmluZ0ZvclZh
bHVlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAgIFNvbWUgcmVmYWN0b3JpbmcgdG8gYWxsb3cgdXMgdG8g
Z2V0IHRoZSB0eXBlIHN0cmluZyBmb3IgYW4KKyAgICAgICAgICBvYmplY3Qgd2l0aG91dCBuZWVk
aW5nIGEgY2FsbGZyYW1lLgorCisKIDIwMTMtMDEtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8g
YnVpbGQgSlNDIG9uIEFSTS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwCmluZGV4IDk1ODVhZTRkY2FkNDZlYzFmMzZlYTA3Y2ZkY2ZhODczNjhmM2Q1
MjUuLmY0MmMxMDU1NWExZmJkMTJmY2ExYzRkODBhZGU1NzQ1NzQyZWM5NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIK
ICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewpAQCAtNzA3LDYgKzcwOCwxMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kZXhJbkJsb2NrKQogICAgICAgICAgICAgY2FzZSBJc1N0cmluZzoKICAgICAgICAgICAg
ICAgICBjb25zdGFudFdhc1NldCA9IHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwganNCb29sZWFu
KGlzSlNTdHJpbmcoY2hpbGQpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIElzT2JqZWN0OgorICAgICAgICAgICAgICAgIGlmIChjaGlsZC5pc051bGwoKSB8fCAh
Y2hpbGQuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9
IHRyeVNldENvbnN0YW50KG5vZGVJbmRleCwganNCb29sZWFuKGNoaWxkLmlzTnVsbCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTcxNiw5ICs3MjIsNjQgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZGV4SW5CbG9jaykKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoU3BlY0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIFR5cGVP
ZjogeworICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBtX2NvZGVCbG9jay0+Z2xv
YmFsRGF0YSgpOworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLmNoaWxkMSgp
KS52YWx1ZSgpOworICAgICAgICBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdENoaWxkID0gZm9yTm9k
ZShub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBKU1Zh
bHVlIHR5cGVTdHJpbmcgPSBqc1R5cGVTdHJpbmdGb3JWYWx1ZSgqZ2xvYmFsRGF0YSwgbV9jb2Rl
QmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLCBjaGlsZCk7CisgICAgICAg
ICAgICBpZiAodHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCB0eXBlU3RyaW5nKSkgeworICAgICAg
ICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyU3BlY3VsYXRpb24o
YWJzdHJhY3RDaGlsZC5tX3R5cGUpKSB7CisgICAgICAgICAgICBpZiAodHJ5U2V0Q29uc3RhbnQo
bm9kZUluZGV4LCBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5nKCkpKSB7Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY051bWJlcik7
CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmdTcGVj
dWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0cnlTZXRD
b25zdGFudChub2RlSW5kZXgsIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmco
KSkpIHsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVj
U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpc0Zp
bmFsT2JqZWN0U3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUpIHx8IGlzQXJyYXlTcGVj
dWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkgfHwgaXNBcmd1bWVudHNTcGVjdWxhdGlvbihh
YnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIGlmICh0cnlTZXRDb25zdGFudChu
b2RlSW5kZXgsIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoKSkpIHsKKyAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRmluYWxPYmpl
Y3QgfCBTcGVjQXJyYXkgfCBTcGVjQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBtX2ZvdW5k
Q29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uU3BlY3VsYXRpb24oYWJzdHJhY3RDaGlsZC5t
X3R5cGUpKSB7CisgICAgICAgICAgICBpZiAodHJ5U2V0Q29uc3RhbnQobm9kZUluZGV4LCBnbG9i
YWxEYXRhLT5zbWFsbFN0cmluZ3MuZnVuY3Rpb25TdHJpbmcoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRnVuY3Rpb24pOworICAgICAgICAg
ICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKGFi
c3RyYWN0Q2hpbGQubV90eXBlKSkgeworICAgICAgICAgICAgaWYgKHRyeVNldENvbnN0YW50KG5v
ZGVJbmRleCwgZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmJvb2xlYW5TdHJpbmcoKSkpIHsKKyAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQm9vbGVhbik7
CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBO
b2RlJiBjaGlsZE5vZGUgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOworICAgICAgICAgICAgaWYg
KGlzQ2VsbFNwZWN1bGF0aW9uKGNoaWxkTm9kZS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzU3RyaW5nU3BlY3VsYXRpb24oY2hpbGROb2RlLnByZWRpY3Rpb24oKSkpCisg
ICAgICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJp
bmcpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIG5vZGUuc2V0
Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KFNwZWNTdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
ICAgICAgICAKICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgIGNhc2UgQ29tcGFyZUxlc3NFcToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggMjdhODVjNWNhNGRhODg1NTUwODM4MGQ4MGY4OTkyNGY2Zjc5ZDQ4OS4uOThkNTc3OTIwODA5
NDA0MjFjMDg1MjBmYmU5ZjBiMzdkZmJhMzMwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTMyMjIsNiArMzIyMiwxMiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ug
b3BfdHlwZW9mOiB7CisgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFR5cGVPZiwgZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF90eXBl
b2YpOworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIFBhcnNl
IGZhaWxlZCEgVGhpcyBzaG91bGQgbm90IGhhcHBlbiBiZWNhdXNlIHRoZSBjYXBhYmlsaXRpZXMg
Y2hlY2tlcgogICAgICAgICAgICAgLy8gc2hvdWxkIGhhdmUgY2F1Z2h0IGl0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAppbmRleCBiN2VmYjkzZTNmNDI0ZjQ3YzMy
NzQ3Yzg1MDA2NTY4N2ViNGE0ZDU5Li5hZjUyZTg5MWQ1ODQ1N2FiMzcwYjA0NWFkYTc2Y2M5NGNj
Mzg1OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcApAQCAt
NTk3LDYgKzU5Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAg
ICAgICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAgICAgY2Fz
ZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAgY2FzZSBUeXBlT2Y6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKQEAgLTExNjYsNiArMTE2Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBjYXNlIEdldFNjb3Bl
UmVnaXN0ZXJzOgogICAgICAgICBjYXNlIEdldFNjb3BlOgorICAgICAgICBjYXNlIFR5cGVPZjoK
ICAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KHB1cmVDU0Uobm9kZSkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCmluZGV4IDdkNDYxMDJlMGJjNzU5NDFlZTRhODI5N2RiMDExNWEzYjQ1OGIxMWYu
LjBhMzlkNjZkZjM0ZWE0YjliZmQ3ZTRhN2FmZGYyYjliNGRjOGYxYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApAQCAtMTk4LDYgKzE5OCw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9qbmVxX3B0cjoKICAgICBjYXNlIG9w
X3B1dF90b19iYXNlX3ZhcmlhYmxlOgogICAgIGNhc2Ugb3BfcHV0X3RvX2Jhc2U6CisgICAgY2Fz
ZSBvcF90eXBlb2Y6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlOwogICAgICAgICAKICAgICBj
YXNlIG9wX2NhbGxfdmFyYXJnczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAppbmRleCAxZDhlNzgwOTVmYzYzNzUyNGQyNGYwNzIwMzE2ZmE2NjYxYmU4NzI1Li40YWZlMTYz
MmRiNWYxOGNlNTc0ZWI1MzAzOWZmNTJhYmZkNWQ1YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0yMTQsNiArMjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKElzU3RyaW5nLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAog
ICAgIG1hY3JvKElzT2JqZWN0LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1hY3JvKElzRnVu
Y3Rpb24sIE5vZGVSZXN1bHRCb29sZWFuKSBcCisgICAgbWFjcm8oVHlwZU9mLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhMb2dpY2FsTm90LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIG1h
Y3JvKFRvUHJpbWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNs
b2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhTdHJDYXQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAwYmVhN2I1MTczYjUy
MDBlYmY1NjVmOTZmOGMxNWU3OTQzODkyMWE5Li44ODRlYjc4ZGFlMmIyMzU3ODMwZDEyZWMzN2M0
Y2E0YjAwM2M2ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTE0MjgsNiArMTQyOCwxMSBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRp
b25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBqc0lzRnVuY3Rp
b25UeXBlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogfQogCitKU0NlbGwqIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uVHlwZU9mKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4ganNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgSlNWYWx1ZSh2YWx1ZSkpLmFzQ2Vs
bCgpOworfQorCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0b3JhZ2VB
bmRGaW5pc2hQdXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgRW5jb2RlZEpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBmYTZmNjViZTkxY2Fi
ZTJlMDM2NjI2YzliM2RiYjdiOGU0Mzg5Mjk4Li41NTYwNDFmMDE5NTllYWFjZWRlMTMxMjc2MjQ5
ZDk3OTJhZTA1MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aApAQCAtMTk5LDYgKzE5OSw3IEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
dW5jdGlvbkV4cHJlc3Npb24oRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lOCiBkb3VibGUgREZH
X09QRVJBVElPTiBvcGVyYXRpb25GTW9kT25JbnRzKGludDMyX3QsIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbklzT2JqZWN0KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBzaXplX3QgREZHX09QRVJBVElPTiBvcGVy
YXRpb25Jc0Z1bmN0aW9uKEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitKU0NlbGwqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uVHlwZU9mKEV4ZWNTdGF0ZSosIEpTQ2VsbCopIFdURl9JTlRF
Uk5BTDsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3RvcmFnZUFuZEZp
bmlzaFB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0
LCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVy
YXRpb25BbGxvY2F0ZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZShFeGVjU3RhdGUqLCBzaXplX3QgbmV3U2l6ZSkgV1RGX0lOVEVSTkFMOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCAyZjY2NGYzNDJhODQzOWQ5MzAxZGZlMTlkODFkZTY3
OTkzOTE1OTIzLi44ZDlmNzhlNjVkYzZkNWUyMTkwYWZiOTZiYjUxMTYzMTFjMGJkODc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNTE4LDcgKzUxOCwxMyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIFR5cGVPZjogewor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IGIzNTAzMjExZDMxNTc3Nzk5NjM0NDE3NDBlM2M2MTg1M2RjZmQ4N2UuLjA1Y2E2OWE3MDc1NjYx
YWQ0Njc2MmU0ODZhZmMxNWQxMDYxODAxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDU4NCw2ICs0NTg0LDY2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYm9v
bGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIGNhc2UgVHlwZU9mOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgdGFnR1BSID0gdmFsdWUudGFn
R1BSKCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIg
PSB0ZW1wLmdwcigpOworICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3QgZG9uZUp1bXBzOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCB0YWdHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZykpOworICAgICAgICBOb2RlJiBjaGlsZCA9IG1faml0LmdyYXBoKClbbm9kZS5jaGlsZDEo
KV07CisgICAgICAgIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQ
UiksIG5vZGUuY2hpbGQxKCksIGlzTm90Q2VsbCk7CisKKyAgICAgICAgaWYgKCFjaGlsZC5zaG91
bGRTcGVjdWxhdGVOb25TdHJpbmdDZWxsKCkpIHsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHRlbXBHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0g
bV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
U3RyaW5nVHlwZSkpOworICAgICAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZVN0cmlu
ZygpKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS5jaGlsZDEoKSwgbm90U3RyaW5nKTsKKyAgICAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxs
U3RyaW5ncy5zdHJpbmdTdHJpbmcoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVt
cHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBpZiAoIWNoaWxkLnNob3VsZFNw
ZWN1bGF0ZVN0cmluZygpKSB7CisgICAgICAgICAgICAgICAgbm90U3RyaW5nLmxpbmsoJm1faml0
KTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVPZiwgcmVzdWx0
R1BSLCBwYXlsb2FkR1BSKTsKKyAgICAgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblR5cGVPZiwgcmVzdWx0R1BSLCBwYXlsb2FkR1BSKTsKKyAg
ICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7CisgICAgICAgICAgICBp
c05vdENlbGwubGluaygmbV9qaXQpOworCisgICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVk
SW1tMzIoMSksIHRhZ0dQUiwgdGVtcEdQUik7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCB0
ZW1wR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZyArIDEp
KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAg
ICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3ROdW1iZXIu
bGluaygmbV9qaXQpOworCisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RVbmRlZmlu
ZWQgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOworICAgICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0
cmluZygpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQu
anVtcCgpKTsKKyAgICAgICAgICAgIG5vdFVuZGVmaW5lZC5saW5rKCZtX2ppdCk7CisKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdE51bGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21w
aWxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsK
KyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBk
b25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgICAgICBub3ROdWxsLmxpbmso
Jm1faml0KTsKKworICAgICAgICAgICAgLy8gT25seSBib29sZWFuIGxlZnQKKyAgICAgICAgICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5n
cy5ib29sZWFuU3RyaW5nKCkpLCByZXN1bHRHUFIpOworICAgICAgICB9CisgICAgICAgIGRvbmVK
dW1wcy5saW5rKCZtX2ppdCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgUGhpOgogICAgIGNh
c2UgRmx1c2g6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAppbmRleCAzOWM2MzMxOTgzM2IyMDI5NzZlYzZkZGI0MWM5NTM1ZTJkMDEyNmM2
Li5kZmZiZDA4Mjk5OWExYjhjYjNhZWQ5ZjFlMDA1YzMyY2I4MjYyY2U1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQwODgs
NyArNDA4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgY2FjaGVkR2V0QnlJZChub2RlLmNvZGVPcmlnaW4sIGJhc2VHUFIsIHJlc3VsdEdQUiwg
bm9kZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7CiAgICAgICAgIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0gICAgICAgIAorCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtNDUxMSw2ICs0NTExLDY0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBUeXBlT2Y6IHsKKyAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAg
IEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBH
UFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZUp1bXBzOworCisgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RD
ZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwg
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2ppdC5n
cmFwaCgpW25vZGUuY2hpbGQxKCldOworICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRl
Q2VsbCgpKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlKHZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgaXNOb3RDZWxsKTsKKworICAgICAgICBpZiAo
IWNoaWxkLnNob3VsZFNwZWN1bGF0ZU5vblN0cmluZ0NlbGwoKSkgeworICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAgICAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNwZWN1
bGF0ZVN0cmluZygpKQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIG5vdFN0cmluZyk7CisgICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFs
bFN0cmluZ3Muc3RyaW5nU3RyaW5nKCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1
bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgaWYgKCFjaGlsZC5zaG91bGRT
cGVjdWxhdGVTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIG5vdFN0cmluZy5saW5rKCZtX2pp
dCk7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UeXBlT2YsIHJlc3Vs
dEdQUiwgdmFsdWVHUFIpOworICAgICAgICAgICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQu
anVtcCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVHlwZU9mLCByZXN1bHRHUFIsIHZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIGRvbmVKdW1wcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghY2hpbGQuc2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7CisgICAgICAgICAgICBpc05v
dENlbGwubGluaygmbV9qaXQpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TnVt
YmVyID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCB2YWx1ZUdQUiwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmco
KSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lSnVtcHMuYXBwZW5kKG1faml0Lmp1bXAo
KSk7CisgICAgICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOworCisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RVbmRlZmluZWQgPSBtX2ppdC5icmFuY2g2NChKSVRDb21waWxl
cjo6Tm90RXF1YWwsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlVW5k
ZWZpbmVkKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCkpLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAg
bm90VW5kZWZpbmVkLmxpbmsoJm1faml0KTsKKworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbm90TnVsbCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVH
UFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7CisgICAgICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Mu
b2JqZWN0U3RyaW5nKCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgZG9uZUp1bXBzLmFwcGVu
ZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgbm90TnVsbC5saW5rKCZtX2ppdCk7CisKKyAg
ICAgICAgICAgIC8vIE9ubHkgYm9vbGVhbiBsZWZ0CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3MuYm9vbGVhblN0cmlu
ZygpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgfQorICAgICAgICBkb25lSnVtcHMubGluaygmbV9q
aXQpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEZsdXNoOgogICAgIGNhc2UgUGhpOgogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggOWZmMzE4YjA4
YTQ1OThjM2U2MThhYTNmZTc3ODZiYmE4YWMxYzM3OC4uNmNmNzA1MGI4YWY2ZTY5YTQzYjFkZGQ0
MDE3MzA2ZjcyZGU3YTdkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTQ5
Miw2ICs0OTIsOCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhib29sIGZ1bGxHQykKICAgICAgICAg
ICAgICAgICBtX2dsb2JhbERhdGEtPmNvZGVCbG9ja3NCZWluZ0NvbXBpbGVkW2ldLT52aXNpdEFn
Z3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgfQogCisgICAgICAgIG1fZ2xvYmFsRGF0YS0+c21h
bGxTdHJpbmdzLnZpc2l0U3Ryb25nUmVmZXJlbmNlcyh2aXNpdG9yKTsKKwogICAgICAgICB7CiAg
ICAgICAgICAgICBHQ1BIQVNFKFZpc2l0TWFjaGluZVJvb3RzKTsKICAgICAgICAgICAgIE1BUktf
TE9HX1JPT1QodmlzaXRvciwgIkMrKyBTdGFjayIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAppbmRleCBhMzMxYzZjMTUwMThjYTgy
Zjc0ZjlhMjlkMjlkM2JmZTk4YWY3ZDdkLi45NDUwN2Y5N2U4OWVmMmRlYzNlMjc3NDI0Y2QxOTFl
MjBlNzU5YTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29s
ZWFuUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29s
ZWFuUHJvdG90eXBlLmNwcApAQCAtNzksMTkgKzc5LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUg
PT0ganNCb29sZWFuKGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9i
YWxEYXRhLT5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoZ2xvYmFsRGF0YSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmlu
ZygpKTsKIAogICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29sZWFuKHRydWUpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy50cnVlU3RyaW5n
KGdsb2JhbERhdGEpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRh
LT5zbWFsbFN0cmluZ3MudHJ1ZVN0cmluZygpKTsKIAogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKCZCb29sZWFuT2JqZWN0OjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKIAogICAgIGlmIChhc0Jvb2xlYW5PYmplY3QodGhpc1ZhbHVlKS0+aW50ZXJu
YWxWYWx1ZSgpID09IGpzQm9vbGVhbihmYWxzZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKGdsb2JhbERhdGEpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Mu
ZmFsc2VTdHJpbmcoKSk7CiAKICAgICBBU1NFUlQoYXNCb29sZWFuT2JqZWN0KHRoaXNWYWx1ZSkt
PmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4odHJ1ZSkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnRydWVTdHJpbmcoZ2xvYmFsRGF0YSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnRy
dWVTdHJpbmcoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblBy
b3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggMmRkOGRmOGIzNjMzNjZkNTlhZDYyZmQ3
MTQ3OGE4MDM1MzIxZmMwYi4uOGYwYzg5NWIxYjBlNmI2MzZlNTZmYzcyOGUwMWNiYjg2Zjk0OWVl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
CkBAIC0yMzAsNiArMjMwLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0
YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIHVubGlua2VkUHJv
Z3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9j
azo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRXZh
bENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgc21hbGxTdHJpbmdzLmlu
aXRpYWxpemVDb21tb25TdHJpbmdzKCp0aGlzKTsKIAogICAgIHd0ZlRocmVhZERhdGEoKS5zZXRD
dXJyZW50SWRlbnRpZmllclRhYmxlKGV4aXN0aW5nRW50cnlJZGVudGlmaWVyVGFibGUpOwogCkBA
IC0yNDUsNyArMjQ2LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5
cGUgZ2xvYmFsRGF0YVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmCiAKICAgICBoZWFw
Lm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwotICAgIAorCiAgICAgTExJbnQ6OkRhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKCp0aGlzKTsKICAgICAKICAgICBpZiAoT3B0aW9uczo6ZW5hYmxlUHJvZmls
ZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IDI0NWM0
OGE1MTlmOTMwZjcwOGEzOGY3MDM1MzQyNzkzNDk1YmZhZGUuLmM0ZWE1NTI5MzBkNjViMGM5MDVm
YzMwZGEzZTJhNjY0MTNhM2YwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaApAQCAtMzMzLDcgKzMzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgaW5saW5l
IEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoZ2xv
YmFsRGF0YSk7CisgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MuZW1wdHlT
dHJpbmcoKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NpbmdsZUNo
YXJhY3RlclN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFVDaGFyIGMpCkBAIC0zODYs
NyArMzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBpbnQgc2l6ZSA9IHMu
bGVuZ3RoKCk7CiAgICAgICAgIGlmICghc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBnbG9iYWxE
YXRhLT5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBy
ZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGlm
IChzaXplID09IDEpIHsKICAgICAgICAgICAgIFVDaGFyIGMgPSBzLmNoYXJhY3RlckF0KDApOwog
ICAgICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQpAQCAtNDAyLDcg
KzQwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQob2Zmc2V0ICsgbGVuZ3Ro
IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLT5sZW5ndGgoKSkpOwogICAgICAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgICAgICBpZiAoIWxl
bmd0aCkKLSAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MuZW1wdHlT
dHJpbmcoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxT
dHJpbmdzLmVtcHR5U3RyaW5nKCk7CiAgICAgICAgIHJldHVybiBqc1N1YnN0cmluZyhnbG9iYWxE
YXRhLCBzLT52YWx1ZShleGVjKSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgIH0KIApAQCAtNDEyLDcg
KzQxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzLmxlbmd0aCgpKSk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgKyBs
ZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpKTsKICAgICAgICAgaWYg
KCFsZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmVt
cHR5U3RyaW5nKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNt
YWxsU3RyaW5ncy5lbXB0eVN0cmluZygpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpIHsKICAg
ICAgICAgICAgIFVDaGFyIGMgPSBzLmNoYXJhY3RlckF0KG9mZnNldCk7CiAgICAgICAgICAgICBp
ZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCkBAIC00MjcsNyArNDI3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHMubGVuZ3RoKCkpKTsKICAgICAgICAgQVNTRVJUKG9mZnNldCArIGxlbmd0aCA8PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwogICAgICAgICBpZiAoIWxlbmd0aCkKLSAg
ICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoZ2xv
YmFsRGF0YSk7CisgICAgICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLmVt
cHR5U3RyaW5nKCk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkgewogICAgICAgICAgICAgVUNo
YXIgYyA9IHMuY2hhcmFjdGVyQXQob2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChjIDw9IG1heFNp
bmdsZUNoYXJhY3RlclN0cmluZykKQEAgLTQ0MCw3ICs0NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB7CiAgICAgICAgIGludCBzaXplID0gcy5sZW5ndGgoKTsKICAgICAgICAgaWYgKCFzaXpl
KQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmlu
ZyhnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmlu
Z3MuZW1wdHlTdHJpbmcoKTsKICAgICAgICAgaWYgKHNpemUgPT0gMSkgewogICAgICAgICAgICAg
VUNoYXIgYyA9IHMuY2hhcmFjdGVyQXQoMCk7CiAgICAgICAgICAgICBpZiAoYyA8PSBtYXhTaW5n
bGVDaGFyYWN0ZXJTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
Y3BwCmluZGV4IDZiNGZmMGYwOGEzZWM5NTFiYWM4MDg4YWQzODU5ZmQyZThjNTYzYzcuLjQ1N2Vi
MGE2OTQwMjZkMGRjMzYwMjFkN2ZiZmZmNmIyYjg4ZWM0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCkBAIC0yOTUsMTMgKzI5NSwxMyBAQCBKU1N0cmluZyog
SlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgaWYg
KGlzRG91YmxlKCkpCiAgICAgICAgIHJldHVybiBqc1N0cmluZygmZ2xvYmFsRGF0YSwgZ2xvYmFs
RGF0YS5udW1lcmljU3RyaW5ncy5hZGQoYXNEb3VibGUoKSkpOwogICAgIGlmIChpc1RydWUoKSkK
LSAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLnRydWVTdHJpbmcoJmdsb2Jh
bERhdGEpOworICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MudHJ1ZVN0cmlu
ZygpOwogICAgIGlmIChpc0ZhbHNlKCkpCi0gICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxs
U3RyaW5ncy5mYWxzZVN0cmluZygmZ2xvYmFsRGF0YSk7CisgICAgICAgIHJldHVybiBnbG9iYWxE
YXRhLnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpOwogICAgIGlmIChpc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLm51bGxTdHJpbmcoJmdsb2JhbERhdGEp
OworICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MubnVsbFN0cmluZygpOwog
ICAgIGlmIChpc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0
cmluZ3MudW5kZWZpbmVkU3RyaW5nKCZnbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIGdsb2Jh
bERhdGEuc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwogCiAgICAgQVNTRVJUKGlzQ2Vs
bCgpKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gYXNDZWxsKCktPnRvUHJpbWl0aXZlKGV4ZWMsIFBy
ZWZlclN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
Y3BwCmluZGV4IGQ5NmJhZTU3NWU0Y2YyZDJlZDYxODVkMGM2OTU5ZmFjNzI2Yzg1ZjkuLjNkY2Ni
MmE1ZjkwMGFhOGU3M2U4MDUwNTE2ZWMwMzZjYWI4YTJhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC01NiwyOCArNTYsMzIgQEAgTkVWRVJf
SU5MSU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2MikKICAgICByZXR1cm4ganNOdW1iZXIocDEudG9OdW1iZXIoY2FsbEZy
YW1lKSArIHAyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogfQogCi1KU1ZhbHVlIGpzVHlwZVN0cmlu
Z0ZvclZhbHVlKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHYpCitKU1ZhbHVlIGpzVHlw
ZVN0cmluZ0ZvclZhbHVlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogewotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwogICAgIGlmICh2LmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgIHJldHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoJmds
b2JhbERhdGEpOworICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MudW5kZWZp
bmVkU3RyaW5nKCk7CiAgICAgaWYgKHYuaXNCb29sZWFuKCkpCi0gICAgICAgIHJldHVybiBnbG9i
YWxEYXRhLnNtYWxsU3RyaW5ncy5ib29sZWFuU3RyaW5nKCZnbG9iYWxEYXRhKTsKKyAgICAgICAg
cmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLmJvb2xlYW5TdHJpbmcoKTsKICAgICBpZiAo
di5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3MubnVt
YmVyU3RyaW5nKCZnbG9iYWxEYXRhKTsKKyAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxT
dHJpbmdzLm51bWJlclN0cmluZygpOwogICAgIGlmICh2LmlzU3RyaW5nKCkpCi0gICAgICAgIHJl
dHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoJmdsb2JhbERhdGEpOwor
ICAgICAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAg
ICAgaWYgKHYuaXNPYmplY3QoKSkgewogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5lZCIgZm9y
IG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZAogICAgICAgICAvLyBhcyBudWxsIHdoZW4g
ZG9pbmcgY29tcGFyaXNvbnMuCi0gICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKCkt
Pm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
KQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEuc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0
cmluZygmZ2xvYmFsRGF0YSk7CisgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKCkt
Pm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVy
biBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsKICAgICAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsK
ICAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBj
YWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQotICAgICAgICAgICAgcmV0dXJuIGdsb2JhbERhdGEu
c21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCZnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJl
dHVybiBnbG9iYWxEYXRhLnNtYWxsU3RyaW5ncy5mdW5jdGlvblN0cmluZygpOwogICAgIH0KLSAg
ICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKCZnbG9iYWxEYXRh
KTsKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKCk7Cit9
CisKK0pTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
VmFsdWUgdikKK3sKKyAgICByZXR1cm4ganNUeXBlU3RyaW5nRm9yVmFsdWUoY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCksIGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB2KTsKIH0KIAog
Ym9vbCBqc0lzT2JqZWN0VHlwZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDhlMGEwYTM5MzE3
N2IwY2M1NTc5NzFiZDY5NTU0YjRiYjQ5Njc2YjIuLjRmZjA3NDE2ZGVlZDhhY2RjYWFhOTViNzBh
MTM2NDZkNzNkYmYwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBORVZFUl9JTkxJ
TkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKENhbGxGcmFtZSosIEpTVmFsdWUsIEpTVmFsdWUpOwog
ICAgIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoQ2FsbEZyYW1lKiwgSlNWYWx1ZSk7Cisg
ICAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOwogICAgIGJvb2wganNJc09iamVjdFR5cGUoQ2FsbEZyYW1lKiwgSlNW
YWx1ZSk7CiAgICAgYm9vbCBqc0lzRnVuY3Rpb25UeXBlKEpTVmFsdWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAppbmRleCA1NmEzNTkyNzlk
Y2NkZjY1ZDFhOWNjNWFlZWFmODZlNzg1ZTVmYThkLi42NTUyZDdjZmJjZGI4MDMxYmNmOWNkY2Q3
NzRlN2Y5OGI1NzczZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TbWFsbFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nt
YWxsU3RyaW5ncy5jcHAKQEAgLTgwLDYgKzgwLDIyIEBAIFNtYWxsU3RyaW5nczo6U21hbGxTdHJp
bmdzKCkKICAgICAgICAgbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzW2ldID0gMDsKIH0KIAordm9p
ZCBTbWFsbFN0cmluZ3M6OmluaXRpYWxpemVDb21tb25TdHJpbmdzKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKK3sKKyAgICBjcmVhdGVFbXB0eVN0cmluZygmZ2xvYmFsRGF0YSk7CisjZGVmaW5l
IEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVfSU5JVElBTElaRShuYW1lKSBpbml0aWFsaXpl
KCZnbG9iYWxEYXRhLCBtXyMjbmFtZSwgI25hbWUpOworICAgIEpTQ19DT01NT05fU1RSSU5HU19F
QUNIX05BTUUoSlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVURV9JTklUSUFMSVpFKQorI3VuZGVm
IEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVfSU5JVElBTElaRQorfQorCit2b2lkIFNtYWxs
U3RyaW5nczo6dmlzaXRTdHJvbmdSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZtX2VtcHR5U3RyaW5nKTsKKyNk
ZWZpbmUgSlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVURV9WSVNJVChuYW1lKSB2aXNpdG9yLmFw
cGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV8jI25hbWUpOworICAgIEpTQ19DT01NT05fU1RSSU5H
U19FQUNIX05BTUUoSlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVURV9WSVNJVCkKKyN1bmRlZiBK
U0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX1ZJU0lUCit9CisKIFNtYWxsU3RyaW5nczo6flNt
YWxsU3RyaW5ncygpCiB7CiB9CkBAIC04OSw5ICsxMDUsNiBAQCB2b2lkIFNtYWxsU3RyaW5nczo6
ZmluYWxpemVTbWFsbFN0cmluZ3MoKQogICAgIGZpbmFsaXplKG1fZW1wdHlTdHJpbmcpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudDsgKytp
KQogICAgICAgICBmaW5hbGl6ZShtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0pOwotI2RlZmlu
ZSBKU0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX0ZJTkFMSVpFKG5hbWUpIGZpbmFsaXplKG1f
IyNuYW1lKTsKLSAgICBKU0NfQ09NTU9OX1NUUklOR1NfRUFDSF9OQU1FKEpTQ19DT01NT05fU1RS
SU5HU19BVFRSSUJVVEVfRklOQUxJWkUpCi0jdW5kZWYgSlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJ
QlVURV9GSU5BTElaRQogfQogCiB2b2lkIFNtYWxsU3RyaW5nczo6Y3JlYXRlRW1wdHlTdHJpbmco
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TbWFsbFN0cmluZ3MuaAppbmRleCA1YmM5ZDIyNTIzOWZiZDM4OTA2NmNlYjZmNGJjOWY1OTk3
MWM3NTBkLi4zZmM5YjNjMGViYzM1ZmMyM2IwNzQ5MGM1MmJhY2UwNmU0MzQ0YWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuaApAQCAtMjYsNiArMjYs
OCBAQAogI2lmbmRlZiBTbWFsbFN0cmluZ3NfaAogI2RlZmluZSBTbWFsbFN0cmluZ3NfaAogCisj
aW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCisKICNpbmNsdWRlIDx3dGYvRml4ZWRBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAg
LTYxLDEwICs2Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTbWFsbFN0cmluZ3MoKTsK
ICAgICAgICAgflNtYWxsU3RyaW5ncygpOwogCi0gICAgICAgIEpTU3RyaW5nKiBlbXB0eVN0cmlu
ZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgICAgIEpTU3RyaW5nKiBlbXB0eVN0cmlu
ZygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9lbXB0eVN0cmluZykKLSAgICAgICAg
ICAgICAgICBjcmVhdGVFbXB0eVN0cmluZyhnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIHJldHVy
biBtX2VtcHR5U3RyaW5nOwogICAgICAgICB9CiAKQEAgLTgxLDExICs4MSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBKU1N0cmluZyoqIHNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSB7
IHJldHVybiAmbV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzBdOyB9CiAKKyAgICAgICAgdm9pZCBp
bml0aWFsaXplQ29tbW9uU3RyaW5ncyhKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCB2aXNp
dFN0cm9uZ1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKKwogI2RlZmluZSBKU0NfQ09NTU9OX1NU
UklOR1NfQUNDRVNTT1JfREVGSU5JVElPTihuYW1lKSBcCi0gICAgICAgIEpTU3RyaW5nKiBuYW1l
IyNTdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBjb25zdCBcCisgICAgICAgIEpTU3Ry
aW5nKiBuYW1lIyNTdHJpbmcoKSBjb25zdCBcCiAgICAgICAgIHsgXAotICAgICAgICAgICAgaWYg
KCFtXyMjbmFtZSkgXAotICAgICAgICAgICAgICAgIGluaXRpYWxpemUoZ2xvYmFsRGF0YSwgbV8j
I25hbWUsICNuYW1lKTsgXAogICAgICAgICAgICAgcmV0dXJuIG1fIyNuYW1lOyBcCiAgICAgICAg
IH0KICAgICAgICAgSlNDX0NPTU1PTl9TVFJJTkdTX0VBQ0hfTkFNRShKU0NfQ09NTU9OX1NUUklO
R1NfQUNDRVNTT1JfREVGSU5JVElPTikKQEAgLTEwMCw3ICsxMDEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBpbml0aWFsaXplKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNT
dHJpbmcqJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHZhbHVlKSBjb25zdDsKIAogICAgICAgICBKU1N0
cmluZyogbV9lbXB0eVN0cmluZzsKLSNkZWZpbmUgSlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVU
RV9ERUNMQVJBVElPTihuYW1lKSBtdXRhYmxlIEpTU3RyaW5nKiBtXyMjbmFtZTsKKyNkZWZpbmUg
SlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVURV9ERUNMQVJBVElPTihuYW1lKSBKU1N0cmluZyog
bV8jI25hbWU7CiAgICAgICAgIEpTQ19DT01NT05fU1RSSU5HU19FQUNIX05BTUUoSlNDX0NPTU1P
Tl9TVFJJTkdTX0FUVFJJQlVURV9ERUNMQVJBVElPTikKICN1bmRlZiBKU0NfQ09NTU9OX1NUUklO
R1NfQVRUUklCVVRFX0RFQ0xBUkFUSU9OCiAgICAgICAgIEpTU3RyaW5nKiBtX3NpbmdsZUNoYXJh
Y3RlclN0cmluZ3Nbc2luZ2xlQ2hhcmFjdGVyU3RyaW5nQ291bnRdOwo=
</data>
<flag name="review"
          id="199582"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>