<?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>122289</bug_id>
          
          <creation_ts>2013-10-03 11:22:42 -0700</creation_ts>
          <short_desc>Transition stack check JITStubs to CCallHelper functions</short_desc>
          <delta_ts>2013-10-07 11:19:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122287</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>935873</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-03 11:22:42 -0700</bug_when>
    <thetext>The JITStubs cti_stack_check, cti_op_call_arityCheck &amp; cti_op_construct_arityCheck need to be transitioned to CCallHelper functions and likely moved to JITOperations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936423</commentid>
    <comment_count>1</comment_count>
      <attachid>213417</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-04 16:33:42 -0700</bug_when>
    <thetext>Created attachment 213417
Works for X64-64 baseline JIT

Next DFG &amp; FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936433</commentid>
    <comment_count>2</comment_count>
      <attachid>213419</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-04 17:06:19 -0700</bug_when>
    <thetext>Created attachment 213419
Now DFG 64 bit is working</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936470</commentid>
    <comment_count>3</comment_count>
      <attachid>213430</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-04 18:46:39 -0700</bug_when>
    <thetext>Created attachment 213430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936835</commentid>
    <comment_count>4</comment_count>
      <attachid>213430</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-06 13:11:44 -0700</bug_when>
    <thetext>Comment on attachment 213430
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:128
&gt; +        // Remove hostCallFlag from caller

Should be &quot;hostCallFrameFlag&quot;. Please add a period to make this a sentence.

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:131
&gt; +        andPtr(TrustedImmPtr(reinterpret_cast&lt;void *&gt;(~CallFrame::hostCallFrameFlag())), GPRInfo::argumentGPR0);

Should be &quot;void*&quot;.

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:386
&gt; +    m_speculative-&gt;callOperationCheckCallerException(operationStackCheck, m_codeBlock);

This is an awkward read. It sounds like you&apos;re saying &quot;check for an exception thrown by my caller&quot;. How about &quot;callOperationDuringCallFrameInitialization&quot; or &quot;callOperationWithCallFrameRollbackOnException&quot;?

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.h:263
&gt; -    
&gt; +

Please revert.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1727
&gt;          prepareForExternalCall();
&gt;          m_jit.emitStoreCodeOrigin(m_currentNode-&gt;codeOrigin);
&gt;          JITCompiler::Call call = m_jit.appendCall(function);
&gt; +        m_jit.exceptionCheckForCaller();
&gt; +        return call;
&gt; +    }
&gt; +    JITCompiler::Call appendCallWithCallerExceptionCheck(const FunctionPtr&amp; function)
&gt; +    {
&gt; +        prepareForExternalCall();
&gt; +        m_jit.emitStoreCodeOrigin(m_currentNode-&gt;codeOrigin);
&gt; +        JITCompiler::Call call = m_jit.appendCall(function);
&gt;          m_jit.exceptionCheck();
&gt;          return call;
&gt;      }

Is this backwards? &quot;appendCallWithCallerExceptionCheck&quot; seems to call &quot;exceptionCheck&quot;, while &quot;appendCallWithExceptionCheck&quot; seems to call &quot;exceptionCheckForCaller&quot;.

&gt; Source/JavaScriptCore/ftl/FTLLink.cpp:110
&gt; +        // Until then, use a JIT ASSERT

Please add a period, to make this a complete sentence.

&gt; Source/JavaScriptCore/ftl/FTLLink.cpp:136
&gt; +        jit.load64(state.graph.m_vm.addressOfException(), GPRInfo::regT1);

Ditto.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:44
&gt; +    // We pass in our own code block, because the callframe hasn&apos;t been populated.
&gt; +    CodeBlock* codeBlock = static_cast&lt;CodeBlock*&gt;(codeBlockPtr);

Why isn&apos;t the function&apos;s argument type CodeBlock*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936882</commentid>
    <comment_count>5</comment_count>
      <attachid>213538</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-06 16:35:03 -0700</bug_when>
    <thetext>Created attachment 213538
Updated patch addressing review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937124</commentid>
    <comment_count>6</comment_count>
      <attachid>213538</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-07 10:31:39 -0700</bug_when>
    <thetext>Comment on attachment 213538
Updated patch addressing review comments

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

r=me, but don&apos;t use &quot;B&quot; for CodeBlock*.

&gt; Source/JavaScriptCore/jit/JITOperations.h:54
&gt; +    B: CodeBlock*

I&apos;ve been moving towards having new &quot;types&quot; use multi-character names.  The convention is that it&apos;s always first letter capitalized, all other letters lower case.  I think that &quot;Cb&quot; would be intuitive enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937127</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-07 10:40:17 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 213538 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213538&amp;action=review
&gt; 
&gt; r=me, but don&apos;t use &quot;B&quot; for CodeBlock*.
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITOperations.h:54
&gt; &gt; +    B: CodeBlock*
&gt; 
&gt; I&apos;ve been moving towards having new &quot;types&quot; use multi-character names.  The convention is that it&apos;s always first letter capitalized, all other letters lower case.  I think that &quot;Cb&quot; would be intuitive enough.

I&apos;ll use Cb.  I didn&apos;t notice the multi-letter names in the comment, but now see them used in the declarations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937132</commentid>
    <comment_count>8</comment_count>
      <attachid>213538</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-10-07 11:00:14 -0700</bug_when>
    <thetext>Comment on attachment 213538
Updated patch addressing review comments

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1102
&gt; +    JITCompiler::Call callOperationWithCallFrameRollbackOnException(V_JITOperation_EB operation, void* pointer)

Let&apos;s make all the names consistent with this name:

    appendCallWithCallerExceptionCheck =&gt; appendCallWithCallFrameRollbackOnException
    appendCallWithCallerExceptionCheckSetResult =&gt; appendCallWithCallFrameRollbackOnExceptionSetResult
    exceptionCheckForCaller =&gt; exceptionCheckWithCallFrameRollback
    m_exceptionChecksForCaller =&gt; m_exceptionChecksWithCallFrameRollback
    exceptionChecksForCaller =&gt; exceptionChecksWithCallFrameRollback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937138</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-07 11:15:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 213538 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213538&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:1102
&gt; &gt; +    JITCompiler::Call callOperationWithCallFrameRollbackOnException(V_JITOperation_EB operation, void* pointer)
&gt; 
&gt; Let&apos;s make all the names consistent with this name:
&gt; 
&gt;     appendCallWithCallerExceptionCheck =&gt; appendCallWithCallFrameRollbackOnException
&gt;     appendCallWithCallerExceptionCheckSetResult =&gt; appendCallWithCallFrameRollbackOnExceptionSetResult
&gt;     exceptionCheckForCaller =&gt; exceptionCheckWithCallFrameRollback
&gt;     m_exceptionChecksForCaller =&gt; m_exceptionChecksWithCallFrameRollback
&gt;     exceptionChecksForCaller =&gt; exceptionChecksWithCallFrameRollback

I made these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937139</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-07 11:19:22 -0700</bug_when>
    <thetext>Committed r157050: &lt;http://trac.webkit.org/changeset/157050&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213417</attachid>
            <date>2013-10-04 16:33:42 -0700</date>
            <delta_ts>2013-10-04 17:06:19 -0700</delta_ts>
            <desc>Works for X64-64 baseline JIT</desc>
            <filename>122289-wip1.patch</filename>
            <type>text/plain</type>
            <size>11560</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgJKHJldmlzaW9uIDE1Njg5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjMzLDYgKzYzMywxMSBAQCBw
dWJsaWM6CiAgICAgICAgIGFuZDY0KGltbSwgc3JjRGVzdCk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgYW5kUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgewor
ICAgICAgICBhbmQ2NChpbW0sIHNyY0Rlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIGxzaGlm
dFB0cihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGxzaGlm
dDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0KGltbSksIHNyY0Rlc3QpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNiArMjI1LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pcihpbW0ubV92YWx1ZSwgc3JjRGVz
dCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lz
dGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIp
OworICAgICAgICBhbmQ2NChzY3JhdGNoUmVnaXN0ZXIsIHNyY0Rlc3QpOworICAgIH0KKyAgICAK
ICAgICB2b2lkIGxzaGlmdDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJl
dmlzaW9uIDE1Njg5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDYgKzI2OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
IHsKICAgICAgICAgYm9vbCBoYXNIb3N0Q2FsbEZyYW1lRmxhZygpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRoaXMpICYgSG9zdENhbGxGcmFtZUZsYWc7IH0KICAg
ICAgICAgQ2FsbEZyYW1lKiBhZGRIb3N0Q2FsbEZyYW1lRmxhZygpIGNvbnN0IHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGhp
cykgfCBIb3N0Q2FsbEZyYW1lRmxhZyk7IH0KICAgICAgICAgQ2FsbEZyYW1lKiByZW1vdmVIb3N0
Q2FsbEZyYW1lRmxhZygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1lKj4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGhpcykgJiB+SG9zdENhbGxGcmFtZUZsYWcpOyB9Cisg
ICAgICAgIHN0YXRpYyBpbnRwdHJfdCBob3N0Q2FsbEZyYW1lRmxhZygpIHsgcmV0dXJuIEhvc3RD
YWxsRnJhbWVGbGFnOyB9CiAKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhpbnQgY291bnQpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpB
cmd1bWVudENvdW50XS5wYXlsb2FkKCkgPSBjb3VudDsgfQogICAgICAgICB2b2lkIHNldENhbGxl
ZShKU09iamVjdCogY2FsbGVlKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFj
azo6Q2FsbGVlXSA9IFJlZ2lzdGVyOjp3aXRoQ2FsbGVlKGNhbGxlZSk7IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1Njg5NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM0LDcgKzYzNCw3IEBAIENv
bXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICBpZiAobV9jb2RlQmxv
Y2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7CiAgICAgICAgIHN0YWNrQ2hlY2subGlu
ayh0aGlzKTsKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7Ci0gICAgICAgIEpJVFN0dWJD
YWxsKHRoaXMsIGN0aV9zdGFja19jaGVjaykuY2FsbCgpOworICAgICAgICBjYWxsT3BlcmF0aW9u
Rm9yQ2FsbChvcGVyYXRpb25TdGFja0NoZWNrLCBtX2NvZGVCbG9jayk7CiAjaWZuZGVmIE5ERUJV
RwogICAgICAgICBtX2J5dGVjb2RlT2Zmc2V0ID0gKHVuc2lnbmVkKS0xOyAvLyBSZXNldCB0aGlz
LCBpbiBvcmRlciB0byBndWFyZCBpdHMgdXNlIHdpdGggQVNTRVJUcy4KICNlbmRpZgpAQCAtNjUx
LDcgKzY1MSwxMyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAK
ICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7CiAKKyNpZiAxCisgICAgICAgIGNhbGxPcGVy
YXRpb25Gb3JDYWxsKG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBvcGVyYXRpb25Db25z
dHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2spOworICAgICAgICBpZiAo
cmV0dXJuVmFsdWVSZWdpc3RlciAhPSByZWdUMCkKKyAgICAgICAgICAgIG1vdmUocmV0dXJuVmFs
dWVSZWdpc3RlciwgcmVnVDApOworI2Vsc2UKICAgICAgICAgSklUU3R1YkNhbGwodGhpcywgbV9j
b2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6
IGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spLmNhbGwocmVnVDApOworI2VuZGlmCiAgICAgICAgIGJy
YW5jaFRlc3QzMihaZXJvLCByZWdUMCkubGlua1RvKGJlZ2luTGFiZWwsIHRoaXMpOwogICAgICAg
ICBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIoYXJpdHlGaXh1cCkuY29kZSgpKTsKIApA
QCAtODIxLDEzICs4MjcsMjggQEAgdm9pZCBKSVQ6OmxpbmtTbG93Q2FsbChDb2RlQmxvY2sqIGNh
bGxlcgogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCiB7Ci0g
ICAgaWYgKG1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgaWYgKG1fZXhjZXB0aW9uQ2hl
Y2tzLmVtcHR5KCkgJiYgbV9leGNlcHRpb25DaGVja3NGb3JDYWxsLmVtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOworCisgICAg
SnVtcCBkb0xvb2t1cDsKKworICAgIGlmICghbV9leGNlcHRpb25DaGVja3NGb3JDYWxsLmVtcHR5
KCkpIHsKKyAgICAgICAgLy8gUmVtb3ZlIGhvc3RDYWxsRmxhZyBmcm9tIGNhbGxlcgorICAgICAg
ICBtX2V4Y2VwdGlvbkNoZWNrc0ZvckNhbGwubGluayh0aGlzKTsKKyAgICAgICAgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVyRnJhbWUsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCAqPih+Q2FsbEZyYW1lOjpob3N0Q2FsbEZyYW1lRmxhZygpKSksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIGRvTG9va3VwID0ganVtcCgpOworICAgIH0KKworICAgIGlmICgh
bV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKKyAgICAgICAgbV9leGNlcHRpb25DaGVja3MubGlu
ayh0aGlzKTsKICAgICAKICAgICAvLyBsb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBv
bmUgYXJndW1lbnQsIHRoZSBleGVjICh0aGUgQ2FsbEZyYW1lKikuCiAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgIGlmIChk
b0xvb2t1cC5pc1NldCgpKQorICAgICAgICBkb0xvb2t1cC5saW5rKHRoaXMpOworCiAjaWYgQ1BV
KFg4NikKICAgICAvLyBGSVhNRTogc2hvdWxkIHVzZSB0aGUgY2FsbCBhYnN0cmFjdGlvbiwgYnV0
IHRoaXMgaXMgY3VycmVudGx5IGluIHRoZSBTcGVjdWxhdGl2ZUpJVCBsYXllciEKICAgICBwb2tl
KEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDE1Njg5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzOSw2ICs0MzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoZW1pdEV4Y2VwdGlvbkNoZWNrKCkpOwogICAgICAg
ICB9CiAKKyAgICAgICAgdm9pZCBleGNlcHRpb25DaGVja0ZvckNhbGwoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc0ZvckNhbGwuYXBwZW5kKGVtaXRFeGNlcHRpb25D
aGVjaygpKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNlcHRp
b25IYW5kbGVycygpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGlzRGlyZWN0UHV0QnlJZChTdHJ1
Y3R1cmVTdHViSW5mbyopOwpAQCAtODU5LDEwICs4NjQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYsIGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCk7CiAKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5jdGlv
blB0ciYpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxl
ckV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyJik7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0KGNv
bnN0IEZ1bmN0aW9uUHRyJiwgaW50KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FLCBpbnQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQLCBpbnQsIHZvaWQqKTsKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9F
UCwgdm9pZCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uRm9y
Q2FsbChWX0pJVE9wZXJhdGlvbl9FUCwgdm9pZCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uRm9yQ2FsbChaX0pJVE9wZXJhdGlvbl9FKTsKIAogICAgICAgICBK
dW1wIGNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7
CiAKQEAgLTkyOSw2ICs5MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3
aXRjaFJlY29yZD4gbV9zd2l0Y2hlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNo
ZWNrczsKKyAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NGb3JDYWxsOwogCiAgICAg
ICAgIHVuc2lnbmVkIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbkluZGV4OwogICAgICAgICB1
bnNpZ25lZCBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAxNTY4OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiwxNCBA
QCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGNh
bGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjphcHBlbmRD
YWxsV2l0aENhbGxlckV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikK
K3sKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsgLy8gVGhlIGNhbGxlZSBpcyByZXNwb25zaWJs
ZSBmb3Igc2V0dGluZyB0b3BDYWxsRnJhbWUgdG8gdGhlaXIgY2FsbGVyCisgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbCA9IGFwcGVuZENhbGwoZnVuY3Rpb24pOworICAgIGV4Y2VwdGlvbkNo
ZWNrRm9yQ2FsbCgpOworICAgIHJldHVybiBjYWxsOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIEpJVDo6YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFs
dWVSZXN1bHQoY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9uLCBpbnQgZHN0KQogewogICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1
bmN0aW9uKTsKQEAgLTIzNSwxMiArMjQzLDE4IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dEpTVmFsdWVSZXN1bHQob3BlcmF0aW9uLCBkc3QpOwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FUCBvcGVy
YXRpb24sIHZvaWQqIHBvaW50ZXIpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6Y2FsbE9wZXJhdGlvbkZvckNhbGwoVl9KSVRPcGVyYXRpb25fRVAgb3BlcmF0aW9uLCB2
b2lkKiBwb2ludGVyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHBvaW50ZXIpKTsKLSAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhvcGVyYXRpb24pOworICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxlckV4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvbik7CiB9Ci0gICAgCisKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uRm9yQ2FsbChaX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlv
bikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOworICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aENhbGxlckV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7Cit9CisKIEFMV0FZU19JTkxJ
TkUgSklUOjpKdW1wIEpJVDo6Y2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCByZWcsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogICAgIHJldHVybiBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTU2ODk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIGV4dGVybiAiQyIgewogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RhY2tDaGVj
ayhFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIGNvZGVCbG9ja1B0cikKK3sKKyAgICAvLyBXZSBwYXNz
IGluIG91ciBvd24gY29kZSBibG9jaywgYmVjYXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVu
IHBvcHVsYXRlZC4KKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVC
bG9jayo+KGNvZGVCbG9ja1B0cik7CisKKyAgICBWTSogdm0gPSBjb2RlQmxvY2stPnZtKCk7Cisg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVyRnJhbWUtPnJlbW92ZUhvc3RDYWxs
RnJhbWVGbGFnKCkpOworCisgICAgSlNTdGFjayYgc3RhY2sgPSB2bS0+aW50ZXJwcmV0ZXItPnN0
YWNrKCk7CisKKyAgICBpZiAoVU5MSUtFTFkoIXN0YWNrLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygp
Wy1jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKQorICAgICAgICB2bS0+dGhyb3dF
eGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFt
ZSkpOworfQorCitpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2so
RXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIENhbGxG
cmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlckZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxh
ZygpKTsKKworICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJldGVyLT5zdGFjaygpOwor
CisgICAgaW50MzJfdCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoZXhlYywgJnN0YWNrLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKG1pc3NpbmdBcmdDb3Vu
dCA8IDApCisgICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihjYWxsZXJGcmFtZSwgY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKSk7CisKKyAgICByZXR1cm4gbWlzc2luZ0FyZ0Nv
dW50OworfQorCitpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlD
aGVjayhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVyRnJhbWUtPnJlbW92ZUhvc3RDYWxsRnJh
bWVGbGFnKCkpOworICAgIAorICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJldGVyLT5z
dGFjaygpOworICAgIAorICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZzdGFjaywgQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
aWYgKG1pc3NpbmdBcmdDb3VudCA8IDApCisgICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihjYWxs
ZXJGcmFtZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKSk7CisgICAgCisg
ICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE1Njg5
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIHR5cGVkZWYgZG91YmxlIEpJVF9PUEVSQVRJT04gKCpE
X0pJVE9wZXIKIHR5cGVkZWYgZG91YmxlIEpJVF9PUEVSQVRJT04gKCpEX0pJVE9wZXJhdGlvbl9a
WikoaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBKSVRfT1BFUkFUSU9OICgqRF9K
SVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgaW50
MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRCkoZG91YmxlKTsKK3R5cGVkZWYg
aW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRSkoRXhlY1N0YXRlKik7CiB0
eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUNDKShFeGVjU3Rh
dGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpT
X0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBz
aXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VKSikoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTE3Myw2ICsxNzQsOSBAQCBpbmxpbmUg
SklUSGFuZGxlckVuY29kZWQgZGZnSGFuZGxlckVuY29kCiAjZW5kaWYKIEpJVEhhbmRsZXJFbmNv
ZGVkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlcihFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdGFja0NoZWNrKEV4ZWNT
dGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CitpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOworaW50MzJfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213419</attachid>
            <date>2013-10-04 17:06:19 -0700</date>
            <delta_ts>2013-10-04 18:46:39 -0700</delta_ts>
            <desc>Now DFG 64 bit is working</desc>
            <filename>122289-wip2.patch</filename>
            <type>text/plain</type>
            <size>17837</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgJKHJldmlzaW9uIDE1Njg5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjMzLDYgKzYzMywxMSBAQCBw
dWJsaWM6CiAgICAgICAgIGFuZDY0KGltbSwgc3JjRGVzdCk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgYW5kUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgewor
ICAgICAgICBhbmQ2NChpbW0sIHNyY0Rlc3QpOworICAgIH0KKyAgICAKICAgICB2b2lkIGxzaGlm
dFB0cihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7CiAgICAgICAgIGxzaGlm
dDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0KGltbSksIHNyY0Rlc3QpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjUsNiArMjI1LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kcV9pcihpbW0ubV92YWx1ZSwgc3JjRGVz
dCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgYW5kNjQoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lz
dGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIp
OworICAgICAgICBhbmQ2NChzY3JhdGNoUmVnaXN0ZXIsIHNyY0Rlc3QpOworICAgIH0KKyAgICAK
ICAgICB2b2lkIGxzaGlmdDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZp
c2lvbiAxNTY4OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDEzICsxMTksMjggQEAgdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZUJvZHkoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFu
ZGxlcnMoKQogewotICAgIGlmIChtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQorICAgIGlmICht
X2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpICYmIG1fZXhjZXB0aW9uQ2hlY2tzRm9yQ2FsbGVyLmVt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5r
KHRoaXMpOworCisgICAgSnVtcCBkb0xvb2t1cDsKKworICAgIGlmICghbV9leGNlcHRpb25DaGVj
a3NGb3JDYWxsZXIuZW1wdHkoKSkgeworICAgICAgICAvLyBSZW1vdmUgaG9zdENhbGxGbGFnIGZy
b20gY2FsbGVyCisgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzRm9yQ2FsbGVyLmxpbmsodGhpcyk7
CisgICAgICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZy
YW1lLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0
cihyZWludGVycHJldF9jYXN0PHZvaWQgKj4ofkNhbGxGcmFtZTo6aG9zdENhbGxGcmFtZUZsYWco
KSkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBkb0xvb2t1cCA9IGp1bXAoKTsK
KyAgICB9CisKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIG1f
ZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7CiAKICAgICAvLyBsb29rdXBFeGNlcHRpb25IYW5k
bGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBleGVjICh0aGUgQ2FsbEZyYW1lKikuCiAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKworICAgIGlmIChkb0xvb2t1cC5pc1NldCgpKQorICAgICAgICBkb0xvb2t1cC5saW5rKHRo
aXMpOworCiAjaWYgQ1BVKFg4NikKICAgICAvLyBGSVhNRTogc2hvdWxkIHVzZSB0aGUgY2FsbCBh
YnN0cmFjdGlvbiwgYnV0IHRoaXMgaXMgY3VycmVudGx5IGluIHRoZSBTcGVjdWxhdGl2ZUpJVCBs
YXllciEKICAgICBwb2tlKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkBAIC0zNjgsNyArMzgzLDEx
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgcG9rZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1l
LCBjYWxsRnJhbWUpIC8gc2l6ZW9mKHZvaWQqKSk7CiAKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2lu
KENvZGVPcmlnaW4oMCkpOworI2lmIDEKKyAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9u
Rm9yQ2FsbChvcGVyYXRpb25TdGFja0NoZWNrLCBtX2NvZGVCbG9jayk7CisjZWxzZQogICAgIG1f
Y2FsbFN0YWNrQ2hlY2sgPSBjYWxsKCk7CisjZW5kaWYKICAgICBqdW1wKGZyb21TdGFja0NoZWNr
KTsKICAgICAKICAgICAvLyBUaGUgZmFzdCBlbnRyeSBwb2ludCBpbnRvIGEgZnVuY3Rpb24gZG9l
cyBub3QgY2hlY2sgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwpAQCAtMzg0LDcgKzQw
MywxMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgIG1vdmUoc3Rh
Y2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgcG9rZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgT0JKRUNUX09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0Zy
YW1lLCBjYWxsRnJhbWUpIC8gc2l6ZW9mKHZvaWQqKSk7CiAgICAgZW1pdFN0b3JlQ29kZU9yaWdp
bihDb2RlT3JpZ2luKDApKTsKKyNpZiAxCisgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlv
bkZvckNhbGwobV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVj
dEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgR1BSSW5mbzo6cmVnVDApOwor
I2Vsc2UKICAgICBtX2NhbGxBcml0eUNoZWNrID0gY2FsbCgpOworI2VuZGlmCiAgICAgYnJhbmNo
VGVzdDMyKFplcm8sIEdQUkluZm86OnJlZ1QwKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMp
OwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbigwKSk7CiAgICAgbV9jYWxsQXJp
dHlGaXh1cCA9IGNhbGwoKTsKQEAgLTQxNSw5ICs0MzgsMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6
bGlua0Z1bmN0aW9uKCkKICAgICBtX2ppdENvZGUtPnNocmlua1RvRml0KCk7CiAgICAgY29kZUJs
b2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNocmluayk7CiAgICAgCisjaWYgMAog
ICAgIC8vIEZJWE1FOiBzd2l0Y2ggdGhlIHN0YWNrIGNoZWNrICYgYXJpdHkgY2hlY2sgb3ZlciB0
byBERkdPcGVydGFpb24gc3R5bGUgY2FsbHMsIG5vdCBKSVQgc3R1YnMuCiAgICAgbGlua0J1ZmZl
ci0+bGluayhtX2NhbGxTdGFja0NoZWNrLCBjdGlfc3RhY2tfY2hlY2spOwogICAgIGxpbmtCdWZm
ZXItPmxpbmsobV9jYWxsQXJpdHlDaGVjaywgbV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/
IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0aV9vcF9jYWxsX2FyaXR5Q2hlY2spOwor
I2VuZGlmCiAgICAgbGlua0J1ZmZlci0+bGluayhtX2NhbGxBcml0eUZpeHVwLCBGdW5jdGlvblB0
cigobV92bS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
KCkpKTsKICAgICAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxNTY4OTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2MCwxMiArMjYwLDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZXhjZXB0
aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKICAgICB9Ci0gICAgCisKICAgICB2b2lk
IGV4Y2VwdGlvbkNoZWNrKCkKICAgICB7CiAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVu
ZChlbWl0RXhjZXB0aW9uQ2hlY2soKSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBleGNlcHRp
b25DaGVja0ZvckNhbGxlcigpCisgICAgeworICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc0ZvckNh
bGxlci5hcHBlbmQoZW1pdEV4Y2VwdGlvbkNoZWNrKCkpOworICAgIH0KKwogICAgIC8vIEFkZCBh
IGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGggYSBmYXN0IGV4Y2VwdGlvbiBjaGVjayB0aGF0
IHRlc3RzIGlmIHRoZSByZXR1cm4gdmFsdWUgaXMgemVyby4KICAgICB2b2lkIGZhc3RFeGNlcHRp
b25DaGVjaygpCiAgICAgewpAQCAtMzkzLDYgKzM5OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ291
bnQgb2YgdGhlIG51bWJlciBvZiBDYWxsUmVjb3JkcyB3aXRoIGV4Y2VwdGlvbiBoYW5kbGVycy4K
ICAgICBWZWN0b3I8Q2FsbExpbmtSZWNvcmQ+IG1fY2FsbHM7CiAgICAgSnVtcExpc3QgbV9leGNl
cHRpb25DaGVja3M7CisgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXI7CiAg
ICAgCiAgICAgVmVjdG9yPExhYmVsPiBtX2Jsb2NrSGVhZHM7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1Njg5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5OSw2ICsxMDk5LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uRm9yQ2FsbChWX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIHZvaWQqIHBvaW50
ZXIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxl
ckV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgfQorCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbkZvckNhbGwoWl9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUxPgogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFy
Z3VtZW50VHlwZTEgYXJnMSkKICAgICB7CkBAIC0xNzAyLDEzICsxNzE0LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5lbWl0U3Rv
cmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrRm9yQ2FsbGVyKCk7CisgICAgICAgIHJldHVybiBjYWxsOworICAg
IH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxlckV4Y2VwdGlvbkNo
ZWNrKGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIHByZXBhcmVG
b3JFeHRlcm5hbENhbGwoKTsKKyAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1
cnJlbnROb2RlLT5jb2RlT3JpZ2luKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9
IG1faml0LmFwcGVuZENhbGwoZnVuY3Rpb24pOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYg
ZnVuY3Rpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0gICAgICAg
IGlmIChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgaWYgKChyZXN1bHQgIT0gSW52
YWxpZEdQUlJlZykgJiYgKHJlc3VsdCAhPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpCisgICAg
ICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gY2FsbDsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2Fs
bFdpdGhDYWxsZXJFeGNlcHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVu
Y3Rpb24sIEdQUlJlZyByZXN1bHQpCisgICAgeworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsID0gYXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisgICAg
ICAgIGlmICgocmVzdWx0ICE9IEludmFsaWRHUFJSZWcpICYmIChyZXN1bHQgIT0gR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpKQogICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24g
MTU2ODk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNiArMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAg
ICAgICBib29sIGhhc0hvc3RDYWxsRnJhbWVGbGFnKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4odGhpcykgJiBIb3N0Q2FsbEZyYW1lRmxhZzsgfQogICAgICAgICBD
YWxsRnJhbWUqIGFkZEhvc3RDYWxsRnJhbWVGbGFnKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxDYWxsRnJhbWUqPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlzKSB8IEhv
c3RDYWxsRnJhbWVGbGFnKTsgfQogICAgICAgICBDYWxsRnJhbWUqIHJlbW92ZUhvc3RDYWxsRnJh
bWVGbGFnKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDYWxsRnJhbWUqPihyZWludGVycHJl
dF9jYXN0PGludHB0cl90Pih0aGlzKSAmIH5Ib3N0Q2FsbEZyYW1lRmxhZyk7IH0KKyAgICAgICAg
c3RhdGljIGludHB0cl90IGhvc3RDYWxsRnJhbWVGbGFnKCkgeyByZXR1cm4gSG9zdENhbGxGcmFt
ZUZsYWc7IH0KIAogICAgICAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGlu
dCBjb3VudCkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OkFyZ3VtZW50
Q291bnRdLnBheWxvYWQoKSA9IGNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0Q2FsbGVlKEpTT2Jq
ZWN0KiBjYWxsZWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpDYWxs
ZWVdID0gUmVnaXN0ZXI6OndpdGhDYWxsZWUoY2FsbGVlKTsgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzQsNyArNjM0LDcgQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQogICAgIGlmIChtX2NvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKICAgICAgICAgc3RhY2tDaGVjay5saW5rKHRoaXMp
OwogICAgICAgICBtX2J5dGVjb2RlT2Zmc2V0ID0gMDsKLSAgICAgICAgSklUU3R1YkNhbGwodGhp
cywgY3RpX3N0YWNrX2NoZWNrKS5jYWxsKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb25Gb3JDYWxs
KG9wZXJhdGlvblN0YWNrQ2hlY2ssIG1fY29kZUJsb2NrKTsKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIG1fYnl0ZWNvZGVPZmZzZXQgPSAodW5zaWduZWQpLTE7IC8vIFJlc2V0IHRoaXMsIGluIG9y
ZGVyIHRvIGd1YXJkIGl0cyB1c2Ugd2l0aCBBU1NFUlRzLgogI2VuZGlmCkBAIC02NTEsNyArNjUx
LDEzIEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKIAogICAgICAg
ICBtX2J5dGVjb2RlT2Zmc2V0ID0gMDsKIAorI2lmIDEKKyAgICAgICAgY2FsbE9wZXJhdGlvbkZv
ckNhbGwobV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFy
aXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7CisgICAgICAgIGlmIChyZXR1cm5W
YWx1ZVJlZ2lzdGVyICE9IHJlZ1QwKQorICAgICAgICAgICAgbW92ZShyZXR1cm5WYWx1ZVJlZ2lz
dGVyLCByZWdUMCk7CisjZWxzZQogICAgICAgICBKSVRTdHViQ2FsbCh0aGlzLCBtX2NvZGVCbG9j
ay0+bV9pc0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNrIDogY3RpX29w
X2NhbGxfYXJpdHlDaGVjaykuY2FsbChyZWdUMCk7CisjZW5kaWYKICAgICAgICAgYnJhbmNoVGVz
dDMyKFplcm8sIHJlZ1QwKS5saW5rVG8oYmVnaW5MYWJlbCwgdGhpcyk7CiAgICAgICAgIGVtaXRO
YWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwKS5jb2RlKCkpOwogCkBAIC04MjEs
MTMgKzgyNywyOCBAQCB2b2lkIEpJVDo6bGlua1Nsb3dDYWxsKENvZGVCbG9jayogY2FsbGVyCiAK
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKIHsKLSAgICBpZiAo
bV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKKyAgICBpZiAobV9leGNlcHRpb25DaGVja3MuZW1w
dHkoKSAmJiBtX2V4Y2VwdGlvbkNoZWNrc0ZvckNhbGxlci5lbXB0eSgpKQogICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgbV9leGNlcHRpb25DaGVja3MubGluayh0aGlzKTsKKworICAgIEp1bXAg
ZG9Mb29rdXA7CisKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzRm9yQ2FsbGVyLmVtcHR5KCkp
IHsKKyAgICAgICAgLy8gUmVtb3ZlIGhvc3RDYWxsRmxhZyBmcm9tIGNhbGxlcgorICAgICAgICBt
X2V4Y2VwdGlvbkNoZWNrc0ZvckNhbGxlci5saW5rKHRoaXMpOworICAgICAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsZXJGcmFtZSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICAgICAgYW5kUHRyKFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2
b2lkICo+KH5DYWxsRnJhbWU6Omhvc3RDYWxsRnJhbWVGbGFnKCkpKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICAgICAgZG9Mb29rdXAgPSBqdW1wKCk7CisgICAgfQorCisgICAgaWYgKCFt
X2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQorICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5r
KHRoaXMpOwogICAgIAogICAgIC8vIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIgaXMgcGFzc2VkIG9u
ZSBhcmd1bWVudCwgdGhlIGV4ZWMgKHRoZSBDYWxsRnJhbWUqKS4KICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworCisgICAgaWYgKGRv
TG9va3VwLmlzU2V0KCkpCisgICAgICAgIGRvTG9va3VwLmxpbmsodGhpcyk7CisKICNpZiBDUFUo
WDg2KQogICAgIC8vIEZJWE1FOiBzaG91bGQgdXNlIHRoZSBjYWxsIGFic3RyYWN0aW9uLCBidXQg
dGhpcyBpcyBjdXJyZW50bHkgaW4gdGhlIFNwZWN1bGF0aXZlSklUIGxheWVyIQogICAgIHBva2Uo
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2
aXNpb24gMTU2ODk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDM5LDYgKzQzOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2soKSk7CiAgICAgICAg
IH0KIAorICAgICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrRm9yQ2FsbGVyKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXIuYXBwZW5kKGVtaXRFeGNlcHRp
b25DaGVjaygpKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVFeGNl
cHRpb25IYW5kbGVycygpOwogCiAgICAgICAgIHN0YXRpYyBib29sIGlzRGlyZWN0UHV0QnlJZChT
dHJ1Y3R1cmVTdHViSW5mbyopOwpAQCAtODU5LDEwICs4NjQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYsIGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCk7CiAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhjb25zdCBGdW5j
dGlvblB0ciYpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENh
bGxlckV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9uUHRyJik7CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRKU1ZhbHVlUmVzdWx0
KGNvbnN0IEZ1bmN0aW9uUHRyJiwgaW50KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FLCBpbnQpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VQLCBpbnQsIHZvaWQqKTsK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlv
bl9FUCwgdm9pZCopOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
Rm9yQ2FsbChWX0pJVE9wZXJhdGlvbl9FUCwgdm9pZCopOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uRm9yQ2FsbChaX0pJVE9wZXJhdGlvbl9FKTsKIAogICAgICAg
ICBKdW1wIGNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSk7CiAKQEAgLTkyOSw2ICs5MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9y
PFN3aXRjaFJlY29yZD4gbV9zd2l0Y2hlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlv
bkNoZWNrczsKKyAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXI7CiAK
ICAgICAgICAgdW5zaWduZWQgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXg7CiAgICAg
ICAgIHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE1Njg5NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEy
LDE0IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1
cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFw
cGVuZENhbGxXaXRoQ2FsbGVyRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0
aW9uKQoreworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOyAvLyBUaGUgY2FsbGVlIGlzIHJlc3Bv
bnNpYmxlIGZvciBzZXR0aW5nIHRvcENhbGxGcmFtZSB0byB0aGVpciBjYWxsZXIKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgZXhjZXB0
aW9uQ2hlY2tGb3JDYWxsZXIoKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwogQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRKU1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgaW50IGRzdCkKIHsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhmdW5jdGlvbik7CkBAIC0yMzUsMTIgKzI0MywxOCBAQCBBTFdBWVNfSU5MSU5FIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKIH0KIAotQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RVAgb3BlcmF0aW9uLCB2b2lkKiBwb2ludGVyKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb25Gb3JDYWxsKFZfSklUT3BlcmF0aW9uX0VQIG9wZXJh
dGlvbiwgdm9pZCogcG9pbnRlcikKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOwogfQotICAgIAorCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbkZvckNhbGwoWl9KSVRPcGVyYXRpb25fRSBv
cGVyYXRpb24pCit7CisgICAgc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKKyAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworfQorCiBBTFdB
WVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICByZXR1cm4gYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDE1Njg5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDUxIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBleHRlcm4gIkMiIHsKIAordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0
YWNrQ2hlY2soRXhlY1N0YXRlKiBleGVjLCB2b2lkKiBjb2RlQmxvY2tQdHIpCit7CisgICAgLy8g
V2UgcGFzcyBpbiBvdXIgb3duIGNvZGUgYmxvY2ssIGJlY2F1c2UgdGhlIGNhbGxmcmFtZSBoYXNu
J3QgYmVlbiBwb3B1bGF0ZWQuCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2Fz
dDxDb2RlQmxvY2sqPihjb2RlQmxvY2tQdHIpOworCisgICAgVk0qIHZtID0gY29kZUJsb2NrLT52
bSgpOworICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlckZyYW1lLT5yZW1vdmVI
b3N0Q2FsbEZyYW1lRmxhZygpKTsKKworICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJl
dGVyLT5zdGFjaygpOworCisgICAgaWYgKFVOTElLRUxZKCFzdGFjay5ncm93KCZleGVjLT5yZWdp
c3RlcnMoKVstY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkKKyAgICAgICAgdm0t
PnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2Fs
bGVyRnJhbWUpKTsKK30KKworaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0
eUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAg
ICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZXJGcmFtZS0+cmVtb3ZlSG9zdENhbGxG
cmFtZUZsYWcoKSk7CisKKyAgICBKU1N0YWNrJiBzdGFjayA9IHZtLT5pbnRlcnByZXRlci0+c3Rh
Y2soKTsKKworICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1BhdGhzOjph
cml0eUNoZWNrRm9yKGV4ZWMsICZzdGFjaywgQ29kZUZvckNhbGwpOworICAgIGlmIChtaXNzaW5n
QXJnQ291bnQgPCAwKQorICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkpOworCisgICAgcmV0dXJuIG1pc3Np
bmdBcmdDb3VudDsKK30KKworaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVj
dEFyaXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlckZyYW1lLT5yZW1vdmVIb3N0
Q2FsbEZyYW1lRmxhZygpKTsKKyAgICAKKyAgICBKU1N0YWNrJiBzdGFjayA9IHZtLT5pbnRlcnBy
ZXRlci0+c3RhY2soKTsKKyAgICAKKyAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmc3RhY2ssIENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIGlmIChtaXNzaW5nQXJnQ291bnQgPCAwKQorICAgICAgICB2bS0+dGhyb3dFeGNlcHRp
b24oY2FsbGVyRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkpOwor
ICAgIAorICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lv
biAxNTY4OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCB0eXBlZGVmIGRvdWJsZSBKSVRfT1BFUkFU
SU9OICgqRF9KSVRPcGVyCiB0eXBlZGVmIGRvdWJsZSBKSVRfT1BFUkFUSU9OICgqRF9KSVRPcGVy
YXRpb25fWlopKGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBkb3VibGUgSklUX09QRVJBVElP
TiAoKkRfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBl
ZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9uX0QpKGRvdWJsZSk7Cit0
eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0
ZSopOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VDQyko
RXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFU
SU9OICgqU19KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5
cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FSkopKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CkBAIC0xNzMsNiArMTc0LDkgQEAg
aW5saW5lIEpJVEhhbmRsZXJFbmNvZGVkIGRmZ0hhbmRsZXJFbmNvZAogI2VuZGlmCiBKSVRIYW5k
bGVyRW5jb2RlZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RhY2tDaGVj
ayhFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOworaW50MzJfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKK2ludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEV4ZWNTdGF0ZSop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlz
dChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213430</attachid>
            <date>2013-10-04 18:46:39 -0700</date>
            <delta_ts>2013-10-06 16:35:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>122289.patch</filename>
            <type>text/plain</type>
            <size>30045</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2OTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEzLTEwLTA0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFRyYW5zaXRpb24gc3RhY2sgY2hlY2sgSklUU3R1YnMgdG8gQ0NhbGxIZWxwZXIgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIy
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlZCBqaXQgc3R1YnMgY3RpX3N0YWNrX2NoZWNrLCBjdGlfb3BfY2FsbF9hcml0eUNoZWNrIGFu
ZCBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgd2l0aAorICAgICAgICBqaXQgb3BlcmF0aW9u
cyBvcGVyYXRpb25TdGFja0NoZWNrLCBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayAmIG9wZXJhdGlv
bkNvbnN0cnVjdEFyaXR5Q2hlY2suCisgICAgICAgIEFkZGVkIG5ldyBjYWxsT3BlcmF0aW9uQ2hl
Y2tDYWxsZXJFeGNlcHRpb24oKSBpbiBiYXNlbGluZSBhbmQgREZHIEpJVHMgdG8gY2FsbCB0aGVz
IG5ldworICAgICAgICBmdW5jdGlvbnMuICBBZGRlZCBjb2RlIHRvIHVud2luZCBvbmUgZnJhbWUg
aW4gSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkgYW5kCisgICAgICAgIEpJ
VENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKSBmb3IgdGhlc2UgY2FzZXMgdGhh
dCBuZWVkIHRvIHRocm93IGV4Y2VwdGlvbnMgaW4KKyAgICAgICAgdGhlaXIgY2FsbGVyIGZyYW1l
IHdoZW4gdGhlIHN0YWNrIGlzIGV4aGF1c3RlZC4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6YW5kUHRyKTogQWRk
ZWQgdG8gaGFuZGxlIG1hc2tpbmcgYSBwb2ludGVyIHdpdGggYSBsaXRlcmFsLgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4Nl82NDo6YW5kNjQpOiBBZGRlZCB0byBoYW5kbGUgbWFza2luZyBhIHBvaW50ZXIg
d2l0aCBhIGxpdGVyYWwuCisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua0Z1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZXhjZXB0aW9u
Q2hlY2tGb3JDYWxsZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uQ2hlY2tDYWxsZXJF
eGNlcHRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
YXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNlcHRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0aENhbGxlckV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6aG9zdENhbGxGcmFtZUZsYWcpOgorICAgICAgICAq
IGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmppdEFzc2VydElzTnVsbCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzTnVsbCk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6SklUOjpleGNlcHRpb25DaGVja0ZvckNhbGxlcik6
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjphcHBlbmRD
YWxsV2l0aENhbGxlckV4Y2VwdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjpjYWxsT3Bl
cmF0aW9uQ2hlY2tDYWxsZXJFeGNlcHRpb24pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRT
dHVicy5jcHA6CisgICAgICAgICogaml0L0pJVFN0dWJzLmg6CisKIDIwMTMtMTAtMDQgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBTY3JpcHREZWJ1Z1Nl
cnZlciB0byB1c2UgRGVidWdnZXJDYWxsRnJhbWUgaW5zdGVhZCBvZiBKYXZhU2NyaXB0Q2FsbEZy
YW1lLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXIuaAkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNyArMzc0LDEy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGFuZDMyKGltbSwgc3JjRGVzdCk7CiAgICAgfQot
ICAgIAorCisgICAgdm9pZCBhbmRQdHIoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgc3Jj
RGVzdCkKKyAgICB7CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihpbW0pLCBzcmNEZXN0KTsK
KyAgICB9CisKICAgICB2b2lkIG5lZ1B0cihSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBuZWczMihkZXN0KTsKQEAgLTYzMyw2ICs2MzgsMTEgQEAgcHVibGljOgogICAgICAgICBhbmQ2
NChpbW0sIHNyY0Rlc3QpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGFuZFB0cihUcnVzdGVkSW1t
UHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgYW5kNjQoaW1tLCBz
cmNEZXN0KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBsc2hpZnRQdHIoSW1tMzIgaW1tLCBSZWdp
c3RlcklEIHNyY0Rlc3QpCiAgICAgewogICAgICAgICBsc2hpZnQ2NCh0cnVzdGVkSW1tMzJGb3JT
aGlmdChpbW0pLCBzcmNEZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1Njg5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIyNCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRxX2lyKGltbS5tX3ZhbHVlLCBzcmNEZXN0KTsKICAgICB9Ci0g
ICAgCisKKyAgICB2b2lkIGFuZDY0KFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklEIHNyY0Rl
c3QpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAg
YW5kNjQoc2NyYXRjaFJlZ2lzdGVyLCBzcmNEZXN0KTsKKyAgICB9CisKICAgICB2b2lkIGxzaGlm
dDY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnNobHFfaThyKGltbS5tX3ZhbHVlLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTY4OTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE5LDEzICsxMTksMjggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUJvZHko
KQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQogewotICAg
IGlmIChtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQorICAgIGlmIChtX2V4Y2VwdGlvbkNoZWNr
cy5lbXB0eSgpICYmIG1fZXhjZXB0aW9uQ2hlY2tzRm9yQ2FsbGVyLmVtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOworCisgICAg
SnVtcCBkb0xvb2t1cDsKKworICAgIGlmICghbV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXIuZW1w
dHkoKSkgeworICAgICAgICAvLyBSZW1vdmUgaG9zdENhbGxGbGFnIGZyb20gY2FsbGVyCisgICAg
ICAgIG1fZXhjZXB0aW9uQ2hlY2tzRm9yQ2FsbGVyLmxpbmsodGhpcyk7CisgICAgICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQgKj4ofkNhbGxGcmFtZTo6aG9zdENhbGxGcmFtZUZsYWcoKSkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOworICAgICAgICBkb0xvb2t1cCA9IGp1bXAoKTsKKyAgICB9CisKKyAgICBp
ZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tz
LmxpbmsodGhpcyk7CiAKICAgICAvLyBsb29rdXBFeGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBv
bmUgYXJndW1lbnQsIHRoZSBleGVjICh0aGUgQ2FsbEZyYW1lKikuCiAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKworICAgIGlmIChk
b0xvb2t1cC5pc1NldCgpKQorICAgICAgICBkb0xvb2t1cC5saW5rKHRoaXMpOworCiAjaWYgQ1BV
KFg4NikKICAgICAvLyBGSVhNRTogc2hvdWxkIHVzZSB0aGUgY2FsbCBhYnN0cmFjdGlvbiwgYnV0
IHRoaXMgaXMgY3VycmVudGx5IGluIHRoZSBTcGVjdWxhdGl2ZUpJVCBsYXllciEKICAgICBwb2tl
KEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkBAIC0zNjgsNyArMzgzLDcgQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBwb2tlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBPQkpFQ1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgLyBz
aXplb2Yodm9pZCopKTsKIAogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbigwKSk7
Ci0gICAgbV9jYWxsU3RhY2tDaGVjayA9IGNhbGwoKTsKKyAgICBtX3NwZWN1bGF0aXZlLT5jYWxs
T3BlcmF0aW9uQ2hlY2tDYWxsZXJFeGNlcHRpb24ob3BlcmF0aW9uU3RhY2tDaGVjaywgbV9jb2Rl
QmxvY2spOwogICAgIGp1bXAoZnJvbVN0YWNrQ2hlY2spOwogICAgIAogICAgIC8vIFRoZSBmYXN0
IGVudHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgY29ycmVjdCBu
dW1iZXIgb2YgYXJndW1lbnRzCkBAIC0zODQsNyArMzk5LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBtb3ZlKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwogICAgIHBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIE9C
SkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2
b2lkKikpOwogICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbigwKSk7Ci0gICAgbV9j
YWxsQXJpdHlDaGVjayA9IGNhbGwoKTsKKyAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9u
Q2hlY2tDYWxsZXJFeGNlcHRpb24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJh
dGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgR1BSSW5m
bzo6cmVnVDApOwogICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJbmZvOjpyZWdUMCkubGlua1Rv
KGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmln
aW4oMCkpOwogICAgIG1fY2FsbEFyaXR5Rml4dXAgPSBjYWxsKCk7CkBAIC00MTUsOSArNDMwLDYg
QEAgdm9pZCBKSVRDb21waWxlcjo6bGlua0Z1bmN0aW9uKCkKICAgICBtX2ppdENvZGUtPnNocmlu
a1RvRml0KCk7CiAgICAgY29kZUJsb2NrKCktPnNocmlua1RvRml0KENvZGVCbG9jazo6TGF0ZVNo
cmluayk7CiAgICAgCi0gICAgLy8gRklYTUU6IHN3aXRjaCB0aGUgc3RhY2sgY2hlY2sgJiBhcml0
eSBjaGVjayBvdmVyIHRvIERGR09wZXJ0YWlvbiBzdHlsZSBjYWxscywgbm90IEpJVCBzdHVicy4K
LSAgICBsaW5rQnVmZmVyLT5saW5rKG1fY2FsbFN0YWNrQ2hlY2ssIGN0aV9zdGFja19jaGVjayk7
Ci0gICAgbGlua0J1ZmZlci0+bGluayhtX2NhbGxBcml0eUNoZWNrLCBtX2NvZGVCbG9jay0+bV9p
c0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNoZWNrIDogY3RpX29wX2NhbGxf
YXJpdHlDaGVjayk7CiAgICAgbGlua0J1ZmZlci0+bGluayhtX2NhbGxBcml0eUZpeHVwLCBGdW5j
dGlvblB0cigobV92bS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpKTsKICAgICAKICAgICBkaXNhc3NlbWJsZSgqbGlua0J1ZmZlcik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxNTY4
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2MCwxMiArMjYwLDE3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1f
ZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChqdW1wVG9IYW5kbGVyKTsKICAgICB9Ci0gICAgCisKICAg
ICB2b2lkIGV4Y2VwdGlvbkNoZWNrKCkKICAgICB7CiAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tz
LmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2soKSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBl
eGNlcHRpb25DaGVja0ZvckNhbGxlcigpCisgICAgeworICAgICAgICBtX2V4Y2VwdGlvbkNoZWNr
c0ZvckNhbGxlci5hcHBlbmQoZW1pdEV4Y2VwdGlvbkNoZWNrKCkpOworICAgIH0KKwogICAgIC8v
IEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdpdGggYSBmYXN0IGV4Y2VwdGlvbiBjaGVj
ayB0aGF0IHRlc3RzIGlmIHRoZSByZXR1cm4gdmFsdWUgaXMgemVyby4KICAgICB2b2lkIGZhc3RF
eGNlcHRpb25DaGVjaygpCiAgICAgewpAQCAtMzkzLDYgKzM5OCw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gQ291bnQgb2YgdGhlIG51bWJlciBvZiBDYWxsUmVjb3JkcyB3aXRoIGV4Y2VwdGlvbiBoYW5k
bGVycy4KICAgICBWZWN0b3I8Q2FsbExpbmtSZWNvcmQ+IG1fY2FsbHM7CiAgICAgSnVtcExpc3Qg
bV9leGNlcHRpb25DaGVja3M7CisgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NGb3JDYWxs
ZXI7CiAgICAgCiAgICAgVmVjdG9yPExhYmVsPiBtX2Jsb2NrSGVhZHM7CiAKQEAgLTQyMSw4ICs0
MjcsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxPU1JFeGl0Q29tcGlsYXRpb25JbmZvPiBtX2V4
aXRDb21waWxhdGlvbkluZm87CiAgICAgVmVjdG9yPFZlY3RvcjxMYWJlbD4gPiBtX2V4aXRTaXRl
TGFiZWxzOwogICAgIAotICAgIENhbGwgbV9jYWxsU3RhY2tDaGVjazsKLSAgICBDYWxsIG1fY2Fs
bEFyaXR5Q2hlY2s7CiAgICAgQ2FsbCBtX2NhbGxBcml0eUZpeHVwOwogICAgIExhYmVsIG1fYXJp
dHlDaGVjazsKICAgICBPd25QdHI8U3BlY3VsYXRpdmVKSVQ+IG1fc3BlY3VsYXRpdmU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZp
c2lvbiAxNTY4OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOTksNiArMTA5OSwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQogCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbkNoZWNrQ2FsbGVyRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9u
X0VQIG9wZXJhdGlvbiwgdm9pZCogcG9pbnRlcikKKyAgICB7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoQ2FsbGVyRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAg
ICB9CisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uQ2hlY2tDYWxsZXJFeGNl
cHRpb24oWl9KSVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCisgICAgewor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBl
bmFtZSBBcmd1bWVudFR5cGUxPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
RnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSkK
ICAgICB7CkBAIC0xNzAyLDEzICsxNzE0LDI4IEBAIHB1YmxpYzoKICAgICAgICAgcHJlcGFyZUZv
ckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3Vy
cmVudE5vZGUtPmNvZGVPcmlnaW4pOwogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0g
bV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
Rm9yQ2FsbGVyKCk7CisgICAgICAgIHJldHVybiBjYWxsOworICAgIH0KKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxlckV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0aW9u
UHRyJiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsK
KyAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2RlLT5jb2RlT3Jp
Z2luKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwo
ZnVuY3Rpb24pOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICByZXR1
cm4gY2FsbDsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyBy
ZXN1bHQpCiAgICAgewogICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gSW52
YWxpZEdQUlJlZykKKyAgICAgICAgaWYgKChyZXN1bHQgIT0gSW52YWxpZEdQUlJlZykgJiYgKHJl
c3VsdCAhPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikpCisgICAgICAgICAgICBtX2ppdC5tb3Zl
KEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQpOworICAgICAgICByZXR1cm4gY2FsbDsK
KyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNlcHRp
b25DaGVja1NldFJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYgZnVuY3Rpb24sIEdQUlJlZyByZXN1
bHQpCisgICAgeworICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdp
dGhDYWxsZXJFeGNlcHRpb25DaGVjayhmdW5jdGlvbik7CisgICAgICAgIGlmICgocmVzdWx0ICE9
IEludmFsaWRHUFJSZWcpICYmIChyZXN1bHQgIT0gR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpKQog
ICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0KTsK
ICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxNTY4OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNs
dWRlICJGVExKSVRDb2RlLmgiCisjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIlZpcnR1YWxS
ZWdpc3Rlci5oIgpAQCAtOTUsMTggKzk2LDIxIEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIGppdC5yZXQoKTsKICAgICAgICAgCiAgICAgICAgIHN0YWNrQ2hlY2subGluaygmaml0
KTsKLSAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0LnBva2UoCi0gICAgICAgICAgICBH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihz
dHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2b2lkKikpOwotICAgICAg
ICAKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvZGVCbG9j
ayksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBqaXQuc3Rv
cmUzMigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6
TG9jYXRpb246OmVuY29kZUFzQnl0ZWNvZGVPZmZzZXQoMCkpLAogICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpBcmd1
bWVudENvdW50KSkpOworICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsICZzdGF0ZS5ncmFwaC5tX3ZtLnRvcENhbGxGcmFtZSk7CiAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2FsbCBjYWxsU3RhY2tDaGVjayA9IGppdC5jYWxsKCk7CisjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICAgICAvLyBGSVhNRTogbmVlZCB0byBtYWtlIHRoaXMgY2FsbCByZWdpc3RlciB3
aXRoIGV4Y2VwdGlvbiBoYW5kbGluZyBzb21laG93LiBUaGlzIGlzCiAgICAgICAgIC8vIHBhcnQg
b2YgYSBiaWdnZXIgcHJvYmxlbTogRlRMIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSBleGNlcHRp
b25zLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTEzNjIyCisgICAgICAgIC8vIFVudGlsIHRoZW4sIHVzZSBhIEpJVCBBU1NFUlQKKyAgICAgICAg
aml0LmxvYWQ2NChzdGF0ZS5ncmFwaC5tX3ZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgIGppdC5qaXRBc3NlcnRJc051bGwoR1BSSW5mbzo6cmVnVDApOwor
I2VuZGlmCiAgICAgICAgIGppdC5qdW1wKGZyb21TdGFja0NoZWNrKTsKICAgICAgICAgCiAgICAg
ICAgIGFyaXR5Q2hlY2sgPSBqaXQubGFiZWwoKTsKQEAgLTExOCwyNCArMTIyLDI5IEBAIHZvaWQg
bGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFib3ZlT3JFcXVh
bCwgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCiAgICAgICAgICAgICAubGlua1RvKGZyb21B
cml0eUNoZWNrLCAmaml0KTsKLSAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpzdGFja1Bv
aW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0LnBva2Uo
Ci0gICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgICAgIE9C
SkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVvZih2
b2lkKikpOworICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGVBc0J5
dGVjb2RlT2Zmc2V0KDApKSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0YXRp
Y19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAg
ICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmc3RhdGUuZ3JhcGgu
bV92bS50b3BDYWxsRnJhbWUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFyaXR5
Q2hlY2sgPSBqaXQuY2FsbCgpOworI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gRklY
TUU6IG5lZWQgdG8gbWFrZSB0aGlzIGNhbGwgcmVnaXN0ZXIgd2l0aCBleGNlcHRpb24gaGFuZGxp
bmcgc29tZWhvdy4gVGhpcyBpcwogICAgICAgICAvLyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2JsZW06
IEZUTCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgZXhjZXB0aW9ucy4KICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyMgorICAgICAgICAvLyBV
bnRpbCB0aGVuLCB1c2UgYSBKSVQgQVNTRVJUCisgICAgICAgIGppdC5sb2FkNjQoc3RhdGUuZ3Jh
cGgubV92bS5hZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBq
aXQuaml0QXNzZXJ0SXNOdWxsKEdQUkluZm86OnJlZ1QxKTsKKyNlbmRpZgorICAgICAgICBpZiAo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIgIT0gR1BSSW5mbzo6cmVnVDApCisgICAgICAgICAgICBq
aXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDApOwogICAgICAg
ICBqaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDApLmxp
bmtUbyhmcm9tQXJpdHlDaGVjaywgJmppdCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBj
YWxsQXJpdHlGaXh1cCA9IGppdC5jYWxsKCk7CiAgICAgICAgIGppdC5qdW1wKGZyb21Bcml0eUNo
ZWNrKTsKICAgICAgICAgCiAgICAgICAgIGxpbmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1
ZmZlcihzdGF0ZS5ncmFwaC5tX3ZtLCAmaml0LCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVz
dFN1Y2NlZWQpKTsKLSAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsU3RhY2tDaGVjaywgY3Rp
X3N0YWNrX2NoZWNrKTsKLSAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlDaGVjaywg
Y29kZUJsb2NrLT5tX2lzQ29uc3RydWN0b3IgPyBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sg
OiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKTsKKyAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxs
U3RhY2tDaGVjaywgb3BlcmF0aW9uU3RhY2tDaGVjayk7CisgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gb3BlcmF0aW9u
Q29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsKICAgICAgICAg
bGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHN0YXRlLmdyYXBo
Lm1fdm0uZ2V0Q1RJU3R1Yihhcml0eUZpeHVwKSkuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NjksNiArMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBib29sIGhhc0hvc3RDYWxs
RnJhbWVGbGFnKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGhp
cykgJiBIb3N0Q2FsbEZyYW1lRmxhZzsgfQogICAgICAgICBDYWxsRnJhbWUqIGFkZEhvc3RDYWxs
RnJhbWVGbGFnKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDYWxsRnJhbWUqPihy
ZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlzKSB8IEhvc3RDYWxsRnJhbWVGbGFnKTsgfQog
ICAgICAgICBDYWxsRnJhbWUqIHJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxDYWxsRnJhbWUqPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlz
KSAmIH5Ib3N0Q2FsbEZyYW1lRmxhZyk7IH0KKyAgICAgICAgc3RhdGljIGludHB0cl90IGhvc3RD
YWxsRnJhbWVGbGFnKCkgeyByZXR1cm4gSG9zdENhbGxGcmFtZUZsYWc7IH0KIAogICAgICAgICB2
b2lkIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGludCBjb3VudCkgeyBzdGF0aWNfY2Fz
dDxSZWdpc3Rlcio+KHRoaXMpW0pTU3RhY2s6OkFyZ3VtZW50Q291bnRdLnBheWxvYWQoKSA9IGNv
dW50OyB9CiAgICAgICAgIHZvaWQgc2V0Q2FsbGVlKEpTT2JqZWN0KiBjYWxsZWUpIHsgc3RhdGlj
X2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpDYWxsZWVdID0gUmVnaXN0ZXI6OndpdGhD
YWxsZWUoY2FsbGVlKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUz
LDEzIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRIYXNWYWxpZEMKICAgICBicmVh
a3BvaW50KCk7CiAgICAgY2hlY2tDRlIubGluayh0aGlzKTsKIH0KKwordm9pZCBBc3NlbWJseUhl
bHBlcnM6OmppdEFzc2VydElzTnVsbChHUFJSZWcgZ3ByKQoreworICAgIEp1bXAgY2hlY2tOdWxs
ID0gYnJhbmNoVGVzdFB0cihaZXJvLCBncHIpOworICAgIGJyZWFrcG9pbnQoKTsKKyAgICBjaGVj
a051bGwubGluayh0aGlzKTsKK30KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCShyZXZpc2lvbiAxNTY4OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNiArMjY3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgaml0QXNzZXJ0SXNKU0RvdWJsZShHUFJSZWcpOwogICAgIHZvaWQgaml0
QXNzZXJ0SXNDZWxsKEdQUlJlZyk7CiAgICAgdm9pZCBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFt
ZSgpOworICAgIHZvaWQgaml0QXNzZXJ0SXNOdWxsKEdQUlJlZyk7CiAjZWxzZQogICAgIHZvaWQg
aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcpIHsgfQogICAgIHZvaWQgaml0QXNzZXJ0SXNKU0ludDMy
KEdQUlJlZykgeyB9CkBAIC0yNzQsNiArMjc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaml0QXNz
ZXJ0SXNKU0RvdWJsZShHUFJSZWcpIHsgfQogICAgIHZvaWQgaml0QXNzZXJ0SXNDZWxsKEdQUlJl
ZykgeyB9CiAgICAgdm9pZCBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpIHsgfQorICAgIHZv
aWQgaml0QXNzZXJ0SXNOdWxsKEdQUlJlZykgeyB9CiAjZW5kaWYKIAogICAgIC8vIFRoZXNlIG1l
dGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVzIGJveGVkIGFuZCBKU1Zh
bHVlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1Njg5NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjM0LDcgKzYzNCw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkK
ICAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKSB7CiAgICAg
ICAgIHN0YWNrQ2hlY2subGluayh0aGlzKTsKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9IDA7
Ci0gICAgICAgIEpJVFN0dWJDYWxsKHRoaXMsIGN0aV9zdGFja19jaGVjaykuY2FsbCgpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uQ2hlY2tDYWxsZXJFeGNlcHRpb24ob3BlcmF0aW9uU3RhY2tDaGVj
aywgbV9jb2RlQmxvY2spOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9ieXRlY29kZU9mZnNl
dCA9ICh1bnNpZ25lZCktMTsgLy8gUmVzZXQgdGhpcywgaW4gb3JkZXIgdG8gZ3VhcmQgaXRzIHVz
ZSB3aXRoIEFTU0VSVHMuCiAjZW5kaWYKQEAgLTY1MSw3ICs2NTEsOSBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAKICAgICAgICAgbV9ieXRlY29kZU9mZnNldCA9
IDA7CiAKLSAgICAgICAgSklUU3R1YkNhbGwodGhpcywgbV9jb2RlQmxvY2stPm1faXNDb25zdHJ1
Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0aV9vcF9jYWxsX2FyaXR5Q2hl
Y2spLmNhbGwocmVnVDApOworICAgICAgICBjYWxsT3BlcmF0aW9uQ2hlY2tDYWxsZXJFeGNlcHRp
b24obV9jb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5
Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7CisgICAgICAgIGlmIChyZXR1cm5WYWx1
ZVJlZ2lzdGVyICE9IHJlZ1QwKQorICAgICAgICAgICAgbW92ZShyZXR1cm5WYWx1ZVJlZ2lzdGVy
LCByZWdUMCk7CiAgICAgICAgIGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCkubGlua1RvKGJlZ2lu
TGFiZWwsIHRoaXMpOwogICAgICAgICBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIoYXJp
dHlGaXh1cCkuY29kZSgpKTsKIApAQCAtODIxLDEzICs4MjMsMjggQEAgdm9pZCBKSVQ6OmxpbmtT
bG93Q2FsbChDb2RlQmxvY2sqIGNhbGxlcgogCiB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNl
cHRpb25IYW5kbGVycygpCiB7Ci0gICAgaWYgKG1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisg
ICAgaWYgKG1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkgJiYgbV9leGNlcHRpb25DaGVja3NGb3JD
YWxsZXIuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fZXhjZXB0aW9uQ2hl
Y2tzLmxpbmsodGhpcyk7CisKKyAgICBKdW1wIGRvTG9va3VwOworCisgICAgaWYgKCFtX2V4Y2Vw
dGlvbkNoZWNrc0ZvckNhbGxlci5lbXB0eSgpKSB7CisgICAgICAgIC8vIFJlbW92ZSBob3N0Q2Fs
bEZsYWcgZnJvbSBjYWxsZXIKKyAgICAgICAgbV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXIubGlu
ayh0aGlzKTsKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbGVyRnJhbWUsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGFuZFB0cihUcnVz
dGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPih+Q2FsbEZyYW1lOjpob3N0Q2FsbEZy
YW1lRmxhZygpKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGRvTG9va3VwID0g
anVtcCgpOworICAgIH0KKworICAgIGlmICghbV9leGNlcHRpb25DaGVja3MuZW1wdHkoKSkKKyAg
ICAgICAgbV9leGNlcHRpb25DaGVja3MubGluayh0aGlzKTsKICAgICAKICAgICAvLyBsb29rdXBF
eGNlcHRpb25IYW5kbGVyIGlzIHBhc3NlZCBvbmUgYXJndW1lbnQsIHRoZSBleGVjICh0aGUgQ2Fs
bEZyYW1lKikuCiAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKworICAgIGlmIChkb0xvb2t1cC5pc1NldCgpKQorICAgICAgICBkb0xv
b2t1cC5saW5rKHRoaXMpOworCiAjaWYgQ1BVKFg4NikKICAgICAvLyBGSVhNRTogc2hvdWxkIHVz
ZSB0aGUgY2FsbCBhYnN0cmFjdGlvbiwgYnV0IHRoaXMgaXMgY3VycmVudGx5IGluIHRoZSBTcGVj
dWxhdGl2ZUpJVCBsYXllciEKICAgICBwb2tlKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1Njg5NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQzOSw2ICs0MzksMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoZW1p
dEV4Y2VwdGlvbkNoZWNrKCkpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBleGNlcHRpb25D
aGVja0ZvckNhbGxlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tz
Rm9yQ2FsbGVyLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2soKSk7CisgICAgICAgIH0KKwogICAg
ICAgICB2b2lkIHByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKTsKIAogICAgICAgICBz
dGF0aWMgYm9vbCBpc0RpcmVjdFB1dEJ5SWQoU3RydWN0dXJlU3R1YkluZm8qKTsKQEAgLTg1OSwx
MCArODY0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGxpbmtTbG93Q2FzZUlm
Tm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBpbnQgdmlydHVhbFJl
Z2lzdGVySW5kZXgpOwogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxX
aXRoRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHImKTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNlcHRpb25DaGVjayhjb25zdCBGdW5j
dGlvblB0ciYpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0SlNWYWx1ZVJlc3VsdChjb25zdCBGdW5jdGlvblB0ciYsIGludCk7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RSwgaW50KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FUCwgaW50LCB2b2lkKik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVAsIHZvaWQqKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbkNoZWNrQ2FsbGVyRXhjZXB0aW9uKFZfSklUT3Bl
cmF0aW9uX0VQLCB2b2lkKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb25DaGVja0NhbGxlckV4Y2VwdGlvbihaX0pJVE9wZXJhdGlvbl9FKTsKIAogICAgICAgICBK
dW1wIGNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7
CiAKQEAgLTkyOSw2ICs5MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3
aXRjaFJlY29yZD4gbV9zd2l0Y2hlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNo
ZWNrczsKKyAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXI7CiAKICAg
ICAgICAgdW5zaWduZWQgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXg7CiAgICAgICAg
IHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE1Njg5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDE0
IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4g
Y2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVu
ZENhbGxXaXRoQ2FsbGVyRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9u
KQoreworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOyAvLyBUaGUgY2FsbGVlIGlzIHJlc3BvbnNp
YmxlIGZvciBzZXR0aW5nIHRvcENhbGxGcmFtZSB0byB0aGVpciBjYWxsZXIKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgZXhjZXB0aW9u
Q2hlY2tGb3JDYWxsZXIoKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwogQUxXQVlTX0lOTElORSBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgaW50IGRzdCkKIHsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhmdW5jdGlvbik7CkBAIC0yMzUsMTIgKzI0MywxOCBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVAg
b3BlcmF0aW9uLCB2b2lkKiBwb2ludGVyKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb25DaGVja0NhbGxlckV4Y2VwdGlvbihWX0pJVE9wZXJhdGlv
bl9FUCBvcGVyYXRpb24sIHZvaWQqIHBvaW50ZXIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIocG9pbnRlcikpOwotICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
Q2FsbGVyRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KLSAgICAKKworQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb25DaGVja0NhbGxlckV4Y2Vw
dGlvbihaX0pJVE9wZXJhdGlvbl9FIG9wZXJhdGlvbikKK3sKKyAgICBzZXR1cEFyZ3VtZW50c0V4
ZWNTdGF0ZSgpOworICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxlckV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7Cit9CisKIEFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6Y2hlY2tTdHJ1
Y3R1cmUoUmVnaXN0ZXJJRCByZWcsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIHJldHVy
biBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU2ODk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGV4dGVybiAiQyIgewogCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uU3RhY2tDaGVjayhFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIGNv
ZGVCbG9ja1B0cikKK3sKKyAgICAvLyBXZSBwYXNzIGluIG91ciBvd24gY29kZSBibG9jaywgYmVj
YXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVuIHBvcHVsYXRlZC4KKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNvZGVCbG9ja1B0cik7CisKKyAg
ICBWTSogdm0gPSBjb2RlQmxvY2stPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbGVyRnJhbWUtPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCkpOworCisgICAgSlNTdGFj
ayYgc3RhY2sgPSB2bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCk7CisKKyAgICBpZiAoVU5MSUtFTFko
IXN0YWNrLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpWy1jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzXSkpKQorICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSkpOworfQorCitpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxl
ckZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpKTsKKworICAgIEpTU3RhY2smIHN0YWNr
ID0gdm0tPmludGVycHJldGVyLT5zdGFjaygpOworCisgICAgaW50MzJfdCBtaXNzaW5nQXJnQ291
bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJnN0YWNrLCBDb2RlRm9y
Q2FsbCk7CisgICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApCisgICAgICAgIHZtLT50aHJvd0V4
Y2VwdGlvbihjYWxsZXJGcmFtZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1l
KSk7CisKKyAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OworfQorCitpbnQzMl90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4
ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
Y2FsbGVyRnJhbWUtPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCkpOworCisgICAgSlNTdGFjayYg
c3RhY2sgPSB2bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCk7CisKKyAgICBpbnQzMl90IG1pc3NpbmdB
cmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmc3RhY2ssIENv
ZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmIChtaXNzaW5nQXJnQ291bnQgPCAwKQorICAgICAgICB2
bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsZXJGcmFtZSkpOworCisgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKK30KKwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDE1Njg5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIHR5cGVkZWYgZG91Ymxl
IEpJVF9PUEVSQVRJT04gKCpEX0pJVE9wZXIKIHR5cGVkZWYgZG91YmxlIEpJVF9PUEVSQVRJT04g
KCpEX0pJVE9wZXJhdGlvbl9aWikoaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBK
SVRfT1BFUkFUSU9OICgqRF9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlKTsKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25fRCko
ZG91YmxlKTsKK3R5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRPcGVyYXRpb25f
RSkoRXhlY1N0YXRlKik7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVy
YXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYgc2l6ZV90
IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUpOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VK
SikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTE3Myw2
ICsxNzQsOSBAQCBpbmxpbmUgSklUSGFuZGxlckVuY29kZWQgZGZnSGFuZGxlckVuY29kCiAjZW5k
aWYKIEpJVEhhbmRsZXJFbmNvZGVkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxl
cihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25TdGFja0NoZWNrKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CitpbnQzMl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0YXRlKikgV1RGX0lOVEVS
TkFMOworaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2so
RXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
T3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNp
b24gMTU2ODk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzNCwxOSArNDM0LDYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9p
ZCwgaGFuZGxlX3dhdGNoZAogICAgIH0KIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCos
IHN0YWNrX2NoZWNrKQotewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsK
LSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0gICAg
aWYgKFVOTElLRUxZKCFzdGFja0ZyYW1lLnN0YWNrLT5ncm93KCZjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpWy1jYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgewot
ICAgICAgICBFcnJvcldpdGhFeGVjRnVuY3RvciBmdW5jdG9yID0gRXJyb3JXaXRoRXhlY0Z1bmN0
b3IoY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9B
RERSRVNTLCAmZnVuY3Rvcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNhbGxGcmFtZTsKLX0KLQog
REVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9uZXdfb2JqZWN0KQogewogICAgIFNU
VUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAgLTEyMjIsMzQgKzEyMDksNiBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCBvcF9jYWxsX2FyaXR5Q2hlY2spCi17
Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLQotICAgIGludCBtaXNzaW5nQXJn
Q291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLnN0YWNrLCBDb2RlRm9yQ2FsbCk7Ci0gICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApIHsK
LSAgICAgICAgRXJyb3JXaXRoRXhlY0Z1bmN0b3IgZnVuY3RvciA9IEVycm9yV2l0aEV4ZWNGdW5j
dG9yKGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcik7Ci0gICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbkZyb21PcENhbGw8aW50PihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FE
RFJFU1MsICZmdW5jdG9yKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKLX0K
LQotREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50LCBvcF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKLXsK
LSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0gICAgaW50IG1pc3NpbmdBcmdD
b3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJh
bWUuc3RhY2ssIENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIGlmIChtaXNzaW5nQXJnQ291bnQgPCAw
KSB7Ci0gICAgICAgIEVycm9yV2l0aEV4ZWNGdW5jdG9yIGZ1bmN0b3IgPSBFcnJvcldpdGhFeGVj
RnVuY3RvcihjcmVhdGVTdGFja092ZXJmbG93RXJyb3IpOwotICAgICAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb25Gcm9tT3BDYWxsPGludD4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVS
Tl9BRERSRVNTLCAmZnVuY3Rvcik7Ci0gICAgfQotICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7
Ci19Ci0KIGlubGluZSB2b2lkKiBsYXp5TGlua0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY2FsbEZyYW1lLT5jYWxsZWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5oCShyZXZpc2lvbiAxNTY4OTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5MiwxNSArMzkyLDEy
IEBAIHZvaWQgSklUX1NUVUIgY3RpX29wX3Rocm93X3N0YXRpY19lcnJvcigKICNpZiBFTkFCTEUo
REZHX0pJVCkKIHZvaWQgSklUX1NUVUIgY3RpX29wdGltaXplKFNUVUJfQVJHU19ERUNMQVJBVElP
TikgV1RGX0lOVEVSTkFMOwogI2VuZGlmCi1pbnQgSklUX1NUVUIgY3RpX29wX2NhbGxfYXJpdHlD
aGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLWludCBKSVRfU1RVQiBj
dGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2soU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfb3BfY2FsbF9qaXRDb21waWxlKFNUVUJfQVJHU19E
RUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCogSklUX1NUVUIgY3RpX29wX2NvbnN0cnVj
dF9qaXRDb21waWxlKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCog
SklUX1NUVUIgY3RpX29wX3N3aXRjaF9jaGFyKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lO
VEVSTkFMOwogdm9pZCogSklUX1NUVUIgY3RpX29wX3N3aXRjaF9pbW0oU1RVQl9BUkdTX0RFQ0xB
UkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfb3Bfc3dpdGNoX3N0cmlu
ZyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVCIGN0
aV9vcF90aHJvdyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKLXZvaWQqIEpJ
VF9TVFVCIGN0aV9zdGFja19jaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5B
TDsKIHZvaWQqIEpJVF9TVFVCIGN0aV92bV9sYXp5TGlua0NhbGwoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfdm1fbGF6eUxpbmtDbG9zdXJl
Q2FsbChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVC
IGN0aV92bV9sYXp5TGlua0NvbnN0cnVjdChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRF
Uk5BTDsK
</data>
<flag name="review"
          id="235793"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213538</attachid>
            <date>2013-10-06 16:35:03 -0700</date>
            <delta_ts>2013-10-07 11:00:14 -0700</delta_ts>
            <desc>Updated patch addressing review comments</desc>
            <filename>122289-2.patch</filename>
            <type>text/plain</type>
            <size>30776</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2OTM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEzLTEwLTA0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFRyYW5zaXRpb24gc3RhY2sgY2hlY2sgSklUU3R1YnMgdG8gQ0NhbGxIZWxwZXIgZnVuY3Rp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIy
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlZCBqaXQgc3R1YnMgY3RpX3N0YWNrX2NoZWNrLCBjdGlfb3BfY2FsbF9hcml0eUNoZWNrIGFu
ZCBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgd2l0aAorICAgICAgICBqaXQgb3BlcmF0aW9u
cyBvcGVyYXRpb25TdGFja0NoZWNrLCBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayAmIG9wZXJhdGlv
bkNvbnN0cnVjdEFyaXR5Q2hlY2suCisgICAgICAgIEFkZGVkIG5ldyBjYWxsT3BlcmF0aW9uV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oKSBpbiBiYXNlbGluZSBhbmQgREZHIEpJVHMg
dG8gY2FsbAorICAgICAgICB0aGVzZSBuZXcgZnVuY3Rpb25zLiAgQWRkZWQgY29kZSB0byB1bndp
bmQgb25lIGZyYW1lIGluIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpIAor
ICAgICAgICBhbmQgSklUQ29tcGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpIGZvciB0
aGVzZSBjYXNlcyB0aGF0IG5lZWQgdG8gdGhyb3cgZXhjZXB0aW9ucyBpbgorICAgICAgICB0aGVp
ciBjYWxsZXIgZnJhbWUgd2hlbiB0aGUgc3RhY2sgaXMgZXhoYXVzdGVkLgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
OjphbmRQdHIpOiBBZGRlZCB0byBoYW5kbGUgbWFza2luZyBhIHBvaW50ZXIgd2l0aCBhIGxpdGVy
YWwuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphbmQ2NCk6IEFkZGVkIHRvIGhhbmRsZSBtYXNr
aW5nIGEgcG9pbnRlciB3aXRoIGEgbGl0ZXJhbC4KKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGls
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9u
SGFuZGxlcnMpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rp
b24pOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rRnVuY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpleGNlcHRpb25DaGVja0ZvckNhbGxlcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRp
b25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjphcHBlbmRDYWxsV2l0aENhbGxlckV4Y2VwdGlvbkNo
ZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXBwZW5kQ2FsbFdpdGhF
eGNlcHRpb25DaGVja1NldFJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmFwcGVuZENhbGxXaXRoQ2FsbGVyRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQpOgorICAgICAg
ICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpob3N0
Q2FsbEZyYW1lRmxhZyk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNOdWxsKToKKyAgICAgICAgKiBq
aXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNOdWxsKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNl
cHRpb25IYW5kbGVycyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSlNDOjpKSVQ6
OmV4Y2VwdGlvbkNoZWNrRm9yQ2FsbGVyKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpKSVQ6OmFwcGVuZENhbGxXaXRoQ2FsbGVyRXhjZXB0aW9uQ2hlY2spOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4
Y2VwdGlvbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUU3R1YnMuaDoKKwogMjAxMy0xMC0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIFNjcmlwdERlYnVnU2VydmVyIHRvIHVzZSBEZWJ1Z2dl
ckNhbGxGcmFtZSBpbnN0ZWFkIG9mIEphdmFTY3JpcHRDYWxsRnJhbWUuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lv
biAxNTY4OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3NCw3ICszNzQsMTIgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgYW5kMzIoaW1tLCBzcmNEZXN0KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGFu
ZFB0cihUcnVzdGVkSW1tUHRyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAg
ICAgYW5kMzIoVHJ1c3RlZEltbTMyKGltbSksIHNyY0Rlc3QpOworICAgIH0KKwogICAgIHZvaWQg
bmVnUHRyKFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG5lZzMyKGRlc3QpOwpAQCAt
NjMzLDYgKzYzOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGFuZDY0KGltbSwgc3JjRGVzdCk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgYW5kUHRyKFRydXN0ZWRJbW1QdHIgaW1tLCBSZWdpc3RlcklE
IHNyY0Rlc3QpCisgICAgeworICAgICAgICBhbmQ2NChpbW0sIHNyY0Rlc3QpOworICAgIH0KKyAg
ICAKICAgICB2b2lkIGxzaGlmdFB0cihJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAg
ICB7CiAgICAgICAgIGxzaGlmdDY0KHRydXN0ZWRJbW0zMkZvclNoaWZ0KGltbSksIHNyY0Rlc3Qp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjQsNyArMjI0LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZHFfaXIoaW1tLm1fdmFsdWUsIHNyY0Rlc3QpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgYW5k
NjQoVHJ1c3RlZEltbVB0ciBpbW0sIFJlZ2lzdGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAgICAg
IG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBhbmQ2NChzY3JhdGNoUmVnaXN0
ZXIsIHNyY0Rlc3QpOworICAgIH0KKwogICAgIHZvaWQgbHNoaWZ0NjQoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc2hscV9pOHIo
aW1tLm1fdmFsdWUsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1Njg5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTMgKzEx
OSwyOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlQm9keSgpCiAKIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCiB7Ci0gICAgaWYgKG1fZXhjZXB0aW9uQ2hl
Y2tzLmVtcHR5KCkpCisgICAgaWYgKG1fZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkgJiYgbV9leGNl
cHRpb25DaGVja3NGb3JDYWxsZXIuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmsodGhpcyk7CisKKyAgICBKdW1wIGRvTG9va3VwOworCisg
ICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrc0ZvckNhbGxlci5lbXB0eSgpKSB7CisgICAgICAgIC8v
IFJlbW92ZSBob3N0Q2FsbEZyYW1lRmxhZyBmcm9tIGNhbGxlci4KKyAgICAgICAgbV9leGNlcHRp
b25DaGVja3NGb3JDYWxsZXIubGluayh0aGlzKTsKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbGVyRnJhbWUsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KH5D
YWxsRnJhbWU6Omhvc3RDYWxsRnJhbWVGbGFnKCkpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICAgICAgZG9Mb29rdXAgPSBqdW1wKCk7CisgICAgfQorCisgICAgaWYgKCFtX2V4Y2VwdGlv
bkNoZWNrcy5lbXB0eSgpKQorICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOwog
CiAgICAgLy8gbG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25lIGFyZ3VtZW50LCB0
aGUgZXhlYyAodGhlIENhbGxGcmFtZSopLgogICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisKKyAgICBpZiAoZG9Mb29rdXAuaXNTZXQo
KSkKKyAgICAgICAgZG9Mb29rdXAubGluayh0aGlzKTsKKwogI2lmIENQVShYODYpCiAgICAgLy8g
RklYTUU6IHNob3VsZCB1c2UgdGhlIGNhbGwgYWJzdHJhY3Rpb24sIGJ1dCB0aGlzIGlzIGN1cnJl
bnRseSBpbiB0aGUgU3BlY3VsYXRpdmVKSVQgbGF5ZXIhCiAgICAgcG9rZShHUFJJbmZvOjphcmd1
bWVudEdQUjApOwpAQCAtMzY4LDcgKzM4Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVG
dW5jdGlvbigpCiAgICAgcG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgT0JKRUNUX09G
RlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjYWxsRnJhbWUpIC8gc2l6ZW9mKHZvaWQqKSk7
CiAKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwotICAgIG1fY2FsbFN0
YWNrQ2hlY2sgPSBjYWxsKCk7CisgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhD
YWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblN0YWNrQ2hlY2ssIG1fY29kZUJs
b2NrKTsKICAgICBqdW1wKGZyb21TdGFja0NoZWNrKTsKICAgICAKICAgICAvLyBUaGUgZmFzdCBl
bnRyeSBwb2ludCBpbnRvIGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIGNvcnJlY3QgbnVt
YmVyIG9mIGFyZ3VtZW50cwpAQCAtMzg0LDcgKzM5OSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGVGdW5jdGlvbigpCiAgICAgbW92ZShzdGFja1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICBwb2tlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBPQkpF
Q1RfT0ZGU0VUT0Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIGNhbGxGcmFtZSkgLyBzaXplb2Yodm9p
ZCopKTsKICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oMCkpOwotICAgIG1fY2Fs
bEFyaXR5Q2hlY2sgPSBjYWxsKCk7CisgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldp
dGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0
b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hl
Y2ssIEdQUkluZm86OnJlZ1QwKTsKICAgICBicmFuY2hUZXN0MzIoWmVybywgR1BSSW5mbzo6cmVn
VDApLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CiAgICAgZW1pdFN0b3JlQ29kZU9yaWdp
bihDb2RlT3JpZ2luKDApKTsKICAgICBtX2NhbGxBcml0eUZpeHVwID0gY2FsbCgpOwpAQCAtNDE1
LDkgKzQzMCw2IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmtGdW5jdGlvbigpCiAgICAgbV9qaXRD
b2RlLT5zaHJpbmtUb0ZpdCgpOwogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtUb0ZpdChDb2RlQmxv
Y2s6OkxhdGVTaHJpbmspOwogICAgIAotICAgIC8vIEZJWE1FOiBzd2l0Y2ggdGhlIHN0YWNrIGNo
ZWNrICYgYXJpdHkgY2hlY2sgb3ZlciB0byBERkdPcGVydGFpb24gc3R5bGUgY2FsbHMsIG5vdCBK
SVQgc3R1YnMuCi0gICAgbGlua0J1ZmZlci0+bGluayhtX2NhbGxTdGFja0NoZWNrLCBjdGlfc3Rh
Y2tfY2hlY2spOwotICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsQXJpdHlDaGVjaywgbV9jb2Rl
QmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IGN0aV9vcF9jb25zdHJ1Y3RfYXJpdHlDaGVjayA6IGN0
aV9vcF9jYWxsX2FyaXR5Q2hlY2spOwogICAgIGxpbmtCdWZmZXItPmxpbmsobV9jYWxsQXJpdHlG
aXh1cCwgRnVuY3Rpb25QdHIoKG1fdm0tPmdldENUSVN0dWIoYXJpdHlGaXh1cCkpLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgCiAgICAgZGlzYXNzZW1ibGUoKmxpbmtCdWZmZXIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2
aXNpb24gMTU2ODk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDEyIEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmFwcGVuZChlbWl0RXhjZXB0aW9uQ2hlY2soKSk7CiAg
ICAgfQotICAgIAorCisgICAgdm9pZCBleGNlcHRpb25DaGVja0ZvckNhbGxlcigpCisgICAgewor
ICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc0ZvckNhbGxlci5hcHBlbmQoZW1pdEV4Y2VwdGlvbkNo
ZWNrKCkpOworICAgIH0KKwogICAgIC8vIEFkZCBhIGNhbGwgb3V0IGZyb20gSklUIGNvZGUsIHdp
dGggYSBmYXN0IGV4Y2VwdGlvbiBjaGVjayB0aGF0IHRlc3RzIGlmIHRoZSByZXR1cm4gdmFsdWUg
aXMgemVyby4KICAgICB2b2lkIGZhc3RFeGNlcHRpb25DaGVjaygpCiAgICAgewpAQCAtMzkzLDYg
KzM5OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ291bnQgb2YgdGhlIG51bWJlciBvZiBDYWxsUmVj
b3JkcyB3aXRoIGV4Y2VwdGlvbiBoYW5kbGVycy4KICAgICBWZWN0b3I8Q2FsbExpbmtSZWNvcmQ+
IG1fY2FsbHM7CiAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3M7CisgICAgSnVtcExpc3Qg
bV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXI7CiAgICAgCiAgICAgVmVjdG9yPExhYmVsPiBtX2Js
b2NrSGVhZHM7CiAKQEAgLTQyMSw4ICs0MjcsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxPU1JF
eGl0Q29tcGlsYXRpb25JbmZvPiBtX2V4aXRDb21waWxhdGlvbkluZm87CiAgICAgVmVjdG9yPFZl
Y3RvcjxMYWJlbD4gPiBtX2V4aXRTaXRlTGFiZWxzOwogICAgIAotICAgIENhbGwgbV9jYWxsU3Rh
Y2tDaGVjazsKLSAgICBDYWxsIG1fY2FsbEFyaXR5Q2hlY2s7CiAgICAgQ2FsbCBtX2NhbGxBcml0
eUZpeHVwOwogICAgIExhYmVsIG1fYXJpdHlDaGVjazsKICAgICBPd25QdHI8U3BlY3VsYXRpdmVK
SVQ+IG1fc3BlY3VsYXRpdmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTY4OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOTksNiAr
MTA5OSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7
CiAgICAgfQogCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0VCIG9wZXJhdGlvbiwgdm9pZCog
cG9pbnRlcikKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
Q2FsbGVyRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICB9CisKKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oWl9K
SVRPcGVyYXRpb25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCisgICAgeworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhDYWxsZXJFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7Cisg
ICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1
bWVudFR5cGUxPgogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25U
eXBlIG9wZXJhdGlvbiwgTm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSkKICAgICB7CkBA
IC0xNzA1LDEwICsxNzE3LDI1IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGFwcGVuZENhbGxXaXRoQ2FsbGVyRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHImIGZ1
bmN0aW9uKQorICAgIHsKKyAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOworICAgICAg
ICBtX2ppdC5lbWl0U3RvcmVDb2RlT3JpZ2luKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pOwor
ICAgICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsID0gbV9qaXQuYXBwZW5kQ2FsbChmdW5jdGlv
bik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrRm9yQ2FsbGVyKCk7CisgICAgICAgIHJl
dHVybiBjYWxsOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVn
IHJlc3VsdCkKICAgICB7CiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRD
YWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBJ
bnZhbGlkR1BSUmVnKQorICAgICAgICBpZiAoKHJlc3VsdCAhPSBJbnZhbGlkR1BSUmVnKSAmJiAo
cmVzdWx0ICE9IEdQUkluZm86OnJldHVyblZhbHVlR1BSKSkKKyAgICAgICAgICAgIG1faml0Lm1v
dmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBjYWxs
OworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aENhbGxlckV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgR1BSUmVnIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxs
V2l0aENhbGxlckV4Y2VwdGlvbkNoZWNrKGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKChyZXN1bHQg
IT0gSW52YWxpZEdQUlJlZykgJiYgKHJlc3VsdCAhPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikp
CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHQp
OwogICAgICAgICByZXR1cm4gY2FsbDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE1Njg5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2lu
Y2x1ZGUgIkZUTEpJVENvZGUuaCIKKyNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCkBAIC05NSwxOCArOTYsMjEgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgaml0LnJldCgpOwogICAgICAgICAKICAgICAgICAgc3RhY2tDaGVjay5saW5rKCZq
aXQpOwotICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICBqaXQucG9rZSgKLSAgICAgICAgICAg
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLAotICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9G
KHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjYWxsRnJhbWUpIC8gc2l6ZW9mKHZvaWQqKSk7Ci0gICAg
ICAgIAorICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29kZUJs
b2NrKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAgaml0Lm1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5z
dG9yZTMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQ2FsbEZyYW1l
OjpMb2NhdGlvbjo6ZW5jb2RlQXNCeXRlY29kZU9mZnNldCgwKSksCiAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OnRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpKSk7CisgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgJnN0YXRlLmdyYXBoLm1fdm0udG9wQ2FsbEZyYW1lKTsKICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpDYWxsIGNhbGxTdGFja0NoZWNrID0gaml0LmNhbGwoKTsKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIC8vIEZJWE1FOiBuZWVkIHRvIG1ha2UgdGhpcyBjYWxsIHJlZ2lzdGVy
IHdpdGggZXhjZXB0aW9uIGhhbmRsaW5nIHNvbWVob3cuIFRoaXMgaXMKICAgICAgICAgLy8gcGFy
dCBvZiBhIGJpZ2dlciBwcm9ibGVtOiBGVEwgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGV4Y2Vw
dGlvbnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTM2MjIKKyAgICAgICAgLy8gVW50aWwgdGhlbiwgdXNlIGEgSklUIEFTU0VSVC4KKyAgICAg
ICAgaml0LmxvYWQ2NChzdGF0ZS5ncmFwaC5tX3ZtLmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJ
bmZvOjpyZWdUMCk7CisgICAgICAgIGppdC5qaXRBc3NlcnRJc051bGwoR1BSSW5mbzo6cmVnVDAp
OworI2VuZGlmCiAgICAgICAgIGppdC5qdW1wKGZyb21TdGFja0NoZWNrKTsKICAgICAgICAgCiAg
ICAgICAgIGFyaXR5Q2hlY2sgPSBqaXQubGFiZWwoKTsKQEAgLTExOCwyNCArMTIyLDI5IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFib3ZlT3JF
cXVhbCwgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCiAgICAgICAgICAgICAubGlua1RvKGZy
b21Bcml0eUNoZWNrLCAmaml0KTsKLSAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpzdGFj
a1BvaW50ZXJSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICAgICAgaml0LnBv
a2UoCi0gICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwKLSAgICAgICAgICAg
IE9CSkVDVF9PRkZTRVRPRihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZyYW1lKSAvIHNpemVv
Zih2b2lkKikpOworICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlMzIoCiAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGVB
c0J5dGVjb2RlT2Zmc2V0KDApKSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKHN0
YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAg
ICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAmc3RhdGUuZ3Jh
cGgubV92bS50b3BDYWxsRnJhbWUpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbEFy
aXR5Q2hlY2sgPSBqaXQuY2FsbCgpOworI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8g
RklYTUU6IG5lZWQgdG8gbWFrZSB0aGlzIGNhbGwgcmVnaXN0ZXIgd2l0aCBleGNlcHRpb24gaGFu
ZGxpbmcgc29tZWhvdy4gVGhpcyBpcwogICAgICAgICAvLyBwYXJ0IG9mIGEgYmlnZ2VyIHByb2Js
ZW06IEZUTCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgZXhjZXB0aW9ucy4KICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyMgorICAgICAgICAv
LyBVbnRpbCB0aGVuLCB1c2UgYSBKSVQgQVNTRVJULgorICAgICAgICBqaXQubG9hZDY0KHN0YXRl
LmdyYXBoLm1fdm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAg
ICAgaml0LmppdEFzc2VydElzTnVsbChHUFJJbmZvOjpyZWdUMSk7CisjZW5kaWYKKyAgICAgICAg
aWYgKEdQUkluZm86OnJldHVyblZhbHVlR1BSICE9IEdQUkluZm86OnJlZ1QwKQorICAgICAgICAg
ICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgaml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1Qw
KS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssICZqaXQpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkNh
bGwgY2FsbEFyaXR5Rml4dXAgPSBqaXQuY2FsbCgpOwogICAgICAgICBqaXQuanVtcChmcm9tQXJp
dHlDaGVjayk7CiAgICAgICAgIAogICAgICAgICBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExp
bmtCdWZmZXIoc3RhdGUuZ3JhcGgubV92bSwgJmppdCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlv
bk11c3RTdWNjZWVkKSk7Ci0gICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbFN0YWNrQ2hlY2ss
IGN0aV9zdGFja19jaGVjayk7Ci0gICAgICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hl
Y2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8gY3RpX29wX2NvbnN0cnVjdF9hcml0eUNo
ZWNrIDogY3RpX29wX2NhbGxfYXJpdHlDaGVjayk7CisgICAgICAgIGxpbmtCdWZmZXItPmxpbmso
Y2FsbFN0YWNrQ2hlY2ssIG9wZXJhdGlvblN0YWNrQ2hlY2spOworICAgICAgICBsaW5rQnVmZmVy
LT5saW5rKGNhbGxBcml0eUNoZWNrLCBjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJh
dGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7CiAgICAg
ICAgIGxpbmtCdWZmZXItPmxpbmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKChzdGF0ZS5n
cmFwaC5tX3ZtLmdldENUSVN0dWIoYXJpdHlGaXh1cCkpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDE1Njg5NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjY5LDYgKzI2OSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgYm9vbCBoYXNIb3N0
Q2FsbEZyYW1lRmxhZygpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHRoaXMpICYgSG9zdENhbGxGcmFtZUZsYWc7IH0KICAgICAgICAgQ2FsbEZyYW1lKiBhZGRIb3N0
Q2FsbEZyYW1lRmxhZygpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1l
Kj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odGhpcykgfCBIb3N0Q2FsbEZyYW1lRmxhZyk7
IH0KICAgICAgICAgQ2FsbEZyYW1lKiByZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1lKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
dGhpcykgJiB+SG9zdENhbGxGcmFtZUZsYWcpOyB9CisgICAgICAgIHN0YXRpYyBpbnRwdHJfdCBo
b3N0Q2FsbEZyYW1lRmxhZygpIHsgcmV0dXJuIEhvc3RDYWxsRnJhbWVGbGFnOyB9CiAKICAgICAg
ICAgdm9pZCBzZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhpbnQgY291bnQpIHsgc3RhdGlj
X2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtKU1N0YWNrOjpBcmd1bWVudENvdW50XS5wYXlsb2FkKCkg
PSBjb3VudDsgfQogICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKSB7IHN0
YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbSlNTdGFjazo6Q2FsbGVlXSA9IFJlZ2lzdGVyOjp3
aXRoQ2FsbGVlKGNhbGxlZSk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDE1Njg5NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDYg
KzE1MywxMyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SGFzVmFsaWRDCiAgICAg
YnJlYWtwb2ludCgpOwogICAgIGNoZWNrQ0ZSLmxpbmsodGhpcyk7CiB9CisKK3ZvaWQgQXNzZW1i
bHlIZWxwZXJzOjpqaXRBc3NlcnRJc051bGwoR1BSUmVnIGdwcikKK3sKKyAgICBKdW1wIGNoZWNr
TnVsbCA9IGJyYW5jaFRlc3RQdHIoWmVybywgZ3ByKTsKKyAgICBicmVha3BvaW50KCk7CisgICAg
Y2hlY2tOdWxsLmxpbmsodGhpcyk7Cit9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTU2ODk0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDYgKzI2Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnKTsKICAgICB2b2lk
IGppdEFzc2VydElzQ2VsbChHUFJSZWcpOwogICAgIHZvaWQgaml0QXNzZXJ0SGFzVmFsaWRDYWxs
RnJhbWUoKTsKKyAgICB2b2lkIGppdEFzc2VydElzTnVsbChHUFJSZWcpOwogI2Vsc2UKICAgICB2
b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVnKSB7IH0KICAgICB2b2lkIGppdEFzc2VydElzSlNJ
bnQzMihHUFJSZWcpIHsgfQpAQCAtMjc0LDYgKzI3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGpp
dEFzc2VydElzSlNEb3VibGUoR1BSUmVnKSB7IH0KICAgICB2b2lkIGppdEFzc2VydElzQ2VsbChH
UFJSZWcpIHsgfQogICAgIHZvaWQgaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKSB7IH0KKyAg
ICB2b2lkIGppdEFzc2VydElzTnVsbChHUFJSZWcpIHsgfQogI2VuZGlmCiAKICAgICAvLyBUaGVz
ZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVzLCBhbmQgZG91YmxlcyBib3hlZCBhbmQg
SlNWYWx1ZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNTY4
OTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzNCw3ICs2MzQsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxl
KEpJCiAgICAgaWYgKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkgewog
ICAgICAgICBzdGFja0NoZWNrLmxpbmsodGhpcyk7CiAgICAgICAgIG1fYnl0ZWNvZGVPZmZzZXQg
PSAwOwotICAgICAgICBKSVRTdHViQ2FsbCh0aGlzLCBjdGlfc3RhY2tfY2hlY2spLmNhbGwoKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9w
ZXJhdGlvblN0YWNrQ2hlY2ssIG1fY29kZUJsb2NrKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAg
IG1fYnl0ZWNvZGVPZmZzZXQgPSAodW5zaWduZWQpLTE7IC8vIFJlc2V0IHRoaXMsIGluIG9yZGVy
IHRvIGd1YXJkIGl0cyB1c2Ugd2l0aCBBU1NFUlRzLgogI2VuZGlmCkBAIC02NTEsNyArNjUxLDkg
QEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQogCiAgICAgICAgIG1f
Ynl0ZWNvZGVPZmZzZXQgPSAwOwogCi0gICAgICAgIEpJVFN0dWJDYWxsKHRoaXMsIG1fY29kZUJs
b2NrLT5tX2lzQ29uc3RydWN0b3IgPyBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2sgOiBjdGlf
b3BfY2FsbF9hcml0eUNoZWNrKS5jYWxsKHJlZ1QwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbldp
dGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG1fY29kZUJsb2NrLT5tX2lzQ29uc3RydWN0
b3IgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hl
Y2spOworICAgICAgICBpZiAocmV0dXJuVmFsdWVSZWdpc3RlciAhPSByZWdUMCkKKyAgICAgICAg
ICAgIG1vdmUocmV0dXJuVmFsdWVSZWdpc3RlciwgcmVnVDApOwogICAgICAgICBicmFuY2hUZXN0
MzIoWmVybywgcmVnVDApLmxpbmtUbyhiZWdpbkxhYmVsLCB0aGlzKTsKICAgICAgICAgZW1pdE5h
a2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKGFyaXR5Rml4dXApLmNvZGUoKSk7CiAKQEAgLTgyMSwx
MyArODIzLDI4IEBAIHZvaWQgSklUOjpsaW5rU2xvd0NhbGwoQ29kZUJsb2NrKiBjYWxsZXIKIAog
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQogewotICAgIGlmICht
X2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKQorICAgIGlmIChtX2V4Y2VwdGlvbkNoZWNrcy5lbXB0
eSgpICYmIG1fZXhjZXB0aW9uQ2hlY2tzRm9yQ2FsbGVyLmVtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBtX2V4Y2VwdGlvbkNoZWNrcy5saW5rKHRoaXMpOworCisgICAgSnVtcCBk
b0xvb2t1cDsKKworICAgIGlmICghbV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXIuZW1wdHkoKSkg
eworICAgICAgICAvLyBSZW1vdmUgaG9zdENhbGxGbGFnIGZyb20gY2FsbGVyCisgICAgICAgIG1f
ZXhjZXB0aW9uQ2hlY2tzRm9yQ2FsbGVyLmxpbmsodGhpcyk7CisgICAgICAgIGVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZv
aWQgKj4ofkNhbGxGcmFtZTo6aG9zdENhbGxGcmFtZUZsYWcoKSkpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgICAgICBkb0xvb2t1cCA9IGp1bXAoKTsKKyAgICB9CisKKyAgICBpZiAoIW1f
ZXhjZXB0aW9uQ2hlY2tzLmVtcHR5KCkpCisgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxpbmso
dGhpcyk7CiAgICAgCiAgICAgLy8gbG9va3VwRXhjZXB0aW9uSGFuZGxlciBpcyBwYXNzZWQgb25l
IGFyZ3VtZW50LCB0aGUgZXhlYyAodGhlIENhbGxGcmFtZSopLgogICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisKKyAgICBpZiAoZG9M
b29rdXAuaXNTZXQoKSkKKyAgICAgICAgZG9Mb29rdXAubGluayh0aGlzKTsKKwogI2lmIENQVShY
ODYpCiAgICAgLy8gRklYTUU6IHNob3VsZCB1c2UgdGhlIGNhbGwgYWJzdHJhY3Rpb24sIGJ1dCB0
aGlzIGlzIGN1cnJlbnRseSBpbiB0aGUgU3BlY3VsYXRpdmVKSVQgbGF5ZXIhCiAgICAgcG9rZShH
UFJJbmZvOjphcmd1bWVudEdQUjApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZp
c2lvbiAxNTY4OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MzksNiArNDM5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
bV9leGNlcHRpb25DaGVja3MuYXBwZW5kKGVtaXRFeGNlcHRpb25DaGVjaygpKTsKICAgICAgICAg
fQogCisgICAgICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2tGb3JDYWxsZXIoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNrc0ZvckNhbGxlci5hcHBlbmQoZW1pdEV4Y2VwdGlv
bkNoZWNrKCkpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUV4Y2Vw
dGlvbkhhbmRsZXJzKCk7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNEaXJlY3RQdXRCeUlkKFN0
cnVjdHVyZVN0dWJJbmZvKik7CkBAIC04NTksMTAgKzg2NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiwgaW50IHZpcnR1YWxSZWdpc3RlckluZGV4KTsKIAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGNvbnN0IEZ1bmN0
aW9uUHRyJik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGFwcGVuZENhbGxXaXRoQ2Fs
bGVyRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHImKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQo
Y29uc3QgRnVuY3Rpb25QdHImLCBpbnQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0UsIGludCk7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVAsIGludCwgdm9pZCopOwot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VQLCB2b2lkKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb25X
aXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9FQiwgQ29kZUJs
b2NrKik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2Fs
bEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihaX0pJVE9wZXJhdGlvbl9FKTsKIAogICAgICAgICBK
dW1wIGNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7
CiAKQEAgLTkyOSw2ICs5MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3
aXRjaFJlY29yZD4gbV9zd2l0Y2hlczsKIAogICAgICAgICBKdW1wTGlzdCBtX2V4Y2VwdGlvbkNo
ZWNrczsKKyAgICAgICAgSnVtcExpc3QgbV9leGNlcHRpb25DaGVja3NGb3JDYWxsZXI7CiAKICAg
ICAgICAgdW5zaWduZWQgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uSW5kZXg7CiAgICAgICAg
IHVuc2lnbmVkIG1fYnlWYWxJbnN0cnVjdGlvbkluZGV4OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE1Njg5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDE0
IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4g
Y2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVu
ZENhbGxXaXRoQ2FsbGVyRXhjZXB0aW9uQ2hlY2soY29uc3QgRnVuY3Rpb25QdHImIGZ1bmN0aW9u
KQoreworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOyAvLyBUaGUgY2FsbGVlIGlzIHJlc3BvbnNp
YmxlIGZvciBzZXR0aW5nIHRvcENhbGxGcmFtZSB0byB0aGVpciBjYWxsZXIKKyAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbChmdW5jdGlvbik7CisgICAgZXhjZXB0aW9u
Q2hlY2tGb3JDYWxsZXIoKTsKKyAgICByZXR1cm4gY2FsbDsKK30KKwogQUxXQVlTX0lOTElORSBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRK
U1ZhbHVlUmVzdWx0KGNvbnN0IEZ1bmN0aW9uUHRyJiBmdW5jdGlvbiwgaW50IGRzdCkKIHsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
ayhmdW5jdGlvbik7CkBAIC0yMzUsMTIgKzI0MywxOCBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hl
Y2tTZXRKU1ZhbHVlUmVzdWx0KG9wZXJhdGlvbiwgZHN0KTsKIH0KIAotQUxXQVlTX0lOTElORSBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRVAg
b3BlcmF0aW9uLCB2b2lkKiBwb2ludGVyKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihW
X0pJVE9wZXJhdGlvbl9FQiBvcGVyYXRpb24sIENvZGVCbG9jayogcG9pbnRlcikKIHsKICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihwb2ludGVyKSk7Ci0gICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhDYWxsZXJFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogfQotICAg
IAorCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFpfSklUT3BlcmF0aW9uX0Ugb3BlcmF0
aW9uKQoreworICAgIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7CisgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoQ2FsbGVyRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lO
TElORSBKSVQ6Okp1bXAgSklUOjpjaGVja1N0cnVjdHVyZShSZWdpc3RlcklEIHJlZywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgcmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxNTY4OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw0OSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogZXh0ZXJuICJDIiB7CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdGFja0No
ZWNrKEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgLy8gV2Ug
cGFzcyBpbiBvdXIgb3duIGNvZGUgYmxvY2ssIGJlY2F1c2UgdGhlIGNhbGxmcmFtZSBoYXNuJ3Qg
YmVlbiBwb3B1bGF0ZWQuCisgICAgVk0qIHZtID0gY29kZUJsb2NrLT52bSgpOworICAgIENhbGxG
cmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlckZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxh
ZygpKTsKKworICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJldGVyLT5zdGFjaygpOwor
CisgICAgaWYgKFVOTElLRUxZKCFzdGFjay5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVstY29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkKKyAgICAgICAgdm0tPnRocm93RXhjZXB0aW9u
KGNhbGxlckZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpKTsKK30K
KworaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsZXJGcmFtZS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKSk7CisK
KyAgICBKU1N0YWNrJiBzdGFjayA9IHZtLT5pbnRlcnByZXRlci0+c3RhY2soKTsKKworICAgIGlu
dDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4
ZWMsICZzdGFjaywgQ29kZUZvckNhbGwpOworICAgIGlmIChtaXNzaW5nQXJnQ291bnQgPCAwKQor
ICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsZXJGcmFtZSkpOworCisgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKK30K
KworaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIENhbGxGcmFt
ZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlckZyYW1lLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygp
KTsKKworICAgIEpTU3RhY2smIHN0YWNrID0gdm0tPmludGVycHJldGVyLT5zdGFjaygpOworCisg
ICAgaW50MzJfdCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tG
b3IoZXhlYywgJnN0YWNrLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAobWlzc2luZ0FyZ0Nv
dW50IDwgMCkKKyAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpKTsKKworICAgIHJldHVybiBtaXNzaW5nQXJn
Q291bnQ7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJ
ZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTY4OTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBQOiBwb2ludGVyICh2b2lkKikKICAgICBDOiBKU0Nl
bGwqCiAgICAgQTogSlNBcnJheSoKKyAgICBCOiBDb2RlQmxvY2sqCiAgICAgUzogc2l6ZV90CiAg
ICAgWjogaW50MzJfdAogICAgIEQ6IGRvdWJsZQpAQCAtOTQsNiArOTUsNyBAQCB0eXBlZGVmIGRv
dWJsZSBKSVRfT1BFUkFUSU9OICgqRF9KSVRPcGVyCiB0eXBlZGVmIGRvdWJsZSBKSVRfT1BFUkFU
SU9OICgqRF9KSVRPcGVyYXRpb25fWlopKGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBkb3Vi
bGUgSklUX09QRVJBVElPTiAoKkRfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSk7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9u
X0QpKGRvdWJsZSk7Cit0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0
aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklU
T3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIHNp
emVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlv
bl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CkBAIC0x
MDEsNyArMTAzLDcgQEAgdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3Blcgog
dHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUq
KTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRU9aRCkoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90LCBkb3VibGUpOwogdHlwZWRlZiB2b2lkIEpJVF9P
UEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FT1pKKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGlu
dDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKLXR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9K
SVRPcGVyYXRpb25fRVApKEV4ZWNTdGF0ZSosIHZvaWQqKTsKK3R5cGVkZWYgdm9pZCBKSVRfT1BF
UkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUIpKEV4ZWNTdGF0ZSosIENvZGVCbG9jayopOwogdHlw
ZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwg
SlNDZWxsKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VD
SWNmKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBJbmxpbmVDYWxsRnJhbWUqKTsKIHR5cGVkZWYgdm9p
ZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUNDSWNmKShFeGVjU3RhdGUqLCBKU0Nl
bGwqLCBKU0NlbGwqLCBJbmxpbmVDYWxsRnJhbWUqKTsKQEAgLTE3Myw2ICsxNzUsOSBAQCBpbmxp
bmUgSklUSGFuZGxlckVuY29kZWQgZGZnSGFuZGxlckVuY29kCiAjZW5kaWYKIEpJVEhhbmRsZXJF
bmNvZGVkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlcihFeGVjU3RhdGUqKSBX
VEZfSU5URVJOQUw7CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdGFja0NoZWNrKEV4
ZWNTdGF0ZSosIENvZGVCbG9jayopIFdURl9JTlRFUk5BTDsKK2ludDMyX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CitpbnQz
Ml90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayhFeGVjU3RhdGUq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExp
c3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNTY4OTYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDM0LDE5ICs0MzQsNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBoYW5kbGVf
d2F0Y2hkCiAgICAgfQogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgc3RhY2tfY2hl
Y2spCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0KLSAgICBpZiAoVU5MSUtF
TFkoIXN0YWNrRnJhbWUuc3RhY2stPmdyb3coJmNhbGxGcmFtZS0+cmVnaXN0ZXJzKClbLWNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7Ci0gICAgICAgIEVy
cm9yV2l0aEV4ZWNGdW5jdG9yIGZ1bmN0b3IgPSBFcnJvcldpdGhFeGVjRnVuY3RvcihjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IpOwotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BD
YWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsICZm
dW5jdG9yKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RV
Ql9GVU5DVElPTihKU09iamVjdCosIG9wX25ld19vYmplY3QpCiB7CiAgICAgU1RVQl9JTklUX1NU
QUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpAQCAtMTIyMiwzNCArMTIwOSw2IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1E
RUZJTkVfU1RVQl9GVU5DVElPTihpbnQsIG9wX2NhbGxfYXJpdHlDaGVjaykKLXsKLSAgICBTVFVC
X0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotCi0gICAgaW50IG1pc3NpbmdBcmdDb3VudCA9IENv
bW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUuc3RhY2ss
IENvZGVGb3JDYWxsKTsKLSAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewotICAgICAgICBF
cnJvcldpdGhFeGVjRnVuY3RvciBmdW5jdG9yID0gRXJyb3JXaXRoRXhlY0Z1bmN0b3IoY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9w
Q2FsbDxpbnQ+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgJmZ1
bmN0b3IpOwotICAgIH0KLSAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwotfQotCi1ERUZJTkVf
U1RVQl9GVU5DVElPTihpbnQsIG9wX2NvbnN0cnVjdF9hcml0eUNoZWNrKQotewotICAgIFNUVUJf
SU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0KLSAgICBpbnQgbWlzc2luZ0FyZ0NvdW50ID0gQ29t
bW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5zdGFjaywg
Q29kZUZvckNvbnN0cnVjdCk7Ci0gICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApIHsKLSAgICAg
ICAgRXJyb3JXaXRoRXhlY0Z1bmN0b3IgZnVuY3RvciA9IEVycm9yV2l0aEV4ZWNGdW5jdG9yKGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcik7Ci0gICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZy
b21PcENhbGw8aW50PihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1Ms
ICZmdW5jdG9yKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKLX0KLQogaW5s
aW5lIHZvaWQqIGxhenlMaW5rRm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVu
Y3Rpb24qPihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmgJKHJldmlzaW9uIDE1Njg5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzkyLDE1ICszOTIsMTIgQEAgdm9pZCBK
SVRfU1RVQiBjdGlfb3BfdGhyb3dfc3RhdGljX2Vycm9yKAogI2lmIEVOQUJMRShERkdfSklUKQog
dm9pZCBKSVRfU1RVQiBjdGlfb3B0aW1pemUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CiAjZW5kaWYKLWludCBKSVRfU1RVQiBjdGlfb3BfY2FsbF9hcml0eUNoZWNrKFNUVUJf
QVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotaW50IEpJVF9TVFVCIGN0aV9vcF9jb25z
dHJ1Y3RfYXJpdHlDaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKIHZv
aWQqIEpJVF9TVFVCIGN0aV9vcF9jYWxsX2ppdENvbXBpbGUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9O
KSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBjdGlfb3BfY29uc3RydWN0X2ppdENvbXBp
bGUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2b2lkKiBKSVRfU1RVQiBj
dGlfb3Bfc3dpdGNoX2NoYXIoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiB2
b2lkKiBKSVRfU1RVQiBjdGlfb3Bfc3dpdGNoX2ltbShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVCIGN0aV9vcF9zd2l0Y2hfc3RyaW5nKFNUVUJfQVJH
U19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCogSklUX1NUVUIgY3RpX29wX3Rocm93
KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotdm9pZCogSklUX1NUVUIgY3Rp
X3N0YWNrX2NoZWNrKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCog
SklUX1NUVUIgY3RpX3ZtX2xhenlMaW5rQ2FsbChTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9J
TlRFUk5BTDsKIHZvaWQqIEpJVF9TVFVCIGN0aV92bV9sYXp5TGlua0Nsb3N1cmVDYWxsKFNUVUJf
QVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogdm9pZCogSklUX1NUVUIgY3RpX3ZtX2xh
enlMaW5rQ29uc3RydWN0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwo=
</data>
<flag name="review"
          id="235907"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>