<?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>148053</bug_id>
          
          <creation_ts>2015-08-15 01:56:11 -0700</creation_ts>
          <short_desc>[ES6] Instantiate Module Environment bindings and execute module</short_desc>
          <delta_ts>2015-09-03 21:29:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147876</dependson>
          <blocked>147340</blocked>
    
    <blocked>148689</blocked>
    
    <blocked>148705</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117915</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-15 01:56:11 -0700</bug_when>
    <thetext>Instantiate Module Environment when instantiating the module instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122778</commentid>
    <comment_count>1</comment_count>
      <attachid>260413</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:04:31 -0700</bug_when>
    <thetext>Created attachment 260413
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122779</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:08:38 -0700</bug_when>
    <thetext>If it does not cause any errors in EWS, it&apos;s ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122780</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:09:46 -0700</bug_when>
    <thetext>This patch includes the many tests for modules (it makes the patch larger).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122782</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:18:14 -0700</bug_when>
    <thetext>Hm, still seems a little bit large.
I&apos;ll extract the namespace object part from this patch.
And temporary remove the tests. (this will be added in the subsequent patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122783</commentid>
    <comment_count>5</comment_count>
      <attachid>260413</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:18:24 -0700</bug_when>
    <thetext>Comment on attachment 260413
Patch

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

Added comments.

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:410
&gt; +    return resolveExportLoop(exec, ResolveQuery(this, exportName.impl()));

Currently, this is a naive implementation. Ideally, the found resolution should be cached in the JSModuleRecord.
We will do so in the subsequent patch.

&gt; Tools/Scripts/run-javascriptcore-tests:289
&gt; +        # &quot;Source/JavaScriptCore/tests/modules.yaml&quot;

The test is disabled currently.
In https://bugs.webkit.org/show_bug.cgi?id=148689, we will enable it and enable the modules in JSC shell by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122787</commentid>
    <comment_count>6</comment_count>
      <attachid>260414</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:33:57 -0700</bug_when>
    <thetext>Created attachment 260414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122788</commentid>
    <comment_count>7</comment_count>
      <attachid>260415</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:38:46 -0700</bug_when>
    <thetext>Created attachment 260415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122789</commentid>
    <comment_count>8</comment_count>
      <attachid>260416</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:39:27 -0700</bug_when>
    <thetext>Created attachment 260416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122790</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:40:54 -0700</bug_when>
    <thetext>Patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122862</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-02 10:48:09 -0700</bug_when>
    <thetext>I&apos;ll slightly modify the patch to maintain the export / import occurrence order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122865</commentid>
    <comment_count>11</comment_count>
      <attachid>260426</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-02 11:13:10 -0700</bug_when>
    <thetext>Created attachment 260426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122866</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-02 11:14:15 -0700</bug_when>
    <thetext>Hm, after considering about the occurrence order of import / export, I decide we don&apos;t keep this currently. I added some rationales why we don&apos;t need to keep the occurrence of import / export entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122868</commentid>
    <comment_count>13</comment_count>
      <attachid>260426</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-02 11:17:07 -0700</bug_when>
    <thetext>Comment on attachment 260426
Patch

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

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:276
&gt; +    // correct result under the above complex cases.

I&apos;m not sure that &quot;Error&quot; may be produced in the module namespace creation phase.
I guess this is never produced.
But since the spec algorithm itself allows the error here (`ReturnIfAbrupt(resolution).` step 3-d-ii), we take the conservative approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123013</commentid>
    <comment_count>14</comment_count>
      <attachid>260426</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-02 18:56:12 -0700</bug_when>
    <thetext>Comment on attachment 260426
Patch

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

patch LGTM, I&apos;ve added some comments.
There is still some of the patch I still have to read, so I won&apos;t r+ until
I finish reading it, but I&apos;m posting some initial comments now.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3839
&gt; +                // we need not to keep it alive by the Phantom node.

Since the slow paths for LLInt/basline would break if we ever went there with ModuleVar ResolveType, we should
assert in the slow paths that we never reach them with ModuleVar.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4099
&gt; +            case ModuleVar:

Ditto.

&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:55
&gt; +    //     [ JSLexicalEnvironment ][ variable slots ][ additional slots for JSModuleEnvironment ]

nifty.

&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:82
&gt; +    const auto resolution = thisObject-&gt;moduleRecord()-&gt;resolveImport(exec, Identifier::fromUid(exec, propertyName.uid()));

Nit: Can we annotate the type here explicitly?

&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:86
&gt; +        if (importedModuleEnvironment-&gt;methodTable(exec-&gt;vm())-&gt;getOwnPropertySlot(importedModuleEnvironment, exec, propertyName, redirectSlot)) {

Could we just do: JSModuleEnvironment::getOwnPropertySlot(...) ?

&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:89
&gt; +            if (exec-&gt;hadException()) {

This is scary. It looks like this should never throw.
It&apos;s also a bit scary we call getValue() here. We should
prove that doing so never runs any JS code. I think this assertion holds.
We probably could assert that the PropertySlot has a simple value. And we should assert this much
if we&apos;re calling getValue() here.

&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:105
&gt; +            const auto&amp; importEntry = pair.value;

Nit: Can we annotate the type here?

&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:117
&gt; +    const auto resolution = thisObject-&gt;moduleRecord()-&gt;resolveImport(exec, Identifier::fromUid(exec, propertyName.uid()));

ditto here.

&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.h:63
&gt; +        return WTF::roundUpToMultipleOf&lt;sizeof(WriteBarrier&lt;JSModuleRecord&gt;)&gt;(Base::allocationSize(symbolTable));

I thought JSEnvironmentRecord::allocationSize already returns a multiple of sizeof(WriteBarrier&lt;JSModuleRecord&gt;).
If it does, I think we should just ASSERT that it does and remove this rounding.

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:221
&gt; +static JSModuleRecord::Resolution resolveExportLoop(ExecState* exec, const ResolveQuery&amp; root)

Note to self: I still need to go through this.

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:440
&gt; +    SymbolTable* symbolTable = unlinkedCodeBlock-&gt;moduleEnvironmentSymbolTable();

I think we want this symbol table to be cloned.
This is probably wrong if we ever cache the unlinked module program
because we will do constant inference based on information the symbol
table tells us (though actually it probably won&apos;t happen because caching
this will cause a second write to the symbol table&apos;s singleton scope InferredValue).
I think it&apos;s cleaner for each linked module code block to own its linked symbol table.

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:484
&gt; +            const auto resolution = importedModule-&gt;resolveExport(exec, importEntry.importName);

Nit: Can we explicitly write the type here?

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:506
&gt; +    // Module environment contains the heap allocated &quot;var&quot;, &quot;let&quot; and &quot;const&quot;.

I think it should also contain &quot;class&quot;

&gt; Source/JavaScriptCore/runtime/JSScope.cpp:72
&gt; +            const auto resolution = moduleRecord-&gt;resolveImport(exec, ident);

nit: ditto. Also explicitly write the type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123104</commentid>
    <comment_count>15</comment_count>
      <attachid>260501</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 11:39:34 -0700</bug_when>
    <thetext>Created attachment 260501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123107</commentid>
    <comment_count>16</comment_count>
      <attachid>260503</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 11:49:14 -0700</bug_when>
    <thetext>Created attachment 260503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123108</commentid>
    <comment_count>17</comment_count>
      <attachid>260426</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 11:49:30 -0700</bug_when>
    <thetext>Comment on attachment 260426
Patch

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

Thank you for your comment! I&apos;ve uploaded the revised patch.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3839
&gt;&gt; +                // we need not to keep it alive by the Phantom node.
&gt; 
&gt; Since the slow paths for LLInt/basline would break if we ever went there with ModuleVar ResolveType, we should
&gt; assert in the slow paths that we never reach them with ModuleVar.

Sounds nice. I&apos;ve added it.

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4099
&gt;&gt; +            case ModuleVar:
&gt; 
&gt; Ditto.

Yes.
Currently, the operation function called in the baseline does not take the resolveType. So if we would like to check it inside the operation function, we need to pass it as the new argument OR pass the byte code pointer to retrieve the value. But I think it&apos;s not so good.
So before emitting the call to that operation function, I&apos;ve inserted the ASSERT(resolveType != ModuleVar) in baseline JIT compiler side.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:55
&gt;&gt; +    //     [ JSLexicalEnvironment ][ variable slots ][ additional slots for JSModuleEnvironment ]
&gt; 
&gt; nifty.

Yeah!

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:82
&gt;&gt; +    const auto resolution = thisObject-&gt;moduleRecord()-&gt;resolveImport(exec, Identifier::fromUid(exec, propertyName.uid()));
&gt; 
&gt; Nit: Can we annotate the type here explicitly?

Sure. Annotated.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:86
&gt;&gt; +        if (importedModuleEnvironment-&gt;methodTable(exec-&gt;vm())-&gt;getOwnPropertySlot(importedModuleEnvironment, exec, propertyName, redirectSlot)) {
&gt; 
&gt; Could we just do: JSModuleEnvironment::getOwnPropertySlot(...) ?

Looks nice. This call should succeed because `resolveImport` resolves the existence. Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:89
&gt;&gt; +            if (exec-&gt;hadException()) {
&gt; 
&gt; This is scary. It looks like this should never throw.
&gt; It&apos;s also a bit scary we call getValue() here. We should
&gt; prove that doing so never runs any JS code. I think this assertion holds.
&gt; We probably could assert that the PropertySlot has a simple value. And we should assert this much
&gt; if we&apos;re calling getValue() here.

Looks very nice. I&apos;ve inserted the assertion, ASSERT(redirectSlot.isValue()) etc.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:105
&gt;&gt; +            const auto&amp; importEntry = pair.value;
&gt; 
&gt; Nit: Can we annotate the type here?

Annotated.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.cpp:117
&gt;&gt; +    const auto resolution = thisObject-&gt;moduleRecord()-&gt;resolveImport(exec, Identifier::fromUid(exec, propertyName.uid()));
&gt; 
&gt; ditto here.

Annotated.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleEnvironment.h:63
&gt;&gt; +        return WTF::roundUpToMultipleOf&lt;sizeof(WriteBarrier&lt;JSModuleRecord&gt;)&gt;(Base::allocationSize(symbolTable));
&gt; 
&gt; I thought JSEnvironmentRecord::allocationSize already returns a multiple of sizeof(WriteBarrier&lt;JSModuleRecord&gt;).
&gt; If it does, I think we should just ASSERT that it does and remove this rounding.

Sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:440
&gt;&gt; +    SymbolTable* symbolTable = unlinkedCodeBlock-&gt;moduleEnvironmentSymbolTable();
&gt; 
&gt; I think we want this symbol table to be cloned.
&gt; This is probably wrong if we ever cache the unlinked module program
&gt; because we will do constant inference based on information the symbol
&gt; table tells us (though actually it probably won&apos;t happen because caching
&gt; this will cause a second write to the symbol table&apos;s singleton scope InferredValue).
&gt; I think it&apos;s cleaner for each linked module code block to own its linked symbol table.

Very nice catch!!!
I&apos;ve changed the design slightly. Now, UnlinkedModuleProgramCodeBlock does not have SymbolTable*. Instead, it register it to the constant pool and remember the offset to that table. (As the same to the UnlinkedFunctionCodeBlock)
CodeBlock linking automatically clones the SymbolTables inside the constant register pool (This is the same to the UnlinkedFunctionCodeBlock).
And here, by using the remembered constant register offset, we retrieve the correctly cloned symbol table from the linked CodeBlock.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:484
&gt;&gt; +            const auto resolution = importedModule-&gt;resolveExport(exec, importEntry.importName);
&gt; 
&gt; Nit: Can we explicitly write the type here?

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:506
&gt;&gt; +    // Module environment contains the heap allocated &quot;var&quot;, &quot;let&quot; and &quot;const&quot;.
&gt; 
&gt; I think it should also contain &quot;class&quot;

Nice, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSScope.cpp:72
&gt;&gt; +            const auto resolution = moduleRecord-&gt;resolveImport(exec, ident);
&gt; 
&gt; nit: ditto. Also explicitly write the type.

Yeah, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123112</commentid>
    <comment_count>18</comment_count>
      <attachid>260506</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 11:55:35 -0700</bug_when>
    <thetext>Created attachment 260506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123115</commentid>
    <comment_count>19</comment_count>
      <attachid>260506</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 12:16:35 -0700</bug_when>
    <thetext>Comment on attachment 260506
Patch

Ah, I found one problem in my new design (about SymbolTable), I&apos;ll slightly update it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123137</commentid>
    <comment_count>20</comment_count>
      <attachid>260514</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 13:21:39 -0700</bug_when>
    <thetext>Created attachment 260514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123169</commentid>
    <comment_count>21</comment_count>
      <attachid>260525</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 14:34:11 -0700</bug_when>
    <thetext>Created attachment 260525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123174</commentid>
    <comment_count>22</comment_count>
      <attachid>260527</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 14:51:28 -0700</bug_when>
    <thetext>Created attachment 260527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123181</commentid>
    <comment_count>23</comment_count>
      <attachid>260527</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 15:03:56 -0700</bug_when>
    <thetext>Comment on attachment 260527
Patch

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

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1799
&gt; +    }

This is needed because

(1): Linking CodeBlock requires that the all imported module environments are already created. So the symbol table for the module environments should be already cloned and used.
(2): The module environment is the top-most lexical/variable environment for the original module at the same time. So like &quot;LocalClosureVar&quot; will be performed to the module environment. So when linking, the symbol table used for the module environment should be locate in the constant registers of the linked code block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123204</commentid>
    <comment_count>24</comment_count>
      <attachid>260536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 16:21:22 -0700</bug_when>
    <thetext>Created attachment 260536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123230</commentid>
    <comment_count>25</comment_count>
      <attachid>260536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 17:39:26 -0700</bug_when>
    <thetext>Comment on attachment 260536
Patch

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

Added comments for ease of reviews.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1799
&gt; +    }

This is needed because

(1): Linking CodeBlock requires that the all imported module environments are already created. So the symbol table for the module environments should be already cloned and used.
(2): The module environment is the top-most lexical/variable environment for the original module at the same time. So like &quot;LocalClosureVar&quot; will be performed to the module environment. So when linking, the symbol table used for the module environment should be locate in the constant registers of the linked code block.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:662
&gt; +    codeBlock-&gt;setModuleEnvironmentSymbolTableConstantRegisterOffset(constantSymbolTable-&gt;index());

Changed. Now, UnlinkedModuleProgramCodeBlock stores the symbol table in the constant pool as well as the UnlinkedFunctionCodeBlock does.
And remember the index to retrieve the symbol table in ModuleProgramExecutable to create the ModuleEnvironment.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1944
&gt; +

Insert the assertion.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:1983
&gt; +

Insert the assertion.

&gt; Source/JavaScriptCore/llint/LLIntData.cpp:155
&gt; +    static_assert(ClosureVarWithVarInjectionChecks == 9, &quot;LLInt assumes ClosureVarWithVarInjectionChecks ResultType is == 9&quot;);

Rebase the LLIntData.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1371
&gt; +

Insert the assertion.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:200
&gt; +const ClosureVarWithVarInjectionChecks = 9

Rebase the LLIntData.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:2117
&gt; +    getConstantScope(1)

Use the getConstantScope.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:1985
&gt; +    getConstantScope(1)

Ditto.

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:680
&gt; +

assertion inserted.

&gt; Source/JavaScriptCore/runtime/Executable.cpp:443
&gt; +    executable-&gt;m_moduleEnvironmentSymbolTable.set(exec-&gt;vm(), executable, jsCast&lt;SymbolTable*&gt;(unlinkedModuleProgramCode-&gt;constantRegister(unlinkedModuleProgramCode-&gt;moduleEnvironmentSymbolTableConstantRegisterOffset()).get())-&gt;cloneScopePart(exec-&gt;vm()));

Cloning the symbol table and storing it in ModuleProgramExecutable.

&gt; Source/JavaScriptCore/runtime/JSScope.cpp:230
&gt; +        }

Collect the imported bindings for the TDZ in direct eval call.

&gt; Source/JavaScriptCore/runtime/JSScope.cpp:265
&gt; +

Currently, I decided to make the Module environment as (1) JSModuleEnvironment* and (2) its scope type is LexicalScope.
It also makes JSModuleEnvironment-&gt;isLexicalScope() true. I think it is nice, what do you think of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123272</commentid>
    <comment_count>26</comment_count>
      <attachid>260536</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-03 19:05:25 -0700</bug_when>
    <thetext>Comment on attachment 260536
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1798
&gt; +        m_constantRegisters[unlinkedModuleProgramCodeBlock-&gt;moduleEnvironmentSymbolTableConstantRegisterOffset() - FirstConstantRegisterIndex].set(*m_vm, ownerExecutable, clonedSymbolTable);

There is a method on CodeBlock that already does this: CodeBlock::replaceConstant

&gt; Source/JavaScriptCore/runtime/Executable.cpp:442
&gt; +    // Clone the module environment symbol table for this executable (and the code block linked and instantiated later).

this comment is not needed.

&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:532
&gt; +            symbolTablePut(moduleEnvironment, exec, unlinkedFunctionExecutable-&gt;name(), function, false, true);

I wonder why we have two of these. Both JSSymbolTableObject implements one and JSLexicalEnvironment.
Since moduleEnvironment is a JSLexicalEnvironment, we should probably call that implementation, but
the implementations look nearly identical except for what we do with the watchpoint. We should consolidate if possible.

&gt; Source/JavaScriptCore/runtime/JSScope.cpp:226
&gt; +        if (scope-&gt;isModuleScope()) {

Nit: I&apos;d move this below the &quot;continue&quot; check.

&gt;&gt; Source/JavaScriptCore/runtime/JSScope.cpp:265
&gt;&gt; +
&gt; 
&gt; Currently, I decided to make the Module environment as (1) JSModuleEnvironment* and (2) its scope type is LexicalScope.
&gt; It also makes JSModuleEnvironment-&gt;isLexicalScope() true. I think it is nice, what do you think of?

Seems good to me. We can change it later if need be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123327</commentid>
    <comment_count>27</comment_count>
      <attachid>260536</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 21:17:18 -0700</bug_when>
    <thetext>Comment on attachment 260536
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1798
&gt;&gt; +        m_constantRegisters[unlinkedModuleProgramCodeBlock-&gt;moduleEnvironmentSymbolTableConstantRegisterOffset() - FirstConstantRegisterIndex].set(*m_vm, ownerExecutable, clonedSymbolTable);
&gt; 
&gt; There is a method on CodeBlock that already does this: CodeBlock::replaceConstant

Great! Changed to use it.

&gt;&gt; Source/JavaScriptCore/runtime/Executable.cpp:442
&gt;&gt; +    // Clone the module environment symbol table for this executable (and the code block linked and instantiated later).
&gt; 
&gt; this comment is not needed.

Dropped.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleRecord.cpp:532
&gt;&gt; +            symbolTablePut(moduleEnvironment, exec, unlinkedFunctionExecutable-&gt;name(), function, false, true);
&gt; 
&gt; I wonder why we have two of these. Both JSSymbolTableObject implements one and JSLexicalEnvironment.
&gt; Since moduleEnvironment is a JSLexicalEnvironment, we should probably call that implementation, but
&gt; the implementations look nearly identical except for what we do with the watchpoint. We should consolidate if possible.

After investigating the implementation, I&apos;ve found that JSLexicalEnvironment calls `isValid()` to protect against the inspector call.
In the meantime, I leave it as is. And attempt to fix this in the subsequent patch. https://bugs.webkit.org/show_bug.cgi?id=148783

&gt;&gt; Source/JavaScriptCore/runtime/JSScope.cpp:226
&gt;&gt; +        if (scope-&gt;isModuleScope()) {
&gt; 
&gt; Nit: I&apos;d move this below the &quot;continue&quot; check.

Sounds nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123329</commentid>
    <comment_count>28</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 21:29:09 -0700</bug_when>
    <thetext>Committed r189339: &lt;http://trac.webkit.org/changeset/189339&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260413</attachid>
            <date>2015-09-01 23:04:31 -0700</date>
            <delta_ts>2015-09-01 23:33:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150901230413.patch</filename>
            <type>text/plain</type>
            <size>188526</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi4xMjc1M2FhZGFlYWZjMWNk
MzFlZDk4NDhhOGE2OGNhNDcxZTU1NzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzkgQEAKKzIwMTUtMDktMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgQW5kIGluc3RhbnRpYXRpb24gaW52
b2x2ZXMgdGhlIGNyZWF0aW9uIG9mIHRoZSBuYW1lc3BhY2Ugb2JqZWN0LiBXZSBpbXBsZW1lbnQg
aXQgYXMgdGhlCisgICAgICAgIHNpbXBsZSB3cmFwcGVyIG9iamVjdCB0byB0aGUgSlNNb2R1bGVS
ZWNvcmQuIEFuZCBpbml0aWFsaXplIHRoZSBuYW1lc3BhY2Ugc2xvdCBvZiB0aGUKKyAgICAgICAg
bW9kdWxlIGVudmlyb25tZW50IHdpdGggdGhlIGNyZWF0ZWQgbmFtZXNwYWNlIG9iamVjdC4KKwor
ICAgICAgICBUbyBsb29rIHVwIHRoZSBpbXBvcnRlZCBtb2R1bGUgYmluZGluZ3MgaW4gdGhlIEpT
IGNvZGUsIHdlIGludHJvZHVjZSB0aGUgIk1vZHVsZVZhciIgcmVzb2x2ZQorICAgICAgICB0eXBl
IGZvciByZXNvbHZlX3Njb3BlLCBnZXRfZnJvbV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLiBUaGlz
ICJNb2R1bGVWYXIiIHdpbGwgYmUgZmlsbGVkCisgICAgICAgIHdoZW4gbGlua2luZyB0aGUgQ29k
ZUJsb2NrLiBUaGlzIHR5cGUgaXMgdXNlZCB3aGVuIHRyZWF0aW5nIHRoZSBpbXBvcnRlZCBiaW5k
aW5ncy4KKworICAgICAgICAgICAgMS4gRm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywg
d2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1vZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAg
ICAgbG9va2VkIHVwIHZhcmlhYmxlIHJlc2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRo
ZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29sdmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRy
aWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIgZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAg
ICAgIDIuIEZvciBnZXRfZnJvbV9zY29wZSwgc2luY2UgIk1vZHVsZVZhciIgYmVoYXZpb3IgZm9y
IGdldF9mcm9tX3Njb3BlIGlzIGNvbXBsZXRlbHkgc2FtZQorICAgICAgICAgICAgdG8gdGhlICJD
bG9zdXJlVmFyIiwgd2UganVzdCBzdG9yZSAiQ2xvc3VyZVZhciIgZm9yIGdldF9mcm9tX3Njb3Bl
IHRvIGVsaW1pbmF0ZQorICAgICAgICAgICAgdW5uZWNlc3NhcnkgYnJhbmNoIGluIExMSW50IGxh
eWVyLgorCisgICAgICAgICAgICAzLiBGb3IgcHV0X3RvX3Njb3BlLCB3ZSBhbHdheXMgZW1pdCB0
aGUgZnVuY3Rpb24gY2FsbCB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyB0aGUgZXJyb3IuCisgICAg
ICAgICAgICBCZWNhdXNlIGFsbCB0aGUgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZSBh
bmQgbW9kdWxlIGNvZGUgaXMgYWx3YXlzIHN0cmljdCBjb2RlLgorICAgICAgICAgICAgSW4gREZH
LCB3ZSBqdXN0IGVtaXQgdGhlIEZvcmNlT1NSRXhpdC4gV2UgZG9uJ3QgbWFrZSBwdXRfdG9fc2Nv
cGUgd2l0aCAiTW9kdWxlVmFyIgorICAgICAgICAgICAgIkNhbm5vdENvbXBpbGUiIGJlY2F1c2Ug
aXQgZGlzYWJsZXMgREZHIGNvbXBpbGluZyBmb3IgdGhlIGZ1bmN0aW9uIGV2ZW4gaWYgdGhpcwor
ICAgICAgICAgICAgcHJvYmxlbWF0aWMgaW5zdHJ1Y3Rpb24gaXMgbmV2ZXIgZXhlY3V0ZWQuCisK
KyAgICAgICAgRXhwb3J0ZWQgbW9kdWxlIHZhcmlhYmxlcyBpbnNpZGUgdGhlIG9yaWdpbmFsIG1v
ZHVsZSBlbnZpcm9ubWVudCBhcmUganVzdCB0cmVhdGVkIGFzIHRoZQorICAgICAgICB1c3VhbCBo
ZWFwIHZhcmlhYmxlcy4gU28gdGhlIHR5cGVzIGZvciBjbG9zdXJlIHZhcmlhYmxlcyBhcmUganVz
dCB1c2VkLiAoIkNsb3N1cmVWYXIiIGV0Yy4pCisKKyAgICAgICAgQW5kIHNpbmNlIG5vdyB3ZSBj
YW4gZXhlY3V0ZSB0aGUgbW9kdWxlcywgd2UgYWRkZWQgYnVuY2ggb2YgdGVzdHMgdG8gZW5zdXJl
IHRoZSBvcmRlciBvZiB0aGUKKyAgICAgICAgbG9hZGluZyBhbmQgZXhlY3V0aW9uIHNlbWFudGlj
cy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2Nv
cGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKGZ1bmN0aW9uTG9hZE1vZHVsZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAg
KEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJy
b3IuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Om1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25t
ZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmguCisgICAgICAgIChK
U0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
RW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52
aXJvbm1lbnQ6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVF
bnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmly
b25tZW50Ojptb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50
Ojptb2R1bGVSZWNvcmRTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6
SlNNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVj
dDo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0
QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3lt
Ym9sSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6OmFkZFN0YXJFeHBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjph
ZGRJbXBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRF
bnRyeSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeTo6UmVzb2x2ZVF1ZXJ5KToKKyAgICAg
ICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAoSlNDOjpSZXNv
bHZlUXVlcnk6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5SGFz
aDo6aGFzaCk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKToKKyAgICAg
ICAgKEpTQzo6cmVzb2x2ZUV4cG9ydExvb3ApOgorICAgICAgICAoSlNDOjpnZXRFeHBvcnRlZE5h
bWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZSk6
CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZHVt
cCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6ZXhwb3J0RW50cmllcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjppbXBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnN0YXJF
eHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUVudmly
b25tZW50KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1v
ZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRF
bnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRF
bnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhw
b3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAg
ICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToKKyAgICAgICAgKEpTQzo6cmVzb2x2ZVR5cGVOYW1l
KToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAgICAgKEpTQzo6bWFrZVR5cGUp
OgorICAgICAgICAoSlNDOjpuZWVkc1ZhckluamVjdGlvbkNoZWNrcyk6CisgICAgICAgIChKU0M6
OlJlc29sdmVPcDo6UmVzb2x2ZU9wKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9i
amVjdC5jcHA6CisgICAgICAgICogdGVzdHMvbW9kdWxlcy55YW1sOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0cy9tb2R1bGVzL2FsaWFzaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1
bGVzL2FsaWFzaW5nL2RyaW5rLTIuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0LmxldC5DYXBw
dWNjaW5vLnN0cmluZ19hcHBlYXJlZF9oZXJlLmV4cG9ydC5jaGFuZ2VDYXBwdWNjaW5vKToKKyAg
ICAgICAgKiB0ZXN0cy9tb2R1bGVzL2FsaWFzaW5nL2RyaW5rLmpzOiBBZGRlZC4KKyAgICAgICAg
KGV4cG9ydC5jaGFuZ2VDb2NvYSk6CisgICAgICAgICogdGVzdHMvbW9kdWxlcy9jeWNsaWMtbWF5
LXByb2R1Y2UtdGR6LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2N5Y2xpYy1t
YXktcHJvZHVjZS10ZHovMS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9jeWNs
aWMtbWF5LXByb2R1Y2UtdGR6LzIuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMv
ZGVmYXVsdC1lcnJvci9tYWluLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci1jeWNsaWMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMv
ZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1
bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMTAuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8xMS5qczogQWRkZWQuCisgICAgICAgICog
dGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzIuanM6IEFkZGVkLgorICAgICAg
ICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8zLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvNC5qczogQWRkZWQu
CisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzUuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy82Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMv
Ny5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3lj
bGljLzguanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVy
LWN5Y2xpYy85LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1v
cmRlci1kYWcuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9y
ZGVyLWRhZy8xLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1v
cmRlci1kYWcvMTAuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9u
LW9yZGVyLWRhZy8yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlv
bi1vcmRlci1kYWcvMy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItZGFnLzQuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0
aW9uLW9yZGVyLWRhZy81LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1
dGlvbi1vcmRlci1kYWcvNi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVj
dXRpb24tb3JkZXItZGFnLzcuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLWRhZy84LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci1kYWcvOS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItZGVwdGguanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMv
ZXhlY3V0aW9uLW9yZGVyLWRlcHRoLzEuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVs
ZXMvZXhlY3V0aW9uLW9yZGVyLWRlcHRoLzIuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21v
ZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRlcHRoLzMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNlbGYuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNpYmxpbmcuanM6IEFkZGVkLgorICAgICAgICAqIHRl
c3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNpYmxpbmcvMS5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItc2libGluZy8yLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzMuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUuanM6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvMS5qczogQWRk
ZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xMC5qczog
QWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xMS5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8y
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVl
LzMuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRy
ZWUvNC5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXIt
dHJlZS81LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRl
ci10cmVlLzYuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9y
ZGVyLXRyZWUvNy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItdHJlZS84LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4ZWN1dGlv
bi1vcmRlci10cmVlLzkuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvZXhwb3J0
LWNvbmZsaWN0LW9rLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4cG9ydC1j
b25mbGljdC1vay9BLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4cG9ydC1j
b25mbGljdC1vay9CLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4cG9ydC1j
b25mbGljdC1vay9tYWluLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2V4cG9y
dGVkLWZ1bmN0aW9uLW1heS1iZS1jYWxsZWQtYmVmb3JlLW1vZHVsZS1pcy1leGVjdXRlZC5qczog
QWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUt
Y2FsbGVkLWJlZm9yZS1tb2R1bGUtaXMtZXhlY3V0ZWQvMS5qczogQWRkZWQuCisgICAgICAgICog
dGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJlZm9yZS1tb2R1
bGUtaXMtZXhlY3V0ZWQvMi5qczogQWRkZWQuCisgICAgICAgIChleHBvcnQuYWRkKToKKyAgICAg
ICAgKGV4cG9ydC5yYWlzZSk6CisgICAgICAgICogdGVzdHMvbW9kdWxlcy9pbXBvcnQtZXJyb3Iu
anM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9yL2V4cG9ydC1h
bWJpZ3VvdXMtMS5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9pbXBvcnQtZXJy
b3IvZXhwb3J0LWFtYmlndW91cy0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVz
L2ltcG9ydC1lcnJvci9leHBvcnQtYW1iaWd1b3VzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
cy9tb2R1bGVzL2ltcG9ydC1lcnJvci9leHBvcnQtZGVmYXVsdC1mcm9tLXN0YXItMi5qczogQWRk
ZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdC5Db2NvYSk6CisgICAgICAgICogdGVzdHMvbW9k
dWxlcy9pbXBvcnQtZXJyb3IvZXhwb3J0LWRlZmF1bHQtZnJvbS1zdGFyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci9leHBvcnQtbm90LWZvdW5kLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci9pbXBvcnQtYW1iaWd1
b3VzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci9pbXBv
cnQtZGVmYXVsdC1mcm9tLXN0YXIuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMv
aW1wb3J0LWVycm9yL2ltcG9ydC1ub3QtZm91bmQuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3Rz
L21vZHVsZXMvaW1wb3J0ZWQtYmluZGluZ3MtYXJlLWltbXV0YWJsZS5qczogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1hcmUtaW1tdXRhYmxlL2JpbmRp
bmdzLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5mdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKGV4cG9ydC5jbGFzc0RlY2xhcmF0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVz
L2ltcG9ydGVkLWJpbmRpbmdzLWNhbi1iZS1jaGFuZ2VkLWluLW9yaWdpbmFsLW1vZHVsZS5qczog
QWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1jYW4tYmUt
Y2hhbmdlZC1pbi1vcmlnaW5hbC1tb2R1bGUvYmluZGluZ3MuanM6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yLmpzOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0cy9tb2R1bGVzL2luZGlyZWN0LWV4cG9ydC1lcnJvci9pbmRpcmVjdC1leHBvcnQtYW1i
aWd1b3VzLTIuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhw
b3J0LWVycm9yL2luZGlyZWN0LWV4cG9ydC1hbWJpZ3VvdXMtMy5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LWFt
YmlndW91cy00LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2luZGlyZWN0LWV4
cG9ydC1lcnJvci9pbmRpcmVjdC1leHBvcnQtYW1iaWd1b3VzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0cy9tb2R1bGVzL2luZGlyZWN0LWV4cG9ydC1lcnJvci9pbmRpcmVjdC1leHBvcnQtZGVm
YXVsdC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2luZGlyZWN0LWV4cG9y
dC1lcnJvci9pbmRpcmVjdC1leHBvcnQtZGVmYXVsdC0zLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4
cG9ydC5kZWZhdWx0LkNvY29hKToKKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2luZGlyZWN0LWV4
cG9ydC1lcnJvci9pbmRpcmVjdC1leHBvcnQtZGVmYXVsdC5qczogQWRkZWQuCisgICAgICAgICog
dGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LW5vdC1m
b3VuZC0yLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL2luZGlyZWN0LWV4cG9y
dC1lcnJvci9pbmRpcmVjdC1leHBvcnQtbm90LWZvdW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9tb2R1bGVzL21vZHVsZS1pcy1zdHJpY3QtY29kZS5qczogQWRkZWQuCisgICAgICAgICog
dGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtYW1iaWd1b3VzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0
ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1hbWJpZ3VvdXMvYW1iaWd1b3VzLTIuanM6IEFkZGVkLgor
ICAgICAgICAqIHRlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWFtYmlndW91cy9hbWJpZ3VvdXMtMy5q
czogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtYW1iaWd1b3VzL2Ft
YmlndW91cy00LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1h
bWJpZ3VvdXMvYW1iaWd1b3VzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL25h
bWVzcGFjZS1lcnJvci5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1lc3Bh
Y2UtZXJyb3IvbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3Vp
dHktMi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJyb3Iv
bmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHktMy5qczog
QWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNl
LWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHktNC5qczogQWRkZWQuCisg
ICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2FsLWVy
cm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHktNS5qczogQWRkZWQuCisgICAgICAgICog
dGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3Vs
ZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHktNi5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9k
dWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWds
b2JhbC1hbWJpZ3VpdHktNy5qczogQWRkZWQuCisgICAgICAgICogdGVzdHMvbW9kdWxlcy9uYW1l
c3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJp
Z3VpdHkuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvbmFtZXNwYWNlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS9hZGRpdGlvbmFsLWRyaW5r
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS9kcmluay5qczog
QWRkZWQuCisgICAgICAgIChleHBvcnQuZGVmYXVsdC5jaGFuZ2VDYXBwdWNjaW5vKToKKyAgICAg
ICAgKiB0ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS9tb3JlLWFkZGl0aW9uYWwtZHJpbmsuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RzL21vZHVsZXMvcmVzb3VyY2VzL2Fzc2VydC5qczogQWRkZWQu
CisgICAgICAgIChleHBvcnQuc2hvdWxkQmUpOgorICAgICAgICAoZXhwb3J0LnNob3VsZFRocm93
KToKKyAgICAgICAgKiB0ZXN0cy9tb2R1bGVzL3Njb3Blcy5qczogQWRkZWQuCisgICAgICAgICog
dGVzdHMvbW9kdWxlcy9zY29wZXMvYWRkaXRpb25hbC1kcmluay5qczogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvbW9kdWxlcy9zY29wZXMvZHJpbmsuanM6IEFkZGVkLgorICAgICAgICAoZXhwb3J0
LmRlZmF1bHQuY2hhbmdlQ2FwcHVjY2lubyk6CisgICAgICAgICogdGVzdHMvbW9kdWxlcy9zY29w
ZXMvbW9yZS1hZGRpdGlvbmFsLWRyaW5rLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9tb2R1
bGVzL3RoaXMtc2hvdWxkLWJlLXVuZGVmaW5lZC5qczogQWRkZWQuCisKIDIwMTUtMDktMDEgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJv
dG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBub3QgYWxsb3cgbm9uLWJvb2xlYW4gdmFsdWVzIGZvciAi
b3B0aW9uYWwiIGtleQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMjJlNzE2ZjUz
MTEwN2ZlNTk4MWM1YTZkMTZkM2E0NTQxZTYxOWY1Li4wMmUyNjA4NTA5ZDEwMTFhOTZhMmQzZmNk
YzFjNWU3NTBhMmM2OGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcwMCw2
ICsxNzAwLDggQEAKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5n
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRB
OEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi87IH07CiAJCUUxOEUz
QTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICov
OyB9OwogCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0Lmpz
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzA2Nzc5
NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0LmpzICovOyB9OworCQlFMzE4
Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkUxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLzsgfTsKKwkJRTMxOENC
QzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBB
MjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyog
UmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87
IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAy
MDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwpAQCAtMTcyNiw2ICsxNzI4LDggQEAK
IAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNG
NzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKIAkJRTM5REE0QTYx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNEMjM5QzgxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OworCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVG
NjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52
aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3
MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJ
CUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1NTksNiArMzU2Myw4IEBACiAJCUUxOEUzQTU2MERG
OTI3OEMwMEQ5MEIzNCAvKiBWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRp
bmcgPSAwOyBwYXRoID0gVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNw
ZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCUUxOEUzQTU3
MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4
Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJ
RTMwNjc3OTcxQjhCQzZGNTAwM0Y4N0YwIC8qIE1vZHVsZUxvYWRlck9iamVjdC5qcyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IE1vZHVsZUxvYWRlck9iamVjdC5qczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8q
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0EzMUI2MzIy
MDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZsZWN0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTM1ODcsNiArMzU5Myw4IEBACiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENF
NSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpT
TW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM2MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9u
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25t
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNG
MjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJF
RjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDc3Nyw2ICs0Nzg1LDEwIEBACiAJCQkJQTcwMDg3NDAxN0NC
RThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8sCiAJCQkJQTc0REVGOEYxODJEOTkxNDAwNTIyQzIy
IC8qIEpTTWFwSXRlcmF0b3IuY3BwICovLAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAv
KiBKU01hcEl0ZXJhdG9yLmggKi8sCisJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpT
TW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAorCQkJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAv
KiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCisJCQkJRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlE
IC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLywKKwkJCQlFMzE4Q0JCRjFCOEFFRjUx
MDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLywKIAkJCQlFMzlEQTRBNDFC
N0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUzOURBNEE1MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUUzM0U4RDFBMUI5MDEz
QzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLywKQEAgLTYxMzksNiArNjE1
MSw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkYwRjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dl
YWtTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjcyLDYg
KzYyODUsNyBAQAogCQkJCTdCMDI0NzU3MUI4NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25Q
YXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBG
VExMb3dlckRGR1RvTExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAw
NzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMThD
QkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYyMjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIzNUJERDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4
aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtNzM4Niw2ICs3NDAwLDcgQEAK
IAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQ
cm9maWxpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcx
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNEMjM5
QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVy
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyogRlRM
RFdBUkZSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0NjUsNiArNzQ4MCw3IEBACiAJ
CQkJMEZEMTIwMzMxQThDODVCRDAwMEY1MjgwIC8qIEZUTEpTQ2FsbFZhcmFyZ3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY5RDMzOTYxN0ZGQzRFNjAwNzNDMkJDIC8qIERGR0ZsdXNoZWRBdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzNGNTA4NDFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE4Q0JDMDFCOEFF
RjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY5RDM2OTQxQUU5Q0MzMzAwMEQ0REZCIC8qIERGR0NsZWFuVXBQaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBN0Q4OUNGNzE3QTBCOENDMDA3NzNBRDggLyogREZHRmx1c2hGb3Jt
YXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQkQxQjcxQjg5NkEwNzAwNTk4QUE2IC8qIERG
R0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYzRjNjZkM2I3OTc2Zjk3NzViZDEzNGQxZWE5
ODljMTRhNDVkYWFkNy4uNjcyNjQzY2U4YTg1YThjMmQ0ZDViZjc2MWMwM2RjZDBhMmU5MDlmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0xOTcy
LDkgKzE5NzMsMTQgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAgIFJlc29s
dmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBlKTsKICAgICAg
ICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gb3AudHlwZTsKICAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgNV0udS5vcGVyYW5kID0gb3AuZGVwdGg7Ci0gICAgICAgICAg
ICBpZiAob3AubGV4aWNhbEVudmlyb25tZW50KQotICAgICAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4
aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
b3AudHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gS2VlcCB0aGUg
bGlua2VkIG1vZHVsZSBlbnZpcm9ubWVudCBzdHJvbmdseSByZWZlcmVuY2VkLgorICAgICAgICAg
ICAgICAgICAgICBhZGRDb25zdGFudChvcC5sZXhpY2FsRW52aXJvbm1lbnQpOworICAgICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuanNDZWxsLnNldCgqdm0oKSwgb3duZXJF
eGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQpOworICAgICAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuc3ltYm9sVGFibGUu
c2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9s
VGFibGUoKSk7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDZdLnUucG9pbnRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtMTk5OSw3ICsyMDA1LDEyIEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2
ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBp
ZGVudCwgR2V0LCBtb2RlQW5kVHlwZS50eXBlKCkpOwogCi0gICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDRdLnUub3BlcmFuZCA9IFJlc29sdmVNb2RlQW5kVHlwZShtb2RlQW5kVHlwZS5tb2Rl
KCksIG9wLnR5cGUpLm9wZXJhbmQoKTsKKyAgICAgICAgICAgIC8vIE1vZHVsZVZhciBjYW4gZ2V0
IHRoZSB2YXJpYWJsZSBhcyB0aGUgc2FtZSB0byBDbG9zdXJlVmFyLgorICAgICAgICAgICAgaWYg
KG9wLnR5cGUgPT0gTW9kdWxlVmFyKQorICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
NF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgQ2xv
c3VyZVZhcikub3BlcmFuZCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRU
eXBlLm1vZGUoKSwgb3AudHlwZSkub3BlcmFuZCgpOworCiAgICAgICAgICAgICBpZiAob3AudHlw
ZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0udS53YXRjaHBvaW50U2V0
ID0gb3Aud2F0Y2hwb2ludFNldDsKICAgICAgICAgICAgIGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkK
QEAgLTIwNjcsMTcgKzIwNzgsMTggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAg
ICAgICAgICAvLyB3ZSdyZSBhYnN0cmFjdGx5ICJyZWFkImluZyBmcm9tIGEgSlNTY29wZS4KICAg
ICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9n
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQs
IEdldCwgdHlwZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFy
KQorICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIgfHwgb3AudHlwZSA9
PSBNb2R1bGVWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gb3AubGV4aWNh
bEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9w
LnR5cGUgPT0gR2xvYmFsVmFyKQogICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG1f
Z2xvYmFsT2JqZWN0LmdldCgpLT5zeW1ib2xUYWJsZSgpOwotICAgICAgICAgICAgICAgIAorCisg
ICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwgPSAob3AudHlwZSA9PSBNb2R1
bGVWYXIpID8gb3AuaW1wb3J0ZWROYW1lLmdldCgpIDogaWRlbnQuaW1wbCgpOwogICAgICAgICAg
ICAgICAgIGlmIChzeW1ib2xUYWJsZSkgewogICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgICAgICAgICAg
ICAgLy8gSWYgb3VyIHBhcmVudCBzY29wZSB3YXMgY3JlYXRlZCB3aGlsZSBwcm9maWxpbmcgd2Fz
IGRpc2FibGVkLCBpdCB3aWxsIG5vdCBoYXZlIHByZXBhcmVkIGZvciBwcm9maWxpbmcgeWV0Lgog
ICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+cHJlcGFyZUZvclR5cGVQcm9maWxpbmco
bG9ja2VyKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRh
YmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xUYWJsZS0+Z2xvYmFsVHlw
ZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7CisgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJp
YWJsZShsb2NrZXIsIGltcGwsICp2bSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVHlw
ZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9ja2VyLCBpbXBs
LCAqdm0oKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGds
b2JhbFZhcmlhYmxlSUQgPSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYmRkZDAzNjdmM2JlMzcy
NzY5YWRmZmJjZmE1OTg0MzE4YjIzYzc4OC4uMzgyM2JjNzU1Yzg0YTZmOGViYWJkYzA1MDkwZmJl
YTNiYTFmMGY3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aApAQCAtODIsNiArODIsNyBAQCBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwogY2xhc3MgVHlwZUxvY2F0aW9uOworY2xh
c3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250
Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDdmNjUwNTJk
YThmMmYxZjk3NDM0YzhjYjdhNmEyMGZjNDIyNmU1MDcuLjk3OWM4ZTY4MGQ2ZDhkMDY4ZTZkZmY0
NWI1ZDVhZTA4ZGExNjlmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgog
I2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVt
cFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RhY2tB
bGlnbm1lbnQuaCIKQEAgLTM4MzMsNiArMzgzNCwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlVHlw
ZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgcmVzb2x2ZVR5cGUg
PT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChQaGFudG9tLCBnZXREaXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVy
YW5kKFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOiB7Cisg
ICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlIHZhbHVlIG9mIHRoZSAic2NvcGUiIHZpcnR1YWwg
cmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4gTExJbnQgLyBiYXNlbGluZSBvcF9yZXNvbHZlX3Njb3Bl
IHdpdGggTW9kdWxlVmFyLAorICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgbm90IHRvIGtlZXAg
aXQgYWxpdmUgYnkgdGhlIFBoYW50b20gbm9kZS4KKyAgICAgICAgICAgICAgICBKU01vZHVsZUVu
dmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50
Kj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgaXMgYWxyZWFkeSBzdHJvbmdseSByZWZlcmVuY2VkIGJ5
IHRoZSBDb2RlQmxvY2suCisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3Qp
LCB3ZWFrSlNDb25zdGFudChtb2R1bGVFbnZpcm9ubWVudCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAg
ICAgICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CkBAIC00MDAyLDYgKzQwMTEsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKEdldENsb3N1cmVWYXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRp
Y3Rpb24pLCBzY29wZU5vZGUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgogICAgICAgICAgICAgY2FzZSBEeW5hbWlj
OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC00MDg2LDYgKzQwOTYsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIE1vZHVsZVZh
cjoKKyAgICAgICAgICAgICAgICAvLyBOZWVkIG5vdCB0byBrZWVwICJzY29wZSIgYW5kICJ2YWx1
ZSIgcmVnaXN0ZXIgdmFsdWVzIGhlcmUgYnkgUGhhbnRvbSBiZWNhdXNlCisgICAgICAgICAgICAg
ICAgLy8gdGhleSBhcmUgbm90IHVzZWQgaW4gTExJbnQgLyBiYXNlbGluZSBvcF9wdXRfdG9fc2Nv
cGUgd2l0aCBNb2R1bGVWYXIuCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4
aXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6
CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZhNjJlYTZmMzc2ZDg4Y2VmZjRlOTgyNzU0MzI2NmUwZDkz
YTQ0OWMuLjVhN2EyYWU1ZGQwZTZkMDA0OTFjMDc3YmM1NDhkYmRkMTcxNjZiZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUg
IkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTE5NCw2
ICsxMTk1LDU0IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUq
IGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4ocmVzdWx0KTsKIH0KIAorSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTTW9k
dWxlRW52aXJvbm1lbnQqIHNjb3BlKQoreworICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKKyAg
ICBTYW1wbGluZ1Njb3BlIHNhbXBsaW5nU2NvcGUodGhpcyk7CisKKyAgICBBU1NFUlQoc2NvcGUt
PnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CisgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
CisgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
dm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CisgICAgaWYgKHZtLmlzQ29sbGVj
dG9yQnVzeSgpKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisKKyAgICBWTUVudHJ5U2NvcGUg
ZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIXZtLmlzU2Fm
ZVRvUmVjdXJzZSgpKQorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKKworICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBl
eGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUs
IENvZGVGb3JDYWxsKTsKKyAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQorICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2Fs
bEZyYW1lLCBjb21waWxlRXJyb3IpKTsKKyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjdXRhYmxlLT5jb2RlQmxvY2soKTsKKworICAgIGlmIChVTkxJS0VMWSh2bS53
YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+ZGlkRmlyZShjYWxsRnJhbWUpKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworCisgICAg
QVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBm
b3IgJ3RoaXMnLgorCisgICAgLy8gVGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBg
dW5kZWZpbmVkYC4KKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcK
KyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBQcm90b0Nh
bGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9j
aywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSksIGpz
VW5kZWZpbmVkKCksIDEpOworCisgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZt
LmVuYWJsZWRQcm9maWxlcigpKQorICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZy
YW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCksIGV4
ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworCisgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKKyAg
ICBKU1ZhbHVlIHJlc3VsdDsKKyAgICB7CisgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29y
ZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5nZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IGV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7Cisg
ICAgfQorCisgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9m
aWxlcigpKQorICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFi
bGUtPnNvdXJjZVVSTCgpLCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3Rh
cnRDb2x1bW4oKSk7CisKKyAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOworfQorCiBO
RVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IERlYnVnSG9va0lEIGRlYnVnSG9va0lEKQogewogICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNh
bGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCAwMzhiY2E1Y2Zj
NzViOWIyNDU3NjJkNmU2NGY2OGYyZTc4ZWM2MjUxLi40ZmVmYWE2Y2Y4ZTMxYWYyZDM1OWQxNjNi
YWM4YTFhNDA5NWFmNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNTQsNiArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0Fycm93RnVuY3Rpb247CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwogICAgIGNsYXNz
IEpTTW9kdWxlUmVjb3JkOwogICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBj
bGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKQEAgLTIxNSw2ICsyMTYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVu
Y3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25z
dCBBcmdMaXN0Jik7CiAgICAgICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KENhbGxGcmFt
ZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0
YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CiAgICAgICAgIEpTVmFsdWUg
ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBK
U1Njb3BlKik7CisgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSosIENhbGxGcmFtZSosIEpTTW9kdWxlRW52aXJvbm1lbnQqKTsKIAogICAgICAgICB2b2lkIGdl
dEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1lKiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0
UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVyKiYgYXJndiwgaW50JiBhcmdjKTsKICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4
IDQ4Y2RmMTFmZDM2ZmFmZDk2YmYyYmI2NzFmNTVjMzFkNDU3ZTY0NDkuLjlhNGFlNDU1MjlkZWZl
NDc1ZDY3N2JmNzA0YjVjNjA3NmUzZWQzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
U2FtcGxpbmdUb29sLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
U2NvcGVkQXJndW1lbnRzVGFibGUuaCIKKyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogCkBAIC03MDMsNiArNzA0LDEwIEBAIHZv
aWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgICAg
ICBlbWl0UmVzb2x2ZUNsb3N1cmUoZHN0LCBzY29wZSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3Mo
cmVzb2x2ZVR5cGUpLCBkZXB0aCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFy
OgorICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY3VycmVudEluc3RydWN0aW9uWzZdLnUuanND
ZWxsLmdldCgpKSwgcmVnVDApOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2Uo
anVtcCgpKTsKICAgICAgICAgYnJlYWs7CkBAIC03MTYsNyArNzIxLDcgQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3cKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBl
PihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAotICAgIGlmIChyZXNvbHZlVHlw
ZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2
ZVR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVW
YXIgfHwgcmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKQogICAgICAgICByZXR1cm47CiAKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CkBAIC03NzgsNiArNzgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNl
IER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTg1Miw2ICs4NTgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hl
Y2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGVtaXRQdXRDbG9zdXJlVmFyKHNjb3BlLCAqb3Bl
cmFuZFNsb3QsIHZhbHVlLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53YXRjaHBvaW50U2V0KTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBEeW5hbWljOgog
ICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTg3Myw3ICs4
ODAsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgcmV0dXJuOwogICAgIHdo
aWxlIChsaW5rQ291bnQtLSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKKworICAg
IGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90aHJvd19z
dHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CisgICAgICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAppbmRleCA4MTJkMWI5OWU2M2MwMTI0ZWFkNjk4NTA0MWU3ZWE4NGI0OWZmYWZmLi5lNjNi
ZDU5MjM5MTk0Njg3OGY4YzdiYzBjNjQ1ZGU4OTZiZDQ5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlw
ZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5o
IgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAKQEAgLTczNSw2ICs3MzYs
MTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6
CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBN
b2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBy
ZWdUMSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0u
dS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCBy
ZWdUMCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xv
d0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CkBAIC03NDgsNyArNzU0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3cKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29s
dmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAotICAgIGlmIChyZXNv
bHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwg
cmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFs
UHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENs
b3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKQogICAgICAgICByZXR1cm47CiAK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CkBAIC04MTEsNiArODE3LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTg4Niw2ICs4OTMs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGVtaXRQdXRDbG9zdXJlVmFyKHNjb3Bl
LCAqb3BlcmFuZFNsb3QsIHZhbHVlLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53YXRjaHBvaW50
U2V0KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBEeW5h
bWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTkw
NSw3ICs5MTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgcmV0dXJuOwog
ICAgIHdoaWxlIChsaW5rQ291bnQtLSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsK
KworICAgIGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90
aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CisgICAgICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDc0Y2IzMzEzZWFkYjAxNDhhYWIyOGFiMjg1MDMy
NWVhYTVhMWZlMTcuLmZjMGFkNGY4ZGY2ZjhiNjNjN2MxOWQzNzBlNWIwYzY0Y2UyNmRjNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCkBAIC01MDAsNiArNTAwLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EcmFpbk1pY3JvdGFza3MoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRXZWJBc3NlbWJs
eShFeGVjU3RhdGUqKTsKICNlbmRpZgogI2lmIEVOQUJMRShFUzZfTU9EVUxFUykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZE1vZHVsZShFeGVjU3RhdGUq
KTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1
bGVTeW50YXgoRXhlY1N0YXRlKik7CiAjZW5kaWYKIApAQCAtNjc5LDYgKzY4MCw3IEBAIGNsYXNz
IEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAibG9hZFdlYkFzc2VtYmx5IiwgZnVuY3Rpb25Mb2FkV2ViQXNzZW1ibHksIDEpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQorICAgICAgICBhZGRGdW5jdGlvbih2bSwg
ImxvYWRNb2R1bGUiLCBmdW5jdGlvbkxvYWRNb2R1bGUsIDEpOwogICAgICAgICBhZGRGdW5jdGlv
bih2bSwgImNoZWNrTW9kdWxlU3ludGF4IiwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCwgMSk7
CiAjZW5kaWYKIApAQCAtMTM2MSw2ICsxMzYzLDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Mb2FkV2ViQXNzZW1ibHkoRXhlY1N0YXRlKiBleGVjKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgU3RyaW5nIGZpbGVOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFZl
Y3RvcjxjaGFyPiBzY3JpcHQ7CisgICAgaWYgKCFmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxl
KGZpbGVOYW1lLCBzY3JpcHQpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworCisgICAgSlNJbnRlcm5hbFByb21pc2UqIHBy
b21pc2UgPSBldmFsdWF0ZU1vZHVsZShleGVjLCBmaWxlTmFtZSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworCisgICAgSlNWYWx1ZSBlcnJvcjsKKyAgICBKU0Z1bmN0aW9uKiBlcnJvckhhbmRsZXIg
PSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4ZWNTdGF0ZSogZXhlYykgeworICAgICAg
ICBlcnJvciA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0pOworCisgICAgcHJvbWlzZS0+dGhlbihleGVjLCBu
dWxscHRyLCBlcnJvckhhbmRsZXIpOworICAgIGV4ZWMtPnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7
CisgICAgaWYgKGVycm9yKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFN0cmluZyBz
b3VyY2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDc3N2NmZGUwOTNh
MmQxM2RmNWZlNWMzNjZjOTgyMmY0YWUwODRmYWUuLjE1NjkyMWUzYWNlYmJlZmExMzY4MmM2OGMx
OWQ0NTYxNWZkMWZlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCkBAIC0xNDcsMTAgKzE0NywxMSBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZN
JiB2bSkKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhciA9PSAxLCAiTExJbnQgYXNzdW1lcyBH
bG9iYWxWYXIgUmVzdWx0VHlwZSBpcyA9PSAxIik7CiAgICAgc3RhdGljX2Fzc2VydChDbG9zdXJl
VmFyID09IDIsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAyIik7
CiAgICAgc3RhdGljX2Fzc2VydChMb2NhbENsb3N1cmVWYXIgPT0gMywgIkxMSW50IGFzc3VtZXMg
TG9jYWxDbG9zdXJlVmFyIFJlc3VsdFR5cGUgaXMgPT0gMyIpOwotICAgIHN0YXRpY19hc3NlcnQo
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDQsICJMTEludCBhc3N1bWVz
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDQi
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0g
NSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRU
eXBlIGlzID09IDUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzID09IDYsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNiIpOwotICAgIHN0YXRpY19hc3NlcnQoRHluYW1pYyA9
PSA3LCAiTExJbnQgYXNzdW1lcyBEeW5hbWljIFJlc3VsdFR5cGUgaXMgPT0gNyIpOworICAgIHN0
YXRpY19hc3NlcnQoTW9kdWxlVmFyID09IDQsICJMTEludCBhc3N1bWVzIE1vZHVsZVZhciBSZXN1
bHRUeXBlIGlzID09IDQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcyA9PSA1LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA1Iik7CisgICAgc3RhdGljX2Fzc2Vy
dChHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJMTEludCBhc3N1bWVzIEds
b2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA2Iik7CisgICAg
c3RhdGljX2Fzc2VydChDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA3LCAiTExJ
bnQgYXNzdW1lcyBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlz
ID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KER5bmFtaWMgPT0gOCwgIkxMSW50IGFzc3VtZXMg
RHluYW1pYyBSZXN1bHRUeXBlIGlzID09IDgiKTsKICAgICAKICAgICBBU1NFUlQoUmVzb2x2ZU1v
ZGVBbmRUeXBlOjptYXNrID09IDB4ZmZmZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA3NWM5MWY4Njg2ZTRhNWUw
ODUwMTNiYjExOTIyNWVkYzk3YTQ0NWU0Li5hNzMxOGYzM2FhYTNhMTliODFiNjhjZDE3NWRlZDFh
OWI1MmNkNWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xOTIsMTAgKzE5MiwxMSBAQCBjb25zdCBHbG9iYWxQcm9w
ZXJ0eSA9IDAKIGNvbnN0IEdsb2JhbFZhciA9IDEKIGNvbnN0IENsb3N1cmVWYXIgPSAyCiBjb25z
dCBMb2NhbENsb3N1cmVWYXIgPSAzCi1jb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MgPSA0Ci1jb25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQot
Y29uc3QgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Ci1jb25zdCBEeW5hbWlj
ID0gNworY29uc3QgTW9kdWxlVmFyID0gNAorY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzID0gNQorY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9
IDYKK2NvbnN0IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNworY29uc3QgRHlu
YW1pYyA9IDgKIAogY29uc3QgUmVzb2x2ZU1vZGVNYXNrID0gMHhmZmZmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KaW5kZXggN2VmNmI4N2MxNzBhZDA4M2IxZjUyOWRhODgzNmMwMGNkYTY0YjQ3OC4uNWQ1MTBj
ZDhkZGVjMzA4NmNlZWM2M2VjNjA5MmI0Njg0ZTk4OGEzNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAg
LTIwNDUsNiArMjA0NSwxMyBAQCBtYWNybyBnZXRHbG9iYWxPYmplY3QoZHN0KQogICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQogZW5kCiAKK21hY3JvIGdldEltcG9ydGVk
TW9kdWxlU2NvcGUoZHN0KQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQwKQorICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbihkc3QsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
K2VuZAorCiBtYWNybyB2YXJJbmplY3Rpb25DaGVjayhzbG93UGF0aCkKICAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwg
dDAKQEAgLTIwODcsMTAgKzIwOTQsMTUgQEAgX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAg
ZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAu
ckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGJpbmVxIHQwLCBDbG9z
dXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29sdmVTY29wZSgpCiAgICAgZGlzcGF0Y2goNykK
IAorLnJNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBnZXRJbXBvcnRlZE1vZHVsZVNjb3BlKDEpCisg
ICAgZGlzcGF0Y2goNykKKwogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6
CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJE
eW5hbWljKQpAQCAtMjI4MSwxMyArMjI5MywxOCBAQCBfbGxpbnRfb3BfcHV0X3RvX3Njb3BlOgog
ICAgIGRpc3BhdGNoKDcpCiAKIC5wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6Ci0g
ICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucER5bmFtaWMK
KyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wTW9kdWxl
VmFyCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQogICAgIHZhckluamVjdGlvbkNo
ZWNrKC5wRHluYW1pYykKICAgICBsb2FkVmFyaWFibGUoMSwgdDIsIHQxLCB0MCkKICAgICBwdXRD
bG9zdXJlVmFyKCkKICAgICBkaXNwYXRjaCg3KQogCisucE1vZHVsZVZhcjoKKyAgICBiaW5lcSB0
MCwgTW9kdWxlVmFyLCAucER5bmFtaWMKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90aHJv
d19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKKyAgICBkaXNwYXRj
aCg3KQorCiAucER5bmFtaWM6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0
X3RvX3Njb3BlKQogICAgIGRpc3BhdGNoKDcpCkBAIC0yMzgxLDQgKzIzOTgsNCBAQCBfbGxpbnRf
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQxKQogICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBkaXNwYXRjaCgyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkMjE1
MmEyZjI3N2FkZTU4Nzk3NmExYzNmMTIwMjM3MjliMzhhNTlhLi41YzAwZTY0NmY2MDEwZTZiYTY4
NjFlMzRjZTljZjc3NGE1YThjNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTkxOCw2ICsxOTE4LDEyIEBA
IG1hY3JvIGdldEdsb2JhbE9iamVjdChkc3QpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0K
IGVuZAogCittYWNybyBnZXRJbXBvcnRlZE1vZHVsZVNjb3BlKGRzdCkKKyAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig2LCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oZHN0LCB0MSkKKyAg
ICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorZW5kCisKIG1hY3JvIHZhckluamVjdGlvbkNoZWNr
KHNsb3dQYXRoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MApAQCAtMTk1NywxMCArMTk2MywxNSBAQCBfbGxp
bnRfb3BfcmVzb2x2ZV9zY29wZToKICAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0g
ICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2
ZVNjb3BlKCkKICAgICBkaXNwYXRjaCg3KQogCisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwg
TW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdl
dEltcG9ydGVkTW9kdWxlU2NvcGUoMSkKKyAgICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MK
ICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCkBAIC0yMTQ0LDEzICsyMTU1LDE4IEBA
IF9sbGludF9vcF9wdXRfdG9fc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrczoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MsIC5wRHluYW1pYworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcywgLnBNb2R1bGVWYXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRz
KDEsIDMpCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJs
ZSgxLCB0MCkKICAgICBwdXRDbG9zdXJlVmFyKCkKICAgICBkaXNwYXRjaCg3KQogCisucE1vZHVs
ZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAucER5bmFtaWMKKyAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9l
cnJvcikKKyAgICBkaXNwYXRjaCg3KQorCiAucER5bmFtaWM6CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcHV0X3RvX3Njb3BlKQogICAgIGRpc3BhdGNoKDcpCkBAIC0yMjMzLDQg
KzIyNDksNCBAQCBfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgbG9hZHAg
SlNBcnJvd0Z1bmN0aW9uOjptX2JvdW5kVGhpc1t0MF0sIHQwCiAgICAgbG9hZGlzRnJvbUluc3Ry
dWN0aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2go
MikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgZGlzcGF0Y2goMikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggZjYyMzhm
Yjk2ODAyYmU1MzdlOTFhZGMyNmI4MmQ4OTBiOTU0MDMyZC4uNjQyNTVjNWJlNWVmZDUwOThiZmMz
YzE1YWUxODZmZmFjNDhmZDkwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Nb2R1bGVBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVBbmFseXplci5jcHAKQEAgLTgyLDcgKzgyLDkgQEAgdm9pZCBNb2R1bGVBbmFseXpl
cjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxO
YW1lLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgYXV0byYgaW1wb3J0RW50
cnkgPSBtb2R1bGVSZWNvcmQoKS0+bG9va1VwSW1wb3J0RW50cnkobG9jYWxOYW1lKTsKKyAgICBP
cHRpb25hbDxKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkg
PSBtb2R1bGVSZWNvcmQoKS0+dHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmdldCgpKTsKKyAg
ICBBU1NFUlQob3B0aW9uYWxJbXBvcnRFbnRyeSk7CisgICAgY29uc3QgYXV0byYgaW1wb3J0RW50
cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsKICAgICBpZiAodmFyaWFibGUuaXNJbXBvcnRlZE5h
bWVzcGFjZSgpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5nLgogICAg
ICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNzU4MDgzMzJl
NGRkNDA4NDQyYTAzNDM3ZDU1YzEwNWFjYzI5NWFiMS4uMzViNjI5NzkyMDdlZmFjODc0NTZkNzcy
NjRiNGIwZmFmZmU4NjJlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0yNzAsNiArMjcwLDEyIEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpCiAgICAgVEhST1coY3JlYXRlVERaRXJyb3IoZXhl
YykpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVh
ZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCit7CisgICAgQkVHSU4oKTsKKyAgICBUSFJPVyhj
cmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcikpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCkKIHsK
ICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAppbmRleCAwNjdkZjBjMzhlOTEyMGJmNzA3Y2ZkZTQxYzNlZmJmMmE2ODcyZWUz
Li4zMDA5ODU1ZmY2YmEyZDE1MjgzZGI4Zjg1ZjNjZTQ1N2RkYjI4NjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMTg5LDYgKzE4
OSw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZW50ZXIpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfY2FsbGVlKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfdG9fdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Ro
cm93X3Rkel9lcnJvcik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0
cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbm90KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
ZXEpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDAwMjg1YTY3NTc3MzQ3NDc5YmQ5YTliN2I5
Mzk1NWMyNjQzNDY1N2MuLjFiOTNlOGZkMTI1N2QwZDc4YWE3OTM2ODgxMTI0Y2FmNjk5NDRiOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTIxOSw2ICsyMTks
MTAgQEAgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKIH0KIAorSlNPYmplY3QqIHRocm93
U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgbWVzc2FnZSkpOworfQogCiBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuaAppbmRleCBlYzMwYTNkYzQ2NmUxZWI0NDliM2U1ODVhYTgwNDkyZWYxOTg0NjQ3
Li5mNDZmZTM3NmZiODZjNjUyZTRhZWM4NDkwMTNjZWEyZGYzYzgwMWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTc0LDYgKzc0LDcgQEAgSlNPYmplY3QqIGFkZEVy
cm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3Vy
Y2VDb2RlJikKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhj
ZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKTsKIGlubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBzdGF0ZS0+dm0oKS50aHJvd0V4
Y2VwdGlvbihzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0K
IAogLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFzIGFuIEVuY29kZWRKU1Zh
bHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGNk
Y2ViMzA0MjY1Zjk3NmQwMDc3YWVmZDY1N2I1YjdiYWJiZjJhMTYuLjk2ZWZmNDU1OGQyZTczZDlm
M2I3NDFmNjdkNmViYWQ1ZjJmMzJlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKQEAgLTU3LDYgKzU3LDkgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsK
IGNsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBKU1Njb3BlOwogY2xhc3MgV2Vi
QXNzZW1ibHlDb2RlQmxvY2s7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworY2xhc3Mg
SlNNb2R1bGVSZWNvcmQ7CitjbGFzcyBKU1Njb3BlOwogCiBlbnVtIENvbXBpbGF0aW9uS2luZCB7
IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNGUwOTRm
ZDY3OWI5ZDViY2Y0Yjg4NmYzNjAyYzZjMWIwZmIyMDkxYS4uNGY5MWY0YzVkNzM2YzVmNWM4NWVm
YzIwODI3NWM5NzIyZWZmMDdkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODQsNiArODQsOCBAQAogI2luY2x1ZGUgIkpTTG9j
ay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKQEAgLTMxMiw2ICszMTQs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3R5cGVkQXJyYXlz
W3RvSW5kZXgoVHlwZURhdGFWaWV3KV0uc3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmll
dzo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURh
dGFWaWV3KV0ucHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1l
bnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykp
OwogICAgIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJp
Y3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwog
ICAgIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5zZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29w
ZTo6Y3JlYXRlU3RydWN0dXJlKG1fdm0sIHRoaXMpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpz
TnVsbCgpKSk7CkBAIC0zNDgsNiArMzUxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChW
TSYgdm0pCiAgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBj
cmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUodm0sICp0aGlzKSk7CiAKICAgICBtX21v
ZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tb2R1
bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBtX3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtNzkxLDYg
Kzc5NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3V0T2ZCYW5kQXJndW1lbnRzU3Ry
dWN0dXJlKTsKQEAgLTgxOSw2ICs4MjQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jb25zb2xlU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxGdW5jdGlvblN0cnVjdHVy
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCAxY2EzMWI3YjEyNmZiMmVmZDNiNzE5MGVhZjc2NGY1Y2RhMDk5MWZlLi5kMWNhZDg3MDcz
ZTQ0ZWQyZDZiMDg3ZDM1MDQxMDAyODBmYzgyMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlOworICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmU7
CkBAIC0yNjUsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVy
YXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21v
ZHVsZVJlY29yZFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVs
ZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlmCkBA
IC00NDksNiArNDUxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVy
ZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhY3RpdmF0
aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1
cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9k
aXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHNjb3BlZEFy
Z3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVkQXJndW1lbnRzU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQpA
QCAtNTAzLDYgKzUwNiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0YXRpYyBwdHJkaWZmX3QgaXRlcmF0b3JSZXN1bHRT
dHJ1Y3R1cmVPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3Qs
IG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBNYXRj
aGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1
Y3R1cmUqIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgIFN0cnVjdHVyZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5
NTE2MzE4ZDcwMTY5ZTNkZDhjMmJlZjc4MzMxMjU2NzVjNWUyMThiLi40NDhlYTQzMWI3YjdjOTgy
NjJkNDEwYmYwMWY4NDkzNzFkOGFiNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNzIEpTTGV4aWNhbEVudmly
b25tZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHJpdmF0ZToKK3Byb3RlY3Rl
ZDoKICAgICBKU0xleGljYWxFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBT
eW1ib2xUYWJsZSopOwogICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2I4YzI5
YjI5MDIyOWEzYWM0ZDdhN2E4MGRmMGQ3MjgxNThmNmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTAs
MCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIK
KworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZUVudmlyb25tZW50OjpzX2luZm8gPSB7
ICJKU01vZHVsZUVudmlyb25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU01vZHVsZUVudmlyb25tZW50KSB9OworCitKU01vZHVsZUVudmlyb25tZW50KiBKU01v
ZHVsZUVudmlyb25tZW50OjpjcmVhdGUoCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFs
dWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIC8v
IEpTTGV4aWNhbEVudmlyb25tZW50IChwcmVjaXNlbHksIEpTRW52aXJvbm1lbnRSZWNvcmQpIGhh
cyB0aGUgc3RvcmFnZSB0byBzdG9yZSB0aGUgdmFyaWFibGUgc2xvdHMgYWZ0ZXIgdGhlIGl0cyBj
bGFzcyBzdG9yYWdlLgorICAgIC8vIEJlY2F1c2UgdGhlIG9mZnNldCBvZiB0aGUgdmFyaWFibGUg
c2xvdHMgYXJlIGZpeGVkIGluIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkLCBpbmhlcml0dGluZyB0
aGVzZSBjbGFzcyBhbmQgYWRkaW5nIG5ldyBtZW1iZXIgZmllbGQgaXMgbm90IGFsbG93ZWQsCisg
ICAgLy8gdGhlIG5ldyBtZW1iZXIgd2lsbCBvdmVybGFwIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAg
ICAvLyBUbyBrZWVwIHRoZSBKU01vZHVsZUVudmlyb25tZW50IGNvbXBhdGlibGUgdG8gdGhlIEpT
TGV4aWNhbEVudmlyb25tZW50IGJ1dCBhZGQgdGhlIG5ldyBtZW1iZXIgdG8gc3RvcmUgdGhlIEpT
TW9kdWxlUmVjb3JkLCB3ZSBhZGRpdGlvbmFsbHkgYWxsb2NhdGUKKyAgICAvLyB0aGUgc3RvcmFn
ZSBhZnRlciB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8KKyAgICAvLyBKU0xleGljYWxFbnZp
cm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJpYWJsZSBz
bG90cyBdCisgICAgLy8KKyAgICAvLyBKU01vZHVsZUVudmlyb25tZW50OgorICAgIC8vICAgICBb
IEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF1bIGFkZGl0aW9uYWwgc2xv
dHMgZm9yIEpTTW9kdWxlRW52aXJvbm1lbnQgXQorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHJl
c3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAg
YWxsb2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAsIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CisgICAg
cmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1v
ZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVl
KTsKKyAgICB0aGlzLT5tb2R1bGVSZWNvcmRTbG90KCkuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNv
cmQpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kVmFsdWVzKHRoaXNPYmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJs
ZSgpLT5zY29wZVNpemUoKSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1vZHVs
ZVJlY29yZFNsb3QoKSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVudmlyb25t
ZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAg
ICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVz
b2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51
aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGlt
cG9ydGVkTW9kdWxlRW52aXJvbm1lbnQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZC0+bW9kdWxl
RW52aXJvbm1lbnQoKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHJlZGlyZWN0U2xvdChpbXBvcnRl
ZE1vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgaWYgKGltcG9ydGVkTW9kdWxlRW52aXJvbm1l
bnQtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QoaW1wb3J0ZWRN
b2R1bGVFbnZpcm9ubWVudCwgZXhlYywgcHJvcGVydHlOYW1lLCByZWRpcmVjdFNsb3QpKSB7Cisg
ICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcmVkaXJlY3RTbG90LmdldFZhbHVlKGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICAvLyBGSVhNRTogZ2V0T3duUHJvcGVydHlTbG90IGNh
bm5vdCB0aHJvdyBhbnkgZXJyb3JzLgorICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmplY3QsIHJlZGlyZWN0U2xvdC5hdHRyaWJ1dGVzKCksIHZhbHVlKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXNBcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgSlNNb2R1
bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4o
Y2VsbCk7CisgICAgaWYgKHByb3BlcnR5TmFtZXNBcnJheS5pbmNsdWRlU3RyaW5nUHJvcGVydGll
cygpKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHRoaXNPYmplY3QtPm1vZHVs
ZVJlY29yZCgpLT5pbXBvcnRFbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGlt
cG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghaW1wb3J0RW50cnkuaXNO
YW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lc0FycmF5
LmFkZChpbXBvcnRFbnRyeS5sb2NhbE5hbWUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lc0FycmF5LCBtb2RlKTsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVs
ZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihj
ZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KKyAgICBj
b25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2
ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQo
KSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRp
b246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworfQorCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRl
ZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgorICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHRo
aXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24u
dHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWU1ZTEyZWVmYzU0OGI5ZWU2ZWJmMzEzZmE3YThkNGM3MTY5MTRmMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorI2RlZmlu
ZSBKU01vZHVsZUVudmlyb25tZW50X2gKKworI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIFJlZ2lzdGVyOworCitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50IDogcHVibGljIEpTTGV4
aWNhbEVudmlyb25tZW50IHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0xleGljYWxF
bnZpcm9ubWVudCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25t
ZW50KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBKU1Zh
bHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyBKU01vZHVs
ZUVudmlyb25tZW50KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1
ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCisgICAgeworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlRW52aXJvbm1l
bnRTdHJ1Y3R1cmUoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBjdXJy
ZW50U2NvcGUsIHN5bWJvbFRhYmxlLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAg
fQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxz
aXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPik+KEJhc2U6OmFsbG9jYXRpb25TaXpl
KHN5bWJvbFRhYmxlKSk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6
ZShTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0
T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFibGUpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVs
ZVJlY29yZD4pOworICAgIH0KKworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1vZHVsZVJlY29yZFNsb3QoKS5nZXQoKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFy
cmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUpOworCitwcml2YXRlOgorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUq
LCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIFdyaXRlQmFy
cmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+JiBtb2R1bGVSZWNvcmRTbG90KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+
Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJv
bFRhYmxlKCkpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7Cit9OworCitpbmxpbmUgSlNNb2R1bGVFbnZpcm9ubWVudDo6SlNN
b2R1bGVFbnZpcm9ubWVudChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBj
dXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZUVudmlyb25tZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZjY3NDI4ZDg5YTU4MTliZGEzNmU5MTQzMWRhNjI5ZDY0YzBlNmExCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9y
KEV4ZWNTdGF0ZSopOworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OnNfaW5mbyA9IHsgIk1vZHVsZU5hbWVzcGFjZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpIH07CisKKwor
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4cG9ydHMoKQoreworICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFt
ZXNwYWNlLWV4b3RpYy1vYmplY3RzCisgICAgLy8gPiBBIExpc3QgY29udGFpbmluZyB0aGUgU3Ry
aW5nIHZhbHVlcyBvZiB0aGUgZXhwb3J0ZWQgbmFtZXMgZXhwb3NlZCBhcyBvd24gcHJvcGVydGll
cyBvZiB0aGlzIG9iamVjdC4KKyAgICAvLyA+IFRoZSBsaXN0IGlzIG9yZGVyZWQgYXMgaWYgYW4g
QXJyYXkgb2YgdGhvc2UgU3RyaW5nIHZhbHVlcyBoYWQgYmVlbiBzb3J0ZWQgdXNpbmcgQXJyYXku
cHJvdG90eXBlLnNvcnQgdXNpbmcgU29ydENvbXBhcmUgYXMgY29tcGFyZWZuLgorICAgIFZlY3Rv
cjxVbmlxdWVkU3RyaW5nSW1wbCo+IHRlbXBvcmFyeVZlY3RvcihleHBvcnRzLnNpemUoKSwgbnVs
bHB0cik7CisgICAgc3RkOjp0cmFuc2Zvcm0oZXhwb3J0cy5iZWdpbigpLCBleHBvcnRzLmVuZCgp
LCB0ZW1wb3JhcnlWZWN0b3IuYmVnaW4oKSwgW10oY29uc3QgUmVmUHRyPFdURjo6VW5pcXVlZFN0
cmluZ0ltcGw+JiByZWYpIHsKKyAgICAgICAgcmV0dXJuIHJlZi5nZXQoKTsKKyAgICB9KTsKKyAg
ICBzdGQ6OnNvcnQodGVtcG9yYXJ5VmVjdG9yLmJlZ2luKCksIHRlbXBvcmFyeVZlY3Rvci5lbmQo
KSwgW10gKFVuaXF1ZWRTdHJpbmdJbXBsKiBsaHMsIFVuaXF1ZWRTdHJpbmdJbXBsKiByaHMpIHsK
KyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUobGhzLCByaHMpIDwgMDsKKyAgICB9KTsK
KyAgICBmb3IgKGF1dG8qIGlkZW50aWZpZXIgOiB0ZW1wb3JhcnlWZWN0b3IpCisgICAgICAgIG1f
ZXhwb3J0cy5hZGQoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIG1fbW9kdWxlUmVjb3Jk
LnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1i
b2xJdGVyYXRvciwgRG9udEVudW0sIDApOworCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtZ2V0cHJvdG90eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1z
ZXRwcm90b3R5cGVvZi12CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3Jn
L2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtaXNleHRl
bnNpYmxlCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtcHJldmVudGV4dGVuc2lv
bnMKKyAgICBwcmV2ZW50RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2Vs
bCk7CisgICAgdGhpc09iamVjdC0+SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6On5KU01vZHVsZU5h
bWVzcGFjZU9iamVjdCgpOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQpOworfQor
Citib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdl
dG93bnByb3BlcnR5LXAKKworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisKKyAgICAvLyBzdGVw
IDEuCisgICAgLy8gSWYgdGhlIHByb3BlcnR5IG5hbWUgaXMgYSBzeW1ib2wsIHdlIGRvbid0IGxv
b2sgaW50byB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisgICAgLy8gSXQgbWF5IHJldHVybiB0aGUg
ZGVzY3JpcHRvciB3aXRoIHdyaXRhYmxlOiB0cnVlLCBidXQgbmFtZXNwYWNlIG9iamVjdHMgZG9l
cyBub3QgYWxsb3cgaXQgaW4gW1tTZXRdXSAvIFtbRGVmaW5lT3duUHJvcGVydHldXSBzaWRlLgor
ICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKKworICAgIGlmICghdGhpc09iamVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFt
ZS51aWQoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBt
b2R1bGVSZWNvcmQgPSB0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZC5nZXQoKTsKKworICAgIGNv
bnN0IGF1dG8gcmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIEFTU0VS
VChyZXNvbHV0aW9uLnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6Ok5v
dEZvdW5kICYmIHJlc29sdXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6
VHlwZTo6QW1iaWd1b3VzKTsKKyAgICBKU01vZHVsZVJlY29yZCogdGFyZ2V0TW9kdWxlID0gcmVz
b2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0RW52
aXJvbm1lbnQgPSB0YXJnZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgUHJvcGVy
dHlTbG90IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50KTsKKyAgICBpZiAoIXRhcmdl
dEVudmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90
KHRhcmdldEVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGlu
ZVNsb3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1w
b2xpbmVTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgLy8gRklYTUU6IGdl
dE93blByb3BlcnR5U2xvdCBjYW5ub3QgdGhyb3cgYW55IGVycm9ycy4KKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmpl
Y3RzLWdldG93bnByb3BlcnR5LXAKKyAgICAvLyBzZWN0aW9uIDkuNC42LjUsIHN0ZXAgNi4KKyAg
ICAvLyBUaGlzIHByb3BlcnR5IHdpbGwgYmUgc2VlbiBhcyB3cml0YWJsZTogdHJ1ZSwgZW51bWVy
YWJsZTp0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlLgorICAgIC8vIEJ1dCB0aGlzIGRvZXMgbm90
IG1lYW4gdGhhdCB0aGlzIHByb3BlcnR5IGlzIHdyaXRhYmxlIGJ5IHVzZXJzLgorICAgIC8vIGh0
dHBzOi8vZXNkaXNjdXNzLm9yZy90b3BpYy9tYXJjaC0yNC1tZWV0aW5nLW5vdGVzCisgICAgc2xv
dC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRlLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVjZWl2ZXIK
KyAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwor
fQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7Cisg
ICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Cit9CisKK2Jvb2wg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3
LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFj
ZS1leG90aWMtb2JqZWN0cy1kZWxldGUtcAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAg
cmV0dXJuICF0aGlzT2JqZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgp
KTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2Ut
ZXhvdGljLW9iamVjdHMtb3ducHJvcGVydHlrZXlzCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIG5hbWUgOiB0aGlzT2JqZWN0LT5tX2V4cG9ydHMpCisgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKG5hbWUuZ2V0KCkpOworICAgIHJldHVybiBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKK30KKworYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHko
SlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdykKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90
aWMtb2JqZWN0cy1kZWZpbmVvd25wcm9wZXJ0eS1wLWRlc2MKKyAgICBpZiAoc2hvdWxkVGhyb3cp
CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgifHRoaXN8IHNob3VsZCBiZSBhbiBvYmplY3QiKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JT
dHJ1Y3R1cmUoKSwgYXNPYmplY3QodGhpc1ZhbHVlKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxZTkzOTUyZjhiNzdjMDYxNzk2ODM0NWQ1MTU2
ZDE1MzFjZmRkMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0X2gKKyNkZWZpbmUgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaAorCisjaW5j
bHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworCitjbGFzcyBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwg
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsK
KworICAgIHN0YXRpYyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9y
dHMpCisgICAgeworICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogb2JqZWN0ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KGV4ZWMtPnZt
KCkuaGVhcCkpIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwg
ZXhwb3J0cyk7CisgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgZ2xv
YmFsT2JqZWN0LCBtb2R1bGVSZWNvcmQpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0K
KworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZp
bmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisKKyAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcm90ZWN0ZWQ6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVSZWNvcmQqKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworCisgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsK
KworICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fZXhwb3J0czsKKyAgICBXcml0ZUJhcnJpZXI8
SlNNb2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggN2I2MDYzNzRhNjA2
MGI3NzAyMGM0ZWY0NTEyZTkyNDVlMDNmM2ZjNS4uZDAwOWJhMzJmMDAxZTNiN2NhZWI2NDEzMDRh
M2QwZjNmNzEwMzRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlUmVjb3JkLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCkBAIC02MCwxMCArNjIsNTAgQEAgdm9pZCBKU01vZHVs
ZVJlY29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVj
b3JkKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudCk7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVwZW5kZW5jaWVzTWFw
KTsKIH0KIAordm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZCht
b2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBv
cnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fc3RhckV4cG9y
dEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKwordm9pZCBKU01vZHVsZVJlY29y
ZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQoreworICAgIGJvb2wg
aXNOZXdFbnRyeSA9IG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwg
ZW50cnkpLmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0Vu
dHJ5KTsgLy8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBwYXJzZXIuCit9CisKK3ZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkKK3sK
KyAgICBib29sIGlzTmV3RW50cnkgPSBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5h
bWUuaW1wbCgpLCBlbnRyeSkuaXNOZXdFbnRyeTsKKyAgICBBU1NFUlRfVU5VU0VEKGlzTmV3RW50
cnksIGlzTmV3RW50cnkpOyAvLyBUaGlzIGlzIGd1YXJhbnRlZWQgYnkgdGhlIHBhcnNlci4KK30K
KworYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0lt
cGwqIGxvY2FsTmFtZSkgLT4gT3B0aW9uYWw8SW1wb3J0RW50cnk+Cit7CisgICAgY29uc3QgYXV0
byBpdGVyYXRvciA9IG1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSk7CisgICAgaWYgKGl0
ZXJhdG9yID09IG1faW1wb3J0RW50cmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgcmV0dXJuIE9wdGlvbmFsPEltcG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOworfQor
CithdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1w
bCogZXhwb3J0TmFtZSkgLT4gT3B0aW9uYWw8RXhwb3J0RW50cnk+Cit7CisgICAgY29uc3QgYXV0
byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5maW5kKGV4cG9ydE5hbWUpOworICAgIGlmIChp
dGVyYXRvciA9PSBtX2V4cG9ydEVudHJpZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKK30K
KwogYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKIHsKICAg
ICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRpZmll
cigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKQEAgLTc5LDYgKzEyMSwy
MSBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoY29u
c3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgYwogICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5
cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlm
aWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07CiB9CiAKK2F1dG8gSlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb246Om5vdEZvdW5kKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVy
biBSZXNvbHV0aW9uIHsgVHlwZTo6Tm90Rm91bmQsIG51bGxwdHIsIElkZW50aWZpZXIoKSB9Owor
fQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjplcnJvcigpIC0+IFJlc29sdXRp
b24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6OkVycm9yLCBudWxscHRyLCBJZGVu
dGlmaWVyKCkgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6YW1iaWd1
b3VzKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6QW1i
aWd1b3VzLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30KKwogc3RhdGljIEpTVmFsdWUgaWRl
bnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpCiB7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSkKQEAgLTkzLDYgKzE1MCwz
MzUgQEAgSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUltcG9ydGVk
TW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICByZXR1cm4ganNDYXN0PEpTTW9kdWxl
UmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFs
dWUiKSkpOwogfQogCithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKSAtPiBSZXNvbHV0aW9uCit7Cisg
ICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSB0cnlHZXRJbXBv
cnRFbnRyeShsb2NhbE5hbWUuaW1wbCgpKTsKKyAgICBpZiAoIW9wdGlvbmFsSW1wb3J0RW50cnkp
CisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgpOworCisgICAgY29uc3QgYXV0
byYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsKKyAgICBpZiAoaW1wb3J0RW50
cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjpu
b3RGb3VuZCgpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJl
c29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAg
ICByZXR1cm4gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnku
aW1wb3J0TmFtZSk7Cit9CisKK3N0cnVjdCBSZXNvbHZlUXVlcnkgeworICAgIFJlc29sdmVRdWVy
eShKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0
TmFtZSkKKyAgICAgICAgOiBtb2R1bGVSZWNvcmQobW9kdWxlUmVjb3JkKQorICAgICAgICAsIGV4
cG9ydE5hbWUoZXhwb3J0TmFtZSkKKyAgICB7CisgICAgfQorCisgICAgUmVzb2x2ZVF1ZXJ5KEpT
TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUp
CisgICAgICAgIDogUmVzb2x2ZVF1ZXJ5KG1vZHVsZVJlY29yZCwgZXhwb3J0TmFtZS5pbXBsKCkp
CisgICAgeworICAgIH0KKworICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsK
KyAgICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAgICB7CisgICAgfQorCisgICAgZW51
bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnkoRGVs
ZXRlZFZhbHVlVGFnKQorICAgICAgICA6IG1vZHVsZVJlY29yZChudWxscHRyKQorICAgICAgICAs
IGV4cG9ydE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgeworICAgIH0KKwor
ICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhZXhw
b3J0TmFtZTsKKyAgICB9CisKKyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBleHBvcnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7Cisg
ICAgfQorCisgICAgLy8gVGhlIG1vZHVsZSByZWNvcmQgaXMgbm90IG1hcmtlZCBmcm9tIHRoZSBH
Qy4gQnV0IHRoZXNlIHJlY29yZHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSBKU0dsb2JhbE9iamVj
dC4KKyAgICAvLyBTbyB3ZSBkb24ndCBjYXJlIHRoZSByZWFjaGFiaWxpdHkgdG8gdGhpcyByZWNv
cmQuCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+IGV4cG9ydE5hbWU7Cit9OworCitzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5SGFzaCB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5JiwgY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0
cnVlOworfTsKKworaW5saW5lIHVuc2lnbmVkIFJlc29sdmVRdWVyeUhhc2g6Omhhc2goY29uc3Qg
UmVzb2x2ZVF1ZXJ5JiBxdWVyeSkKK3sKKyAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTTW9kdWxl
UmVjb3JkKj46Omhhc2gocXVlcnkubW9kdWxlUmVjb3JkKSArIElkZW50aWZpZXJSZXBIYXNoOjpo
YXNoKHF1ZXJ5LmV4cG9ydE5hbWUpOworfQorCitpbmxpbmUgYm9vbCBSZXNvbHZlUXVlcnlIYXNo
OjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmIGxocywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByaHMp
Cit7CisgICAgcmV0dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0gcmhzLm1vZHVsZVJlY29yZCAmJiBs
aHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKK30KKworc3RhdGljIEpTTW9kdWxlUmVj
b3JkOjpSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnRMb29wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
UmVzb2x2ZVF1ZXJ5JiByb290KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZXNvbHZlZXhwb3J0CisgICAgLy8gVGhpcyBmdW5j
dGlvbiBhdm9pZHMgQysrIHJlY3Vyc2lvbiBvZiB0aGUgbmFpdmUgUmVzb2x2ZUV4cG9ydCBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAvLyBGbGF0dGVuIHRoZSByZWN1cnNpb24gdG8gdGhlIGxvb3Agd2l0
aCB0aGUgdGFzayBxdWV1ZSBhbmQgZnJhbWVzLgorICAgIC8vCisgICAgLy8gMS4gcGVuZGluZ1Rh
c2tzCisgICAgLy8gICAgIFdlIGVucXVldWUgdGhlIHJlY3Vyc2l2ZSByZXNvbHZlRXhwb3J0IGNh
bGwgdG8gdGhpcyBxdWV1ZSB0byBhdm9pZCByZWN1cnNpdmUgY2FsbHMgaW4gQysrLgorICAgIC8v
ICAgICBUaGUgdGFzayBoYXMgMyB0eXBlcy4gKDEpIFF1ZXJ5LCAoMikgSW5kaXJlY3RGYWxsYmFj
ayBhbmQgKDMpIEdhdGhlclN0YXJzLgorICAgIC8vICAgICAoMSkgUXVlcnkKKyAgICAvLyAgICAg
ICAgIFF1ZXJ5aW5nIHRoZSByZXNvbHV0aW9uIHRvIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAgICAv
LyAgICAgKDIpIEluZGlyZWN0RmFsbGJhY2sKKyAgICAvLyAgICAgICAgIEV4YW1pbmUgdGhlIHJl
c3VsdCBvZiB0aGUgaW5kaXJlY3QgZXhwb3J0IHJlc29sdXRpb24uIE9ubHkgd2hlbiB0aGUgaW5k
aXJlY3QgZXhwb3J0IHJlc29sdXRpb24gZmFpbHMsCisgICAgLy8gICAgICAgICB3ZSBsb29rIGlu
dG8gdGhlIHN0YXIgZXhwb3J0cy4gKHN0ZXAgNS1hLXZpKS4KKyAgICAvLyAgICAgKDMpIEdhdGhl
clN0YXJzCisgICAgLy8gICAgICAgICBFeGFtaW5lIHRoZSByZXN1bHQgb2YgdGhlIHN0YXIgZXhw
b3J0IHJlc29sdXRpb25zLgorICAgIC8vCisgICAgLy8gMi4gZnJhbWVzCisgICAgLy8gICAgIFdo
ZW4gdGhlIHNwZWMgY2FsbHMgdGhlIHJlc29sdmVFeHBvcnQgcmVjdXJzaXZlbHksIGluc3RlYWQg
d2UgYXBwZW5kIHRoZSBmcmFtZQorICAgIC8vICAgICAodGhhdCBob2xkcyB0aGUgcmVzdWx0IHJl
c29sdXRpb24pIHRvIHRoZSBmcmFtZXMgYW5kIGVucXVldWUgdGhlIHRhc2sgdG8gdGhlIHBlbmRp
bmdUYXNrcy4KKyAgICAvLyAgICAgVGhlIGVudHJ5IGluIHRoZSBmcmFtZXMgbWVhbnMgdGhlICps
b2NhbCogcmVzb2x1dGlvbiByZXN1bHQgb2YgdGhlIHNwZWNpZmljIHJlY3Vyc2l2ZSByZXNvbHZl
RXhwb3J0LgorICAgIC8vCisgICAgLy8gV2Ugc2hvdWxkIG1haW50YWluIHRoZSBsb2NhbCByZXNv
bHV0aW9uIHJlc3VsdCBpbnN0ZWFkIG9mIGhvbGRpbmcgdGhlIGdsb2JhbCByZXNvbHV0aW9uIHJl
c3VsdCBvbmx5LgorICAgIC8vIEZvciBleGFtcGxlLAorICAgIC8vCisgICAgLy8gICAgIHN0YXIK
KyAgICAvLyAoMSkgLS0tPiAoMikgIlJlc29sdmUiCisgICAgLy8gICAgICB8CisgICAgLy8gICAg
ICB8CisgICAgLy8gICAgICArLT4gKDMpICJOb3RGb3VuZCIKKyAgICAvLyAgICAgIHwKKyAgICAv
LyAgICAgIHwgICAgICAgc3RhcgorICAgIC8vICAgICAgKy0+ICg0KSAtLS0+ICg1KSAiUmVzb2x2
ZSIgW2hlcmVdCisgICAgLy8gICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICB8
CisgICAgLy8gICAgICAgICAgICAgICArLT4gKDYpICJFcnJvciIKKyAgICAvLworICAgIC8vIENv
bnNpZGVyIHRoZSBhYm92ZSBncmFwaC4gVGhlIG51bWJlcnMgcmVwcmVzZW50cyB0aGUgbW9kdWxl
cy4gTm93IHdlIGFyZSBbaGVyZV0uCisgICAgLy8gSWYgd2Ugb25seSBob2xkIHRoZSBnbG9iYWwg
cmVzb2x1dGlvbiByZXN1bHQgZHVyaW5nIHRoZSByZXNvbHZlRXhwb3J0IG9wZXJhdGlvbiwgW2hl
cmVdLAorICAgIC8vIHdlIGRlY2lkZSB0aGUgZW50aXJlIHJlc3VsdCBvZiByZXNvbHZlRXhwb3J0
IGlzICJBbWJpZ3VvdXMiLCBiZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZQorICAgIC8vICJSZXNs
b3ZlIiAoaW4gbW9kdWxlICgyKSBhbmQgKDUpKS4gSG93ZXZlciwgdGhpcyBzaG91bGQgYmVjb21l
ICJFcnJvciIgYmVjYXVzZSAoNikgd2lsbAorICAgIC8vIHByb3BhZ2F0ZSAiRXJyb3IiIHN0YXRl
IHRvIHRoZSAoNCksICg0KSB3aWxsIGJlY29tZSAiRXJyb3IiIGFuZCB0aGVuLCAoMSkgd2lsbCBi
ZWNvbWUKKyAgICAvLyAiRXJyb3IiLiBXZSBzaG91bGQgYWdncmVnYXRlIHRoZSByZXN1bHRzIGF0
IHRoZSBzdGFyIGV4cG9ydHMgcG9pbnQgKCg0KSBhbmQgKDEpKS4KKworICAgIHVzaW5nIFJlc29s
dXRpb24gPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjsKKyAgICB0eXBlZGVmIFdURjo6SGFz
aFNldDxSZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhhc2gsIFdURjo6Q3VzdG9tSGFzaFRyYWl0
czxSZXNvbHZlUXVlcnk+PiBSZXNvbHZlU2V0OworICAgIGVudW0gY2xhc3MgVHlwZSB7IFF1ZXJ5
LCBJbmRpcmVjdEZhbGxiYWNrLCBHYXRoZXJTdGFycyB9OworICAgIHN0cnVjdCBUYXNrIHsKKyAg
ICAgICAgUmVzb2x2ZVF1ZXJ5IHF1ZXJ5OworICAgICAgICBUeXBlIHR5cGU7CisgICAgfTsKKwor
ICAgIFZlY3RvcjxUYXNrLCA4PiBwZW5kaW5nVGFza3M7CisgICAgUmVzb2x2ZVNldCByZXNvbHZl
U2V0OworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBzdGFyU2V0OworICAgIFZlY3RvcjxS
ZXNvbHV0aW9uLCA4PiBmcmFtZXM7CisKKyAgICBmcmFtZXMuYXBwZW5kKFJlc29sdXRpb246Om5v
dEZvdW5kKCkpOworCisgICAgLy8gQ2FsbCB3aGVuIHRoZSBxdWVyeSBpcyBub3QgcmVzb2x2ZWQg
aW4gdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgIC8vIEl0IHdpbGwgZW5xdWV1ZSB0aGUgc3RhciBy
ZXNvbHV0aW9uIHJlcXVlc3RzLiBSZXR1cm4gImZhbHNlIiBpZiB0aGUgZXJyb3Igb2NjdXJzLgor
ICAgIGF1dG8gcmVzb2x2ZU5vbkxvY2FsID0gWyZdKGNvbnN0IFJlc29sdmVRdWVyeSYgcXVlcnkp
IC0+IGJvb2wgeworICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtcmVzb2x2ZWV4cG9ydAorICAgICAgICAvLyBzZWN0aW9uIDE1LjIu
MS4xNi4zLCBzdGVwIDYKKyAgICAgICAgLy8gSWYgdGhlICJkZWZhdWx0IiBuYW1lIGlzIG5vdCBy
ZXNvbHZlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUsIHdlIG5lZWQgdG8gdGhyb3cgYW4gZXJyb3Ig
YW5kIHN0b3AgcmVzb2x1dGlvbiBpbW1lZGlhdGVseSwKKyAgICAgICAgLy8gUmF0aW9uYWxlIHRv
IHRoaXMgZXJyb3I6IEEgZGVmYXVsdCBleHBvcnQgY2Fubm90IGJlIHByb3ZpZGVkIGJ5IGFuIGV4
cG9ydCAqLgorICAgICAgICBpZiAocXVlcnkuZXhwb3J0TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZGVmYXVsdEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIC8vIHN0ZXAgNywgSWYgZXhwb3J0U3RhclNldCBjb250YWlucyBtb2R1bGUsIHRo
ZW4gcmV0dXJuIG51bGwuCisgICAgICAgIGlmICghc3RhclNldC5hZGQocXVlcnkubW9kdWxlUmVj
b3JkKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8g
RW5xdWV1ZSB0aGUgdGFzayB0byBnYXRoZXIgdGhlIHJlc3VsdHMgb2YgdGhlIHN0YXJzLgorICAg
ICAgICAvLyBBbmQgYXBwZW5kIHRoZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0byBnYXRoZXIgdGhl
IGxvY2FsIHJlc3VsdCBvZiB0aGUgc3RhcnMuCisgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQo
VGFzayB7IHF1ZXJ5LCBUeXBlOjpHYXRoZXJTdGFycyB9KTsKKyAgICAgICAgZnJhbWVzLmFwcGVu
ZChSZXNvbHV0aW9uOjpub3RGb3VuZCgpKTsKKworICAgICAgICAvLyBFbnF1ZXVlIHRoZSB0YXNr
cyBpbiByZXZlcnNlIG9yZGVyLgorICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBxdWVyeS5t
b2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkucmJlZ2luKCksIGVuZCA9IHF1ZXJ5Lm1v
ZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJpZXMoKS5yZW5kKCk7IGl0ZXJhdG9yICE9IGVuZDsg
KytpdGVyYXRvcikgeworICAgICAgICAgICAgY29uc3QgYXV0byYgc3Rhck1vZHVsZU5hbWUgPSAq
aXRlcmF0b3I7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNv
cmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAg
ICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9k
dWxlUmVjb3JkLCBxdWVyeS5leHBvcnROYW1lLmdldCgpKSwgVHlwZTo6UXVlcnkgfSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8vIFJldHVybiB0aGUg
Y3VycmVudCByZXNvbHV0aW9uIHZhbHVlIG9mIHRoZSB0b3AgZnJhbWUuCisgICAgYXV0byBjdXJy
ZW50VG9wID0gWyZdICgpIC0+IFJlc29sdXRpb24mIHsKKyAgICAgICAgQVNTRVJUKCFmcmFtZXMu
aXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lcy5sYXN0KCk7CisgICAgfTsKKworICAg
IC8vIE1lcmdlIHRoZSBnaXZlbiByZXNvbHV0aW9uIHRvIHRoZSBjdXJyZW50IHJlc29sdXRpb24g
dmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4KKyAgICAvLyBJZiB0aGVyZSBpcyBhbWJpZ3VpdHksIHJl
dHVybiAiZmFsc2UiLiBXaGVuIHRoZSAiZmFsc2UiIGlzIHJldHVybmVkLCB3ZSBzaG91bGQgbWFr
ZSB0aGUgcmVzdWx0ICJhbWJpZ3VvdXMiLgorICAgIGF1dG8gbWVyZ2VUb0N1cnJlbnRUb3AgPSBb
Jl0gKGNvbnN0IFJlc29sdXRpb24mIHJlc29sdXRpb24pIC0+IGJvb2wgeworICAgICAgICBpZiAo
cmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKGN1cnJlbnRUb3AoKS50eXBlID09IFJlc29s
dXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICBjdXJyZW50VG9wKCkgPSByZXNv
bHV0aW9uOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoY3VycmVudFRvcCgpLm1vZHVsZVJlY29yZCAhPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZCB8
fCBjdXJyZW50VG9wKCkubG9jYWxOYW1lICE9IHJlc29sdXRpb24ubG9jYWxOYW1lKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAg
ICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyByb290LCBUeXBlOjpRdWVyeSB9KTsKKyAgICB3
aGlsZSAoIXBlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29uc3QgYXV0byB0YXNr
ID0gcGVuZGluZ1Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGNvbnN0IFJlc29sdmVRdWVyeSYg
cXVlcnkgPSB0YXNrLnF1ZXJ5OworCisgICAgICAgIHN3aXRjaCAodGFzay50eXBlKSB7CisgICAg
ICAgIGNhc2UgVHlwZTo6UXVlcnk6IHsKKyAgICAgICAgICAgIGlmICghcmVzb2x2ZVNldC5hZGQo
dGFzay5xdWVyeSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHF1ZXJ5Lm1vZHVsZVJlY29y
ZDsKKyAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eT4gb3B0aW9uYWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0RXhwb3J0RW50cnko
cXVlcnkuZXhwb3J0TmFtZS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIW9wdGlvbmFsRXhwb3J0
RW50cnkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBtYXRjaGVkIGV4cG9y
dGVkIGJpbmRpbmcgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLAorICAgICAgICAgICAgICAgIC8vIHdl
IG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJlc29s
dmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29s
dXRpb246OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gKm9wdGlvbmFsRXhwb3J0
RW50cnk7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAg
ICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAg
ICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6
CisgICAgICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRvcChSZXNvbHV0aW9uIHsgUmVz
b2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQsIG1vZHVsZVJlY29yZCwgZXhwb3J0RW50cnkubG9jYWxO
YW1lIH0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6YW1iaWd1b3Vz
KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDogeworICAgICAgICAgICAgICAg
IEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IG1vZHVsZVJlY29yZC0+aG9z
dFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBleHBvcnRFbnRyeS5tb2R1bGVOYW1lKTsKKwor
ICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGltcG9ydGVkIG1vZHVsZSBkb2VzIG5vdCBwcm9k
dWNlIGFueSByZXNvbHZlZCBiaW5kaW5nLCB3ZSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3RhcnMg
aW4gdGhlICpjdXJyZW50KgorICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4gVG8gZG8gdGhpcywg
d2UgYXBwZW5kIHRoZSBgSW5kaXJlY3RGYWxsYmFja2AgdGFzayB0byB0aGUgdGFzayBxdWV1ZS4K
KyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBxdWVyeSwgVHlwZTo6
SW5kaXJlY3RGYWxsYmFjayB9KTsKKyAgICAgICAgICAgICAgICAvLyBBbmQgYXBwZW5kIHRoZSBu
ZXcgUmVzb2x1dGlvbiBmcmFtZSB0byBjaGVjayB0aGUgaW5kaXJlY3QgZXhwb3J0IHdpbGwgYmUg
cmVzb2x2ZWQgb3Igbm90LgorICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoUmVzb2x1dGlv
bjo6bm90Rm91bmQoKSk7CisgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNr
IHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBleHBvcnRFbnRyeS5pbXBvcnRO
YW1lKSwgVHlwZTo6UXVlcnkgfSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2UgVHlwZTo6SW5kaXJlY3RGYWxsYmFjazogeworICAgICAgICAgICAgY29uc3Qg
YXV0byByZXNvbHV0aW9uID0gZnJhbWVzLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIGlmIChy
ZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAgICAgICAg
ICAgICAgICAvLyBJbmRpcmVjdCBleHBvcnQgZW50cnkgZG9lcyBub3QgcHJvZHVjZSBhbnkgcmVz
b2x2ZWQgYmluZGluZy4KKyAgICAgICAgICAgICAgICAvLyBTbyB3ZSB3aWxsIGludmVzdGlnYXRl
IHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVOb25Mb2NhbCh0YXNrLnF1
ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmVycm9yKCk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IElmIGluZGlyZWN0IGV4cG9ydCBlbnRyeSBwcm9kdWNlcyBSZXNvbHZlZCwgd2Ugc2hvdWxkIG1l
cmdlIGl0IHRvIHRoZSB1cHBlciBmcmFtZS4KKyAgICAgICAgICAgIC8vIEFuZCBkbyBub3QgaW52
ZXN0aWdhdGUgdGhlIHN0YXJzIG9mIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAgICAgICAgICAgIGlm
ICghbWVyZ2VUb0N1cnJlbnRUb3AocmVzb2x1dGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFJlc29sdXRpb246OmFtYmlndW91cygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIFR5cGU6OkdhdGhlclN0YXJzOiB7CisgICAgICAgICAgICAvLyBNZXJn
ZSB0aGUgc3RhciByZXNvbHV0aW9uIHRvIHRoZSB1cHBlciBmcmFtZS4KKyAgICAgICAgICAgIGNv
bnN0IGF1dG8gc3RhclJlc29sdXRpb24gPSBmcmFtZXMudGFrZUxhc3QoKTsKKyAgICAgICAgICAg
IGlmICghbWVyZ2VUb0N1cnJlbnRUb3Aoc3RhclJlc29sdXRpb24pKQorICAgICAgICAgICAgICAg
IHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQoZnJhbWVzLnNpemUoKSA9PSAx
KTsKKyAgICByZXR1cm4gZnJhbWVzWzBdOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNv
bHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkg
LT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9vcChleGVjLCBSZXNv
bHZlUXVlcnkodGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKK30KKworc3RhdGljIHZvaWQgZ2V0
RXhwb3J0ZWROYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlUmVjb3JkKiByb290LCBJZGVu
dGlmaWVyU2V0JiBleHBvcnRlZE5hbWVzKQoreworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQq
PiBleHBvcnRTdGFyU2V0OworICAgIFZlY3RvcjxKU01vZHVsZVJlY29yZCosIDg+IHBlbmRpbmdN
b2R1bGVzOworCisgICAgcGVuZGluZ01vZHVsZXMuYXBwZW5kKHJvb3QpOworCisgICAgd2hpbGUg
KCFwZW5kaW5nTW9kdWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1v
ZHVsZVJlY29yZCA9IHBlbmRpbmdNb2R1bGVzLnRha2VMYXN0KCk7CisgICAgICAgIGlmIChleHBv
cnRTdGFyU2V0LmNvbnRhaW5zKG1vZHVsZVJlY29yZCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgZXhwb3J0U3RhclNldC5hZGQobW9kdWxlUmVjb3JkKTsKKworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhaXIgOiBtb2R1bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKSkgeworICAg
ICAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICAg
ICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBjYXNlIEpTTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICAgICAg
aWYgKG1vZHVsZVJlY29yZCA9PSByb290IHx8IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZhdWx0
S2V5d29yZCAhPSBleHBvcnRFbnRyeS5leHBvcnROYW1lKQorICAgICAgICAgICAgICAgICAgICBl
eHBvcnRlZE5hbWVzLmFkZChleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9y
dEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YXJNb2R1bGVO
YW1lIDogbW9kdWxlUmVjb3JkLT5zdGFyRXhwb3J0RW50cmllcygpKSB7CisgICAgICAgICAgICBK
U01vZHVsZVJlY29yZCogcmVxdWVzdGVkTW9kdWxlUmVjb3JkID0gbW9kdWxlUmVjb3JkLT5ob3N0
UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rh
ck1vZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAgICAgIHBlbmRpbmdNb2R1bGVzLmFwcGVuZChy
ZXF1ZXN0ZWRNb2R1bGVSZWNvcmQpOworICAgICAgICB9CisgICAgfQorfQorCitKU01vZHVsZU5h
bWVzcGFjZU9iamVjdCogSlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZShFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLWdldG1vZHVsZW5hbWVzcGFjZQorICAgIGlmIChtX21vZHVsZU5hbWVz
cGFjZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgp
OworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKTsKKyAgICBJZGVudGlmaWVyU2V0IGV4cG9ydGVkTmFtZXM7CisgICAgZ2V0RXhw
b3J0ZWROYW1lcyhleGVjLCB0aGlzLCBleHBvcnRlZE5hbWVzKTsKKworICAgIElkZW50aWZpZXJT
ZXQgdW5hbWJpZ3VvdXNOYW1lczsKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBleHBvcnRlZE5hbWVz
KSB7CisgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBuYW1lLmdldCgpKSk7CisgICAgICAgIHN3aXRjaCAo
cmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91
bmQ6CisgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4cG9y
dGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKG5hbWUuZ2V0KCkpLCAiJyBpcyBub3QgZm91bmQu
IikpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFr
ZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2
ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6Cisg
ICAgICAgICAgICB1bmFtYmlndW91c05hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorCisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Quc2V0KGV4
ZWMtPnZtKCksIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgp
LCB0aGlzLCB1bmFtYmlndW91c05hbWVzKSk7CisgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmdldCgpOworfQorCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgc291cmNlQ29kZSgpKTsKQEAgLTEwMSwx
MSArNDg3LDEyOCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNl
dChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKKyAgICBpbnN0YW50aWF0ZURlY2xhcmF0
aW9ucyhleGVjLCBleGVjdXRhYmxlKTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6ZXhl
Y3V0ZShFeGVjU3RhdGUqKQordm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJh
dGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpCiB7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRl
Y2xhcmF0aW9uaW5zdGFudGlhdGlvbgorCisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT51bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKTsKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUg
PSB1bmxpbmtlZENvZGVCbG9jay0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpOworICAg
IEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9u
bWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlz
KTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0
YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDkuCisgICAgLy8gRW5z
dXJlIGFsbCB0aGUgaW5kaXJlY3QgZXhwb3J0cyBhcmUgY29ycmVjdGx5IHJlc29sdmVkIHRvIHVu
aXF1ZSBiaW5kaW5ncy4KKyAgICAvLyBFdmVuIGlmIHdlIGF2b2lkZWQgZHVwbGljYXRlIGV4cG9y
dHMgaW4gdGhlIHBhcnNlciwgc3RpbGwgYW1iaWd1b3VzIGV4cG9ydHMgb2NjdXIgZHVlIHRvIHRo
ZSBzdGFyIGV4cG9ydCAoYGV4cG9ydCAqIGZyb20gIm1vZCJgKS4KKyAgICAvLyBXaGVuIHdlIHNl
ZSB0aGlzIHR5cGUgb2YgYW1iaWd1aXR5IGZvciB0aGUgaW5kaXJlY3QgZXhwb3J0cyBoZXJlLCB0
aHJvdyBhIHN5bnRheCBlcnJvci4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9y
dEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVl
OworICAgICAgICBpZiAoZXhwb3J0RW50cnkudHlwZSA9PSBKU01vZHVsZVJlY29yZDo6RXhwb3J0
RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7CisgICAgICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRp
b24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpOworICAgICAg
ICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1
dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywg
bWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhl
eHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUg
dG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAg
ICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4
cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIg
ZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlv
bmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTIuCisgICAg
Ly8gSW5zdGFudGlhdGUgbmFtZXNwYWNlIG9iamVjdHMgYW5kIGluaXRpYWxpemUgdGhlIGJpbmRp
bmdzIHdpdGggdGhlbSBpZiByZXF1aXJlZC4KKyAgICAvLyBBbmQgZW5zdXJlIHRoYXQgYWxsIHRo
ZSBpbXBvcnRzIGNvcnJlY3RseSByZXNvbHZlZCB0byB1bmlxdWUgYmluZGluZ3MuCisgICAgZm9y
IChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IGF1
dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGlt
cG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRy
eS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZt
KSkgeworICAgICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVj
dCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CisgICAgICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgLy8gV2UgZG9uJ3QgdXNlIHRoZSBzeW1ib2xUYWJsZVB1dCBiZWNhdXNlIHRoZXNl
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgICAgICAgICAvLyBGb3IgdGhlIGZpcnN0IGlu
aXRpYWxpemF0aW9uLCB3ZSBpbml0aWFsaXplIHRoZSBiaW5kaW5nIHNsb3QgZGlyZWN0bHkuCisg
ICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2Nr
KTsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+aW5s
aW5lR2V0KGxvY2tlciwgaW1wb3J0RW50cnkubG9jYWxOYW1lLmltcGwoKSk7CisgICAgICAgICAg
ICBTY29wZU9mZnNldCBvZmZzZXQgPSBlbnRyeS5zY29wZU9mZnNldCgpOworICAgICAgICAgICAg
QVNTRVJUKG1vZHVsZUVudmlyb25tZW50LT5pc1ZhbGlkKG9mZnNldCkpOworICAgICAgICAgICAg
bW9kdWxlRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQob2Zmc2V0KS5zZXQodm0sIG1vZHVsZUVudmly
b25tZW50LCBuYW1lc3BhY2VPYmplY3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Y29uc3QgYXV0byByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhl
YywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRp
b24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoK
KyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9y
dGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwo
KSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5h
bWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBi
ZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkg
c3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xh
cmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQgc3RlcCAxNC4K
KyAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgY29udGFpbnMgdGhlIGhlYXAgYWxsb2NhdGVkICJ2
YXIiLCAibGV0IiBhbmQgImNvbnN0Ii4KKyAgICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBlbnZpcm9u
bWVudCwgd2UgaW5pdGlhbGl6ZWQgYWxsIHRoZSBzbG93IHdpdGggZW1wdHksIGl0J3Mgb2sgZm9y
IGxleGljYWwgdmFsdWVzLgorICAgIC8vIEJ1dCBmb3IgInZhciIsIHdlIHNob3VsZCBpbml0aWFs
aXplIGl0IHdpdGggdW5kZWZpbmVkLgorICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBt
X2RlY2xhcmVkVmFyaWFibGVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGVudHJ5ID0gc3ltYm9s
VGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0
ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkKKyAg
ICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5nZXQoKSksIGpzVW5kZWZpbmVkKCksIGZh
bHNlKTsKKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8g
c2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDE2LWEtaXYuCisgICAgLy8gSW5pdGlhbGl6ZSBoZWFw
IGFsbG9jYXRlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgICAgLy8gVGhleSBjYW4gYmUgY2Fs
bGVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIHVuZGVyIGNpcmN1
bGFyIGRlcGVuZGVuY2llcy4KKyAgICBmb3IgKHNpemVfdCBpID0gMCwgbnVtYmVyT2ZGdW5jdGlv
bnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IGkgPCBudW1i
ZXJPZkZ1bmN0aW9uczsgKytpKSB7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlv
bkRlY2woaSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh1
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmltcGwoKSk7CisgICAgICAgIFZhck9m
ZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNT
dGFjaygpKSB7CisgICAgICAgICAgICBBU1NFUlQoIXVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LT5uYW1lKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSB8
fCB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpIHsKKyAgICAgICAgICAgICAgICB2bS5mdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLT5zb3VyY2VJRCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksCisgICAgICAgICAgICAg
ICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0
KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZt
LCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlKCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7
CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIGZhbHNlKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KHZtLCB0aGlzLCBtb2R1
bGVFbnZpcm9ubWVudCk7Cit9CisKK0pTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGlmICghbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkKKyAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBleGVjLT5p
bnRlcnByZXRlcigpLT5leGVjdXRlKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCksIGV4
ZWMsIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCkpOworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuY2xlYXIoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgU3RyaW5nIHBy
aW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlkKQpAQCAtMTI5
LDIzICs2MzIsMjUgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6ZHVtcCgpCiAgICAgICAgIGRhdGFM
b2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxuIik7CiAK
ICAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVu
dHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykK
LSAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1
ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5sb2Nh
bE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1bGVSZXF1
ZXN0KSwgIilcbiIpOworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmll
cykgeworICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAg
ICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGltcG9ydEVudHJ5Lmlt
cG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5sb2NhbE5h
bWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoaW1wb3J0RW50cnkubW9kdWxlUmVxdWVz
dCksICIpXG4iKTsKKyAgICB9CiAKICAgICBkYXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4cG9y
dEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwogICAgIGZvciAoY29uc3QgYXV0byYgcGFp
ciA6IG1fZXhwb3J0RW50cmllcykgewotICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkg
PSBwYWlyLnZhbHVlOwotICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAgICAgY29u
c3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBzd2l0Y2ggKGV4cG9y
dEVudHJ5LnR5cGUpIHsKICAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6Ci0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxl
TmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50cnku
bG9jYWxOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAi
LCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuZXhwb3J0TmFtZSksICIpLCBs
b2NhbCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVz
cGFjZToKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQo
IiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFi
bGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnku
ZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5tb2R1
bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBFeHBv
cnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5k
aXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiks
IGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIs
IHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9y
dEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50
cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5t
b2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRl
eCA4MWRhMzk2NmU4YzVhOGRhOTMwNGQyODJmNGZiY2E5NGYyNGVhZTQ4Li4yYjBiMjAyZDFhNWMy
NmQxZjVlZjEwNTViNTljZWU4Mzg0YTVjMzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJW
YXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTc4LDggKzc5LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6TGlz
dEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9y
ZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNo
LCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRNYXA7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4g
SW1wb3J0RW50cmllczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRFbnRyaWVzOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIApAQCAtMTAwLDI1ICsxMDEsNDkgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3Qg
SW1wb3J0RW50cnkmKTsKICAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5
Jik7CiAKLSAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKKyAgICBPcHRpb25hbDxJbXBvcnRF
bnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSk7Cisg
ICAgT3B0aW9uYWw8RXhwb3J0RW50cnk+IHRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJ
bXBsKiBleHBvcnROYW1lKTsKIAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUtleTsgfQogICAgIGNvbnN0IE9yZGVyZWRJ
ZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
ZWRNb2R1bGVzOyB9Ci0gICAgY29uc3QgRXhwb3J0TWFwJiBleHBvcnRFbnRyaWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9Ci0gICAgY29uc3QgSW1wb3J0TWFwJiBpbXBvcnRF
bnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgRXhw
b3J0RW50cmllcyYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50cmll
czsgfQorICAgIGNvbnN0IEltcG9ydEVudHJpZXMmIGltcG9ydEVudHJpZXMoKSBjb25zdCB7IHJl
dHVybiBtX2ltcG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYg
c3RhckV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXJFeHBvcnRFbnRyaWVzOyB9
CiAKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KICAgICBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsVmFy
aWFibGVzOyB9CiAKICAgICB2b2lkIGR1bXAoKTsKIAorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQq
IG1vZHVsZUVudmlyb25tZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21vZHVsZUVudmly
b25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7CisgICAg
fQogCiAgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSopOwogICAgIEpTVmFsdWUgZXhlY3V0ZShFeGVj
U3RhdGUqKTsKIAogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCk7
IH0KIAorICAgIHN0cnVjdCBSZXNvbHV0aW9uIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsg
UmVzb2x2ZWQsIE5vdEZvdW5kLCBBbWJpZ3VvdXMsIEVycm9yIH07CisKKyAgICAgICAgc3RhdGlj
IFJlc29sdXRpb24gbm90Rm91bmQoKTsKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gZXJyb3Io
KTsKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gYW1iaWd1b3VzKCk7CisKKyAgICAgICAgVHlw
ZSB0eXBlOworICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAgICAgICBJ
ZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICB9OworCisgICAgUmVzb2x1dGlvbiByZXNvbHZlRXhw
b3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpOworICAgIFJlc29s
dXRpb24gcmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5h
bWUpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKIHByaXZhdGU6CiAgICAg
SlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCkBA
IC0xMzEsMTAgKzE1NiwxMiBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKKyAgICBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCogZ2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSopOwor
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBKU01vZHVsZVJlY29yZCog
aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBt
b2R1bGVOYW1lKTsKKyAgICB2b2lkIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSos
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7CiAKICAgICAvLyBUaGUgbG9hZGVyIHJlc29sdmVz
IHRoZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1vZHVsZSBrZXkg
aXMgdGhlIHVuaXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCiAgICAgSWRlbnRp
ZmllciBtX21vZHVsZUtleTsKQEAgLTE0NSw0NiArMTcyLDI0IEBAIGNsYXNzIEpTTW9kdWxlUmVj
b3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBWYXJpYWJsZUVudmlyb25t
ZW50IG1fbGV4aWNhbFZhcmlhYmxlczsKIAogICAgIC8vIE1hcCBsb2NhbE5hbWUgLT4gSW1wb3J0
RW50cnkuCi0gICAgSW1wb3J0TWFwIG1faW1wb3J0RW50cmllczsKKyAgICBJbXBvcnRFbnRyaWVz
IG1faW1wb3J0RW50cmllczsKIAogICAgIC8vIE1hcCBleHBvcnROYW1lIC0+IEV4cG9ydEVudHJ5
LgotICAgIEV4cG9ydE1hcCBtX2V4cG9ydEVudHJpZXM7CisgICAgRXhwb3J0RW50cmllcyBtX2V4
cG9ydEVudHJpZXM7CiAKLSAgICBJZGVudGlmaWVyU2V0IG1fc3RhckV4cG9ydEVudHJpZXM7Cisg
ICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSByZXNvbHZlRXhwb3J0IHJlcXVp
cmVzIGl0LgorICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fc3RhckV4cG9ydEVudHJpZXM7CiAK
ICAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHRoZSBtb2R1bGUgbG9hZGVy
IGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMgb3JkZXIuCiAgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1
YXRpb24KICAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3RlZE1vZHVsZXM7CiAKKyAg
ICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVFbnZpcm9ubWVudD4gbV9tb2R1bGVFbnZpcm9ubWVudDsK
KyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+IG1fbW9kdWxlTmFtZXNw
YWNlT2JqZWN0OwogICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4gbV9t
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8SlNNYXA+IG1fZGVwZW5k
ZW5jaWVzTWFwOwogfTsKIAotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVl
c3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fcmVxdWVz
dGVkTW9kdWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01v
ZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQotewot
ICAgIG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpOwot
fQotCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhw
b3J0RW50cnkmIGVudHJ5KQotewotICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0
TmFtZS5pbXBsKCksIGVudHJ5KTsKLX0KLQotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFk
ZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1f
c3RhckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIGF1
dG8gSlNNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCi17Ci0gICAgcmV0
dXJuICgqbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNNb2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCBiYjJlZmRkMDYzMWNkMThlYTk3NTQy
Njc0YTJjZTcxODE1MDcyYzhmLi4yZDA2MDhkOWM3YTUxNjVmOTYzYTgyMzIyZWVhMjRiZTZhNjc1
ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMjgs
NiArMjgsOCBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xl
eGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNp
bmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogCkBAIC02NSw2ICs2NywxOSBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgYWJzdHJhY3RBY2Nlc3MoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgY29uc3Qg
SWRlbnRpZgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAoSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBqc0R5bmFtaWNDYXN0
PEpTTW9kdWxlRW52aXJvbm1lbnQqPihzY29wZSkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVFbnZpcm9ubWVudC0+bW9kdWxlUmVjb3JkKCk7Cisg
ICAgICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQtPnJlc29sdmVJ
bXBvcnQoZXhlYywgaWRlbnQpOworICAgICAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBK
U01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgICAg
ICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNvbHV0aW9uLm1vZHVsZVJl
Y29yZDsKKyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZEVudmly
b25tZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgICAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGltcG9ydGVkRW52aXJvbm1lbnQtPnN5bWJv
bFRhYmxlKCktPmdldChyZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAgICAgIG9wID0gUmVzb2x2
ZU9wKG1ha2VUeXBlKE1vZHVsZVZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwg
MCwgaW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hwb2ludFNldCgpLCBlbnRyeS5zY29w
ZU9mZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAg
ICAgaWYgKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+dXNlc05vblN0cmljdEV2
YWwoKSkKICAgICAgICAgICAgIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzID0gdHJ1ZTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDYgKzI0Nyw3IEBAIGNvbnN0IGNoYXIqIHJlc29sdmVU
eXBlTmFtZShSZXNvbHZlVHlwZSB0eXBlKQogICAgICAgICAiR2xvYmFsVmFyIiwKICAgICAgICAg
IkNsb3N1cmVWYXIiLAogICAgICAgICAiTG9jYWxDbG9zdXJlVmFyIiwKKyAgICAgICAgIk1vZHVs
ZVZhciIsCiAgICAgICAgICJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MiLAog
ICAgICAgICAiR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCiAgICAgICAgICJDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmgKaW5kZXggYTY1MzE2NzQ5MGY2ODIyM2Y1MTFkZDI4OTA4OTI5ZmM0NmExOTcz
Yy4uMDI2YTI3MTRkYzhkOTIyYTk4Mjg4NWU1NDZiNTc4YmE5NjM0ODBhNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtNDUsNiArNDUsNyBAQCBlbnVtIFJlc29s
dmVUeXBlIHsKICAgICBHbG9iYWxWYXIsCiAgICAgQ2xvc3VyZVZhciwKICAgICBMb2NhbENsb3N1
cmVWYXIsCisgICAgTW9kdWxlVmFyLAogCiAgICAgLy8gRGl0dG8sIGJ1dCBhdCBsZWFzdCBvbmUg
aW50ZXJ2ZW5pbmcgc2NvcGUgdXNlZCBub24tc3RyaWN0IGV2YWwsIHdoaWNoCiAgICAgLy8gY2Fu
IGluamVjdCBhbiBpbnRlcmNlcHRpbmcgdmFyIGRlbGNhcmF0aW9uIGF0IHJ1bnRpbWUuCkBAIC03
Miw2ICs3Myw3IEBAIGlubGluZSBSZXNvbHZlVHlwZSBtYWtlVHlwZShSZXNvbHZlVHlwZSB0eXBl
LCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAg
ICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgcmV0dXJuIENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrczoKICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OgpAQCAtOTAsNiArOTIsNyBAQCBpbmxpbmUgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhS
ZXNvbHZlVHlwZSB0eXBlKQogICAgIGNhc2UgR2xvYmFsVmFyOgogICAgIGNhc2UgQ2xvc3VyZVZh
cjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTEw
MywxMyArMTA2LDE0IEBAIGlubGluZSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29s
dmVUeXBlIHR5cGUpCiB9CiAKIHN0cnVjdCBSZXNvbHZlT3AgewotICAgIFJlc29sdmVPcChSZXNv
bHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0xleGlj
YWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBXYXRjaHBvaW50U2V0KiB3YXRjaHBv
aW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKKyAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlw
ZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJvbm1l
bnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWlu
dHB0cl90IG9wZXJhbmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBvcnRlZE5hbWUgPSBudWxscHRy
KQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBkZXB0aChkZXB0aCkKICAgICAgICAg
LCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICAgICAsIGxleGljYWxFbnZpcm9ubWVudChsZXhp
Y2FsRW52aXJvbm1lbnQpCiAgICAgICAgICwgd2F0Y2hwb2ludFNldCh3YXRjaHBvaW50U2V0KQog
ICAgICAgICAsIG9wZXJhbmQob3BlcmFuZCkKKyAgICAgICAgLCBpbXBvcnRlZE5hbWUoaW1wb3J0
ZWROYW1lKQogICAgIHsKICAgICB9CiAKQEAgLTExOSw2ICsxMjMsNyBAQCBzdHJ1Y3QgUmVzb2x2
ZU9wIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50OwogICAg
IFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CiAgICAgdWludHB0cl90IG9wZXJhbmQ7Cisg
ICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBvcnRlZE5hbWU7CiB9OwogCiBjbGFzcyBS
ZXNvbHZlTW9kZUFuZFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggMjhlMGJhZGFhNzJhZjMwY2M3NzE5MTk2
MDRhNjEyZDZjZGI3M2UwNy4uNmU2ZjlmOWE2ZGE2MTgxMmUzYzIxYWQ0MzY2ZmQ4N2I3Y2QxNDdk
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21p
c2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNN
b2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy55
YW1sIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMueWFtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hYjQ3OGYxZjY0NDlhMTJmZWU4ZDRjNjFmNTI5MDBiNWQwODljNWFmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMueWFtbApAQCAtMCwwICsx
LDI1IEBACisjIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy0gcGF0aDogbW9kdWxlcwor
ICBjbWQ6IHJ1bk1vZHVsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL2FsaWFzaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvYWxpYXNpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y1ZTNlZWU0Nzk1ODkyOTIzMzM0NjRlMjI5ZGM4
OWQ1Mjc2NjEwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL2FsaWFzaW5nLmpzCkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCB7IENvY29hIGFz
IERyaW5rLCBjaGFuZ2VDb2NvYSwgU3ViRHJpbmssIGNoYW5nZUNhcHB1Y2Npbm8gfSBmcm9tICIu
L2FsaWFzaW5nL2RyaW5rLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUsIHNob3VsZFRocm93IH0gZnJv
bSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKKworc2hvdWxkQmUoRHJpbmssICJDb2NvYSIpOwor
c2hvdWxkQmUoU3ViRHJpbmssICJDYXBwdWNjaW5vIik7CitzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgQ29jb2EKK30sIGBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQ29jb2Fg
KTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIENhcHB1Y2Npbm8KK30sIGBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQ2FwcHVjY2lub2ApOworCitjaGFuZ2VDb2NvYSgi
TW9jaGEiKTsKK3Nob3VsZEJlKERyaW5rLCAiTW9jaGEiKTsKKworY2hhbmdlQ2FwcHVjY2lubygi
TWF0Y2hhIik7CitzaG91bGRCZShTdWJEcmluaywgIk1hdGNoYSIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvYWxpYXNpbmcvZHJpbmstMi5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2FsaWFzaW5nL2RyaW5rLTIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTkwYWM4YmZkMDYxYjBkZmIzMTMyMWQ3Mzg1YzRkODQxNGM1Y2RlNQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2FsaWFzaW5n
L2RyaW5rLTIuanMKQEAgLTAsMCArMSw1IEBACitleHBvcnQgbGV0IENhcHB1Y2Npbm8gPSAiQ2Fw
cHVjY2lubyIKKworZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZUNhcHB1Y2Npbm8odmFsdWUpIHsKKyAg
ICBDYXBwdWNjaW5vID0gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9hbGlhc2luZy9kcmluay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL2FsaWFzaW5nL2RyaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkYTg0YTBmOGYw
YWFhMGE0OTNjOWFiMTRlNjM4NGRlZmYzMWM2NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9hbGlhc2luZy9kcmluay5qcwpAQCAtMCwwICsx
LDcgQEAKK2V4cG9ydCBsZXQgQ29jb2EgPSAiQ29jb2EiOworZXhwb3J0IGZ1bmN0aW9uIGNoYW5n
ZUNvY29hKHZhbHVlKSB7CisgICAgQ29jb2EgPSB2YWx1ZTsKK30KKworaW1wb3J0IHsgQ2FwcHVj
Y2lubyBhcyBTdWJEcmluaywgY2hhbmdlQ2FwcHVjY2lubyB9IGZyb20gImRyaW5rLTIuanMiCitl
eHBvcnQgeyBTdWJEcmluaywgY2hhbmdlQ2FwcHVjY2lubyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9jeWNsaWMtbWF5LXByb2R1Y2UtdGR6LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvY3ljbGljLW1heS1wcm9kdWNlLXRk
ei5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMmJhZDYwYTVhYmY3YzU3MjJhMTYzYTA4NzU0MGZmNDNjZDhiYjli
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMv
Y3ljbGljLW1heS1wcm9kdWNlLXRkei5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCB7IENvY29h
LCBDYXBwdWNjaW5vLCBNYXRjaGEgfSBmcm9tICIuL2N5Y2xpYy1tYXktcHJvZHVjZS10ZHovMi5q
cyIKK2ltcG9ydCB7IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKKwor
Ly8gQWxsIHRoaW5ncyBhcmUgYWxyZWFkeSBzZXQuCitzaG91bGRCZShDb2NvYSwgIkNvY29hIik7
CitzaG91bGRCZShDYXBwdWNjaW5vLCAiQ2FwcHVjY2lubyIpOworc2hvdWxkQmUoTWF0Y2hhLCAi
TWF0Y2hhIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9jeWNsaWMtbWF5LXByb2R1Y2UtdGR6LzEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9jeWNsaWMtbWF5LXByb2R1Y2UtdGR6LzEuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBjMjZm
NjFiYjdhMGE2MDY0ODgzNTNhMDZkYzY3YWQ0YTlkN2Q4YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2N5Y2xpYy1tYXktcHJvZHVjZS10ZHov
MS5qcwpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgeyBDYXBwdWNjaW5vLCBNYXRjaGEgfSBmcm9t
ICIuLzIuanMiCitpbXBvcnQgeyBzaG91bGRUaHJvdywgc2hvdWxkQmUgfSBmcm9tICIuLi9yZXNv
dXJjZXMvYXNzZXJ0LmpzIjsKKworZXhwb3J0IGxldCBDb2NvYSA9ICJDb2NvYSI7CisKKy8vIG1v
ZHVsZSAiMiIgaXMgbm90IGxvYWRlZCB5ZXQsIFREWi4KK3Nob3VsZFRocm93KCgpID0+IHsKKyAg
ICBDYXBwdWNjaW5vOworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlh
bGl6ZWQgdmFyaWFibGUuYCk7CisKKy8vIEJ1dCAiTWF0Y2hhIiBpcyB2YXJpYWJsZSAobm90IGxl
eGljYWwgdmFyaWFibGUpLiBJdCBpcyBhbHJlYWR5IGluaXRpYWxpemVkIGFzIHVuZGVmaW5lZC4K
K3Nob3VsZEJlKE1hdGNoYSwgdW5kZWZpbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb2R1bGVzL2N5Y2xpYy1tYXktcHJvZHVjZS10ZHovMi5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2N5Y2xpYy1tYXktcHJvZHVjZS10ZHovMi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMGYxNjM5YjViYWNkYTRmZmVlNDNjMGIzN2EwZjNlOGJhMTc1ZDRkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvY3lj
bGljLW1heS1wcm9kdWNlLXRkei8yLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2ltcG9ydCB7IENvY29h
IH0gZnJvbSAiLi8xLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUgfSBmcm9tICIuLi9yZXNvdXJjZXMv
YXNzZXJ0LmpzIjsKKworZXhwb3J0IGxldCBDYXBwdWNjaW5vID0gIkNhcHB1Y2Npbm8iOworCitl
eHBvcnQgdmFyIE1hdGNoYSA9ICJNYXRjaGEiOworCisvLyAxIGlzIGFscmVhZHkgbG9hZGVkLgor
c2hvdWxkQmUoQ29jb2EsICJDb2NvYSIpOworCitzaG91bGRCZShDYXBwdWNjaW5vLCAiQ2FwcHVj
Y2lubyIpOworc2hvdWxkQmUoTWF0Y2hhLCAiTWF0Y2hhIik7CisKKy8vIEluZGlyZWN0bHkgZXhw
b3J0ICJDb2NvYSIKK2V4cG9ydCB7IENvY29hIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9kZWZhdWx0LWVycm9yL21haW4uanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9kZWZhdWx0LWVycm9yL21haW4uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGFhYjEzNTkxODM2NTU4MjY4OGY1ODhjMWE5ZTUzYjE3NTY0YjQyNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2RlZmF1bHQtZXJyb3Iv
bWFpbi5qcwpAQCAtMCwwICsxIEBACitpbXBvcnQgIkEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmU1MjlkZDYxMThmMTBlNDVmODk2MDhkYmIyYzc0ZWFlYTlhZDgwYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci1jeWNsaWMuanMKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgIi4vZXhlY3V0
aW9uLW9yZGVyLWN5Y2xpYy8xMS5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJu
IHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDExKQorICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8xLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8x
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc5MGZkOGUzZmI4ZmViOGE1ZmU0ZTk2YjRjMzlmMTg1Mzk2ZGViMmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItY3ljbGljLzEuanMKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgIi4vMTEu
anMiCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKHR5cGVv
ZiBnbG9iYWwuY291bnQgIT09ICd1bmRlZmluZWQnKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNs
aWMvMTAuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItY3ljbGljLzEwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkY2U1ZDNiOWE2ZTlmZjNkNmE5Njg3NTA4
MDZkMjA0YjdmNmIxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzEwLmpzCkBAIC0wLDAgKzEsNyBA
QAoraW1wb3J0ICIuLzExLmpzIgoraW1wb3J0ICIuLzkuanMiCisKK3ZhciBnbG9iYWwgPSAoRnVu
Y3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSA5KQorICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50
ID0gMTA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItY3ljbGljLzExLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8xMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGYzY2Vk
YWUxODFmYjE5YzFiOTU4NzQzNjg1NDk1YjdjM2YyM2U3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8x
MS5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCAiLi8xMC5qcyIKK2ltcG9ydCAiLi80LmpzIgor
Cit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5j
b3VudCAhPT0gMTApCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291
bnR9YCk7CitnbG9iYWwuY291bnQgPSAxMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMi5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvMi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ODY4ZTZmNmFmNjQ3YmNiMjE2MjFjZGFiMWFmNTYyNmZjOThjNWZkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0
aW9uLW9yZGVyLWN5Y2xpYy8yLmpzCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0ICIuLzExLmpzIgor
aW1wb3J0ICIuLzkuanMiCitpbXBvcnQgIi4vNS5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlv
bigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDEpCisgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0
aW9uLW9yZGVyLWN5Y2xpYy8zLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy8zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczYzEwNTQwM2U4NTdh
MmQ0NGFlNmExYjViMTM3YzJmMTE1OTNlOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzMuanMKQEAg
LTAsMCArMSw3IEBACitpbXBvcnQgIi4vMS5qcyIKK2ltcG9ydCAiLi8yLmpzIgorCit2YXIgZ2xv
YmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0g
MikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2ds
b2JhbC5jb3VudCA9IDM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzQuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWZkMWE4OTE3MTU2MGNhMzcwMDkwMjJlMmU1MDhjOTc3ZWRjNzZkYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1j
eWNsaWMvNC5qcwpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCAiLi8yLmpzIgorCit2YXIgZ2xvYmFs
ID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMykK
KyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2Jh
bC5jb3VudCA9IDQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFk
ZWVmOTJkMTJmNWFiYzY4NmEzMThjMmJhYTQ5OGJmNjQ4MWU4ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNs
aWMvNS5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCAiMy5qcyIKK2ltcG9ydCAiNC5qcyIKKwor
dmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291
bnQgIT09IDQpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9
YCk7CitnbG9iYWwuY291bnQgPSA1OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy82LmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWN5Y2xpYy82LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIwNWM1OTMxN2JmMWY1NzU2ODQzYWEwOWRjMWUxMGEwNjk4MGUyNGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24t
b3JkZXItY3ljbGljLzYuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgIi4vNS5qcyIKK2ltcG9y
dCAiLi85LmpzIgorCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOwor
aWYgKGdsb2JhbC5jb3VudCAhPT0gNSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAk
e2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDY7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzcuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3lj
bGljLzcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFlNmMwNTk5YTUxODk2ZTNiYmJkNjBjNTFiNmMzNzNiYjZm
YTc5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1
bGVzL2V4ZWN1dGlvbi1vcmRlci1jeWNsaWMvNy5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCAi
Li82LmpzIjsKK2ltcG9ydCAiLi85LmpzIjsKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0
dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDYpCisgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSA3OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9y
ZGVyLWN5Y2xpYy84LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLWN5Y2xpYy84LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzYjBkYTVkZmIyZWRjM2Q0N2I2
N2U5YWNiNzBjYzEyNzhjZTI4MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzguanMKQEAgLTAsMCAr
MSw2IEBACitpbXBvcnQgIi4vNy5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJu
IHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDcpCisgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSA4OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVy
LWN5Y2xpYy85LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0
aW9uLW9yZGVyLWN5Y2xpYy85LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ZWNkYzllMjMyMzJkNWI2NWExN2Qz
ZTlmYzcxMjA5OWQwZWI0ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItY3ljbGljLzkuanMKQEAgLTAsMCArMSw4
IEBACitpbXBvcnQgIi4vMTEuanMiOworaW1wb3J0ICIuLzguanMiOworaW1wb3J0ICIuLzYuanMi
OworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2Jh
bC5jb3VudCAhPT0gOCkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5j
b3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43ZTdhYzdmZjlmMmEzZmYyMmM2YmEwNWNkMzg4YWJiZGQ2M2I5MTczCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVy
LWRhZy5qcwpAQCAtMCwwICsxLDcgQEAKKy8vIFRoaXMgdGVzdHMgdGhlIERBRy4KK2ltcG9ydCAi
Li9leGVjdXRpb24tb3JkZXItZGFnLzkuanMiCitpbXBvcnQgIi4vZXhlY3V0aW9uLW9yZGVyLWRh
Zy8xMC5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lm
IChnbG9iYWwuY291bnQgIT09IDEwKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7
Z2xvYmFsLmNvdW50fWApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy8xLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy8xLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMWMz
Y2M1ZDBkNjNjMGMyOTBlM2JlNjk1ZjFkZGU2ZjEzYjczYTMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzEu
anMKQEAgLTAsMCArMSw0IEBACit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIp
KSgpOworaWYgKHR5cGVvZiBnbG9iYWwuY291bnQgIT09ICd1bmRlZmluZWQnKQorICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0g
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1
dGlvbi1vcmRlci1kYWcvMTAuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItZGFnLzEwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyODA0OWRlNmVkNjYwYTVl
ZWZjMmRlYjdmMzg5OTQ2ZTVkMTdhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzEwLmpzCkBAIC0wLDAg
KzEsNyBAQAoraW1wb3J0ICIuLzguanMiCitpbXBvcnQgIi4vNy5qcyIKKwordmFyIGdsb2JhbCA9
IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDkpCisg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwu
Y291bnQgPSAxMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1
bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjUzYmQ4NTA3
NjM5MjkwYjY0YjZhZDMyNjE1MmVjMTkzNDQ0ODA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy8yLmpzCkBA
IC0wLDAgKzEsNiBAQAoraW1wb3J0ICIuLzEuanMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9u
KCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMSkKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItZGFnLzMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItZGFnLzMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI1ZWI0ODY4YWUyMTAwODk5ZjA2
OGJkOGJiMDYyMzdkOGNkMWFlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvMy5qcwpAQCAtMCwwICsxLDYg
QEAKK2ltcG9ydCAiLi8yLmpzIjsKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRo
aXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSAzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRh
Zy80LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9y
ZGVyLWRhZy80LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliZGFlNDlkOWQwMzlkMTZkMWM5YmNlZDNkYjI0YmIy
ZDViNTRjZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzQuanMKQEAgLTAsMCArMSw2IEBACitpbXBvcnQg
Ii4vMS5qcyIKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lm
IChnbG9iYWwuY291bnQgIT09IDMpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtn
bG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy81LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRhZy81Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEzM2I2M2NmNTRjYTdlNTkzYzNiYjcxYTA2OTdmNmI4NTk2M2JlYzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVj
dXRpb24tb3JkZXItZGFnLzUuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQgIjQuanMiCitpbXBv
cnQgIjEuanMiCisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7Citp
ZiAoZ2xvYmFsLmNvdW50ICE9PSA0KQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7
Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvNi5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvNi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NjEzZTcxMmI4Nzc5MGM2MWMzZmVmOWFlYTBiNGIxYmM5NDRlMjJlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLWRhZy82LmpzCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0ICIuLzUuanMiCisK
K3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNv
dW50ICE9PSA1KQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50
fWApOworZ2xvYmFsLmNvdW50ID0gNjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvNy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvNy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYjhlOWEwNjNmNGU5NGFjNmQ4NmQwOGVjNmZhMjQxMmEyY2Y4ZGNmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVy
LWRhZy83LmpzCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0ICIuLzYuanMiOworCit2YXIgZ2xvYmFs
ID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gNikK
KyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2Jh
bC5jb3VudCA9IDc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNlM2I1ZjQ5
OTIyODRhODkxY2FhYTRjYzNiYTA2NDYyZmI3Mjg3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcvOC5qcwpA
QCAtMCwwICsxLDcgQEAKK2ltcG9ydCAiLi8zLmpzIgoraW1wb3J0ICIuLzcuanMiOworCit2YXIg
Z2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAh
PT0gNykKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsK
K2dsb2JhbC5jb3VudCA9IDg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGFnLzkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMy
ZTQyNWEyMmY4OTI1NGVjMjE4OGI0MzAwMTI4NDA5MDA2MzNiZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kYWcv
OS5qcwpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCAiLi84LmpzIjsKKwordmFyIGdsb2JhbCA9IChG
dW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDgpCisgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291
bnQgPSA5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMv
ZXhlY3V0aW9uLW9yZGVyLWRlcHRoLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21v
ZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRlcHRoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyZTg5ZmQ4YjRjNDJj
NDc5NDIzZWM5YjlhMjA1OTJhZDgxMjU4ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGVwdGguanMKQEAgLTAs
MCArMSw1IEBACitpbXBvcnQgIi4vZXhlY3V0aW9uLW9yZGVyLWRlcHRoLzMuanMiCisKK3ZhciBn
bG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9
PSAzKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9u
LW9yZGVyLWRlcHRoLzEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9l
eGVjdXRpb24tb3JkZXItZGVwdGgvMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjFjM2NjNWQwZDYzYzBjMjkw
ZTNiZTY5NWYxZGRlNmYxM2I3M2EzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLWRlcHRoLzEuanMKQEAgLTAsMCAr
MSw0IEBACit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKHR5
cGVvZiBnbG9iYWwuY291bnQgIT09ICd1bmRlZmluZWQnKQorICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1k
ZXB0aC8yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9u
LW9yZGVyLWRlcHRoLzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y1M2JkODUwNzYzOTI5MGI2NGI2YWQzMjYx
NTJlYzE5MzQ0NDgwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1kZXB0aC8yLmpzCkBAIC0wLDAgKzEsNiBAQAor
aW1wb3J0ICIuLzEuanMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIp
KSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGVwdGgv
My5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRl
ci1kZXB0aC8zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNWViNDg2OGFlMjEwMDg5OWYwNjhiZDhiYjA2MjM3
ZDhjZDFhZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9leGVjdXRpb24tb3JkZXItZGVwdGgvMy5qcwpAQCAtMCwwICsxLDYgQEAKK2ltcG9y
dCAiLi8yLmpzIjsKKwordmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsK
K2lmIChnbG9iYWwuY291bnQgIT09IDIpCisgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWUg
JHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSAzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNlbGYuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItc2VsZi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NjVkOTAzZDA1ODdiMWU3NDNmMGYxYzQ4MzFhMTA5N2Q2OTUwMDU5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLXNlbGYuanMKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgIi4vZXhlY3V0aW9u
LW9yZGVyLXNlbGYuanMiCisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikp
KCk7CitpZiAodHlwZW9mIGdsb2JhbC5jb3VudCAhPT0gJ3VuZGVmaW5lZCcpCisgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQgPSAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0
aW9uLW9yZGVyLXNpYmxpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItc2libGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTJlZGIxMDU0YTg3ZjJk
MWI4Y2I5YjgyMzY0ODBiYWM5MmJkMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNpYmxpbmcuanMKQEAgLTAs
MCArMSw3IEBACitpbXBvcnQgIi4vZXhlY3V0aW9uLW9yZGVyLXNpYmxpbmcvMS5qcyIKK2ltcG9y
dCAiLi9leGVjdXRpb24tb3JkZXItc2libGluZy8yLmpzIgoraW1wb3J0ICIuL2V4ZWN1dGlvbi1v
cmRlci1zaWJsaW5nLzMuanMiCisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlz
IikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSAzKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXNpYmxpbmcvMS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzEuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGIxYzNjYzVkMGQ2M2MwYzI5MGUzYmU2OTVmMWRkZTZmMTNiNzNhMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1
dGlvbi1vcmRlci1zaWJsaW5nLzEuanMKQEAgLTAsMCArMSw0IEBACit2YXIgZ2xvYmFsID0gKEZ1
bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKHR5cGVvZiBnbG9iYWwuY291bnQgIT09ICd1
bmRlZmluZWQnKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50
fWApOworZ2xvYmFsLmNvdW50ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzIuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItc2libGluZy8yLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRlY2U2NjE5NjQ2NjQ0NTFkZDNhODgzYjA5NTc1YmEzYTEwNzlkNmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItc2libGluZy8yLmpzCkBAIC0wLDAgKzEsNCBAQAordmFyIGdsb2JhbCA9IChGdW5j
dGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmIChnbG9iYWwuY291bnQgIT09IDEpCisgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgdmFsdWUgJHtnbG9iYWwuY291bnR9YCk7CitnbG9iYWwuY291bnQg
PSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLXNpYmxpbmcvMy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9t
b2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUwMGM1YjRl
MTJmYzUyNjVmMjE2Y2E0ZGFjYjRiZjQyZjJiZWE5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci1zaWJsaW5nLzMu
anMKQEAgLTAsMCArMSw0IEBACit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIp
KSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gMikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10
cmVlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRhOGFlNTkwYWYyNWFlYmZkMThkNTM0M2NlOWQ0MzhmMjg0ZjFh
NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItdHJlZS5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCAiLi9leGVj
dXRpb24tb3JkZXItdHJlZS81LmpzIgoraW1wb3J0ICIuL2V4ZWN1dGlvbi1vcmRlci10cmVlLzcu
anMiCitpbXBvcnQgIi4vZXhlY3V0aW9uLW9yZGVyLXRyZWUvMTEuanMiCisKK3ZhciBnbG9iYWwg
PSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSAxMSkK
KyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRl
ci10cmVlLzEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRp
b24tb3JkZXItdHJlZS8xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMWMzY2M1ZDBkNjNjMGMyOTBlM2JlNjk1
ZjFkZGU2ZjEzYjczYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xLmpzCkBAIC0wLDAgKzEsNCBAQAor
dmFyIGdsb2JhbCA9IChGdW5jdGlvbigicmV0dXJuIHRoaXMiKSkoKTsKK2lmICh0eXBlb2YgZ2xv
YmFsLmNvdW50ICE9PSAndW5kZWZpbmVkJykKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1
ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xMC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10
cmVlLzEwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NmMzMjRkN2IxZWE4YmNlMjZmYzdmYTUwNDRmMTBiOTky
MzAzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xMC5qcwpAQCAtMCwwICsxLDQgQEAKK3ZhciBnbG9i
YWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSA5
KQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xv
YmFsLmNvdW50ID0gMTA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8xMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzExLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0
YmIyNTMzZjI1ZTYwN2E0OTkwZTg5NWEzNGVhZDMxZTlkM2U4ZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJl
ZS8xMS5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCAiLi85LmpzIjsKK2ltcG9ydCAiLi8xMC5q
cyI7CisKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xv
YmFsLmNvdW50ICE9PSAxMCkKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2Jh
bC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDExOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvMi5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2Y1M2JkODUwNzYzOTI5MGI2NGI2YWQzMjYxNTJlYzE5MzQ0NDgwNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1
dGlvbi1vcmRlci10cmVlLzIuanMKQEAgLTAsMCArMSw2IEBACitpbXBvcnQgIi4vMS5qcyI7CisK
K3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNv
dW50ICE9PSAxKQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50
fWApOworZ2xvYmFsLmNvdW50ID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzMuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS8zLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUwNzljNjEyYWNhODU4Yzc1YTZhOGM0MjJjYzIwMmYwZDQ0NDNmMjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3Jk
ZXItdHJlZS8zLmpzCkBAIC0wLDAgKzEsNyBAQAoraW1wb3J0ICIuLzEuanMiOworaW1wb3J0ICIu
LzIuanMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYg
KGdsb2JhbC5jb3VudCAhPT0gMikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2ds
b2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS80LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvNC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNzZiZWNiNjA1OWJmMDA3YmU1Mjc5NmQwM2U0MTJiZDcxMDFlNjMzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhl
Y3V0aW9uLW9yZGVyLXRyZWUvNC5qcwpAQCAtMCwwICsxLDQgQEAKK3ZhciBnbG9iYWwgPSAoRnVu
Y3Rpb24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSAzKQorICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50
ID0gNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4
ZWN1dGlvbi1vcmRlci10cmVlLzUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS81LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExZGVlZjkyZDEyZjVh
YmM2ODZhMzE4YzJiYWE0OThiZjY0ODFlOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS81LmpzCkBAIC0w
LDAgKzEsNyBAQAoraW1wb3J0ICIzLmpzIgoraW1wb3J0ICI0LmpzIgorCit2YXIgZ2xvYmFsID0g
KEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gNCkKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5j
b3VudCA9IDU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItdHJlZS82LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvNi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMThkNDc0YzFh
NjAwN2Q4MjYwNDg0ODk2ZGNiMDM1Mzc2Njk5NzdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvNi5qcwpA
QCAtMCwwICsxLDQgQEAKK3ZhciBnbG9iYWwgPSAoRnVuY3Rpb24oInJldHVybiB0aGlzIikpKCk7
CitpZiAoZ2xvYmFsLmNvdW50ICE9PSA1KQorICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVl
ICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0gNjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1dGlvbi1vcmRlci10cmVlLzcuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJl
ZS83LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiOGU5YTA2M2Y0ZTk0YWM2ZDg2ZDA4ZWM2ZmEyNDEyYTJjZjhk
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItdHJlZS83LmpzCkBAIC0wLDAgKzEsNiBAQAoraW1wb3J0ICIuLzYu
anMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKSgpOworaWYgKGds
b2JhbC5jb3VudCAhPT0gNikKKyAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZSAke2dsb2Jh
bC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS84LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0aW9uLW9yZGVyLXRyZWUvOC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40N2M2ZjQ3MDMyNjNjNjczODczN2NhMDFlNjg1MmIyNmYwNjNkZWY2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhlY3V0
aW9uLW9yZGVyLXRyZWUvOC5qcwpAQCAtMCwwICsxLDQgQEAKK3ZhciBnbG9iYWwgPSAoRnVuY3Rp
b24oInJldHVybiB0aGlzIikpKCk7CitpZiAoZ2xvYmFsLmNvdW50ICE9PSA3KQorICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIHZhbHVlICR7Z2xvYmFsLmNvdW50fWApOworZ2xvYmFsLmNvdW50ID0g
ODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4ZWN1
dGlvbi1vcmRlci10cmVlLzkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leGVjdXRpb24tb3JkZXItdHJlZS85LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzMmU0MjVhMjJmODkyNTRl
YzIxODhiNDMwMDEyODQwOTAwNjMzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leGVjdXRpb24tb3JkZXItdHJlZS85LmpzCkBAIC0wLDAg
KzEsNiBAQAoraW1wb3J0ICIuLzguanMiOworCit2YXIgZ2xvYmFsID0gKEZ1bmN0aW9uKCJyZXR1
cm4gdGhpcyIpKSgpOworaWYgKGdsb2JhbC5jb3VudCAhPT0gOCkKKyAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCB2YWx1ZSAke2dsb2JhbC5jb3VudH1gKTsKK2dsb2JhbC5jb3VudCA9IDk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBvcnQtY29uZmxp
Y3Qtb2suanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBvcnQtY29u
ZmxpY3Qtb2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzllNjk2NWViNWQ3MTcyNGI5MzBjOTc4OTMwYWIyNzM0
MDYzMmY0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9t
b2R1bGVzL2V4cG9ydC1jb25mbGljdC1vay5qcwpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCB7IEEs
IEIgfSBmcm9tICIuL2V4cG9ydC1jb25mbGljdC1vay9tYWluLmpzIiAgLy8gQyBpcyBjb25mbGlj
dCwgYnV0IG5vdCBsb29rZWQgdXAuCitpbXBvcnQgeyBzaG91bGRCZSB9IGZyb20gIi4vcmVzb3Vy
Y2VzL2Fzc2VydC5qcyI7CisKK3Nob3VsZEJlKEEsIDQyKTsKK3Nob3VsZEJlKEIsIDUwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4cG9ydC1jb25m
bGljdC1vay9BLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhwb3J0
LWNvbmZsaWN0LW9rL0EuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE4NGQ2NDNiMDU0ZWMxOTcwNDQ0N2YzY2Fl
OWY2M2E0NmY1ZmJlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9tb2R1bGVzL2V4cG9ydC1jb25mbGljdC1vay9BLmpzCkBAIC0wLDAgKzEsMiBAQAorZXhw
b3J0IGNvbnN0IEEgPSA0MjsKK2V4cG9ydCBjb25zdCBDID0gNTA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBvcnQtY29uZmxpY3Qtb2svQi5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2V4cG9ydC1jb25mbGljdC1vay9C
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYxYTY1ZDc4M2YwYjZmY2FjMTgyOGVkYmI3MTQzYjRjZjk3MjU5NTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9l
eHBvcnQtY29uZmxpY3Qtb2svQi5qcwpAQCAtMCwwICsxLDIgQEAKK2V4cG9ydCBjb25zdCBCID0g
NTA7CitleHBvcnQgY29uc3QgQyA9IDUwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvZXhwb3J0LWNvbmZsaWN0LW9rL21haW4uanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBvcnQtY29uZmxpY3Qtb2svbWFpbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NmM2ZjFmMTY0Mjc0MjZmMGMxZTQ3Y2NjNzkzYmQ4MTkyMjM1ODkzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhwb3J0LWNv
bmZsaWN0LW9rL21haW4uanMKQEAgLTAsMCArMSwyIEBACitleHBvcnQgKiBmcm9tICIuL0EuanMi
CitleHBvcnQgKiBmcm9tICIuL0IuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJlZm9yZS1t
b2R1bGUtaXMtZXhlY3V0ZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJlZm9yZS1tb2R1bGUtaXMtZXhlY3V0
ZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjMyODA0M2JjMmIzY2U1OTQ1N2I0YTg5Njc5YTE3N2M4ZDVjOWEz
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVz
L2V4cG9ydGVkLWZ1bmN0aW9uLW1heS1iZS1jYWxsZWQtYmVmb3JlLW1vZHVsZS1pcy1leGVjdXRl
ZC5qcwpAQCAtMCwwICsxIEBACitpbXBvcnQgIi4vZXhwb3J0ZWQtZnVuY3Rpb24tbWF5LWJlLWNh
bGxlZC1iZWZvcmUtbW9kdWxlLWlzLWV4ZWN1dGVkLzIuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2Fs
bGVkLWJlZm9yZS1tb2R1bGUtaXMtZXhlY3V0ZWQvMS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL2V4cG9ydGVkLWZ1bmN0aW9uLW1heS1iZS1jYWxsZWQtYmVmb3JlLW1v
ZHVsZS1pcy1leGVjdXRlZC8xLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNGI5NDI3ZjUxOGRlMmVlNzQ0MmJm
Y2NjNzVhZWI0NTY2ZWQyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1tYXktYmUtY2FsbGVkLWJlZm9yZS1t
b2R1bGUtaXMtZXhlY3V0ZWQvMS5qcwpAQCAtMCwwICsxLDE1IEBACitpbXBvcnQgeyBhZGQsIHJh
aXNlIH0gZnJvbSAiLi8yLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUsIHNob3VsZFRocm93IH0gZnJv
bSAiLi4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7CisKK3Nob3VsZEJlKHR5cGVvZiBhZGQsICdmdW5j
dGlvbicpOworc2hvdWxkQmUodHlwZW9mIHJhaXNlLCAnZnVuY3Rpb24nKTsKKworc2hvdWxkQmUo
YWRkKDEwLCAzMiksIDQyKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIC8vIGFkZCwgYW5k
IHJhaXNlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIGNhbiBiZSB1c2VkLgorICAgIC8vIEJ1
dCBtb2R1bGUgIjIiJ3MgYm9keSBpcyBub3QgZXhlY3V0ZWQgeWV0ISEhIQorICAgIC8vIHJhaXNl
IGZ1bmN0aW9uIHRvdWNoZXMgdGhlIGxleGljYWwgdmFyaWFibGUgaW4gdGhlIG1vZHVsZSAiMiIs
IHNvIFREWgorICAgIC8vIGVycm9yIHNob3VsZCBiZSByYWlzZWQuCisgICAgcmFpc2UoKTsKK30s
IGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhwb3J0
ZWQtZnVuY3Rpb24tbWF5LWJlLWNhbGxlZC1iZWZvcmUtbW9kdWxlLWlzLWV4ZWN1dGVkLzIuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9leHBvcnRlZC1mdW5jdGlvbi1t
YXktYmUtY2FsbGVkLWJlZm9yZS1tb2R1bGUtaXMtZXhlY3V0ZWQvMi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YWU1YzJiNjRlMDk1YWM4N2VmNTlmNjBhODJjZTNjYjQyMzMzZmViCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvZXhwb3J0ZWQtZnVuY3Rpb24t
bWF5LWJlLWNhbGxlZC1iZWZvcmUtbW9kdWxlLWlzLWV4ZWN1dGVkLzIuanMKQEAgLTAsMCArMSwx
MyBAQAoraW1wb3J0ICIuLzEuanMiCisKK2xldCB2YWx1ZSA9IDQyOworCitleHBvcnQgZnVuY3Rp
b24gYWRkKGEsIGIpCit7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitleHBvcnQgZnVuY3Rpb24g
cmFpc2UoKQoreworICAgIHJldHVybiB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjM3NDcy
Y2NmOTAwODAzNmM5ZWM2OWNlZmEwNTI1M2Q4MjdmMDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9yLmpzCkBAIC0wLDAg
KzEsMTMgQEAKK2ltcG9ydCB7IHNob3VsZEJlLCBzaG91bGRUaHJvdyB9IGZyb20gIi4vcmVzb3Vy
Y2VzL2Fzc2VydC5qcyIKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxvYWRNb2R1bGUoJy4v
aW1wb3J0LWVycm9yL2ltcG9ydC1ub3QtZm91bmQuanMnKTsKK30sIGBTeW50YXhFcnJvcjogSW1w
b3J0aW5nIGJpbmRpbmcgbmFtZSAnQicgaXMgbm90IGZvdW5kLmApOworCitzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgbG9hZE1vZHVsZSgnLi9pbXBvcnQtZXJyb3IvaW1wb3J0LWFtYmlndW91cy5q
cycpOworfSwgYFN5bnRheEVycm9yOiBJbXBvcnRpbmcgYmluZGluZyBuYW1lICdCJyBjYW5ub3Qg
YmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy5gKTsKKworc2hv
dWxkVGhyb3coKCkgPT4geworICAgIGxvYWRNb2R1bGUoJy4vaW1wb3J0LWVycm9yL2ltcG9ydC1k
ZWZhdWx0LWZyb20tc3Rhci5qcycpOworfSwgYFN5bnRheEVycm9yOiBJbXBvcnRpbmcgYmluZGlu
ZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmll
cy5gKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2lt
cG9ydC1lcnJvci9leHBvcnQtYW1iaWd1b3VzLTEuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW9kdWxlcy9pbXBvcnQtZXJyb3IvZXhwb3J0LWFtYmlndW91cy0xLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ4ZDdmOWEyYzJkZmViNjY2ZTE1YmVhMmE4NjgwODA1MGM3N2Q1ZjUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnQtZXJyb3Iv
ZXhwb3J0LWFtYmlndW91cy0xLmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9ydCBjb25zdCBCID0gNDI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnQt
ZXJyb3IvZXhwb3J0LWFtYmlndW91cy0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vZHVsZXMvaW1wb3J0LWVycm9yL2V4cG9ydC1hbWJpZ3VvdXMtMi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
YWUxZDE3NjdmZjJmZGVmZTRhNzYxNmM2ZWQ0MmY3N2RhYTAzZmI5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9yL2V4cG9y
dC1hbWJpZ3VvdXMtMi5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgY29uc3QgQiA9IDUwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9y
L2V4cG9ydC1hbWJpZ3VvdXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9pbXBvcnQtZXJyb3IvZXhwb3J0LWFtYmlndW91cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWMxMjBkYmMx
YWUyYTNmYmM2MmJlOWI5OWE3Yzc3OWQ1MDM3MTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9yL2V4cG9ydC1hbWJpZ3Vv
dXMuanMKQEAgLTAsMCArMSw0IEBACitleHBvcnQgY29uc3QgQSA9IDQyOworCitleHBvcnQgKiBm
cm9tICIuL2V4cG9ydC1hbWJpZ3VvdXMtMS5qcyIKK2V4cG9ydCAqIGZyb20gIi4vZXhwb3J0LWFt
YmlndW91cy0yLmpzIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21v
ZHVsZXMvaW1wb3J0LWVycm9yL2V4cG9ydC1kZWZhdWx0LWZyb20tc3Rhci0yLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9yL2V4cG9ydC1kZWZhdWx0
LWZyb20tc3Rhci0yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNTcwOWFkYzZkNWM1NWEzNjRkM2MxYTRjYjQ2
MTgxM2Q4NGU1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9pbXBvcnQtZXJyb3IvZXhwb3J0LWRlZmF1bHQtZnJvbS1zdGFyLTIuanMKQEAg
LTAsMCArMSwyIEBACitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2NvYSgpIHsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci9l
eHBvcnQtZGVmYXVsdC1mcm9tLXN0YXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9pbXBvcnQtZXJyb3IvZXhwb3J0LWRlZmF1bHQtZnJvbS1zdGFyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRmODZlYmNlMGIyMjVkMTlkMTE2YjRhZTA3Yzk2NGUwZjM1MmJiZGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnQtZXJyb3Iv
ZXhwb3J0LWRlZmF1bHQtZnJvbS1zdGFyLmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9ydCAqIGZyb20g
Ii4vZXhwb3J0LWRlZmF1bHQtZnJvbS1zdGFyLTIuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnQtZXJyb3IvZXhwb3J0LW5vdC1mb3VuZC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci9leHBv
cnQtbm90LWZvdW5kLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MDg2NmFiNDZmYWQ0MTE3N2I2MzQ3ZjBlYjhk
YjE5MDc4M2Q1MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9pbXBvcnQtZXJyb3IvZXhwb3J0LW5vdC1mb3VuZC5qcwpAQCAtMCwwICsxLDIg
QEAKKworZXhwb3J0IGNvbnN0IEEgPSAyMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci9pbXBvcnQtYW1iaWd1b3VzLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9yL2ltcG9ydC1hbWJp
Z3VvdXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ2YzU4NDE1Mjk5N2QzNjU5Zjc4ZGU4Y2I5MWM4ZTkwYjA4
ZDg4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1
bGVzL2ltcG9ydC1lcnJvci9pbXBvcnQtYW1iaWd1b3VzLmpzCkBAIC0wLDAgKzEgQEAKK2ltcG9y
dCB7IEEsIEIgfSBmcm9tICIuL2V4cG9ydC1hbWJpZ3VvdXMuanMiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnQtZXJyb3IvaW1wb3J0LWRlZmF1
bHQtZnJvbS1zdGFyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1w
b3J0LWVycm9yL2ltcG9ydC1kZWZhdWx0LWZyb20tc3Rhci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2Y5ZTYz
MTMyMDRhMjZlZWVjMTJiYjJjYWJjMDFkYTRhMTM1Y2ZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9yL2ltcG9ydC1kZWZh
dWx0LWZyb20tc3Rhci5qcwpAQCAtMCwwICsxIEBACitpbXBvcnQgQSBmcm9tICIuL2V4cG9ydC1k
ZWZhdWx0LWZyb20tc3Rhci5qcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9tb2R1bGVzL2ltcG9ydC1lcnJvci9pbXBvcnQtbm90LWZvdW5kLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0LWVycm9yL2ltcG9ydC1ub3QtZm91bmQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDQ1NjhkMjUxM2UyY2VlNGNmMTZlMzJlNzJkNGNhMWI5NTk5Y2ZmZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2lt
cG9ydC1lcnJvci9pbXBvcnQtbm90LWZvdW5kLmpzCkBAIC0wLDAgKzEgQEAKK2ltcG9ydCB7IEEs
IEIgfSBmcm9tICIuL2V4cG9ydC1ub3QtZm91bmQuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1hcmUtaW1tdXRhYmxl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0ZWQtYmluZGlu
Z3MtYXJlLWltbXV0YWJsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTE1ZTI5YmU2ZTFhZTljODU4OTkzM2Q5
ODBlYmNiNGQ0YjJkZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvaW1wb3J0ZWQtYmluZGluZ3MtYXJlLWltbXV0YWJsZS5qcwpAQCAtMCww
ICsxLDQzIEBACitpbXBvcnQgeyB2YXJpYWJsZSwgY29uc3RWYXJpYWJsZSwgbGV0VmFyaWFibGUs
IGZ1bmN0aW9uRGVjbGFyYXRpb24sIGNsYXNzRGVjbGFyYXRpb24gfSBmcm9tICIuL2ltcG9ydGVk
LWJpbmRpbmdzLWFyZS1pbW11dGFibGUvYmluZGluZ3MuanMiCitpbXBvcnQgeyBzaG91bGRCZSwg
c2hvdWxkVGhyb3cgfSBmcm9tICIuL3Jlc291cmNlcy9hc3NlcnQuanMiCisKK3Nob3VsZEJlKHZh
cmlhYmxlLCAnQ29jb2EnKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICB2YXJpYWJsZSA9IDQy
OworfSwgYFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0
eS5gKTsKKworc2hvdWxkQmUoY29uc3RWYXJpYWJsZSwgJ0NvY29hJyk7CitzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgY29uc3RWYXJpYWJsZSA9IDQyOworfSwgYFR5cGVFcnJvcjogQXR0ZW1wdGVk
IHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKKworc2hvdWxkQmUobGV0VmFyaWFi
bGUsICdDb2NvYScpOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxldFZhcmlhYmxlID0gNDI7
Cit9LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5
LmApOworCitzaG91bGRCZSh0eXBlb2YgZnVuY3Rpb25EZWNsYXJhdGlvbiwgJ2Z1bmN0aW9uJyk7
CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgZnVuY3Rpb25EZWNsYXJhdGlvbiA9IDQyOworfSwg
YFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsK
Kworc2hvdWxkQmUodHlwZW9mIGNsYXNzRGVjbGFyYXRpb24sICdmdW5jdGlvbicpOworc2hvdWxk
VGhyb3coKCkgPT4geworICAgIGNsYXNzRGVjbGFyYXRpb24gPSA0MjsKK30sIGBUeXBlRXJyb3I6
IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7CisKKworZnVuY3Rp
b24gcmVmZXJlbmNlKHJlYWQpIHsKKyAgICBpZiAocmVhZCkKKyAgICAgICAgcmV0dXJuIGxldFZh
cmlhYmxlOworICAgIGVsc2UKKyAgICAgICAgbGV0VmFyaWFibGUgPSAiQ29jb2EiOworfQorbm9J
bmxpbmUocmVmZXJlbmNlKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAg
IHJlZmVyZW5jZSh0cnVlKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIHJlZmVyZW5jZShm
YWxzZSk7Cit9LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHBy
b3BlcnR5LmApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvaW1wb3J0ZWQtYmluZGluZ3MtYXJlLWltbXV0YWJsZS9iaW5kaW5ncy5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2ltcG9ydGVkLWJpbmRpbmdzLWFyZS1pbW11dGFi
bGUvYmluZGluZ3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ2NDVjZGY5NWRlMTQ3ZGNiZTc5NGVhYWViYzZi
YzM4YjhhZTBmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL2ltcG9ydGVkLWJpbmRpbmdzLWFyZS1pbW11dGFibGUvYmluZGluZ3MuanMKQEAg
LTAsMCArMSwxMSBAQAorZXhwb3J0IHZhciB2YXJpYWJsZSA9ICdDb2NvYSc7CisKK2V4cG9ydCBj
b25zdCBjb25zdFZhcmlhYmxlID0gJ0NvY29hJzsKKworZXhwb3J0IGxldCBsZXRWYXJpYWJsZSA9
ICdDb2NvYSc7CisKK2V4cG9ydCBmdW5jdGlvbiBmdW5jdGlvbkRlY2xhcmF0aW9uKCkgeworfQor
CitleHBvcnQgY2xhc3MgY2xhc3NEZWNsYXJhdGlvbiB7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1jYW4tYmUtY2hh
bmdlZC1pbi1vcmlnaW5hbC1tb2R1bGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1jYW4tYmUtY2hhbmdlZC1pbi1vcmlnaW5hbC1tb2R1
bGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWI4YjZjNDg0NDdkMjZhNDllODlhYTdiMDg1NTExYjM5ZGJmYWEy
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVz
L2ltcG9ydGVkLWJpbmRpbmdzLWNhbi1iZS1jaGFuZ2VkLWluLW9yaWdpbmFsLW1vZHVsZS5qcwpA
QCAtMCwwICsxLDE3IEBACitpbXBvcnQgeworICAgIENvY29hLAorICAgIENhcHB1Y2Npbm8sCisg
ICAgTWF0Y2hhLAorICAgIE1vZGlmaWVyCit9IGZyb20gIi4vaW1wb3J0ZWQtYmluZGluZ3MtY2Fu
LWJlLWNoYW5nZWQtaW4tb3JpZ2luYWwtbW9kdWxlL2JpbmRpbmdzLmpzIgoraW1wb3J0IHsgc2hv
dWxkQmUsIHNob3VsZFRocm93IH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIgorCitzaG91
bGRCZShDb2NvYSwgIkNvY29hIik7CitzaG91bGRCZShDYXBwdWNjaW5vLCAiQ2FwcHVjY2lubyIp
Oworc2hvdWxkQmUoTWF0Y2hhLCAiTWF0Y2hhIik7CisKK01vZGlmaWVyLmNoYW5nZSgiQ29jb2Ei
KTsKKworc2hvdWxkQmUoQ29jb2EsICJDb2NvYSIpOworc2hvdWxkQmUoQ2FwcHVjY2lubywgIkNv
Y29hIik7CitzaG91bGRCZShNYXRjaGEsICJDb2NvYSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW1wb3J0ZWQtYmluZGluZ3MtY2FuLWJlLWNoYW5n
ZWQtaW4tb3JpZ2luYWwtbW9kdWxlL2JpbmRpbmdzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvaW1wb3J0ZWQtYmluZGluZ3MtY2FuLWJlLWNoYW5nZWQtaW4tb3JpZ2lu
YWwtbW9kdWxlL2JpbmRpbmdzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyNDI4OGNjM2M3ZTZjZDk0YzY3YmUy
OWQzOWQzNThmMzY1OWQ3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9pbXBvcnRlZC1iaW5kaW5ncy1jYW4tYmUtY2hhbmdlZC1pbi1vcmln
aW5hbC1tb2R1bGUvYmluZGluZ3MuanMKQEAgLTAsMCArMSwxNiBAQAorbGV0IENvY29hID0gIkNv
Y29hIiwgQ2FwcHVjY2lubyA9ICJDYXBwdWNjaW5vIiwgTWF0Y2hhID0gIk1hdGNoYSI7CisKK2V4
cG9ydCBsZXQgTW9kaWZpZXIgPSB7CisgICAgY2hhbmdlKHZhbHVlKQorICAgIHsKKyAgICAgICAg
Q29jb2EgPSB2YWx1ZTsKKyAgICAgICAgQ2FwcHVjY2lubyA9IHZhbHVlOworICAgICAgICBNYXRj
aGEgPSB2YWx1ZTsKKyAgICB9Cit9OworCitleHBvcnQgeworICAgIENvY29hLAorICAgIENhcHB1
Y2Npbm8sCisgICAgTWF0Y2hhCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEzY2ZjNzdkNGY3MmVjMzM2MTgzNTQ5NTY1OTA5ZjJhZWQxNTc4ODcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1leHBvcnQt
ZXJyb3IuanMKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IHsgc2hvdWxkQmUsIHNob3VsZFRocm93
IH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIgorCitzaG91bGRUaHJvdygoKSA9PiB7Cisg
ICAgbG9hZE1vZHVsZSgnLi9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LW5v
dC1mb3VuZC5qcycpOworfSwgYFN5bnRheEVycm9yOiBJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRp
bmcgbmFtZSAnQicgaXMgbm90IGZvdW5kLmApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
bG9hZE1vZHVsZSgnLi9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LWFtYmln
dW91cy5qcycpOworfSwgYFN5bnRheEVycm9yOiBJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcg
bmFtZSAnQicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmlu
ZGluZ3MuYCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBsb2FkTW9kdWxlKCcuL2luZGly
ZWN0LWV4cG9ydC1lcnJvci9pbmRpcmVjdC1leHBvcnQtZGVmYXVsdC5qcycpOworfSwgYFN5bnRh
eEVycm9yOiBJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90
IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuYCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5k
aXJlY3QtZXhwb3J0LWFtYmlndW91cy0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGlyZWN0LWV4cG9ydC1hbWJpZ3VvdXMt
Mi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNjM5MDU3MWMxMTc2ZjQ0NTZmZGRlOGVjOGM4YmM1MjllYjU2MWRl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMv
aW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGlyZWN0LWV4cG9ydC1hbWJpZ3VvdXMtMi5qcwpAQCAt
MCwwICsxLDIgQEAKK2V4cG9ydCAqIGZyb20gIi4vaW5kaXJlY3QtZXhwb3J0LWFtYmlndW91cy0z
LmpzIgorZXhwb3J0ICogZnJvbSAiLi9pbmRpcmVjdC1leHBvcnQtYW1iaWd1b3VzLTQuanMiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1l
eHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LWFtYmlndW91cy0zLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGlyZWN0LWV4
cG9ydC1hbWJpZ3VvdXMtMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzQ0NWE0YjMxNWJmMmNlYTAyYTg5NmRm
NjQxMjcyMzEzZWY1MjZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGlyZWN0LWV4cG9ydC1hbWJp
Z3VvdXMtMy5qcwpAQCAtMCwwICsxLDIgQEAKK2V4cG9ydCBjb25zdCBBID0gNDI7CitleHBvcnQg
Y29uc3QgQiA9IDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LWFtYmlndW91cy00Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVy
cm9yL2luZGlyZWN0LWV4cG9ydC1hbWJpZ3VvdXMtNC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjIyNzIyYTM1
NDdlNDViYTJlYjFkNjlmOGFiMzhiODkwZDljNDkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGly
ZWN0LWV4cG9ydC1hbWJpZ3VvdXMtNC5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgY29uc3QgQiA9
IDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbmRp
cmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LWFtYmlndW91cy5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2luZGlyZWN0LWV4cG9ydC1lcnJvci9pbmRpcmVj
dC1leHBvcnQtYW1iaWd1b3VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNjI2ZDkxNGM1MTBlYmM1NmMwNTI5
OWFlNmJiYTExYTE4MGE1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LWFt
YmlndW91cy5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgeyBBLCBCIH0gZnJvbSAiLi9pbmRpcmVj
dC1leHBvcnQtYW1iaWd1b3VzLTIuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LWRl
ZmF1bHQtMi5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2luZGlyZWN0
LWV4cG9ydC1lcnJvci9pbmRpcmVjdC1leHBvcnQtZGVmYXVsdC0yLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
NzdiMTQzOTQ1MGNkMmFmMzJjZTI5ZGI2ZjdjNzdmZWQwYzY1ZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1leHBvcnQtZXJy
b3IvaW5kaXJlY3QtZXhwb3J0LWRlZmF1bHQtMi5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgKiBm
cm9tICJpbmRpcmVjdC1leHBvcnQtZGVmYXVsdC0zLmpzIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGlyZWN0
LWV4cG9ydC1kZWZhdWx0LTMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LWRlZmF1bHQtMy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMzU3MDlhZGM2ZDVjNTVhMzY0ZDNjMWE0Y2I0NjE4MTNkODRlNWQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3Qt
ZXhwb3J0LWVycm9yL2luZGlyZWN0LWV4cG9ydC1kZWZhdWx0LTMuanMKQEAgLTAsMCArMSwyIEBA
CitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2NvYSgpIHsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL2luZGlyZWN0LWV4cG9ydC1lcnJvci9pbmRp
cmVjdC1leHBvcnQtZGVmYXVsdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1
bGVzL2luZGlyZWN0LWV4cG9ydC1lcnJvci9pbmRpcmVjdC1leHBvcnQtZGVmYXVsdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZGUxNDI1NGE3OTQ5MDQ1ZTk3MDQ3NGE4NDllYWJkNmU5MDJjNmI1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3Qt
ZXhwb3J0LWVycm9yL2luZGlyZWN0LWV4cG9ydC1kZWZhdWx0LmpzCkBAIC0wLDAgKzEsMiBAQAor
aW1wb3J0IEEgZnJvbSAiLi9pbmRpcmVjdC1leHBvcnQtZGVmYXVsdC0yLmpzIgorZXhwb3J0IHsg
QSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9pbmRp
cmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0LW5vdC1mb3VuZC0yLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGly
ZWN0LWV4cG9ydC1ub3QtZm91bmQtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2M2NjVmZWU5OTUyMWY3Njlk
ZTdiNmI5MDVjZWQ1YzU0ZGE1MTk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGlyZWN0LWV4cG9y
dC1ub3QtZm91bmQtMi5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgY29uc3QgQSA9IDQyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvaW5kaXJlY3QtZXhw
b3J0LWVycm9yL2luZGlyZWN0LWV4cG9ydC1ub3QtZm91bmQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvbW9kdWxlcy9pbmRpcmVjdC1leHBvcnQtZXJyb3IvaW5kaXJlY3QtZXhwb3J0
LW5vdC1mb3VuZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGQ0ODc5ZTE0YTgyMzQ0OGFmMDI2NjczYTA0NjI5
OWRlYjUwZGZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vZHVsZXMvaW5kaXJlY3QtZXhwb3J0LWVycm9yL2luZGlyZWN0LWV4cG9ydC1ub3QtZm91bmQu
anMKQEAgLTAsMCArMSBAQAorZXhwb3J0IHsgQSwgQiB9IGZyb20gIi4vaW5kaXJlY3QtZXhwb3J0
LW5vdC1mb3VuZC0yLmpzIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL21vZHVsZS1pcy1zdHJpY3QtY29kZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9tb2R1bGVzL21vZHVsZS1pcy1zdHJpY3QtY29kZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2Mz
YjMzZTcyMzM0NmFmNzJmNTk1OGRlY2IwZDgxMzczNzk5ZjQxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbW9kdWxlLWlzLXN0cmljdC1jb2Rl
LmpzCkBAIC0wLDAgKzEsMTkgQEAKK2ltcG9ydCB7IHNob3VsZFRocm93LCBzaG91bGRCZSB9IGZy
b20gIi4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7CisKKy8vIE1vZHVsZSBjb2RlIGlzIGFsd2F5cyBz
dHJpY3QgY29kZS4KK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBldmFsKCJ3aXRoKHZhbHVlKSB7
IH0iKTsKK30sIGBTeW50YXhFcnJvcjogJ3dpdGgnIHN0YXRlbWVudHMgYXJlIG5vdCB2YWxpZCBp
biBzdHJpY3QgbW9kZS5gKTsKKworLy8gV2hlbiBjYWxsaW5nIHRoZSBpbmRpcmVjdCBldmFsIC8g
RnVuY3Rpb24gY29uc3RydWN0b3IsIGl0cyBzY29wZSBpcyBub3QgdGhlIG1vZHVsZSBzY29wZS4K
K3ZhciBtb2R1bGVWYXJpYWJsZSA9IDQyOworCitzaG91bGRCZShldmFsKCJtb2R1bGVWYXJpYWJs
ZSIpLCA0Mik7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICAoMCwgZXZhbCkoIm1vZHVsZVZh
cmlhYmxlIik7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IG1vZHVs
ZVZhcmlhYmxlYCk7CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICAoRnVuY3Rpb24oIm1vZHVs
ZVZhcmlhYmxlIikpKCk7Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IG1vZHVsZVZhcmlhYmxlYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvbW9kdWxlcy9uYW1lc3BhY2UtYW1iaWd1b3VzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWFtYmlndW91cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDk2Y2Qy
OTIyNDkyNTVhY2YzMDE3MjFkNzc0NjU5N2MzYTRjZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWFtYmlndW91cy5qcwpA
QCAtMCwwICsxLDYgQEAKK2ltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICIuL25hbWVzcGFjZS1h
bWJpZ3VvdXMvYW1iaWd1b3VzLmpzIgoraW1wb3J0IHsgc2hvdWxkQmUsIHNob3VsZFRocm93IH0g
ZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIgorCisvLyBBbWJpZ3VvdXMgbmFtZSBpcyBvbWl0
dGVkIGZyb20gdGhlIG5hbWVzcGFjZS4KK3Nob3VsZEJlKG5hbWVzcGFjZS5Db2NvYSwgdW5kZWZp
bmVkKTsKK3Nob3VsZEJlKCdDb2NvYScgaW4gbmFtZXNwYWNlLCBmYWxzZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtYW1iaWd1b3Vz
L2FtYmlndW91cy0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFt
ZXNwYWNlLWFtYmlndW91cy9hbWJpZ3VvdXMtMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODA5M2Q0NjZkMGM4
YTVkODkyODA4MjEyOWVlOTRmZWZmYzEyZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWFtYmlndW91cy9hbWJpZ3VvdXMt
Mi5qcwpAQCAtMCwwICsxLDIgQEAKK2V4cG9ydCAqIGZyb20gImFtYmlndW91cy0zLmpzIgorZXhw
b3J0ICogZnJvbSAiYW1iaWd1b3VzLTQuanMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtYW1iaWd1b3VzL2FtYmlndW91cy0zLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWFtYmlndW91cy9h
bWJpZ3VvdXMtMy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzY1MTY0MTczM2ZmNTAxYTFiNGVmYjY5YmM0N2Ri
MmIxY2I4NzFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vZHVsZXMvbmFtZXNwYWNlLWFtYmlndW91cy9hbWJpZ3VvdXMtMy5qcwpAQCAtMCwwICsxIEBA
CitleHBvcnQgY29uc3QgQ29jb2EgPSA0MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1hbWJpZ3VvdXMvYW1iaWd1b3VzLTQuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtYW1iaWd1b3VzL2Ft
YmlndW91cy00LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NjUxNjQxNzMzZmY1MDFhMWI0ZWZiNjliYzQ3ZGIy
YjFjYjg3MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW9kdWxlcy9uYW1lc3BhY2UtYW1iaWd1b3VzL2FtYmlndW91cy00LmpzCkBAIC0wLDAgKzEgQEAK
K2V4cG9ydCBjb25zdCBDb2NvYSA9IDQyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWFtYmlndW91cy9hbWJpZ3VvdXMuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtYW1iaWd1b3VzL2FtYmln
dW91cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMjg5MmViOWY3YzQyOTc5NTQ0NTVlNDFhZDQwODI5ZjgxMDdm
MjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvbmFtZXNwYWNlLWFtYmlndW91cy9hbWJpZ3VvdXMuanMKQEAgLTAsMCArMSBAQAoraW1wb3J0
ICogYXMgbmFtZXNwYWNlIGZyb20gImFtYmlndW91cy0yLmpzIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWVycm9yLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWVycm9yLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU0NzgxN2E3YjA3NWY5NmU5N2I2OGVjN2U0ZGFjOGY4YWUwOGRlOGEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJy
b3IuanMKQEAgLTAsMCArMSw1IEBACitpbXBvcnQgeyBzaG91bGRUaHJvdyB9IGZyb20gIi4vcmVz
b3VyY2VzL2Fzc2VydC5qcyIKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIGxvYWRNb2R1bGUo
Jy4vbmFtZXNwYWNlLWVycm9yL25hbWVzcGFjZS1sb2NhbC1lcnJvci1zaG91bGQtaGlkZS1nbG9i
YWwtYW1iaWd1aXR5LmpzJyk7Cit9LCBgU3ludGF4RXJyb3I6IEluZGlyZWN0bHkgZXhwb3J0ZWQg
YmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQg
ZW50cmllcy5gKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1
bGVzL25hbWVzcGFjZS1lcnJvci9uYW1lc3BhY2UtbG9jYWwtZXJyb3Itc2hvdWxkLWhpZGUtZ2xv
YmFsLWFtYmlndWl0eS0yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMv
bmFtZXNwYWNlLWVycm9yL25hbWVzcGFjZS1sb2NhbC1lcnJvci1zaG91bGQtaGlkZS1nbG9iYWwt
YW1iaWd1aXR5LTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQzYTQ3YTdkOTM1NTU1OWE5MDczMzgxZGEzOTJm
YjU0NTExZmNjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb2R1bGVzL25hbWVzcGFjZS1lcnJvci9uYW1lc3BhY2UtbG9jYWwtZXJyb3Itc2hvdWxkLWhp
ZGUtZ2xvYmFsLWFtYmlndWl0eS0yLmpzCkBAIC0wLDAgKzEsMyBAQAorZXhwb3J0ICogZnJvbSAi
Li9uYW1lc3BhY2UtbG9jYWwtZXJyb3Itc2hvdWxkLWhpZGUtZ2xvYmFsLWFtYmlndWl0eS0zLmpz
IgorZXhwb3J0ICogZnJvbSAiLi9uYW1lc3BhY2UtbG9jYWwtZXJyb3Itc2hvdWxkLWhpZGUtZ2xv
YmFsLWFtYmlndWl0eS00LmpzIgorZXhwb3J0ICogZnJvbSAiLi9uYW1lc3BhY2UtbG9jYWwtZXJy
b3Itc2hvdWxkLWhpZGUtZ2xvYmFsLWFtYmlndWl0eS01LmpzIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWVycm9yL25hbWVzcGFjZS1s
b2NhbC1lcnJvci1zaG91bGQtaGlkZS1nbG9iYWwtYW1iaWd1aXR5LTMuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2Fs
LWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHktMy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzY1
MTY0MTczM2ZmNTAxYTFiNGVmYjY5YmM0N2RiMmIxY2I4NzFiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWVycm9yL25hbWVz
cGFjZS1sb2NhbC1lcnJvci1zaG91bGQtaGlkZS1nbG9iYWwtYW1iaWd1aXR5LTMuanMKQEAgLTAs
MCArMSBAQAorZXhwb3J0IGNvbnN0IENvY29hID0gNDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2Fs
LWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHktNC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1lcnJvci9uYW1lc3BhY2UtbG9jYWwtZXJy
b3Itc2hvdWxkLWhpZGUtZ2xvYmFsLWFtYmlndWl0eS00LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyY2JjY2U5
NTcwZmY5OTBjMDFiYzExMjlhOWE4ZThjOWYxN2MxMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNl
LWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHktNC5qcwpAQCAtMCwwICsx
LDMgQEAKK2V4cG9ydCAqIGZyb20gIi4vbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1oaWRl
LWdsb2JhbC1hbWJpZ3VpdHktNi5qcyIKK2ltcG9ydCBIZWxsbyBmcm9tICIuL25hbWVzcGFjZS1s
b2NhbC1lcnJvci1zaG91bGQtaGlkZS1nbG9iYWwtYW1iaWd1aXR5LTcuanMiCitleHBvcnQgeyBI
ZWxsbyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9u
YW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1h
bWJpZ3VpdHktNS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVz
cGFjZS1lcnJvci9uYW1lc3BhY2UtbG9jYWwtZXJyb3Itc2hvdWxkLWhpZGUtZ2xvYmFsLWFtYmln
dWl0eS01LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3NjUxNjQxNzMzZmY1MDFhMWI0ZWZiNjliYzQ3ZGIyYjFj
Yjg3MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9k
dWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWds
b2JhbC1hbWJpZ3VpdHktNS5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgY29uc3QgQ29jb2EgPSA0
MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVz
cGFjZS1lcnJvci9uYW1lc3BhY2UtbG9jYWwtZXJyb3Itc2hvdWxkLWhpZGUtZ2xvYmFsLWFtYmln
dWl0eS02LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNl
LWVycm9yL25hbWVzcGFjZS1sb2NhbC1lcnJvci1zaG91bGQtaGlkZS1nbG9iYWwtYW1iaWd1aXR5
LTYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzc2NTE2NDE3MzNmZjUwMWExYjRlZmI2OWJjNDdkYjJiMWNiODcx
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVz
L25hbWVzcGFjZS1lcnJvci9uYW1lc3BhY2UtbG9jYWwtZXJyb3Itc2hvdWxkLWhpZGUtZ2xvYmFs
LWFtYmlndWl0eS02LmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9ydCBjb25zdCBDb2NvYSA9IDQyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNl
LWVycm9yL25hbWVzcGFjZS1sb2NhbC1lcnJvci1zaG91bGQtaGlkZS1nbG9iYWwtYW1iaWd1aXR5
LTcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJy
b3IvbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHktNy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMzk1OTdmOWNiMDdjNWQ0OGJlZDE4OTg0ZWM0NzQ3ZjRiNGYzNDM4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFt
ZXNwYWNlLWVycm9yL25hbWVzcGFjZS1sb2NhbC1lcnJvci1zaG91bGQtaGlkZS1nbG9iYWwtYW1i
aWd1aXR5LTcuanMKQEAgLTAsMCArMSwyIEBACisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWVycm9yL25hbWVzcGFjZS1sb2NhbC1l
cnJvci1zaG91bGQtaGlkZS1nbG9iYWwtYW1iaWd1aXR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLWVycm9yL25hbWVzcGFjZS1sb2NhbC1lcnJvci1z
aG91bGQtaGlkZS1nbG9iYWwtYW1iaWd1aXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwZTAwNjM4MzczMTgx
MzhjZmNjNGExZmQyNjVlNjEwODUzN2YwYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UtZXJyb3IvbmFtZXNwYWNlLWxvY2Fs
LWVycm9yLXNob3VsZC1oaWRlLWdsb2JhbC1hbWJpZ3VpdHkuanMKQEAgLTAsMCArMSBAQAoraW1w
b3J0ICogYXMgbmFtZXNwYWNlIGZyb20gIi4vbmFtZXNwYWNlLWxvY2FsLWVycm9yLXNob3VsZC1o
aWRlLWdsb2JhbC1hbWJpZ3VpdHktMi5qcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmYyNDE0NTMyYTkwMmZlYjA3
OTNlNjY1YzgyYmNmODE3OWE0M2IwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLmpzCkBAIC0wLDAgKzEsODEgQEAKK2ltcG9y
dCBjaGFuZ2VDYXBwdWNjaW5vLCAqIGFzIG5hbWVzcGFjZSBmcm9tICIuL25hbWVzcGFjZS9kcmlu
ay5qcyIKK2ltcG9ydCB7IHNob3VsZEJlLCBzaG91bGRUaHJvdyB9IGZyb20gIi4vcmVzb3VyY2Vz
L2Fzc2VydC5qcyI7CisKK3Nob3VsZEJlKHR5cGVvZiBuYW1lc3BhY2UsICdvYmplY3QnKTsKK3No
b3VsZEJlKHR5cGVvZiBjaGFuZ2VDYXBwdWNjaW5vLCAnZnVuY3Rpb24nKTsKK3Nob3VsZEJlKG5h
bWVzcGFjZS5Db2NvYSwgJ0NvY29hJyk7CitzaG91bGRCZShuYW1lc3BhY2UuQ2FwcHVjY2lubywg
J0NhcHB1Y2Npbm8nKTsKK3Nob3VsZEJlKG5hbWVzcGFjZS5NYXRjaGEsICdNYXRjaGEnKTsKK3No
b3VsZEJlKG5hbWVzcGFjZS5Nb2NoYSwgJ01vY2hhJyk7CitzaG91bGRCZShuYW1lc3BhY2UuZGVm
YXVsdCwgY2hhbmdlQ2FwcHVjY2lubyk7CisKK2NoYW5nZUNhcHB1Y2Npbm8oJ0NvY29hJyk7Citz
aG91bGRCZShuYW1lc3BhY2UuQ29jb2EsICdDb2NvYScpOworc2hvdWxkQmUobmFtZXNwYWNlLkNh
cHB1Y2Npbm8sICdDb2NvYScpOworc2hvdWxkQmUobmFtZXNwYWNlLk1hdGNoYSwgJ01hdGNoYScp
Oworc2hvdWxkQmUobmFtZXNwYWNlLk1vY2hhLCAnTW9jaGEnKTsKK3Nob3VsZEJlKG5hbWVzcGFj
ZS5kZWZhdWx0LCBjaGFuZ2VDYXBwdWNjaW5vKTsKKworc2hvdWxkQmUoJ0NvY29hJyBpbiBuYW1l
c3BhY2UsIHRydWUpOworc2hvdWxkQmUoJ0NhcHB1Y2Npbm8nIGluIG5hbWVzcGFjZSwgdHJ1ZSk7
CitzaG91bGRCZSgnTWF0Y2hhJyBpbiBuYW1lc3BhY2UsIHRydWUpOworc2hvdWxkQmUoJ01vY2hh
JyBpbiBuYW1lc3BhY2UsIHRydWUpOworc2hvdWxkQmUoJ2RlZmF1bHQnIGluIG5hbWVzcGFjZSwg
dHJ1ZSk7CitzaG91bGRCZShTeW1ib2wuaXRlcmF0b3IgaW4gbmFtZXNwYWNlLCB0cnVlKTsKK3No
b3VsZEJlKCdUZWEnIGluIG5hbWVzcGFjZSwgZmFsc2UpOworCitzaG91bGRCZShuYW1lc3BhY2Uu
X19wcm90b19fLCB1bmRlZmluZWQpOworc2hvdWxkQmUoUmVmbGVjdC5pc0V4dGVuc2libGUobmFt
ZXNwYWNlKSwgZmFsc2UpOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmFtZXNwYWNlLnZh
bHVlID0gMjA7Cit9LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5
IHByb3BlcnR5LmApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmFtZXNwYWNlWzIwXSA9
IDIwOworfSwgYFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9w
ZXJ0eS5gKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5hbWVzcGFjZVtTeW1ib2wudW5z
Y29wYWJsZXNdID0gMjA7Cit9LCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJl
YWRvbmx5IHByb3BlcnR5LmApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KG5hbWVzcGFjZSwgJ0Nvb2tpZScsIHsKKyAgICAgICAgdmFsdWU6IDQyCisg
ICAgfSk7Cit9LCBgVHlwZUVycm9yOiBBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBv
YmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS5gKTsKKworc2hvdWxkVGhyb3coKCkgPT4gewor
ICAgIG5hbWVzcGFjZS5fX3Byb3RvX18gPSBPYmplY3QucHJvdG90eXBlOworfSwgYFR5cGVFcnJv
cjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKKworc2hvdWxk
QmUoUmVmbGVjdC5zZXRQcm90b3R5cGVPZihuYW1lc3BhY2UsIE9iamVjdC5wcm90b3R5cGUpLCBm
YWxzZSk7CitzaG91bGRCZShuYW1lc3BhY2UuX19wcm90b19fLCB1bmRlZmluZWQpOworc2hvdWxk
QmUoUmVmbGVjdC5nZXRQcm90b3R5cGVPZihuYW1lc3BhY2UpLCBudWxsKTsKKworLy8gVGhlc2Ug
bmFtZXMgc2hvdWxkIGJlIHNob3duIGluIHRoZSBjb2RlIHBvaW50IG9yZGVyLgorc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobmFtZXNwYWNlKSksIGBb
IkNhcHB1Y2Npbm8iLCJDb2NvYSIsIk1hdGNoYSIsIk1vY2hhIiwiZGVmYXVsdCJdYCk7CitzaG91
bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG5hbWVzcGFjZSkubGVuZ3RoLCAxKTsK
K3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobmFtZXNwYWNlKVswXSwgU3lt
Ym9sLml0ZXJhdG9yKTsKKworc2hvdWxkQmUodHlwZW9mIG5hbWVzcGFjZVtTeW1ib2wuaXRlcmF0
b3JdLCAnZnVuY3Rpb24nKTsKK3ZhciBhcnJheSA9IEFycmF5LmZyb20obmFtZXNwYWNlKTsKKy8v
IFRoZXNlIG5hbWVzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgY29kZSBwb2ludCBvcmRlci4KK3No
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGFycmF5KSwgYFsiQ2FwcHVjY2lubyIsIkNvY29hIiwiTWF0
Y2hhIiwiTW9jaGEiLCJkZWZhdWx0Il1gKTsKKworLy8gVGhlIGltcG9ydGVkIGJpbmRpbmcgcHJv
cGVydGllcyBvZiB0aGUgbmFtZXNwYWNlIG9iamVjdCBzZWVuIGFzIHdyaXRhYmxlLCBidXQsIGl0
IGRvZXMgbm90IG1lYW4gdGhhdCBpdCBpcyB3cml0YWJsZSBieSB1c2Vycy4KK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5hbWVzcGFjZSwg
IkNvY29hIikpLCBgeyJ2YWx1ZSI6IkNvY29hIiwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUi
OnRydWUsImNvbmZpZ3VyYWJsZSI6ZmFsc2V9YCk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShS
ZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuYW1lc3BhY2UsICJNYXRjaGEiKSksIGB7
InZhbHVlIjoiTWF0Y2hhIiwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNvbmZp
Z3VyYWJsZSI6ZmFsc2V9YCk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShSZWZsZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihuYW1lc3BhY2UsICJNb2NoYSIpKSwgYHsidmFsdWUiOiJNb2No
YSIsIndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOmZhbHNl
fWApOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIC8vIFRocm93IGFuIGVycm9yIGV2ZW4gaWYg
dGhlIHNhbWUgdmFsdWUuCisgICAgbmFtZXNwYWNlLkNvY29hID0gJ0NvY29hJzsKK30sIGBUeXBl
RXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7CisKKy8v
IEluIHRoZSBjYXNlIG9mIG5vbiBpbXBvcnRlZCBwcm9wZXJ0aWVzLCB3ZSBqdXN0IHJldHVybiB0
aGUgb3JpZ2luYWwgZGVzY3JpcHRvci4KKy8vIEJ1dCBzdGlsbCB0aGVzZSBwcm9wZXJ0aWVzIGNh
bm5vdCBiZSBjaGFuZ2VkLgorc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoUmVmbGVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IobmFtZXNwYWNlLCBTeW1ib2wuaXRlcmF0b3IpKSwgYHsid3JpdGFi
bGUiOnRydWUsImVudW1lcmFibGUiOmZhbHNlLCJjb25maWd1cmFibGUiOnRydWV9YCk7CitzaG91
bGRUaHJvdygoKSA9PiB7CisgICAgbmFtZXNwYWNlW1N5bWJvbC5pdGVyYXRvcl0gPSA0MjsKK30s
IGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVz
cGFjZS9hZGRpdGlvbmFsLWRyaW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21v
ZHVsZXMvbmFtZXNwYWNlL2FkZGl0aW9uYWwtZHJpbmsuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTlkYWE1M2Y4
YTRmMTlkMjIwN2I4Y2RlZmRjODg4YTljNDE4MDZhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS9hZGRpdGlvbmFsLWRyaW5r
LmpzCkBAIC0wLDAgKzEsNCBAQAorZXhwb3J0IGNvbnN0IE1hdGNoYSA9ICdNYXRjaGEnOworCitp
bXBvcnQgeyBNb2NoYSB9IGZyb20gIi4vbW9yZS1hZGRpdGlvbmFsLWRyaW5rLmpzIgorZXhwb3J0
IHsgTW9jaGEgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvbmFtZXNwYWNlL2RyaW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVs
ZXMvbmFtZXNwYWNlL2RyaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMWZkMjI5MDJiZTUzNmFjMWViZTRh
NjQyOGM2NTFkMTgxN2Q3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UvZHJpbmsuanMKQEAgLTAsMCArMSwxMCBAQAorCitl
eHBvcnQgY29uc3QgQ29jb2EgPSAiQ29jb2EiOworCitleHBvcnQgbGV0IENhcHB1Y2Npbm8gPSAi
Q2FwcHVjY2lubyI7CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNoYW5nZUNhcHB1Y2Npbm8o
dmFsdWUpIHsKKyAgICBDYXBwdWNjaW5vID0gdmFsdWU7Cit9CisKK2V4cG9ydCAqIGZyb20gIi4v
YWRkaXRpb25hbC1kcmluay5qcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9tb2R1bGVzL25hbWVzcGFjZS9tb3JlLWFkZGl0aW9uYWwtZHJpbmsuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9uYW1lc3BhY2UvbW9yZS1hZGRpdGlvbmFsLWRy
aW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZjYzM2MjIwMDQ5YjJiOWY0Mjc2YTM1Mzk1MDkwYWRmOWZjMDI4
NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9uYW1lc3BhY2UvbW9yZS1hZGRpdGlvbmFsLWRyaW5rLmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9y
dCBjb25zdCBNb2NoYSA9ICdNb2NoYSc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW9kdWxlcy9yZXNvdXJjZXMvYXNzZXJ0LmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vZHVsZXMvcmVzb3VyY2VzL2Fzc2VydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDA2Zjg0
ZWJkZmEwMWVhYzE2NWQyZmEyZWQxNTFjYTdhNjRiYWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvcmVzb3VyY2VzL2Fzc2VydC5qcwpAQCAt
MCwwICsxLDE5IEBACitleHBvcnQgZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZh
bHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBl
cnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1l
c3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJv
cil9YCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxl
cy9zY29wZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9zY29wZXMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDIwYzY1ZWVmOTBhNDdlNzQ2MTYwY2NjN2QxMzE4ZjQyMTNhZWE0OQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL3Nj
b3Blcy5qcwpAQCAtMCwwICsxLDI3IEBACitpbXBvcnQgeyBDb2NvYSwgQ2FwcHVjY2lubywgTWF0
Y2hhIH0gZnJvbSAiLi9zY29wZXMvZHJpbmsuanMiCitpbXBvcnQgeyBzaG91bGRCZSB9IGZyb20g
Ii4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7CisKK3sKKyAgICBsZXQgQ29jb2EgPSA0MjsKKyAgICBz
aG91bGRCZShDb2NvYSwgNDIpOworfQorc2hvdWxkQmUoQ29jb2EsICdDb2NvYScpOworc2hvdWxk
QmUoQ2FwcHVjY2lubywgJ0NhcHB1Y2Npbm8nKTsKK3Nob3VsZEJlKE1hdGNoYSwgJ01hdGNoYScp
OworCit2YXIgZ2xvYmFsID0gRnVuY3Rpb24oInJldHVybiB0aGlzIikoKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICB2YXIgQ29jb2EgPSA0MjsKKyAgICBsZXQgQ2FwcHVjY2lubyA9ICdDUE8nOwor
ICAgIHNob3VsZEJlKENvY29hLCA0Mik7CisgICAgc2hvdWxkQmUoQ2FwcHVjY2lubywgJ0NQTycp
OworICAgIHNob3VsZEJlKE1hdGNoYSwgJ01hdGNoYScpOworICAgIHsKKyAgICAgICAgY29uc3Qg
TWF0Y2hhID0gNTA7CisgICAgICAgIHNob3VsZEJlKE1hdGNoYSwgNTApOworICAgICAgICBzaG91
bGRCZShPYmplY3QsIGdsb2JhbC5PYmplY3QpOworICAgIH0KKyAgICBzaG91bGRCZShPYmplY3Qs
IGdsb2JhbC5PYmplY3QpOworfSgpKTsKK3Nob3VsZEJlKE9iamVjdCwgZ2xvYmFsLk9iamVjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9zY29wZXMv
YWRkaXRpb25hbC1kcmluay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVz
L3Njb3Blcy9hZGRpdGlvbmFsLWRyaW5rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZGFhNTNmOGE0ZjE5ZDIy
MDdiOGNkZWZkYzg4OGE5YzQxODA2YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW9kdWxlcy9zY29wZXMvYWRkaXRpb25hbC1kcmluay5qcwpAQCAtMCww
ICsxLDQgQEAKK2V4cG9ydCBjb25zdCBNYXRjaGEgPSAnTWF0Y2hhJzsKKworaW1wb3J0IHsgTW9j
aGEgfSBmcm9tICIuL21vcmUtYWRkaXRpb25hbC1kcmluay5qcyIKK2V4cG9ydCB7IE1vY2hhIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL3Njb3Blcy9k
cmluay5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb2R1bGVzL3Njb3Blcy9kcmlu
ay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MjFmZDIyOTAyYmU1MzZhYzFlYmU0YTY0MjhjNjUxZDE4MTdkN2Mx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMv
c2NvcGVzL2RyaW5rLmpzCkBAIC0wLDAgKzEsMTAgQEAKKworZXhwb3J0IGNvbnN0IENvY29hID0g
IkNvY29hIjsKKworZXhwb3J0IGxldCBDYXBwdWNjaW5vID0gIkNhcHB1Y2Npbm8iOworCitleHBv
cnQgZGVmYXVsdCBmdW5jdGlvbiBjaGFuZ2VDYXBwdWNjaW5vKHZhbHVlKSB7CisgICAgQ2FwcHVj
Y2lubyA9IHZhbHVlOworfQorCitleHBvcnQgKiBmcm9tICIuL2FkZGl0aW9uYWwtZHJpbmsuanMi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvbW9kdWxlcy9zY29wZXMv
bW9yZS1hZGRpdGlvbmFsLWRyaW5rLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21v
ZHVsZXMvc2NvcGVzL21vcmUtYWRkaXRpb25hbC1kcmluay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2MzNjIy
MDA0OWIyYjlmNDI3NmEzNTM5NTA5MGFkZjlmYzAyODQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvc2NvcGVzL21vcmUtYWRkaXRpb25hbC1k
cmluay5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgY29uc3QgTW9jaGEgPSAnTW9jaGEnOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvdGhpcy1zaG91bGQt
YmUtdW5kZWZpbmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vZHVsZXMvdGhp
cy1zaG91bGQtYmUtdW5kZWZpbmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4NDUzZTJjZjg2NzJmOGRhZTMz
Y2Q4MDE3ZmY0YmFiMzE5MWE2ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvbW9kdWxlcy90aGlzLXNob3VsZC1iZS11bmRlZmluZWQuanMKQEAgLTAsMCAr
MSwzIEBACitpbXBvcnQgeyBzaG91bGRCZSB9IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7
CisKK3Nob3VsZEJlKHRoaXMsIHVuZGVmaW5lZCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDQ5N2Y4ODY3YjI3MjkwOWViNmJlNmRhMGYwYWI1
OGFhNjk3MGJmZC4uZjlmNTJhNDA3ZjM1YTI2NGJkMTU4MzM0N2FjYzA5MWJjNGVmY2E3ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDE1LTA5LTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFUzZdIEluc3RhbnRpYXRlIE1vZHVsZSBFbnZpcm9ubWVudCBiaW5kaW5n
cyBhbmQgZXhlY3V0ZSBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0ODA1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBuZXcgc3RyZXNzIHRlc3QgY2F0ZWdvcnksICJtb2R1bGVzIi4KKyAg
ICAgICAgV2hlbiBFUzYgTW9kdWxlcyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIEpTQyBz
aGVsbCwKKyAgICAgICAgd2Ugd2lsbCBlbmFibGUgdGhlc2UgdGVzdHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg2ODkKKworICAgICAgICAqIFNj
cmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzOgorICAgICAgICAocnVuSlNDU3RyZXNzVGVz
dHMpOgorICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisKIDIwMTUtMDgt
MzEgIEphc29uIE1hcmNlbGwgIDxqbWFyY2VsbEBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kaWZ5
IHByZXBhcmUtQ2hhbmdlbG9nIHRvIGJlIGF3YXJlIG9mIGZpbGVzIHRoYXQgYXJlIG1hcmtlZCBh
cyB0ZXN0cyBhcyB3ZWxsIGFzIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1q
YXZhc2NyaXB0Y29yZS10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRl
c3RzCmluZGV4IDQ5NDFkN2Y3YmU4MGM0ZjA3OGI4YTBhYjlmODViNWRkZGExMWYxODcuLjBiNDFm
ZDJmZDcwNWM3ZDFkN2YyMjRiMzMyZDYzOWU2ZTAzZWI5MjcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWph
dmFzY3JpcHRjb3JlLXRlc3RzCkBAIC0yODMsNyArMjgzLDEwIEBAIHN1YiBydW5KU0NTdHJlc3NU
ZXN0cwogICAgICAgICAiUGVyZm9ybWFuY2VUZXN0cy9TdW5TcGlkZXIvcHJvZmlsZXItdGVzdC55
YW1sIiwKICAgICAgICAgIkxheW91dFRlc3RzL2pzYy1sYXlvdXQtdGVzdHMueWFtbCIsCiAgICAg
ICAgICJTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvdHlwZVByb2ZpbGVyLnlhbWwiLAotICAg
ICAgICAiU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2NvbnRyb2xGbG93UHJvZmlsZXIueWFt
bCIKKyAgICAgICAgIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9jb250cm9sRmxvd1Byb2Zp
bGVyLnlhbWwiLAorICAgICAgICAjIEZJWE1FOiBBZGQgd2hlbiB0aGUgbW9kdWxlIGlzIGVuYWJs
ZWQgYnkgZGVmYXVsdCBpbiBKU0Mgc2hlbGwuCisgICAgICAgICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODY4OQorICAgICAgICAjICJTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvbW9kdWxlcy55YW1sIgogICAgICk7CiAgICAgaWYgKGlzV2luZG93cygpICYm
ICFpc0N5Z3dpbigpKSB7CiAgICAgICAgIHNoaWZ0IEBqc2NTdHJlc3NEcml2ZXJDbWQ7ICMgUmVt
b3ZlIC91c3IvYmluL2VudgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVz
cy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggODkyOWE1
OTFhZjA1MzQ4YTAyNWM4NTEwMWIzNDUwZWMzYzQxMTE4Yi4uMmI3MTc4OGIzOTdlN2M5ODBmNWEy
YzBkNjkwN2U5NjUxNjZlODNjMCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC04
NzEsNiArODcxLDI4IEBAIGRlZiBydW5Db250cm9sRmxvd1Byb2ZpbGVyCiAgICAgZW5kCiBlbmQK
IAorZGVmIHJ1bk1vZHVsZXMKKyAgICBydW4oImRlZmF1bHQtbW9kdWxlcyIsICItbSIpCisgICAg
cnVuKCJhbHdheXMtdHJpZ2dlci1jb3B5LXBoYXNlLW1vZHVsZXMiLCAiLW0iLCAiLS1taW5IZWFw
VXRpbGl6YXRpb249Mi4wIiwgIi0tbWluQ29waWVkQmxvY2tVdGlsaXphdGlvbj0yLjAiKQorCisg
ICAgaWYgISRqaXRUZXN0cworICAgICAgICByZXR1cm4KKyAgICBlbmQKKworICAgIHJ1bigibm8t
bGxpbnQtbW9kdWxlcyIsICItbSIsICItLXVzZUxMSW50PWZhbHNlIikKKyAgICBydW4oIm5vLWNq
aXQtdmFsaWRhdGUtcGhhc2VzLW1vZHVsZXMiLCAiLW0iLCAiLS12YWxpZGF0ZUJ5dGVjb2RlPXRy
dWUiLCAiLS12YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2U9dHJ1ZSIsICpOT19DSklUX09QVElPTlMp
CisgICAgcnVuKCJkZmctZWFnZXItbW9kdWxlcyIsICItbSIsICpFQUdFUl9PUFRJT05TKQorICAg
IHJ1bigiZGZnLWVhZ2VyLW5vLWNqaXQtdmFsaWRhdGUtbW9kdWxlcyIsICItbSIsICItLXZhbGlk
YXRlR3JhcGg9dHJ1ZSIsICooTk9fQ0pJVF9PUFRJT05TICsgRUFHRVJfT1BUSU9OUykpCisgICAg
aWYgJGVuYWJsZUZUTAorICAgICAgICBydW4oImRlZmF1bHQtZnRsLW1vZHVsZXMiLCAiLW0iLCAq
RlRMX09QVElPTlMpCisgICAgICAgIHJ1bigiZnRsLW5vLWNqaXQtdmFsaWRhdGUtbW9kdWxlcyIs
ICItbSIsICItLXZhbGlkYXRlR3JhcGg9dHJ1ZSIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09Q
VElPTlMpKQorICAgICAgICBydW4oImZ0bC1uby1jaml0LW5vLWlubGluZS12YWxpZGF0ZS1tb2R1
bGVzIiwgIi1tIiwgIi0tdmFsaWRhdGVHcmFwaD10cnVlIiwgIi0tbWF4aW11bUlubGluaW5nRGVw
dGg9MSIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMpKQorICAgICAgICBydW4oImZ0
bC1lYWdlci1tb2R1bGVzIiwgIi1tIiwgKihGVExfT1BUSU9OUyArIEVBR0VSX09QVElPTlMpKQor
ICAgICAgICBydW4oImZ0bC1lYWdlci1uby1jaml0LW1vZHVsZXMiLCAiLW0iLCAiLS12YWxpZGF0
ZUdyYXBoPXRydWUiLCAqKEZUTF9PUFRJT05TICsgTk9fQ0pJVF9PUFRJT05TICsgRUFHRVJfT1BU
SU9OUykpCisgICAgICAgIHJ1bigiZnRsLW5vLWNqaXQtc21hbGwtcG9vbC1tb2R1bGVzIiwgIi1t
IiwgIi0taml0TWVtb3J5UmVzZXJ2YXRpb25TaXplPTUwMDAwIiwgKihGVExfT1BUSU9OUyArIE5P
X0NKSVRfT1BUSU9OUykpCisgICAgZW5kCitlbmQKKwogZGVmIHJ1bkxheW91dFRlc3Qoa2luZCwg
Km9wdGlvbnMpCiAgICAgcmFpc2UgdW5sZXNzICRiZW5jaG1hcmsudG9fcyA9fiAvXC5qcyQvCiAg
ICAgdGVzdE5hbWUgPSAkfi5wcmVfbWF0Y2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260414</attachid>
            <date>2015-09-01 23:33:57 -0700</date>
            <delta_ts>2015-09-01 23:38:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150901233338.patch</filename>
            <type>text/plain</type>
            <size>92932</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi4wNGVhZTEwYjIxMzZkNDc4
MmIxOWVkOWNiZDhiMTc2YzlhMzJmNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDEgQEAKKzIwMTUtMDktMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgIDEu
IEZvciByZXNvbHZlX3Njb3BlLCB3aGVuIGxpbmtpbmcsIHdlIHJlc29sdmUgdGhlIGFjdHVhbCBt
b2R1bGUgZW52aXJvbm1lbnQgd2hlcmUKKyAgICAgICAgICAgIGxvb2tlZCB1cCB2YXJpYWJsZSBy
ZXNpZGVzIGFuZCBzdG9yZSBpdCBkaXJlY3RseSB0byB0aGUgaW5zdHJ1Y3Rpb24uIEFuZCByZXNv
bHZlX3Njb3BlCisgICAgICAgICAgICBzaW1wbHkgcmV0cmlldmUgdGhlIHN0b3JlZCBwb2ludGVy
IGZyb20gdGhlIGluc3RydWN0aW9uLgorCisgICAgICAgICAyLiBGb3IgZ2V0X2Zyb21fc2NvcGUs
IHNpbmNlICJNb2R1bGVWYXIiIGJlaGF2aW9yIGZvciBnZXRfZnJvbV9zY29wZSBpcyBjb21wbGV0
ZWx5IHNhbWUKKyAgICAgICAgICAgIHRvIHRoZSAiQ2xvc3VyZVZhciIsIHdlIGp1c3Qgc3RvcmUg
IkNsb3N1cmVWYXIiIGZvciBnZXRfZnJvbV9zY29wZSB0byBlbGltaW5hdGUKKyAgICAgICAgICAg
IHVubmVjZXNzYXJ5IGJyYW5jaCBpbiBMTEludCBsYXllci4KKworICAgICAgICAgMy4gRm9yIHB1
dF90b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlh
dGVseSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9y
dGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJp
Y3QgY29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4
aXQuIFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAg
ICAgICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9y
IHRoZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3Ry
dWN0aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgICBFeHBvcnRlZCBtb2R1bGUgdmFy
aWFibGVzIGluc2lkZSB0aGUgb3JpZ2luYWwgbW9kdWxlIGVudmlyb25tZW50IGFyZSBqdXN0IHRy
ZWF0ZWQgYXMgdGhlCisgICAgICAgICB1c3VhbCBoZWFwIHZhcmlhYmxlcy4gU28gdGhlIHR5cGVz
IGZvciBjbG9zdXJlIHZhcmlhYmxlcyBhcmUganVzdCB1c2VkLiAoIkNsb3N1cmVWYXIiIGV0Yy4p
CisKKyAgICAgICAgWzFdOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4NzA1CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
ZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2
ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRh
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRp
bWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd1N5bnRheEVycm9yKToKKyAgICAgICAg
KiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dCk6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAg
ICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaC4KKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVF
bnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZp
cm9ubWVudDo6b2Zmc2V0T2ZNb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVu
dmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJv
bm1lbnQ6Om1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
Om1vZHVsZVJlY29yZFNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpK
U01vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeTo6UmVz
b2x2ZVF1ZXJ5KToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5Ojppc0VtcHR5VmFsdWUpOgor
ICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpT
Qzo6UmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaCk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeUhh
c2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6cmVzb2x2ZUV4cG9ydExvb3ApOgorICAgICAgICAo
SlNDOjpnZXRFeHBvcnRlZE5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omxp
bmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlv
bnMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpleHBvcnRFbnRyaWVzKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmltcG9ydEVudHJpZXMpOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6c3RhckV4cG9ydEVudHJpZXMpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6YWJzdHJhY3RBY2Nlc3MpOgorICAgICAg
ICAoSlNDOjpyZXNvbHZlVHlwZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgor
ICAgICAgICAoSlNDOjptYWtlVHlwZSk6CisgICAgICAgIChKU0M6Om5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgorICAgICAgICAq
IHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoKKwogMjAxNS0wOS0wMSAgQnJpYW4gQnVy
ZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm90b2NvbCBn
ZW5lcmF0b3Igc2hvdWxkIG5vdCBhbGxvdyBub24tYm9vbGVhbiB2YWx1ZXMgZm9yICJvcHRpb25h
bCIga2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjgwNjBhNjk5ZmI0
ODk3MDA2ZTRmYTk5MzIwMTI3MGM0ZDJlYzNkOS4uZWZhNTcwYTIxMjYyMjQ2MzhlNTU1ODU4Y2Rj
ZWZkYmFmZTAyOTI1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTM3
LDYgKzUzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50
aW1lL0pTTG9jay5jcHAKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUvSlNNYXBJ
dGVyYXRvci5jcHAKKyAgICBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCiAgICAgcnVu
dGltZS9KU01vZHVsZVJlY29yZC5jcHAKICAgICBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24u
Y3BwCiAgICAgcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKaW5kZXggMzk5NjNiNDEwMTFjZTllNTAzZTM2ODlhMDY3NTQ1YTZiNDBi
NDBiMS4uOGExMjZlNTU0NTNkMzhjMDRlOWMyYWMyYzI0NzgyM2IxNTQwNDIzMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03ODYsNiArNzg2LDcgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPgpA
QCAtMTY0MCw2ICsxNjQxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNMb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwSXRlcmF0b3IuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29y
ZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1
bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5P
YmplY3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCAyYmY3MTgwNDBiMzRkNGZjMDA4M2YyMWE1M2NlNDgyN2UxZmMwMjg2Li42
OGU0YzdlNDRmOWM4ODJlMTM0Y2NmN2UzYTUwNjBhNmM0YzhjNzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03MjYsNiArNzI2LDkg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIj4KICAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmNwcCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMzUwNSw2ICszNTA4LDkgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5oIj4KKyAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmMjJlNzE2ZjUzMTEwN2ZlNTk4MWM1YTZkMTZkM2E0NTQxZTYxOWY1Li5iYjE2MzAyZDEwMWQ0
MDdlOWQyNjA0N2QyNzU3MDEwN2RmNzg3MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTcyNiw2ICsxNzI2LDggQEAKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5v
ZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxl
LmNwcCAqLzsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3Jk
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURB
NEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURB
NEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8q
IEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
MjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9Owor
CQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMx
QzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3
NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1ODcsNiAr
MzU4OSw4IEBACiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXpl
TW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlD
NzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VG
ODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDc3Nyw2ICs0NzgxLDggQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAu
aCAqLywKIAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAg
Ki8sCiAJCQkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLywK
KwkJCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
Ki8sCisJCQkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
aCAqLywKIAkJCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
ICovLAogCQkJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICov
LAogCQkJCUUzM0U4RDFBMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNw
cCAqLywKQEAgLTYxMzksNiArNjE0NSw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFEMUI1
IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
RDlBMjk4MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYwRjE5QjE2QjcyOUZBMDA1REY5
NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUZCODY4MUFF
MzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2
MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC03Mzg2LDYgKzczOTMsNyBAQAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJF
MTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1
MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzExMDdF
QzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApp
bmRleCBjNGM2NmQzYjc5NzZmOTc3NWJkMTM0ZDFlYTk4OWMxNGE0NWRhYWQ3Li42NzI2NDNjZThh
ODVhOGMyZDRkNWJmNzYxYzAzZGNkMGEyZTkwOWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTE5NzIsOSArMTk3MywxNCBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29k
ZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJh
Y3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwg
c2NvcGUsIGlkZW50LCBHZXQsIHR5cGUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0
XS51Lm9wZXJhbmQgPSBvcC50eXBlOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51
Lm9wZXJhbmQgPSBvcC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1l
bnQpCi0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNl
dCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRh
YmxlKCkpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKG9wLmxleGljYWxFbnZp
cm9ubWVudCkgeworICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikgewor
ICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHRoZSBsaW5rZWQgbW9kdWxlIGVudmlyb25tZW50
IHN0cm9uZ2x5IHJlZmVyZW5jZWQuCisgICAgICAgICAgICAgICAgICAgIGFkZENvbnN0YW50KG9w
LmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tp
ICsgNl0udS5qc0NlbGwuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZp
cm9ubWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJs
ZSwgb3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpKTsKKyAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gbnVs
bHB0cjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xOTk5LDcgKzIwMDUsMTIg
QEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50ID0gaWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgUmVzb2x2
ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIG1vZGVBbmRUeXBlLnR5
cGUoKSk7CiAKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVz
b2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgb3AudHlwZSkub3BlcmFuZCgpOwor
ICAgICAgICAgICAgLy8gTW9kdWxlVmFyIGNhbiBnZXQgdGhlIHZhcmlhYmxlIGFzIHRoZSBzYW1l
IHRvIENsb3N1cmVWYXIuCisgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpCisg
ICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9k
ZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBDbG9zdXJlVmFyKS5vcGVyYW5kKCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJh
bmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5vcGVy
YW5kKCk7CisKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IEdsb2JhbFZhciB8fCBvcC50eXBl
ID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCiAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA1XS51LndhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAg
ICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtMjA2NywxNyArMjA3OCwxOCBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGFic3RyYWN0
bHkgInJlYWQiaW5nIGZyb20gYSBKU1Njb3BlLgogICAgICAgICAgICAgICAgIFJlc29sdmVPcCBv
cCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBlKTsKIAotICAgICAgICAg
ICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIpCisgICAgICAgICAgICAgICAgaWYgKG9w
LnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVsZVZhcikKICAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxl
KCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIpCiAgICAg
ICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gbV9nbG9iYWxPYmplY3QuZ2V0KCktPnN5bWJv
bFRhYmxlKCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogaW1wbCA9IChvcC50eXBlID09IE1vZHVsZVZhcikgPyBvcC5pbXBvcnRlZE5hbWUu
Z2V0KCkgOiBpZGVudC5pbXBsKCk7CiAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7
CiAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRh
YmxlLT5tX2xvY2spOwogICAgICAgICAgICAgICAgICAgICAvLyBJZiBvdXIgcGFyZW50IHNjb3Bl
IHdhcyBjcmVhdGVkIHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGhh
dmUgcHJlcGFyZWQgZm9yIHByb2ZpbGluZyB5ZXQuCiAgICAgICAgICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOwotICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUo
bG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xvYmFs
VHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9ja2VyLCBp
ZGVudC5pbXBsKCksICp2bSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJ
RCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaW1wbCwgKnZtKCkp
OworICAgICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2Jh
bFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgpKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IFR5cGVQcm9m
aWxlck5vR2xvYmFsSURFeGlzdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAppbmRleCBiZGRkMDM2N2YzYmUzNzI3NjlhZGZmYmNmYTU5ODQzMThiMjNjNzg4
Li4zODIzYmM3NTVjODRhNmY4ZWJhYmRjMDUwOTBmYmVhM2JhMWYwZjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNz
IEV4ZWNTdGF0ZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFJlcGF0Y2hC
dWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRpb247CitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50Owog
CiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBDb3Vu
dFJlb3B0aW1pemF0aW9uIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggN2Y2NTA1MmRhOGYyZjFmOTc0MzRjOGNiN2E2YTIwZmM0
MjI2ZTUwNy4uOTc5YzhlNjgwZDZkOGQwNjhlNmRmZjQ1YjVkNWFlMDhkYTE2OWY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZp
cm9ubWVudC5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1
dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgpAQCAtMzgzMyw2ICsz
ODM0LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcyB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldERp
cmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6IHsKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB0
aGUgdmFsdWUgb2YgdGhlICJzY29wZSIgdmlydHVhbCByZWdpc3RlciBpcyBub3QgdXNlZCBpbiBM
TEludCAvIGJhc2VsaW5lIG9wX3Jlc29sdmVfc2NvcGUgd2l0aCBNb2R1bGVWYXIsCisgICAgICAg
ICAgICAgICAgLy8gd2UgbmVlZCBub3QgdG8ga2VlcCBpdCBhbGl2ZSBieSB0aGUgUGhhbnRvbSBu
b2RlLgorICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25t
ZW50ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0u
dS5qc0NlbGwuZ2V0KCkpOworICAgICAgICAgICAgICAgIC8vIE1vZHVsZSBlbnZpcm9ubWVudCBp
cyBhbHJlYWR5IHN0cm9uZ2x5IHJlZmVyZW5jZWQgYnkgdGhlIENvZGVCbG9jay4KKyAgICAgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KG1vZHVsZUVu
dmlyb25tZW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZh
cjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsK
QEAgLTQwMDIsNiArNDAxMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0Q2xvc3VyZVZh
ciwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiksIHNjb3BlTm9kZSkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBNb2R1
bGVWYXI6CiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQwODYs
NiArNDA5NiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICAgICAgICAgIC8vIE5l
ZWQgbm90IHRvIGtlZXAgInNjb3BlIiBhbmQgInZhbHVlIiByZWdpc3RlciB2YWx1ZXMgaGVyZSBi
eSBQaGFudG9tIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBub3QgdXNlZCBp
biBMTEludCAvIGJhc2VsaW5lIG9wX3B1dF90b19zY29wZSB3aXRoIE1vZHVsZVZhci4KKyAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZmE2
MmVhNmYzNzZkODhjZWZmNGU5ODI3NTQzMjY2ZTBkOTNhNDQ5Yy4uNWE3YTJhZTVkZDBlNmQwMDQ5
MWMwNzdiYzU0OGRiZGQxNzE2NmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMTk0LDYgKzExOTUsNTQgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTVmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCitKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCit7
CisgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdT
Y29wZSh0aGlzKTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgp
KTsKKyAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVj
dG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5n
QVBJTG9jaygpKTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgICAgIHJldHVy
biBqc051bGwoKTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xv
YmFsT2JqZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwor
CisgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVj
dXRpb24oY2FsbEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwpOworICAgIGlmIChV
TkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNh
bGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOwor
ICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVC
bG9jaygpOworCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5k
aWRGaXJlKGNhbGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0
aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisKKyAgICAvLyBUaGUg
fHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgorICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52
aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVj
b3Jkcy1nZXR0aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwor
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisKKyAgICBp
ZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAg
ICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVS
TCgpLCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7
CisKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHsK
KyAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdl
dCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5l
eGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5UHJv
ZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVy
LT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFi
bGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJl
dGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQp
CiB7CiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCktPmRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCmluZGV4IDAzOGJjYTVjZmM3NWI5YjI0NTc2MmQ2ZTY0ZjY4ZjJlNzhl
YzYyNTEuLjRmZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0MDk1YWY0NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw2
ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQXJyb3dGdW5jdGlvbjsKICAg
ICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNz
IEpTTW9kdWxlRW52aXJvbm1lbnQ7CiAgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwpA
QCAtMjE1LDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGVDYWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENh
bGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNP
YmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBD
b25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFs
dWUgbmV3VGFyZ2V0KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwg
Q2FsbEZyYW1lKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKyAgICAgICAgSlNWYWx1
ZSBleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNNb2R1bGVF
bnZpcm9ubWVudCopOwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUq
LCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIq
JiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDhjZGYxMWZkMzZmYWZkOTZiZjJiYjY3
MWY1NWMzMWQ0NTdlNjQ0OS4uOWE0YWU0NTUyOWRlZmU0NzVkNjc3YmY3MDRiNWM2MDc2ZTNlZDM2
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRl
ICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgor
I2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgogCiAKQEAgLTcwMyw2ICs3MDQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3Qs
IHNjb3BlLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAg
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsK
QEAgLTcxNiw3ICs3MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvdwogICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIFJlc29sdmVUeXBlIHJlc29s
dmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJl
c29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQorICAg
IGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9i
YWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1
bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKQEAgLTc3
OCw2ICs3ODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xv
d0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAg
Y2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQpAQCAtODUyLDYgKzg1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19z
Y29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0VmFySW5q
ZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpKTsKICAgICAg
ICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xvdCwgdmFsdWUsIGN1cnJlbnRJ
bnN0cnVjdGlvbls1XS51LndhdGNocG9pbnRTZXQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1vZHVsZVZhcjoKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAo
KSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODczLDcgKzg4MCwxMiBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93QwogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxpbmtDb3VudC0tKQogICAgICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Nj
b3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworCisgICAgaWYgKHJlc29sdmVUeXBlID09IE1vZHVs
ZVZhcikgeworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3Bl
cnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5z
dHJ1Y3Rpb24pOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDgxMmQxYjk5ZTYzYzAx
MjRlYWQ2OTg1MDQxZTdlYTg0YjQ5ZmZhZmYuLmU2M2JkNTkyMzkxOTQ2ODc4ZjhjN2JjMGM2NDVk
ZTg5NmJkNDkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlJlcGF0
Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdU
b29sLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1By
aW50U3RyZWFtLmg+CiAKIApAQCAtNzM1LDYgKzczNiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9y
ZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAgICAgZW1pdFJlc29sdmVDbG9z
dXJlKGRzdCwgc2NvcGUsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSwgZGVw
dGgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsKKyAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSksIHJlZ1QwKTsK
KyAgICAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBi
cmVhazsKQEAgLTc0OCw3ICs3NTQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9z
Y29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvdwogICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIFJlc29sdmVUeXBl
IHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5
IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFy
KQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9
PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9
PSBNb2R1bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsK
QEAgLTgxMSw2ICs4MTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAg
YWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6
CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQpAQCAtODg2LDYgKzg5Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0
VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpKTsK
ICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xvdCwgdmFsdWUsIGN1
cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNocG9pbnRTZXQpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNl
KGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTA1LDcgKzkxMywxMiBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24s
IFZlY3RvcjxTbG93QwogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxpbmtDb3VudC0tKQog
ICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Q
dXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworCisgICAgaWYgKHJlc29sdmVUeXBlID09
IE1vZHVsZVZhcikgeworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5
X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24pOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVu
dHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNzc3Y2ZkZTA5M2EyZDEzZGY1ZmU1YzM2NmM5ODIy
ZjRhZTA4NGZhZS4uMTU2OTIxZTNhY2ViYmVmYTEzNjgyYzY4YzE5ZDQ1NjE1ZmQxZmVjZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTE0NywxMCArMTQ3
LDExIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIHN0YXRpY19h
c3NlcnQoR2xvYmFsVmFyID09IDEsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhciBSZXN1bHRUeXBl
IGlzID09IDEiKTsKICAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVWYXIgPT0gMiwgIkxMSW50IGFz
c3VtZXMgQ2xvc3VyZVZhciBSZXN1bHRUeXBlIGlzID09IDIiKTsKICAgICBzdGF0aWNfYXNzZXJ0
KExvY2FsQ2xvc3VyZVZhciA9PSAzLCAiTExJbnQgYXNzdW1lcyBMb2NhbENsb3N1cmVWYXIgUmVz
dWx0VHlwZSBpcyA9PSAzIik7Ci0gICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MgPT0gNCwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNCIpOwotICAgIHN0YXRpY19hc3Nl
cnQoR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA1LCAiTExJbnQgYXNzdW1lcyBH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNSIpOwotICAg
IHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxM
SW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBp
cyA9PSA2Iik7Ci0gICAgc3RhdGljX2Fzc2VydChEeW5hbWljID09IDcsICJMTEludCBhc3N1bWVz
IER5bmFtaWMgUmVzdWx0VHlwZSBpcyA9PSA3Iik7CisgICAgc3RhdGljX2Fzc2VydChNb2R1bGVW
YXIgPT0gNCwgIkxMSW50IGFzc3VtZXMgTW9kdWxlVmFyIFJlc3VsdFR5cGUgaXMgPT0gNCIpOwor
ICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09
IDUsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBS
ZXN1bHRUeXBlIGlzID09IDUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KENsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDcsICJMTEludCBhc3N1bWVzIENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNyIpOworICAgIHN0YXRp
Y19hc3NlcnQoRHluYW1pYyA9PSA4LCAiTExJbnQgYXNzdW1lcyBEeW5hbWljIFJlc3VsdFR5cGUg
aXMgPT0gOCIpOwogICAgIAogICAgIEFTU0VSVChSZXNvbHZlTW9kZUFuZFR5cGU6Om1hc2sgPT0g
MHhmZmZmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCmluZGV4IDc1YzkxZjg2ODZlNGE1ZTA4NTAxM2JiMTE5MjI1ZWRjOTdh
NDQ1ZTQuLmE3MzE4ZjMzYWFhM2ExOWI4MWI2OGNkMTc1ZGVkMWE5YjUyY2Q1ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE5MiwxMCArMTkyLDExIEBAIGNvbnN0IEdsb2JhbFByb3BlcnR5ID0gMAogY29uc3QgR2xv
YmFsVmFyID0gMQogY29uc3QgQ2xvc3VyZVZhciA9IDIKIGNvbnN0IExvY2FsQ2xvc3VyZVZhciA9
IDMKLWNvbnN0IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDQKLWNvbnN0
IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA1Ci1jb25zdCBDbG9zdXJlVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcyA9IDYKLWNvbnN0IER5bmFtaWMgPSA3Citjb25zdCBNb2R1bGVW
YXIgPSA0Citjb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA1Citj
b25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNgorY29uc3QgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA3Citjb25zdCBEeW5hbWljID0gOAogCiBjb25zdCBS
ZXNvbHZlTW9kZU1hc2sgPSAweGZmZmYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA3ZWY2Yjg3YzE3
MGFkMDgzYjFmNTI5ZGE4ODM2YzAwY2RhNjRiNDc4Li41ZDUxMGNkOGRkZWMzMDg2Y2VlYzYzZWM2
MDkyYjQ2ODRlOTg4YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjA0NSw2ICsyMDQ1LDEzIEBA
IG1hY3JvIGdldEdsb2JhbE9iamVjdChkc3QpCiAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCiBlbmQKIAorbWFjcm8gZ2V0SW1wb3J0ZWRNb2R1bGVTY29wZShkc3QpCisg
ICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KGRzdCwgdDEpCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorZW5kCisKIG1hY3JvIHZhcklu
amVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MApAQCAtMjA4NywxMCArMjA5
NCwxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKICAgICBkaXNwYXRjaCg3KQogCiAuckNs
b3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFy
CiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNwYXRjaCg3KQogCisuck1vZHVsZVZhcjoKKyAg
ICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoMSkKKyAgICBkaXNwYXRjaCg3KQorCiAu
ckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCkBAIC0yMjgxLDEz
ICsyMjkzLDE4IEBAIF9sbGludF9vcF9wdXRfdG9fc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAog
LnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKLSAgICBiaW5lcSB0MCwgQ2xvc3Vy
ZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wRHluYW1pYworICAgIGJpbmVxIHQwLCBDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBNb2R1bGVWYXIKICAgICB3cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnBEeW5hbWljKQogICAg
IGxvYWRWYXJpYWJsZSgxLCB0MiwgdDEsIHQwKQogICAgIHB1dENsb3N1cmVWYXIoKQogICAgIGRp
c3BhdGNoKDcpCiAKKy5wTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5wRHlu
YW1pYworICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRv
bmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorICAgIGRpc3BhdGNoKDcpCisKIC5wRHluYW1pYzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgZGlz
cGF0Y2goNykKQEAgLTIzODEsNCArMjM5OCw0IEBAIF9sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQogICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQyMTUyYTJmMjc3YWRlNTg3OTc2YTFj
M2YxMjAyMzcyOWIzOGE1OWEuLjVjMDBlNjQ2ZjYwMTBlNmJhNjg2MWUzNGNlOWNmNzc0YTVhOGM0
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCkBAIC0xOTE4LDYgKzE5MTgsMTIgQEAgbWFjcm8gZ2V0R2xvYmFsT2Jq
ZWN0KGRzdCkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQogZW5kCiAKK21hY3JvIGdldElt
cG9ydGVkTW9kdWxlU2NvcGUoZHN0KQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQwKQor
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihkc3QsIHQxKQorICAgIHN0b3JlcSB0MCwgW2Nmciwg
dDEsIDhdCitlbmQKKwogbWFjcm8gdmFySW5qZWN0aW9uQ2hlY2soc2xvd1BhdGgpCiAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MF0sIHQwCkBAIC0xOTU3LDEwICsxOTYzLDE1IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3Bl
OgogICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcjoKLSAgICBiaW5lcSB0MCwgQ2xvc3Vy
ZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBiaW5lcSB0
MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKICAgICByZXNvbHZlU2NvcGUoKQogICAgIGRpc3Bh
dGNoKDcpCiAKKy5yTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgZ2V0SW1wb3J0ZWRNb2R1bGVTY29w
ZSgxKQorICAgIGRpc3BhdGNoKDcpCisKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNo
ZWNrKC5yRHluYW1pYykKQEAgLTIxNDQsMTMgKzIxNTUsMTggQEAgX2xsaW50X29wX3B1dF90b19z
Y29wZToKICAgICBkaXNwYXRjaCg3KQogCiAucENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBE
eW5hbWljCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
cE1vZHVsZVZhcgogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKICAgICB2YXJJbmpl
Y3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgbG9hZFZhcmlhYmxlKDEsIHQwKQogICAgIHB1dENs
b3N1cmVWYXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5wTW9kdWxlVmFyOgorICAgIGJpbmVxIHQw
LCBNb2R1bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93
X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorICAgIGRpc3BhdGNo
KDcpCisKIC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRf
dG9fc2NvcGUpCiAgICAgZGlzcGF0Y2goNykKQEAgLTIyMzMsNCArMjI0OSw0IEBAIF9sbGludF9v
cF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBsb2FkcCBKU0Fycm93RnVuY3Rpb246Om1f
Ym91bmRUaGlzW3QwXSwgdDAKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAg
c3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKyAgICBkaXNwYXRjaCgyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBmNjIzOGZiOTY4MDJiZTUzN2U5MWFkYzI2
YjgyZDg5MGI5NTQwMzJkLi42NDI1NWM1YmU1ZWZkNTA5OGJmYzNjMTVhZTE4NmZmYWM0OGZkOTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNw
cApAQCAtODIsNyArODIsOSBAQCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgp
LT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEpTTW9kdWxlUmVj
b3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLT50
cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOworICAgIEFTU0VSVChvcHRpb25hbElt
cG9ydEVudHJ5KTsKKyAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9ICpvcHRpb25hbEltcG9y
dEVudHJ5OwogICAgIGlmICh2YXJpYWJsZS5pc0ltcG9ydGVkTmFtZXNwYWNlKCkpIHsKICAgICAg
ICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFz
IG5hbWVzcGFjZSBmcm9tICJtb2QiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3NTgwODMzMmU0ZGQ0MDg0NDJhMDM0MzdkNTVj
MTA1YWNjMjk1YWIxLi4zNWI2Mjk3OTIwN2VmYWM4NzQ1NmQ3NzI2NGI0YjBmYWZmZTg2MmVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKQEAgLTI3MCw2ICsyNzAsMTIgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3Rk
el9lcnJvcikKICAgICBUSFJPVyhjcmVhdGVURFpFcnJvcihleGVjKSk7CiB9CiAKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0
ZV9lcnJvcikKK3sKKyAgICBCRUdJTigpOworICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpOwor
fQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQogewogICAgIEJFR0lOKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDA2
N2RmMGMzOGU5MTIwYmY3MDdjZmRlNDFjM2VmYmYyYTY4NzJlZTMuLjMwMDk4NTVmZjZiYTJkMTUy
ODNkYjhmODVmM2NlNDU3ZGRiMjg2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0xODksNiArMTg5LDcgQEAgU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9lbnRlcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9jYWxsZWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b190aGlz
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlf
cHJvcGVydHlfd3JpdGVfZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
b3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lcSk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25lcSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5jcHAKaW5kZXggMDAyODVhNjc1NzczNDc0NzliZDlhOWI3YjkzOTU1YzI2NDM0NjU3Yy4uMWI5
M2U4ZmQxMjU3ZDBkNzhhYTc5MzY4ODExMjRjYWY2OTk0NGI4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMjE5LDYgKzIxOSwxMCBAQCBKU09iamVjdCogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJT
eW50YXggZXJyb3IiKSkpOwogfQogCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtZXNzYWdlKSk7
Cit9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGVj
MzBhM2RjNDY2ZTFlYjQ0OWIzZTU4NWFhODA0OTJlZjE5ODQ2NDcuLmY0NmZlMzc2ZmI4NmM2NTJl
NGFlYzg0OTAxM2NlYTJkZjNjODAxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaApAQCAtNzQsNiArNzQsNyBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmKQogLy8gQ29udmVu
aWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRlZmF1
bHQgbWVzc2FnZS4KIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihF
eGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9y
KEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogaW5saW5lIEpTT2Jq
ZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgpLnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVh
dGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3
cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggY2RjZWIzMDQyNjVmOTc2ZDAwNzdh
ZWZkNjU3YjViN2JhYmJmMmExNi4uOTZlZmY0NTU4ZDJlNzNkOWYzYjc0MWY2N2Q2ZWJhZDVmMmYz
MmViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAt
NTcsNiArNTcsOSBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazsKIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBXZWJBc3NlbWJseUNvZGVCbG9jazsK
K2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKK2Ns
YXNzIEpTU2NvcGU7CiAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwg
T3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA0ZTA5NGZkNjc5YjlkNWJjZjRiODg2ZjM2
MDJjNmMxYjBmYjIwOTFhLi41YThhNzM1MTcxNjVmY2QyYTc1ZjhjY2RkNTM0NGM0MzY3MWIxMTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC04NCw2ICs4NCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNN
YXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZp
cm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKQEAgLTMxMiw2ICszMTMs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3R5cGVkQXJyYXlz
W3RvSW5kZXgoVHlwZURhdGFWaWV3KV0uc3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmll
dzo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURh
dGFWaWV3KV0ucHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1l
bnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykp
OwogICAgIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJp
Y3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwog
ICAgIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5zZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29w
ZTo6Y3JlYXRlU3RydWN0dXJlKG1fdm0sIHRoaXMpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpz
TnVsbCgpKSk7CkBAIC03OTEsNiArNzkzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVy
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RpcmVjdEFyZ3Vt
ZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2NvcGVk
QXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9v
dXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMWNhMzFiN2IxMjZmYjJlZmQzYjcxOTBlYWY3
NjRmNWNkYTA5OTFmZS4uZTMzNDAwZWFlMmQ5YmZkYTc3ZGIxYmE2NDRiMWJlOTZmNmNlODY0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0yMzIsNiArMjMyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2Nv
cGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0
aXZhdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2xleGljYWxF
bnZpcm9ubWVudFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVs
ZUVudmlyb25tZW50U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGly
ZWN0QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc2Nv
cGVkQXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb3V0
T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlOwpAQCAtNDQ5LDYgKzQ1MCw3IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVj
dHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBt
b2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJv
bm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGRpcmVjdEFyZ3VtZW50c1N0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
b3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkJhbmRB
cmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDk1MTYzMThkNzAxNjllM2Rk
OGMyYmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMxYjdiN2M5ODI2MmQ0MTBiZjAxZjg0OTM3
MWQ4YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4
aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNs
YXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMg
SlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIEpTTGV4aWNh
bEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CiAg
ICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYjhjMjliMjkwMjI5YTNhYzRkN2E3
YTgwZGYwZDcyODE1OGY2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMCwwICsxLDEzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorCisjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Q2xhc3NJbmZvIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnNfaW5mbyA9IHsgIkpTTW9kdWxlRW52aXJv
bm1lbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxlRW52
aXJvbm1lbnQpIH07CisKK0pTTW9kdWxlRW52aXJvbm1lbnQqIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OmNyZWF0ZSgKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJy
ZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUs
IEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgLy8gSlNMZXhpY2FsRW52aXJv
bm1lbnQgKHByZWNpc2VseSwgSlNFbnZpcm9ubWVudFJlY29yZCkgaGFzIHRoZSBzdG9yYWdlIHRv
IHN0b3JlIHRoZSB2YXJpYWJsZSBzbG90cyBhZnRlciB0aGUgaXRzIGNsYXNzIHN0b3JhZ2UuCisg
ICAgLy8gQmVjYXVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB2YXJpYWJsZSBzbG90cyBhcmUgZml4ZWQg
aW4gdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQsIGluaGVyaXR0aW5nIHRoZXNlIGNsYXNzIGFuZCBh
ZGRpbmcgbmV3IG1lbWJlciBmaWVsZCBpcyBub3QgYWxsb3dlZCwKKyAgICAvLyB0aGUgbmV3IG1l
bWJlciB3aWxsIG92ZXJsYXAgdGhlIHZhcmlhYmxlIHNsb3RzLgorICAgIC8vIFRvIGtlZXAgdGhl
IEpTTW9kdWxlRW52aXJvbm1lbnQgY29tcGF0aWJsZSB0byB0aGUgSlNMZXhpY2FsRW52aXJvbm1l
bnQgYnV0IGFkZCB0aGUgbmV3IG1lbWJlciB0byBzdG9yZSB0aGUgSlNNb2R1bGVSZWNvcmQsIHdl
IGFkZGl0aW9uYWxseSBhbGxvY2F0ZQorICAgIC8vIHRoZSBzdG9yYWdlIGFmdGVyIHRoZSB2YXJp
YWJsZSBzbG90cy4KKyAgICAvLworICAgIC8vIEpTTGV4aWNhbEVudmlyb25tZW50OgorICAgIC8v
ICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF0KKyAgICAvLwor
ICAgIC8vIEpTTW9kdWxlRW52aXJvbm1lbnQ6CisgICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJv
bm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXVsgYWRkaXRpb25hbCBzbG90cyBmb3IgSlNNb2R1bGVF
bnZpcm9ubWVudCBdCisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogcmVzdWx0ID0KKyAgICAgICAg
bmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8SlNN
b2R1bGVFbnZpcm9ubWVudD4odm0uaGVhcCwgSlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlv
blNpemUoc3ltYm9sVGFibGUpKSkKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCh2bSwgc3Ry
dWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKTsKKyAgICByZXN1bHQtPmZpbmlzaENy
ZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUpOworICAgIHRoaXMtPm1v
ZHVsZVJlY29yZFNsb3QoKS5zZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQg
SlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09i
amVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPnNjb3BlU2l6ZSgp
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkU2xvdCgpKTsK
K30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
Y3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIGNvbnN0IGF1dG8gcmVz
b2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMs
IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYg
KHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQpIHsKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRNb2R1bGVFbnZp
cm9ubWVudCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOwor
ICAgICAgICBQcm9wZXJ0eVNsb3QgcmVkaXJlY3RTbG90KGltcG9ydGVkTW9kdWxlRW52aXJvbm1l
bnQpOworICAgICAgICBpZiAoaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdChpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHJlZGlyZWN0U2xvdCkpIHsKKyAgICAgICAgICAgIEpTVmFs
dWUgdmFsdWUgPSByZWRpcmVjdFNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBnZXRPd25Qcm9wZXJ0eVNsb3QgY2Fubm90IHRocm93IGFueSBl
cnJvcnMuCisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgcmVkaXJlY3RTbG90LmF0dHJpYnV0ZXMoKSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit2b2lkIEpT
TW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lc0Fy
cmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBpZiAo
cHJvcGVydHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPmltcG9y
dEVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBwYWly
LnZhbHVlOworICAgICAgICAgICAgaWYgKCFpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVjLT52
bSgpKSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzQXJyYXkuYWRkKGltcG9ydEVudHJ5
LmxvY2FsTmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEJhc2U6OmdldE93bk5v
bkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXks
IG1vZGUpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIC8vIEFs
bCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgorICAgIGNvbnN0IGF1dG8gcmVzb2x1
dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYgKHJl
c29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2
ZWQpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
Cit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVs
ZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFyZSBp
bW11dGFibGUuCisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxl
UmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBw
cm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxl
UmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTVl
MTJlZWZjNTQ4YjllZTZlYmYzMTNmYTdhOGQ0YzcxNjkxNGYxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBAIC0w
LDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisjZGVmaW5lIEpTTW9kdWxlRW52aXJv
bm1lbnRfaAorCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJK
U01vZHVsZVJlY29yZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgUmVnaXN0ZXI7CisK
K2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNMZXhpY2FsRW52aXJvbm1lbnQg
eworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTGV4aWNhbEVudmlyb25tZW50IEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEpTVmFsdWUgaW5pdGlhbFZhbHVl
LCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1cnJl
bnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwg
SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9s
VGFibGUsIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVf
dCBvZmZzZXRPZk1vZHVsZVJlY29yZChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgewor
ICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJp
ZXI8SlNNb2R1bGVSZWNvcmQ+KT4oQmFzZTo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZk1vZHVsZVJlY29yZChz
eW1ib2xUYWJsZSkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPik7CisgICAg
fQorCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbW9kdWxlUmVjb3JkU2xvdCgpLmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CisKK3ByaXZhdGU6
CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1i
b2xUYWJsZSopOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTVmFsdWUgaW5pdGlh
bFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxKU01vZHVs
ZVJlY29yZD4mIG1vZHVsZVJlY29yZFNsb3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICpiaXR3
aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxKU01vZHVsZVJlY29yZD4qPihiaXR3aXNlX2Nhc3Q8
Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFibGUoKSkpOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKK307CisKK2lubGluZSBKU01vZHVsZUVudmlyb25tZW50OjpKU01vZHVsZUVudmlyb25tZW50
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjdXJyZW50
U2NvcGUsIHN5bWJvbFRhYmxlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEpTTW9kdWxlRW52aXJvbm1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDdiNjA2Mzc0YTYwNjBiNzcwMjBjNGVmNDUx
MmU5MjQ1ZTAzZjNmYzUuLjYyZjE5MmMzN2RhZWY3NzUxNTgzZjZjZDU2MWMyMDQyZjA0NjEwZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpT
TW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKQEAgLTYwLDEwICs2MSw0OSBAQCB2b2lkIEpT
TW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1
bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25t
ZW50KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVwZW5kZW5jaWVz
TWFwKTsKIH0KIAordm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFk
ZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJF
eHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fc3RhckV4
cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKwordm9pZCBKU01vZHVsZVJl
Y29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQoreworICAgIGJv
b2wgaXNOZXdFbnRyeSA9IG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwo
KSwgZW50cnkpLmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05l
d0VudHJ5KTsgLy8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBwYXJzZXIuCit9CisKK3ZvaWQg
SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkK
K3sKKyAgICBib29sIGlzTmV3RW50cnkgPSBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9y
dE5hbWUuaW1wbCgpLCBlbnRyeSkuaXNOZXdFbnRyeTsKKyAgICBBU1NFUlRfVU5VU0VEKGlzTmV3
RW50cnksIGlzTmV3RW50cnkpOyAvLyBUaGlzIGlzIGd1YXJhbnRlZWQgYnkgdGhlIHBhcnNlci4K
K30KKworYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmlu
Z0ltcGwqIGxvY2FsTmFtZSkgLT4gT3B0aW9uYWw8SW1wb3J0RW50cnk+Cit7CisgICAgY29uc3Qg
YXV0byBpdGVyYXRvciA9IG1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSk7CisgICAgaWYg
KGl0ZXJhdG9yID09IG1faW1wb3J0RW50cmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgcmV0dXJuIE9wdGlvbmFsPEltcG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOwor
fQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5n
SW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0aW9uYWw8RXhwb3J0RW50cnk+Cit7CisgICAgY29uc3Qg
YXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5maW5kKGV4cG9ydE5hbWUpOworICAgIGlm
IChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJpZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBOdWxs
b3B0OworICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsK
K30KKwogYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0
IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKIHsK
ICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRp
ZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKQEAgLTc5LDYgKzEx
OSwyMSBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qo
Y29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgYwogICAgIHJldHVybiBFeHBvcnRFbnRyeSB7
IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVu
dGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07CiB9CiAKK2F1dG8gSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb246Om5vdEZvdW5kKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJl
dHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6Tm90Rm91bmQsIG51bGxwdHIsIElkZW50aWZpZXIoKSB9
OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjplcnJvcigpIC0+IFJlc29s
dXRpb24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6OkVycm9yLCBudWxscHRyLCBJ
ZGVudGlmaWVyKCkgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6YW1i
aWd1b3VzKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6
QW1iaWd1b3VzLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30KKwogc3RhdGljIEpTVmFsdWUg
aWRlbnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSkKQEAgLTkzLDYgKzE0
OCwzMDAgQEAgSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUltcG9y
dGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICByZXR1cm4ganNDYXN0PEpTTW9k
dWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
dmFsdWUiKSkpOwogfQogCithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKSAtPiBSZXNvbHV0aW9uCit7
CisgICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSB0cnlHZXRJ
bXBvcnRFbnRyeShsb2NhbE5hbWUuaW1wbCgpKTsKKyAgICBpZiAoIW9wdGlvbmFsSW1wb3J0RW50
cnkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgpOworCisgICAgY29uc3Qg
YXV0byYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsKKyAgICBpZiAoaW1wb3J0
RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9u
Ojpub3RGb3VuZCgpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9z
dFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsK
KyAgICByZXR1cm4gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50
cnkuaW1wb3J0TmFtZSk7Cit9CisKK3N0cnVjdCBSZXNvbHZlUXVlcnkgeworICAgIFJlc29sdmVR
dWVyeShKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBVbmlxdWVkU3RyaW5nSW1wbCogZXhw
b3J0TmFtZSkKKyAgICAgICAgOiBtb2R1bGVSZWNvcmQobW9kdWxlUmVjb3JkKQorICAgICAgICAs
IGV4cG9ydE5hbWUoZXhwb3J0TmFtZSkKKyAgICB7CisgICAgfQorCisgICAgUmVzb2x2ZVF1ZXJ5
KEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5h
bWUpCisgICAgICAgIDogUmVzb2x2ZVF1ZXJ5KG1vZHVsZVJlY29yZCwgZXhwb3J0TmFtZS5pbXBs
KCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUg
fTsKKyAgICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAgICB7CisgICAgfQorCisgICAg
ZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnko
RGVsZXRlZFZhbHVlVGFnKQorICAgICAgICA6IG1vZHVsZVJlY29yZChudWxscHRyKQorICAgICAg
ICAsIGV4cG9ydE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgeworICAgIH0K
KworICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
ZXhwb3J0TmFtZTsKKyAgICB9CisKKyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBleHBvcnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
CisgICAgfQorCisgICAgLy8gVGhlIG1vZHVsZSByZWNvcmQgaXMgbm90IG1hcmtlZCBmcm9tIHRo
ZSBHQy4gQnV0IHRoZXNlIHJlY29yZHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSBKU0dsb2JhbE9i
amVjdC4KKyAgICAvLyBTbyB3ZSBkb24ndCBjYXJlIHRoZSByZWFjaGFiaWxpdHkgdG8gdGhpcyBy
ZWNvcmQuCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+IGV4cG9ydE5hbWU7Cit9OworCitzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5SGFz
aCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5JiwgY29uc3QgUmVzb2x2ZVF1ZXJ5
Jik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSB0cnVlOworfTsKKworaW5saW5lIHVuc2lnbmVkIFJlc29sdmVRdWVyeUhhc2g6Omhhc2goY29u
c3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSkKK3sKKyAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTTW9k
dWxlUmVjb3JkKj46Omhhc2gocXVlcnkubW9kdWxlUmVjb3JkKSArIElkZW50aWZpZXJSZXBIYXNo
OjpoYXNoKHF1ZXJ5LmV4cG9ydE5hbWUpOworfQorCitpbmxpbmUgYm9vbCBSZXNvbHZlUXVlcnlI
YXNoOjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmIGxocywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiBy
aHMpCit7CisgICAgcmV0dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0gcmhzLm1vZHVsZVJlY29yZCAm
JiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKK30KKworc3RhdGljIEpTTW9kdWxl
UmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnRMb29wKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgUmVzb2x2ZVF1ZXJ5JiByb290KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZXNvbHZlZXhwb3J0CisgICAgLy8gVGhpcyBm
dW5jdGlvbiBhdm9pZHMgQysrIHJlY3Vyc2lvbiBvZiB0aGUgbmFpdmUgUmVzb2x2ZUV4cG9ydCBp
bXBsZW1lbnRhdGlvbi4KKyAgICAvLyBGbGF0dGVuIHRoZSByZWN1cnNpb24gdG8gdGhlIGxvb3Ag
d2l0aCB0aGUgdGFzayBxdWV1ZSBhbmQgZnJhbWVzLgorICAgIC8vCisgICAgLy8gMS4gcGVuZGlu
Z1Rhc2tzCisgICAgLy8gICAgIFdlIGVucXVldWUgdGhlIHJlY3Vyc2l2ZSByZXNvbHZlRXhwb3J0
IGNhbGwgdG8gdGhpcyBxdWV1ZSB0byBhdm9pZCByZWN1cnNpdmUgY2FsbHMgaW4gQysrLgorICAg
IC8vICAgICBUaGUgdGFzayBoYXMgMyB0eXBlcy4gKDEpIFF1ZXJ5LCAoMikgSW5kaXJlY3RGYWxs
YmFjayBhbmQgKDMpIEdhdGhlclN0YXJzLgorICAgIC8vICAgICAoMSkgUXVlcnkKKyAgICAvLyAg
ICAgICAgIFF1ZXJ5aW5nIHRoZSByZXNvbHV0aW9uIHRvIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAg
ICAvLyAgICAgKDIpIEluZGlyZWN0RmFsbGJhY2sKKyAgICAvLyAgICAgICAgIEV4YW1pbmUgdGhl
IHJlc3VsdCBvZiB0aGUgaW5kaXJlY3QgZXhwb3J0IHJlc29sdXRpb24uIE9ubHkgd2hlbiB0aGUg
aW5kaXJlY3QgZXhwb3J0IHJlc29sdXRpb24gZmFpbHMsCisgICAgLy8gICAgICAgICB3ZSBsb29r
IGludG8gdGhlIHN0YXIgZXhwb3J0cy4gKHN0ZXAgNS1hLXZpKS4KKyAgICAvLyAgICAgKDMpIEdh
dGhlclN0YXJzCisgICAgLy8gICAgICAgICBFeGFtaW5lIHRoZSByZXN1bHQgb2YgdGhlIHN0YXIg
ZXhwb3J0IHJlc29sdXRpb25zLgorICAgIC8vCisgICAgLy8gMi4gZnJhbWVzCisgICAgLy8gICAg
IFdoZW4gdGhlIHNwZWMgY2FsbHMgdGhlIHJlc29sdmVFeHBvcnQgcmVjdXJzaXZlbHksIGluc3Rl
YWQgd2UgYXBwZW5kIHRoZSBmcmFtZQorICAgIC8vICAgICAodGhhdCBob2xkcyB0aGUgcmVzdWx0
IHJlc29sdXRpb24pIHRvIHRoZSBmcmFtZXMgYW5kIGVucXVldWUgdGhlIHRhc2sgdG8gdGhlIHBl
bmRpbmdUYXNrcy4KKyAgICAvLyAgICAgVGhlIGVudHJ5IGluIHRoZSBmcmFtZXMgbWVhbnMgdGhl
ICpsb2NhbCogcmVzb2x1dGlvbiByZXN1bHQgb2YgdGhlIHNwZWNpZmljIHJlY3Vyc2l2ZSByZXNv
bHZlRXhwb3J0LgorICAgIC8vCisgICAgLy8gV2Ugc2hvdWxkIG1haW50YWluIHRoZSBsb2NhbCBy
ZXNvbHV0aW9uIHJlc3VsdCBpbnN0ZWFkIG9mIGhvbGRpbmcgdGhlIGdsb2JhbCByZXNvbHV0aW9u
IHJlc3VsdCBvbmx5LgorICAgIC8vIEZvciBleGFtcGxlLAorICAgIC8vCisgICAgLy8gICAgIHN0
YXIKKyAgICAvLyAoMSkgLS0tPiAoMikgIlJlc29sdmUiCisgICAgLy8gICAgICB8CisgICAgLy8g
ICAgICB8CisgICAgLy8gICAgICArLT4gKDMpICJOb3RGb3VuZCIKKyAgICAvLyAgICAgIHwKKyAg
ICAvLyAgICAgIHwgICAgICAgc3RhcgorICAgIC8vICAgICAgKy0+ICg0KSAtLS0+ICg1KSAiUmVz
b2x2ZSIgW2hlcmVdCisgICAgLy8gICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAg
ICB8CisgICAgLy8gICAgICAgICAgICAgICArLT4gKDYpICJFcnJvciIKKyAgICAvLworICAgIC8v
IENvbnNpZGVyIHRoZSBhYm92ZSBncmFwaC4gVGhlIG51bWJlcnMgcmVwcmVzZW50cyB0aGUgbW9k
dWxlcy4gTm93IHdlIGFyZSBbaGVyZV0uCisgICAgLy8gSWYgd2Ugb25seSBob2xkIHRoZSBnbG9i
YWwgcmVzb2x1dGlvbiByZXN1bHQgZHVyaW5nIHRoZSByZXNvbHZlRXhwb3J0IG9wZXJhdGlvbiwg
W2hlcmVdLAorICAgIC8vIHdlIGRlY2lkZSB0aGUgZW50aXJlIHJlc3VsdCBvZiByZXNvbHZlRXhw
b3J0IGlzICJBbWJpZ3VvdXMiLCBiZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZQorICAgIC8vICJS
ZXNsb3ZlIiAoaW4gbW9kdWxlICgyKSBhbmQgKDUpKS4gSG93ZXZlciwgdGhpcyBzaG91bGQgYmVj
b21lICJFcnJvciIgYmVjYXVzZSAoNikgd2lsbAorICAgIC8vIHByb3BhZ2F0ZSAiRXJyb3IiIHN0
YXRlIHRvIHRoZSAoNCksICg0KSB3aWxsIGJlY29tZSAiRXJyb3IiIGFuZCB0aGVuLCAoMSkgd2ls
bCBiZWNvbWUKKyAgICAvLyAiRXJyb3IiLiBXZSBzaG91bGQgYWdncmVnYXRlIHRoZSByZXN1bHRz
IGF0IHRoZSBzdGFyIGV4cG9ydHMgcG9pbnQgKCg0KSBhbmQgKDEpKS4KKworICAgIHVzaW5nIFJl
c29sdXRpb24gPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjsKKyAgICB0eXBlZGVmIFdURjo6
SGFzaFNldDxSZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhhc2gsIFdURjo6Q3VzdG9tSGFzaFRy
YWl0czxSZXNvbHZlUXVlcnk+PiBSZXNvbHZlU2V0OworICAgIGVudW0gY2xhc3MgVHlwZSB7IFF1
ZXJ5LCBJbmRpcmVjdEZhbGxiYWNrLCBHYXRoZXJTdGFycyB9OworICAgIHN0cnVjdCBUYXNrIHsK
KyAgICAgICAgUmVzb2x2ZVF1ZXJ5IHF1ZXJ5OworICAgICAgICBUeXBlIHR5cGU7CisgICAgfTsK
KworICAgIFZlY3RvcjxUYXNrLCA4PiBwZW5kaW5nVGFza3M7CisgICAgUmVzb2x2ZVNldCByZXNv
bHZlU2V0OworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBzdGFyU2V0OworICAgIFZlY3Rv
cjxSZXNvbHV0aW9uLCA4PiBmcmFtZXM7CisKKyAgICBmcmFtZXMuYXBwZW5kKFJlc29sdXRpb246
Om5vdEZvdW5kKCkpOworCisgICAgLy8gQ2FsbCB3aGVuIHRoZSBxdWVyeSBpcyBub3QgcmVzb2x2
ZWQgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgIC8vIEl0IHdpbGwgZW5xdWV1ZSB0aGUgc3Rh
ciByZXNvbHV0aW9uIHJlcXVlc3RzLiBSZXR1cm4gImZhbHNlIiBpZiB0aGUgZXJyb3Igb2NjdXJz
LgorICAgIGF1dG8gcmVzb2x2ZU5vbkxvY2FsID0gWyZdKGNvbnN0IFJlc29sdmVRdWVyeSYgcXVl
cnkpIC0+IGJvb2wgeworICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtcmVzb2x2ZWV4cG9ydAorICAgICAgICAvLyBzZWN0aW9uIDE1
LjIuMS4xNi4zLCBzdGVwIDYKKyAgICAgICAgLy8gSWYgdGhlICJkZWZhdWx0IiBuYW1lIGlzIG5v
dCByZXNvbHZlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUsIHdlIG5lZWQgdG8gdGhyb3cgYW4gZXJy
b3IgYW5kIHN0b3AgcmVzb2x1dGlvbiBpbW1lZGlhdGVseSwKKyAgICAgICAgLy8gUmF0aW9uYWxl
IHRvIHRoaXMgZXJyb3I6IEEgZGVmYXVsdCBleHBvcnQgY2Fubm90IGJlIHByb3ZpZGVkIGJ5IGFu
IGV4cG9ydCAqLgorICAgICAgICBpZiAocXVlcnkuZXhwb3J0TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIC8vIHN0ZXAgNywgSWYgZXhwb3J0U3RhclNldCBjb250YWlucyBtb2R1bGUs
IHRoZW4gcmV0dXJuIG51bGwuCisgICAgICAgIGlmICghc3RhclNldC5hZGQocXVlcnkubW9kdWxl
UmVjb3JkKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
Ly8gRW5xdWV1ZSB0aGUgdGFzayB0byBnYXRoZXIgdGhlIHJlc3VsdHMgb2YgdGhlIHN0YXJzLgor
ICAgICAgICAvLyBBbmQgYXBwZW5kIHRoZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0byBnYXRoZXIg
dGhlIGxvY2FsIHJlc3VsdCBvZiB0aGUgc3RhcnMuCisgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBl
bmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpHYXRoZXJTdGFycyB9KTsKKyAgICAgICAgZnJhbWVzLmFw
cGVuZChSZXNvbHV0aW9uOjpub3RGb3VuZCgpKTsKKworICAgICAgICAvLyBFbnF1ZXVlIHRoZSB0
YXNrcyBpbiByZXZlcnNlIG9yZGVyLgorICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBxdWVy
eS5tb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkucmJlZ2luKCksIGVuZCA9IHF1ZXJ5
Lm1vZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJpZXMoKS5yZW5kKCk7IGl0ZXJhdG9yICE9IGVu
ZDsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgY29uc3QgYXV0byYgc3Rhck1vZHVsZU5hbWUg
PSAqaXRlcmF0b3I7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVS
ZWNvcmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhl
YywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAg
ICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVk
TW9kdWxlUmVjb3JkLCBxdWVyeS5leHBvcnROYW1lLmdldCgpKSwgVHlwZTo6UXVlcnkgfSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8vIFJldHVybiB0
aGUgY3VycmVudCByZXNvbHV0aW9uIHZhbHVlIG9mIHRoZSB0b3AgZnJhbWUuCisgICAgYXV0byBj
dXJyZW50VG9wID0gWyZdICgpIC0+IFJlc29sdXRpb24mIHsKKyAgICAgICAgQVNTRVJUKCFmcmFt
ZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lcy5sYXN0KCk7CisgICAgfTsKKwor
ICAgIC8vIE1lcmdlIHRoZSBnaXZlbiByZXNvbHV0aW9uIHRvIHRoZSBjdXJyZW50IHJlc29sdXRp
b24gdmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4KKyAgICAvLyBJZiB0aGVyZSBpcyBhbWJpZ3VpdHks
IHJldHVybiAiZmFsc2UiLiBXaGVuIHRoZSAiZmFsc2UiIGlzIHJldHVybmVkLCB3ZSBzaG91bGQg
bWFrZSB0aGUgcmVzdWx0ICJhbWJpZ3VvdXMiLgorICAgIGF1dG8gbWVyZ2VUb0N1cnJlbnRUb3Ag
PSBbJl0gKGNvbnN0IFJlc29sdXRpb24mIHJlc29sdXRpb24pIC0+IGJvb2wgeworICAgICAgICBp
ZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKGN1cnJlbnRUb3AoKS50eXBlID09IFJl
c29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICBjdXJyZW50VG9wKCkgPSBy
ZXNvbHV0aW9uOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoY3VycmVudFRvcCgpLm1vZHVsZVJlY29yZCAhPSByZXNvbHV0aW9uLm1vZHVsZVJlY29y
ZCB8fCBjdXJyZW50VG9wKCkubG9jYWxOYW1lICE9IHJlc29sdXRpb24ubG9jYWxOYW1lKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisK
KyAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyByb290LCBUeXBlOjpRdWVyeSB9KTsKKyAg
ICB3aGlsZSAoIXBlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29uc3QgYXV0byB0
YXNrID0gcGVuZGluZ1Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGNvbnN0IFJlc29sdmVRdWVy
eSYgcXVlcnkgPSB0YXNrLnF1ZXJ5OworCisgICAgICAgIHN3aXRjaCAodGFzay50eXBlKSB7Cisg
ICAgICAgIGNhc2UgVHlwZTo6UXVlcnk6IHsKKyAgICAgICAgICAgIGlmICghcmVzb2x2ZVNldC5h
ZGQodGFzay5xdWVyeSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHF1ZXJ5Lm1vZHVsZVJl
Y29yZDsKKyAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRF
bnRyeT4gb3B0aW9uYWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0RXhwb3J0RW50
cnkocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIW9wdGlvbmFsRXhw
b3J0RW50cnkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBtYXRjaGVkIGV4
cG9ydGVkIGJpbmRpbmcgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLAorICAgICAgICAgICAgICAgIC8v
IHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJl
c29sdmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJl
c29sdXRpb246OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gKm9wdGlvbmFsRXhw
b3J0RW50cnk7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAg
ICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAg
ICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3Bh
Y2U6CisgICAgICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRvcChSZXNvbHV0aW9uIHsg
UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQsIG1vZHVsZVJlY29yZCwgZXhwb3J0RW50cnkubG9j
YWxOYW1lIH0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6YW1iaWd1
b3VzKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNhc2UgSlNN
b2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDogeworICAgICAgICAgICAg
ICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IG1vZHVsZVJlY29yZC0+
aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBleHBvcnRFbnRyeS5tb2R1bGVOYW1lKTsK
KworICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGltcG9ydGVkIG1vZHVsZSBkb2VzIG5vdCBw
cm9kdWNlIGFueSByZXNvbHZlZCBiaW5kaW5nLCB3ZSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3Rh
cnMgaW4gdGhlICpjdXJyZW50KgorICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4gVG8gZG8gdGhp
cywgd2UgYXBwZW5kIHRoZSBgSW5kaXJlY3RGYWxsYmFja2AgdGFzayB0byB0aGUgdGFzayBxdWV1
ZS4KKyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBxdWVyeSwgVHlw
ZTo6SW5kaXJlY3RGYWxsYmFjayB9KTsKKyAgICAgICAgICAgICAgICAvLyBBbmQgYXBwZW5kIHRo
ZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0byBjaGVjayB0aGUgaW5kaXJlY3QgZXhwb3J0IHdpbGwg
YmUgcmVzb2x2ZWQgb3Igbm90LgorICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoUmVzb2x1
dGlvbjo6bm90Rm91bmQoKSk7CisgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChU
YXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBleHBvcnRFbnRyeS5pbXBv
cnROYW1lKSwgVHlwZTo6UXVlcnkgfSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2UgVHlwZTo6SW5kaXJlY3RGYWxsYmFjazogeworICAgICAgICAgICAgY29u
c3QgYXV0byByZXNvbHV0aW9uID0gZnJhbWVzLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIGlm
IChyZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAgICAg
ICAgICAgICAgICAvLyBJbmRpcmVjdCBleHBvcnQgZW50cnkgZG9lcyBub3QgcHJvZHVjZSBhbnkg
cmVzb2x2ZWQgYmluZGluZy4KKyAgICAgICAgICAgICAgICAvLyBTbyB3ZSB3aWxsIGludmVzdGln
YXRlIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVOb25Mb2NhbCh0YXNr
LnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmVycm9yKCk7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIElmIGluZGlyZWN0IGV4cG9ydCBlbnRyeSBwcm9kdWNlcyBSZXNvbHZlZCwgd2Ugc2hvdWxk
IG1lcmdlIGl0IHRvIHRoZSB1cHBlciBmcmFtZS4KKyAgICAgICAgICAgIC8vIEFuZCBkbyBub3Qg
aW52ZXN0aWdhdGUgdGhlIHN0YXJzIG9mIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAgICAgICAgICAg
IGlmICghbWVyZ2VUb0N1cnJlbnRUb3AocmVzb2x1dGlvbikpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFJlc29sdXRpb246OmFtYmlndW91cygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIFR5cGU6OkdhdGhlclN0YXJzOiB7CisgICAgICAgICAgICAvLyBN
ZXJnZSB0aGUgc3RhciByZXNvbHV0aW9uIHRvIHRoZSB1cHBlciBmcmFtZS4KKyAgICAgICAgICAg
IGNvbnN0IGF1dG8gc3RhclJlc29sdXRpb24gPSBmcmFtZXMudGFrZUxhc3QoKTsKKyAgICAgICAg
ICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3Aoc3RhclJlc29sdXRpb24pKQorICAgICAgICAgICAg
ICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQoZnJhbWVzLnNpemUoKSA9
PSAxKTsKKyAgICByZXR1cm4gZnJhbWVzWzBdOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpy
ZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9vcChleGVjLCBS
ZXNvbHZlUXVlcnkodGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKK30KKworc3RhdGljIHZvaWQg
Z2V0RXhwb3J0ZWROYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlUmVjb3JkKiByb290LCBJ
ZGVudGlmaWVyU2V0JiBleHBvcnRlZE5hbWVzKQoreworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNv
cmQqPiBleHBvcnRTdGFyU2V0OworICAgIFZlY3RvcjxKU01vZHVsZVJlY29yZCosIDg+IHBlbmRp
bmdNb2R1bGVzOworCisgICAgcGVuZGluZ01vZHVsZXMuYXBwZW5kKHJvb3QpOworCisgICAgd2hp
bGUgKCFwZW5kaW5nTW9kdWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQq
IG1vZHVsZVJlY29yZCA9IHBlbmRpbmdNb2R1bGVzLnRha2VMYXN0KCk7CisgICAgICAgIGlmIChl
eHBvcnRTdGFyU2V0LmNvbnRhaW5zKG1vZHVsZVJlY29yZCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgZXhwb3J0U3RhclNldC5hZGQobW9kdWxlUmVjb3JkKTsKKworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtb2R1bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKSkgewor
ICAgICAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAg
ICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBjYXNlIEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICAg
ICAgaWYgKG1vZHVsZVJlY29yZCA9PSByb290IHx8IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZh
dWx0S2V5d29yZCAhPSBleHBvcnRFbnRyeS5leHBvcnROYW1lKQorICAgICAgICAgICAgICAgICAg
ICBleHBvcnRlZE5hbWVzLmFkZChleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4
cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YXJNb2R1
bGVOYW1lIDogbW9kdWxlUmVjb3JkLT5zdGFyRXhwb3J0RW50cmllcygpKSB7CisgICAgICAgICAg
ICBKU01vZHVsZVJlY29yZCogcmVxdWVzdGVkTW9kdWxlUmVjb3JkID0gbW9kdWxlUmVjb3JkLT5o
b3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywg
c3Rhck1vZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAgICAgIHBlbmRpbmdNb2R1bGVzLmFwcGVu
ZChyZXF1ZXN0ZWRNb2R1bGVSZWNvcmQpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIEpT
TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUo
ZXhlYywgc291cmNlQ29kZSgpKTsKQEAgLTEwMSwxMSArNDUwLDEyMCBAQCB2b2lkIEpTTW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRh
YmxlKTsKKyAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVjLCBleGVjdXRhYmxlKTsKIH0K
IAotSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqKQordm9pZCBKU01v
ZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCiB7Ci0gICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorCisg
ICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKTsK
KyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+bW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVs
ZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBz
eW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIv
Ni4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAx
NS4yLjEuMTYuNCBzdGVwIDkuCisgICAgLy8gRW5zdXJlIGFsbCB0aGUgaW5kaXJlY3QgZXhwb3J0
cyBhcmUgY29ycmVjdGx5IHJlc29sdmVkIHRvIHVuaXF1ZSBiaW5kaW5ncy4KKyAgICAvLyBFdmVu
IGlmIHdlIGF2b2lkZWQgZHVwbGljYXRlIGV4cG9ydHMgaW4gdGhlIHBhcnNlciwgc3RpbGwgYW1i
aWd1b3VzIGV4cG9ydHMgb2NjdXIgZHVlIHRvIHRoZSBzdGFyIGV4cG9ydCAoYGV4cG9ydCAqIGZy
b20gIm1vZCJgKS4KKyAgICAvLyBXaGVuIHdlIHNlZSB0aGlzIHR5cGUgb2YgYW1iaWd1aXR5IGZv
ciB0aGUgaW5kaXJlY3QgZXhwb3J0cyBoZXJlLCB0aHJvdyBhIHN5bnRheCBlcnJvci4KKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3Qg
YXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBpZiAoZXhwb3J0RW50cnku
dHlwZSA9PSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7Cisg
ICAgICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4
cG9ydEVudHJ5LmV4cG9ydE5hbWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5
cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAg
ICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5
IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUu
aW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAg
ICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBv
cnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwo
KSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRp
bmdzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVz
b2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVs
dCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpS
ZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0
aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTIuCisgICAgLy8gSW5zdGFudGlhdGUgbmFtZXNwYWNlIG9i
amVjdHMgYW5kIGluaXRpYWxpemUgdGhlIGJpbmRpbmdzIHdpdGggdGhlbSBpZiByZXF1aXJlZC4K
KyAgICAvLyBBbmQgZW5zdXJlIHRoYXQgYWxsIHRoZSBpbXBvcnRzIGNvcnJlY3RseSByZXNvbHZl
ZCB0byB1bmlxdWUgYmluZGluZ3MuCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBv
cnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1
ZTsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJ
bXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAgICAg
aWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZtKSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IE1vZHVsZU5hbWVzcGFjZU9iamVjdCB3aWxsIGJlIGltcGxlbWVudGVkLgorICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcwNQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gaW1wb3J0ZWRN
b2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CisgICAg
ICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBSZXNv
bHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBv
cnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFt
YmlndW91czoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJp
bmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnRO
YW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRp
cGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50
YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0
JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJl
c29sdmVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rp
b24gMTUuMi4xLjE2LjQgc3RlcCAxNC4KKyAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgY29udGFp
bnMgdGhlIGhlYXAgYWxsb2NhdGVkICJ2YXIiLCAibGV0IiBhbmQgImNvbnN0Ii4KKyAgICAvLyBX
aGVuIGNyZWF0aW5nIHRoZSBlbnZpcm9ubWVudCwgd2UgaW5pdGlhbGl6ZWQgYWxsIHRoZSBzbG93
IHdpdGggZW1wdHksIGl0J3Mgb2sgZm9yIGxleGljYWwgdmFsdWVzLgorICAgIC8vIEJ1dCBmb3Ig
InZhciIsIHdlIHNob3VsZCBpbml0aWFsaXplIGl0IHdpdGggdW5kZWZpbmVkLgorICAgIGZvciAo
Y29uc3QgYXV0byYgdmFyaWFibGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7CisgICAgICAgIGNv
bnN0IGF1dG8mIGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOwor
ICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlm
ICghb2Zmc2V0LmlzU3RhY2soKSkKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVu
dmlyb25tZW50LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5n
ZXQoKSksIGpzVW5kZWZpbmVkKCksIGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3
LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRp
b25pbnN0YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDE2LWEtaXYu
CisgICAgLy8gSW5pdGlhbGl6ZSBoZWFwIGFsbG9jYXRlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMu
CisgICAgLy8gVGhleSBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgbW9kdWxl
IGlzIGV4ZWN1dGVkIHVuZGVyIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAgICBmb3IgKHNpemVf
dCBpID0gMCwgbnVtYmVyT2ZGdW5jdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZG
dW5jdGlvbkRlY2xzKCk7IGkgPCBudW1iZXJPZkZ1bmN0aW9uczsgKytpKSB7CisgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IHVu
bGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGVu
dHJ5ID0gc3ltYm9sVGFibGUtPmdldCh1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgp
LmltcGwoKSk7CisgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsK
KyAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKSB7CisgICAgICAgICAgICBBU1NFUlQoIXVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAg
IGlmICh2bS50eXBlUHJvZmlsZXIoKSB8fCB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpIHsKKyAg
ICAgICAgICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVj
dXRlZFJhbmdlKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3VyY2VJRCgpLAorICAgICAgICAg
ICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNl
KCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1
bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwg
ZnVuY3Rpb24sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbW9kdWxlRW52aXJv
bm1lbnQuc2V0KHZtLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7Cit9CisKK0pTVmFsdWUgSlNN
b2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghbV9tb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKG1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuZ2V0KCksIGV4ZWMsIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCkpOwor
ICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY2xlYXIoKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgdWlkKQpAQCAtMTI5LDIzICs1ODcsMjUgQEAgdm9pZCBKU01vZHVsZVJlY29y
ZDo6ZHVtcCgpCiAgICAgICAgIGRhdGFMb2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1l
KG1vZHVsZU5hbWUpLCAiKVxuIik7CiAKICAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2lt
cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYg
cGFpciA6IG1faW1wb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIs
IHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50
YWJsZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5h
bWUocGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOworICAgIGZvciAoY29uc3QgYXV0
byYgcGFpciA6IG1faW1wb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRF
bnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmlu
dGFibGVOYW1lKGltcG9ydEVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxl
TmFtZShpbXBvcnRFbnRyeS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUo
aW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCksICIpXG4iKTsKKyAgICB9CiAKICAgICBkYXRhTG9n
KCIgICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgewotICAgICAgICBj
b25zdCBFeHBvcnRFbnRyeSYgZW50cnkgPSBwYWlyLnZhbHVlOwotICAgICAgICBzd2l0Y2ggKGVu
dHJ5LnR5cGUpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVl
OworICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKICAgICAgICAgY2FzZSBFeHBv
cnRFbnRyeTo6VHlwZTo6TG9jYWw6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxd
ICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2Fs
KCIsIHByaW50YWJsZU5hbWUoZW50cnkubG9jYWxOYW1lKSwgIilcbiIpOworICAgICAgICAgICAg
ZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0
RW50cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5
LmxvY2FsTmFtZSksICIpXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
IFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1l
KSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7
CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHBy
aW50YWJsZU5hbWUoZXhwb3J0RW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRh
YmxlTmFtZShleHBvcnRFbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6Ci0gICAgICAg
ICAgICBkYXRhTG9nKCIgICAgICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFt
ZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5Lmlt
cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSks
ICIpXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9y
dCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIs
IHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJp
bnRhYmxlTmFtZShleHBvcnRFbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCA4MWRhMzk2NmU4YzVhOGRhOTMwNGQyODJmNGZiY2E5
NGYyNGVhZTQ4Li45NGU5MmFkMDNlZjZiMmEyNjQyMzc1MDFiN2U3NWYyMTViYWZhNjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc4LDggKzc5LDggQEAgY2xh
c3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIH07
CiAKICAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmll
clJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydE1h
cDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0
RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4+PiBFeHBvcnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0RW50cmllczsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBI
YXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRFbnRyaWVz
OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApAQCAtMTAwLDI1ICsxMDEsNDkgQEAgY2xh
c3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHZv
aWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKICAgICB2b2lkIGFkZEV4cG9y
dEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7CiAKLSAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9v
a1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1l
KTsKKyAgICBPcHRpb25hbDxJbXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0
cmluZ0ltcGwqIGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8RXhwb3J0RW50cnk+IHRyeUdldEV4
cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKTsKIAogICAgIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUtl
eTsgfQogICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9Ci0gICAgY29uc3QgRXhwb3J0TWFw
JiBleHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9Ci0gICAg
Y29uc3QgSW1wb3J0TWFwJiBpbXBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRF
bnRyaWVzOyB9CisgICAgY29uc3QgRXhwb3J0RW50cmllcyYgZXhwb3J0RW50cmllcygpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwb3J0RW50cmllczsgfQorICAgIGNvbnN0IEltcG9ydEVudHJpZXMmIGlt
cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydEVudHJpZXM7IH0KKyAgICBjb25z
dCBPcmRlcmVkSWRlbnRpZmllclNldCYgc3RhckV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJFeHBvcnRFbnRyaWVzOyB9CiAKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
JiBkZWNsYXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7
IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKCkgY29u
c3QgeyByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzOyB9CiAKICAgICB2b2lkIGR1bXAoKTsKIAor
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50KCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX21vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxl
RW52aXJvbm1lbnQuZ2V0KCk7CisgICAgfQogCiAgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSopOwog
ICAgIEpTVmFsdWUgZXhlY3V0ZShFeGVjU3RhdGUqKTsKIAogICAgIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCk7IH0KIAorICAgIHN0cnVjdCBSZXNvbHV0aW9uIHsKKyAg
ICAgICAgZW51bSBjbGFzcyBUeXBlIHsgUmVzb2x2ZWQsIE5vdEZvdW5kLCBBbWJpZ3VvdXMsIEVy
cm9yIH07CisKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gbm90Rm91bmQoKTsKKyAgICAgICAg
c3RhdGljIFJlc29sdXRpb24gZXJyb3IoKTsKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gYW1i
aWd1b3VzKCk7CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBKU01vZHVsZVJlY29yZCog
bW9kdWxlUmVjb3JkOworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICB9OworCisg
ICAgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IGV4cG9ydE5hbWUpOworICAgIFJlc29sdXRpb24gcmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RS
ZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
TmFtZSk7CisKIHByaXZhdGU6CiAgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxl
cywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCkBAIC0xMzQsNyArMTU5LDcgQEAgY2xhc3MgSlNNb2R1bGVS
ZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCi0gICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRN
b2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisgICAgdm9p
ZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSopOwogCiAgICAgLy8gVGhlIGxvYWRlciByZXNvbHZlcyB0aGUgZ2l2ZW4gbW9kdWxlIG5h
bWUgdG8gdGhlIG1vZHVsZSBrZXkuIFRoZSBtb2R1bGUga2V5IGlzIHRoZSB1bmlxdWUgdmFsdWUg
dG8gcmVwcmVzZW50IHRoaXMgbW9kdWxlLgogICAgIElkZW50aWZpZXIgbV9tb2R1bGVLZXk7CkBA
IC0xNDUsNDUgKzE3MCwyMyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJs
ZXM7CiAKICAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgotICAgIEltcG9ydE1h
cCBtX2ltcG9ydEVudHJpZXM7CisgICAgSW1wb3J0RW50cmllcyBtX2ltcG9ydEVudHJpZXM7CiAK
ICAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KLSAgICBFeHBvcnRNYXAgbV9l
eHBvcnRFbnRyaWVzOworICAgIEV4cG9ydEVudHJpZXMgbV9leHBvcnRFbnRyaWVzOwogCi0gICAg
SWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOworICAgIC8vIFNhdmUgdGhlIG9jY3Vy
cmVuY2Ugb3JkZXIgc2luY2UgcmVzb2x2ZUV4cG9ydCByZXF1aXJlcyBpdC4KKyAgICBPcmRlcmVk
SWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOwogCiAgICAgLy8gU2F2ZSB0aGUgb2Nj
dXJyZW5jZSBvcmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUg
bW9kdWxlcyBpbiB0aGlzIG9yZGVyLgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCiAgICAgT3JkZXJlZElk
ZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwogCi0gICAgV3JpdGVCYXJyaWVyPE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIFdyaXRl
QmFycmllcjxKU01hcD4gbV9kZXBlbmRlbmNpZXNNYXA7Ci19OwogCi1pbmxpbmUgdm9pZCBKU01v
ZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZU5hbWUpCi17Ci0gICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7
Ci19Ci0KLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJ
bXBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2Nh
bE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjph
ZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9leHBvcnRF
bnRyaWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUg
dm9pZCBKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZU5hbWUpCi17Ci0gICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5p
bXBsKCkpOwotfQotCi1pbmxpbmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50
cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBjb25zdCBJ
bXBvcnRFbnRyeSYKLXsKLSAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5h
bWUpKS52YWx1ZTsKLX0KKyAgICBXcml0ZUJhcnJpZXI8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+
IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlRW52
aXJvbm1lbnQ+IG1fbW9kdWxlRW52aXJvbm1lbnQ7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCBiYjJlZmRk
MDYzMWNkMThlYTk3NTQyNjc0YTJjZTcxODE1MDcyYzhmLi4yZDA2MDhkOWM3YTUxNjVmOTYzYTgy
MzIyZWVhMjRiZTZhNjc1ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52
aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTV2l0
aFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCkBAIC02NSw2ICs2NywxOSBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3Bl
KiBzY29wZSwgY29uc3QgSWRlbnRpZgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIAorICAgICAgICBpZiAoSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQg
PSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihzY29wZSkpIHsKKyAgICAgICAg
ICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVFbnZpcm9ubWVudC0+bW9k
dWxlUmVjb3JkKCk7CisgICAgICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBtb2R1bGVS
ZWNvcmQtPnJlc29sdmVJbXBvcnQoZXhlYywgaWRlbnQpOworICAgICAgICAgICAgaWYgKHJlc29s
dXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQp
IHsKKyAgICAgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNv
bHV0aW9uLm1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50
KiBpbXBvcnRlZEVudmlyb25tZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50
KCk7CisgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGltcG9ydGVkRW52
aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChyZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkp
OworICAgICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAg
ICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKE1vZHVsZVZhciwgbmVlZHNWYXJJbmplY3Rpb25D
aGVja3MpLCBkZXB0aCwgMCwgaW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hwb2ludFNl
dCgpLCBlbnRyeS5zY29wZU9mZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2FsTmFtZS5p
bXBsKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKICAgICAgICAgaWYgKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+
dXNlc05vblN0cmljdEV2YWwoKSkKICAgICAgICAgICAgIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDYgKzI0Nyw3IEBAIGNvbnN0
IGNoYXIqIHJlc29sdmVUeXBlTmFtZShSZXNvbHZlVHlwZSB0eXBlKQogICAgICAgICAiR2xvYmFs
VmFyIiwKICAgICAgICAgIkNsb3N1cmVWYXIiLAogICAgICAgICAiTG9jYWxDbG9zdXJlVmFyIiwK
KyAgICAgICAgIk1vZHVsZVZhciIsCiAgICAgICAgICJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MiLAogICAgICAgICAiR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIs
CiAgICAgICAgICJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggYTY1MzE2NzQ5MGY2ODIyM2Y1MTFkZDI4
OTA4OTI5ZmM0NmExOTczYy4uMDI2YTI3MTRkYzhkOTIyYTk4Mjg4NWU1NDZiNTc4YmE5NjM0ODBh
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtNDUsNiArNDUs
NyBAQCBlbnVtIFJlc29sdmVUeXBlIHsKICAgICBHbG9iYWxWYXIsCiAgICAgQ2xvc3VyZVZhciwK
ICAgICBMb2NhbENsb3N1cmVWYXIsCisgICAgTW9kdWxlVmFyLAogCiAgICAgLy8gRGl0dG8sIGJ1
dCBhdCBsZWFzdCBvbmUgaW50ZXJ2ZW5pbmcgc2NvcGUgdXNlZCBub24tc3RyaWN0IGV2YWwsIHdo
aWNoCiAgICAgLy8gY2FuIGluamVjdCBhbiBpbnRlcmNlcHRpbmcgdmFyIGRlbGNhcmF0aW9uIGF0
IHJ1bnRpbWUuCkBAIC03Miw2ICs3Myw3IEBAIGlubGluZSBSZXNvbHZlVHlwZSBtYWtlVHlwZShS
ZXNvbHZlVHlwZSB0eXBlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgIGNhc2Ug
Q2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgcmV0dXJuIENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAg
IGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzOgpAQCAtOTAsNiArOTIsNyBAQCBpbmxpbmUgYm9vbCBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogICAgIGNhc2UgR2xvYmFsVmFyOgogICAg
IGNhc2UgQ2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKKyAgICBjYXNlIE1v
ZHVsZVZhcjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrczoKQEAgLTEwMywxMyArMTA2LDE0IEBAIGlubGluZSBib29sIG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiB9CiAKIHN0cnVjdCBSZXNvbHZlT3AgewotICAg
IFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBXYXRjaHBv
aW50U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKKyAgICBSZXNvbHZlT3Ao
UmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNM
ZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0
Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBvcnRl
ZE5hbWUgPSBudWxscHRyKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBkZXB0aChk
ZXB0aCkKICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICAgICAsIGxleGljYWxF
bnZpcm9ubWVudChsZXhpY2FsRW52aXJvbm1lbnQpCiAgICAgICAgICwgd2F0Y2hwb2ludFNldCh3
YXRjaHBvaW50U2V0KQogICAgICAgICAsIG9wZXJhbmQob3BlcmFuZCkKKyAgICAgICAgLCBpbXBv
cnRlZE5hbWUoaW1wb3J0ZWROYW1lKQogICAgIHsKICAgICB9CiAKQEAgLTExOSw2ICsxMjMsNyBA
QCBzdHJ1Y3QgUmVzb2x2ZU9wIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVu
dmlyb25tZW50OwogICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CiAgICAgdWludHB0
cl90IG9wZXJhbmQ7CisgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBvcnRlZE5hbWU7
CiB9OwogCiBjbGFzcyBSZXNvbHZlTW9kZUFuZFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggMjhlMGJhZGFh
NzJhZjMwY2M3NzE5MTk2MDRhNjEyZDZjZGI3M2UwNy4uNmU2ZjlmOWE2ZGE2MTgxMmUzYzIxYWQ0
MzY2ZmQ4N2I3Y2QxNDdkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
SlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260415</attachid>
            <date>2015-09-01 23:38:46 -0700</date>
            <delta_ts>2015-09-01 23:39:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150901233828.patch</filename>
            <type>text/plain</type>
            <size>95764</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi41MDRiYzZmZjg5NmY4ZWEy
YmQwZmVjNWM1Y2RkMjQxOGRjNTU4MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzUgQEAKKzIwMTUtMDktMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21f
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2Nv
cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9yLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgICogcnVu
dGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojptb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmguCisgICAgICAgIChKU0M6OkpT
TW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJv
bm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9u
bWVudDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50
Ojptb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1
bGVSZWNvcmRTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1
bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29y
ZDo6YWRkRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OlJlc29sdmVR
dWVyeSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAg
ICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlJl
c29sdmVRdWVyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChKU0M6OnJlc29sdmVFeHBvcnRMb29wKToKKyAgICAgICAgKEpTQzo6
Z2V0RXhwb3J0ZWROYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpsaW5rKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5o
OgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhwb3J0RW50cmllcyk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbXBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OnN0YXJFeHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToKKyAgICAgICAgKEpT
Qzo6cmVzb2x2ZVR5cGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUuaDoKKyAgICAg
ICAgKEpTQzo6bWFrZVR5cGUpOgorICAgICAgICAoSlNDOjpuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OlJlc29sdmVPcDo6UmVzb2x2ZU9wKToKKyAgICAgICAgKiBydW50
aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90
b19zY29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fc2Nv
cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAg
ICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OnBl
cmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL01v
ZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZh
cmlhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd1N5
bnRheEVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgICogcnVudGlt
ZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1vZHVsZUVudmlyb25tZW50U3Ry
dWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmg6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
RW52aXJvbm1lbnQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZp
cm9ubWVudDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
RW52aXJvbm1lbnQ6OnB1dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmRl
bGV0ZVByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuaC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6b2Zmc2V0T2ZNb2R1bGVSZWNvcmQpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om1vZHVsZVJlY29yZFNsb3QpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZUVudmlyb25tZW50OjpKU01vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKiBydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVz
dGVkTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRF
bnRyeSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVRdWVyeTo6UmVzb2x2ZVF1ZXJ5KToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1
ZXJ5Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRGVsZXRl
ZFZhbHVlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaCk6CisgICAgICAg
IChKU0M6OlJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6cmVzb2x2ZUV4
cG9ydExvb3ApOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OmR1bXApOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4cG9ydEVudHJpZXMpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6aW1wb3J0RW50cmllcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpzdGFyRXhwb3J0RW50cmllcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpt
b2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphcHBlbmRS
ZXF1ZXN0ZWRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
YWRkSW1wb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
YWRkRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
YWRkU3RhckV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
Y3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OnJlc29s
dmVUeXBlTmFtZSk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAgICAgIChKU0M6
Om1ha2VUeXBlKToKKyAgICAgICAgKEpTQzo6bmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOgorICAg
ICAgICAoSlNDOjpSZXNvbHZlT3A6OlJlc29sdmVPcCk6CisgICAgICAgICogcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwOgorCiAyMDE1LTA5LTAxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3RvY29sIGdlbmVyYXRvciBzaG91
bGQgbm90IGFsbG93IG5vbi1ib29sZWFuIHZhbHVlcyBmb3IgIm9wdGlvbmFsIiBrZXkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2ODA2MGE2OTlmYjQ4OTcwMDZlNGZhOTkz
MjAxMjcwYzRkMmVjM2Q5Li5lZmE1NzBhMjEyNjIyNDYzOGU1NTU4NThjZGNlZmRiYWZlMDI5MjVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MzcsNiArNTM3LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNMb2NrLmNw
cAogICAgIHJ1bnRpbWUvSlNNYXAuY3BwCiAgICAgcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAor
ICAgIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKICAgICBydW50
aW1lL0pTTm90QW5PYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agppbmRleCAzOTk2M2I0MTAxMWNlOWU1MDNlMzY4OWEwNjc1NDVhNmI0MGI0MGIxLi44YTEyNmU1
NTQ1M2QzOGMwNGU5YzJhYzJjMjQ3ODIzYjE1NDA0MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKQEAgLTc4Niw2ICs3ODYsNyBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU0xvY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTWFwSXRlcmF0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01vZHVsZUVudmlyb25tZW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5jcHAiIC8+CkBAIC0xNjQwLDYgKzE2
NDEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2suaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4
IDJiZjcxODA0MGIzNGQ0ZmMwMDgzZjIxYTUzY2U0ODI3ZTFmYzAyODYuLjY4ZTRjN2U0NGY5Yzg4
MmUxMzRjY2Y3ZTNhNTA2MGE2YzRjOGM3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcyNiw2ICs3MjYsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0zNTA1LDYgKzM1MDgsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01vZHVsZUVudmlyb25tZW50LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTW9kdWxlUmVjb3JkLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYyMmU3MTZmNTMx
MTA3ZmU1OTgxYzVhNmQxNmQzYTQ1NDFlNjE5ZjUuLmJiMTYzMDJkMTAxZDQwN2U5ZDI2MDQ3ZDI3
NTcwMTA3ZGY3ODcyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzI2LDYg
KzE3MjYsOCBAQAogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9k
dWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9Owog
CQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNv
cmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
M0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFD
MDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CisJCUUzRDIzOUM5MUI4
MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzRUY4ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cCAqLzsgfTsKIAkJRTNFRjg4NzUxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMxNkIxMkVG
MjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3MjAwMTg0QTFGIC8q
IFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwpAQCAtMzU4Nyw2ICszNTg5LDggQEAKIAkJ
RTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyog
SlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRB
NTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM3MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODczMUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVy
Q2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzc3LDYgKzQ3ODEs
OCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAogCQkJCUE3
NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzRE
RUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAorCQkJCUUzRDIzOUM2
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLywKKwkJCQlFM0Qy
MzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovLAogCQkJCUUz
OURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCiAJCQkJRTM5
REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJRTMzRThE
MUExQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwICovLApAQCAtNjEz
OSw2ICs2MTQ1LDcgQEAKIAkJCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZHT2JqZWN0
TWF0ZXJpYWxpemF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTgxN0EwQkM3
NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRkMx
N0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBERkdMb25n
TGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5RkI4NjgxQUUzMzVDNjAwMzlEMDY5
IC8qIEpTV2Vha1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2NTAwNjNE
OTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTczODYsNiArNzM5Myw3IEBACiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlh
YmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QjU4MjY5MTREMjc5
NzAwMEE5QzMwNiAvKiBDb2RlUHJvZmlsaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5
NDNDMTY2NzYzMTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3MSAvKiBD
b2RlVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDMTEwN0VDMzc2MDA0MjdBNDgg
LyogQ29tbW9uSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5QzVFNUUxOEUz
NUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGM0YzY2ZDNi
Nzk3NmY5Nzc1YmQxMzRkMWVhOTg5YzE0YTQ1ZGFhZDcuLjY3MjY0M2NlOGE4NWE4YzJkNGQ1YmY3
NjFjMDNkY2QwYTJlOTA5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgpAQCAtMTk3Miw5ICsxOTczLDE0IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
CiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9n
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQs
IEdldCwgdHlwZSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9
IG9wLnR5cGU7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUub3BlcmFuZCA9IG9w
LmRlcHRoOwotICAgICAgICAgICAgaWYgKG9wLmxleGljYWxFbnZpcm9ubWVudCkKLSAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuc3ltYm9sVGFibGUuc2V0KCp2bSgpLCBvd25l
ckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKSk7Ci0gICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAob3AubGV4aWNhbEVudmlyb25tZW50KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIEtlZXAgdGhlIGxpbmtlZCBtb2R1bGUgZW52aXJvbm1lbnQgc3Ryb25nbHkgcmVm
ZXJlbmNlZC4KKyAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RhbnQob3AubGV4aWNhbEVudmly
b25tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LmpzQ2Vs
bC5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50KTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA2XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2Fs
RW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOworICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnBvaW50ZXIgPSBudWxscHRyOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE5OTksNyArMjAwNSwxMiBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29k
ZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVu
dGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Nj
b3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxT
Y29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgbW9kZUFuZFR5cGUudHlwZSgpKTsKIAotICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5
cGUobW9kZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5vcGVyYW5kKCk7CisgICAgICAgICAgICAv
LyBNb2R1bGVWYXIgY2FuIGdldCB0aGUgdmFyaWFibGUgYXMgdGhlIHNhbWUgdG8gQ2xvc3VyZVZh
ci4KKyAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikKKyAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IFJlc29sdmVNb2RlQW5kVHlwZShtb2Rl
QW5kVHlwZS5tb2RlKCksIENsb3N1cmVWYXIpLm9wZXJhbmQoKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IFJlc29sdmVN
b2RlQW5kVHlwZShtb2RlQW5kVHlwZS5tb2RlKCksIG9wLnR5cGUpLm9wZXJhbmQoKTsKKwogICAg
ICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IDVdLnUud2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNl
IGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC0yMDY3LDE3ICsyMDc4LDE4IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGluCiAgICAgICAgICAgICAgICAgLy8gd2UncmUgYWJzdHJhY3RseSAicmVhZCJpbmcg
ZnJvbSBhIEpTU2NvcGUuCiAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6
YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVE
ZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUpOwogCi0gICAgICAgICAgICAgICAgaWYgKG9w
LnR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBDbG9z
dXJlVmFyIHx8IG9wLnR5cGUgPT0gTW9kdWxlVmFyKQogICAgICAgICAgICAgICAgICAgICBzeW1i
b2xUYWJsZSA9IG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFZhcikKICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5nZXQoKS0+c3ltYm9sVGFibGUoKTsKLSAg
ICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBs
ID0gKG9wLnR5cGUgPT0gTW9kdWxlVmFyKSA/IG9wLmltcG9ydGVkTmFtZS5nZXQoKSA6IGlkZW50
LmltcGwoKTsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7
CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIG91ciBwYXJlbnQgc2NvcGUgd2FzIGNyZWF0ZWQg
d2hpbGUgcHJvZmlsaW5nIHdhcyBkaXNhYmxlZCwgaXQgd2lsbCBub3QgaGF2ZSBwcmVwYXJlZCBm
b3IgcHJvZmlsaW5nIHlldC4KICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPnByZXBh
cmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7Ci0gICAgICAgICAgICAgICAgICAgIGdsb2JhbFZh
cmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50
LmltcGwoKSwgKnZtKCkpOwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0gc3lt
Ym9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwoKSwg
KnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFi
bGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpbXBsLCAqdm0oKSk7CisgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZvclZh
cmlhYmxlKGxvY2tlciwgaW1wbCwgKnZtKCkpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJ
REV4aXN0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGJkZGQwMzY3ZjNiZTM3Mjc2OWFkZmZiY2ZhNTk4NDMxOGIyM2M3ODguLjM4MjNiYzc1NWM4
NGE2ZjhlYmFiZGMwNTA5MGZiZWEzYmExZjBmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTgyLDYgKzgyLDcgQEAgY2xhc3MgRXhlY1N0YXRlOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKIGNsYXNz
IFR5cGVMb2NhdGlvbjsKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiAKIGVudW0gUmVvcHRp
bWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRp
b24gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAppbmRleCA3ZjY1MDUyZGE4ZjJmMWY5NzQzNGM4Y2I3YTZhMjBmYzQyMjZlNTA3Li45Nzlj
OGU2ODBkNmQ4ZDA2OGU2ZGZmNDViNWQ1YWUwOGRhMTY5ZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDIsNiArNDIsNyBAQAog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5o
IgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC0zODMzLDYgKzM4MzQsMTQgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
ICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCiAg
ICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0RGlyZWN0KG1faW5saW5l
U3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIE1vZHVsZVZhcjogeworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSB2YWx1ZSBvZiB0
aGUgInNjb3BlIiB2aXJ0dWFsIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluIExMSW50IC8gYmFzZWxp
bmUgb3BfcmVzb2x2ZV9zY29wZSB3aXRoIE1vZHVsZVZhciwKKyAgICAgICAgICAgICAgICAvLyB3
ZSBuZWVkIG5vdCB0byBrZWVwIGl0IGFsaXZlIGJ5IHRoZSBQaGFudG9tIG5vZGUuCisgICAgICAg
ICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBqc0Nhc3Q8
SlNNb2R1bGVFbnZpcm9ubWVudCo+KGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQo
KSk7CisgICAgICAgICAgICAgICAgLy8gTW9kdWxlIGVudmlyb25tZW50IGlzIGFscmVhZHkgc3Ry
b25nbHkgcmVmZXJlbmNlZCBieSB0aGUgQ29kZUJsb2NrLgorICAgICAgICAgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIoZHN0KSwgd2Vha0pTQ29uc3RhbnQobW9kdWxlRW52aXJvbm1lbnQpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
TG9jYWxDbG9zdXJlVmFyOgogICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgICAgICAg
ICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogewpAQCAtNDAwMiw2ICs0
MDExLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRDbG9zdXJlVmFyLCBPcEluZm8ob3Bl
cmFuZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgc2NvcGVOb2RlKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIE1vZHVsZVZhcjoKICAgICAg
ICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA4Niw2ICs0MDk2LDEyIEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgICAgICAgICAgLy8gTmVlZCBub3QgdG8ga2Vl
cCAic2NvcGUiIGFuZCAidmFsdWUiIHJlZ2lzdGVyIHZhbHVlcyBoZXJlIGJ5IFBoYW50b20gYmVj
YXVzZQorICAgICAgICAgICAgICAgIC8vIHRoZXkgYXJlIG5vdCB1c2VkIGluIExMSW50IC8gYmFz
ZWxpbmUgb3BfcHV0X3RvX3Njb3BlIHdpdGggTW9kdWxlVmFyLgorICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAg
ICAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBmYTYyZWE2ZjM3NmQ4OGNl
ZmY0ZTk4Mjc1NDMyNjZlMGQ5M2E0NDljLi41YTdhMmFlNWRkMGU2ZDAwNDkxYzA3N2JjNTQ4ZGJk
ZDE3MTY2YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNO
b3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKQEAgLTExOTQsNiArMTE5NSw1NCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQog
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU01vZHVsZUVudmlyb25tZW50KiBzY29wZSkKK3sKKyAgICBWTSYgdm0g
PSAqc2NvcGUtPnZtKCk7CisgICAgU2FtcGxpbmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMpOwor
CisgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOworICAgIEFTU0VS
VCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwor
ICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwor
CisgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7
CisgICAgaWYgKCF2bS5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisKKyAgICBKU09iamVj
dCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJh
bWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKFVOTElLRUxZKCEhY29t
cGlsZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgp
LnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCk7CisKKyAg
ICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2FsbEZy
YW1lKSkpCisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
Y2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAx
KTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKworICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhl
IG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNv
cmRzLWhhc3RoaXNiaW5kaW5nCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNi
aW5kaW5nCisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxs
RnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9iYWxP
YmplY3QoKSwgc2NvcGUpLCBqc1VuZGVmaW5lZCgpLCAxKTsKKworICAgIGlmIChMZWdhY3lQcm9m
aWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXIt
PndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFi
bGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIC8vIEV4
ZWN1dGUgdGhlIGNvZGU6CisgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgeworICAgICAgICBTYW1w
bGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOworICAgICAg
ICByZXN1bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAm
cHJvdG9DYWxsRnJhbWUpOworICAgIH0KKworICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmls
ZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1dGUo
Y2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5l
KCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworCisgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4ocmVzdWx0KTsKK30KKwogTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCkKIHsKICAgICBEZWJ1
Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdn
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgKaW5kZXggMDM4YmNhNWNmYzc1YjliMjQ1NzYyZDZlNjRmNjhmMmU3OGVjNjI1MS4uNGZlZmFh
NmNmOGUzMWFmMmQzNTlkMTYzYmFjOGExYTQwOTVhZjQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTU0LDYgKzU0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTRnVu
Y3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgSlNNb2R1bGVFbnZp
cm9ubWVudDsKICAgICBjbGFzcyBKU01vZHVsZVJlY29yZDsKICAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CkBAIC0yMTUsNiArMjE2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoQ2FsbEZy
YW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0
ZUNvbnN0cnVjdChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5cGUs
IGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQp
OwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU01vZHVsZUVudmlyb25tZW50Kik7
CiAKICAgICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rpb24q
JiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGludCYg
YXJnYyk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAppbmRleCA0OGNkZjExZmQzNmZhZmQ5NmJmMmJiNjcxZjU1YzMxZDQ1N2U2
NDQ5Li45YTRhZTQ1NTI5ZGVmZTQ3NWQ2NzdiZjcwNGI1YzYwNzZlM2VkMzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNDMsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3Vt
ZW50cy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCisjaW5jbHVkZSAiU2xv
d1BhdGhDYWxsLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIApAQCAt
NzAzLDYgKzcwNCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrczoKICAgICAgICAgZW1pdFJlc29sdmVDbG9zdXJlKGRzdCwgc2NvcGUsIG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSwgZGVwdGgpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIE1vZHVsZVZhcjoKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGN1cnJlbnRJ
bnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSksIHJlZ1QwKTsKKyAgICAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAgICBicmVhazsKICAgICBjYXNlIER5bmFtaWM6CiAg
ICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzE2LDcgKzcy
MSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0
aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAK
LSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0g
R2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCisgICAgaWYgKHJlc29sdmVU
eXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNv
bHZlVHlwZSA9PSBDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwpAQCAtNzc4LDYgKzc4Myw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIExvY2FsQ2xv
c3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBA
IC04NTIsNiArODU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOwogICAgICAgICBlbWl0UHV0Q2xv
c3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90LCB2YWx1ZSwgY3VycmVudEluc3RydWN0aW9uWzVd
LnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgog
ICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAg
YnJlYWs7CkBAIC04NzMsNyArODgwLDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9f
c2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAg
ICAgIHJldHVybjsKICAgICB3aGlsZSAobGlua0NvdW50LS0pCiAgICAgICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJ
bnN0cnVjdGlvbik7CisKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAg
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJy
b3IpOworICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIH0gZWxzZQorICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggODEyZDFiOTllNjNjMDEyNGVhZDY5ODUwNDFl
N2VhODRiNDlmZmFmZi4uZTYzYmQ1OTIzOTE5NDY4NzhmOGM3YmMwYzY0NWRlODk2YmQ0OTNlMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNs
dWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4K
IAogCkBAIC03MzUsNiArNzM2LDExIEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNlIENsb3N1cmVWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOgogICAgICAgICBlbWl0UmVzb2x2ZUNsb3N1cmUoZHN0LCBzY29w
ZSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpLCBkZXB0aCk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSwgcmVnVDEpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY3Vy
cmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKSwgcmVnVDApOworICAgICAgICBlbWl0
U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOworICAgICAgICBicmVhazsKICAgICBjYXNlIER5bmFt
aWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzQ4
LDcgKzc1NCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93CiAgICAgaW50IGRzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZCk7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5
cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCisgICAgaWYgKHJl
c29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8
fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwpAQCAtODExLDYgKzgx
Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShq
dW1wKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIExv
Y2FsQ2xvc3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CkBAIC04ODYsNiArODkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25D
aGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOwogICAgICAgICBlbWl0
UHV0Q2xvc3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90LCB2YWx1ZSwgY3VycmVudEluc3RydWN0
aW9uWzVdLnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxl
VmFyOgogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAg
ICAgICAgYnJlYWs7CkBAIC05MDUsNyArOTEzLDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dD
CiAgICAgICAgIHJldHVybjsKICAgICB3aGlsZSAobGlua0NvdW50LS0pCiAgICAgICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1
cnJlbnRJbnN0cnVjdGlvbik7CisKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7
CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3Jp
dGVfZXJyb3IpOworICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIH0gZWxzZQorICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAppbmRleCA3NzdjZmRlMDkzYTJkMTNkZjVmZTVjMzY2Yzk4MjJmNGFlMDg0ZmFlLi4x
NTY5MjFlM2FjZWJiZWZhMTM2ODJjNjhjMTlkNDU2MTVmZDFmZWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTQ3LDEwICsxNDcsMTEgQEAgdm9pZCBE
YXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxW
YXIgPT0gMSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyIFJlc3VsdFR5cGUgaXMgPT0gMSIpOwog
ICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhciA9PSAyLCAiTExJbnQgYXNzdW1lcyBDbG9zdXJl
VmFyIFJlc3VsdFR5cGUgaXMgPT0gMiIpOwogICAgIHN0YXRpY19hc3NlcnQoTG9jYWxDbG9zdXJl
VmFyID09IDMsICJMTEludCBhc3N1bWVzIExvY2FsQ2xvc3VyZVZhciBSZXN1bHRUeXBlIGlzID09
IDMiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcyA9PSA0LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MgUmVzdWx0VHlwZSBpcyA9PSA0Iik7Ci0gICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA1Iik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA2LCAiTExJbnQgYXNzdW1lcyBD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDYiKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KER5bmFtaWMgPT0gNywgIkxMSW50IGFzc3VtZXMgRHluYW1pYyBSZXN1
bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1vZHVsZVZhciA9PSA0LCAiTExJ
bnQgYXNzdW1lcyBNb2R1bGVWYXIgUmVzdWx0VHlwZSBpcyA9PSA0Iik7CisgICAgc3RhdGljX2Fz
c2VydChHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNSwgIkxMSW50IGFz
c3VtZXMgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMg
PT0gNSIpOworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyA9PSA2LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJl
c3VsdFR5cGUgaXMgPT0gNiIpOworICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MgPT0gNywgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA3Iik7CisgICAgc3RhdGljX2Fzc2VydChEeW5h
bWljID09IDgsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVzdWx0VHlwZSBpcyA9PSA4Iik7CiAg
ICAgCiAgICAgQVNTRVJUKFJlc29sdmVNb2RlQW5kVHlwZTo6bWFzayA9PSAweGZmZmYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KaW5kZXggNzVjOTFmODY4NmU0YTVlMDg1MDEzYmIxMTkyMjVlZGM5N2E0NDVlNC4uYTczMThm
MzNhYWEzYTE5YjgxYjY4Y2QxNzVkZWQxYTliNTJjZDVmNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTkyLDEwICsx
OTIsMTEgQEAgY29uc3QgR2xvYmFsUHJvcGVydHkgPSAwCiBjb25zdCBHbG9iYWxWYXIgPSAxCiBj
b25zdCBDbG9zdXJlVmFyID0gMgogY29uc3QgTG9jYWxDbG9zdXJlVmFyID0gMwotY29uc3QgR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNAotY29uc3QgR2xvYmFsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcyA9IDUKLWNvbnN0IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzID0gNgotY29uc3QgRHluYW1pYyA9IDcKK2NvbnN0IE1vZHVsZVZhciA9IDQKK2NvbnN0
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDUKK2NvbnN0IEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Citjb25zdCBDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyA9IDcKK2NvbnN0IER5bmFtaWMgPSA4CiAKIGNvbnN0IFJlc29sdmVNb2RlTWFz
ayA9IDB4ZmZmZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDdlZjZiODdjMTcwYWQwODNiMWY1Mjlk
YTg4MzZjMDBjZGE2NGI0NzguLjVkNTEwY2Q4ZGRlYzMwODZjZWVjNjNlYzYwOTJiNDY4NGU5ODhh
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDQ1LDYgKzIwNDUsMTMgQEAgbWFjcm8gZ2V0R2xv
YmFsT2JqZWN0KGRzdCkKICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
IGVuZAogCittYWNybyBnZXRJbXBvcnRlZE1vZHVsZVNjb3BlKGRzdCkKKyAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig2LCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oZHN0LCB0MSkKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCitlbmQKKwogbWFjcm8gdmFySW5qZWN0aW9uQ2hlY2so
c2xvd1BhdGgpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCkBAIC0yMDg3LDEwICsyMDk0LDE1IEBAIF9sbGlu
dF9vcF9yZXNvbHZlX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcjoKLSAg
ICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKICAgICByZXNvbHZl
U2NvcGUoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5yTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBN
b2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgZ2V0
SW1wb3J0ZWRNb2R1bGVTY29wZSgxKQorICAgIGRpc3BhdGNoKDcpCisKIC5yR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwog
ICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKQEAgLTIyODEsMTMgKzIyOTMsMTggQEAg
X2xsaW50X29wX3B1dF90b19zY29wZToKICAgICBkaXNwYXRjaCg3KQogCiAucENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcywgLnBEeW5hbWljCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzLCAucE1vZHVsZVZhcgogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMo
MSwgMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgbG9hZFZhcmlhYmxl
KDEsIHQyLCB0MSwgdDApCiAgICAgcHV0Q2xvc3VyZVZhcigpCiAgICAgZGlzcGF0Y2goNykKIAor
LnBNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnBEeW5hbWljCisgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlf
d3JpdGVfZXJyb3IpCisgICAgZGlzcGF0Y2goNykKKwogLnBEeW5hbWljOgogICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF90b19zY29wZSkKICAgICBkaXNwYXRjaCg3KQpAQCAt
MjM4MSw0ICsyMzk4LDQgQEAgX2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCiAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
Ci0gICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgZGlzcGF0
Y2goMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDIxNTJhMmYyNzdhZGU1ODc5NzZhMWMzZjEyMDIzNzI5YjM4
YTU5YS4uNWMwMGU2NDZmNjAxMGU2YmE2ODYxZTM0Y2U5Y2Y3NzRhNWE4YzQ4YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTE5MTgsNiArMTkxOCwxMiBAQCBtYWNybyBnZXRHbG9iYWxPYmplY3QoZHN0KQogICAg
IHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCiBlbmQKIAorbWFjcm8gZ2V0SW1wb3J0ZWRNb2R1bGVT
Y29wZShkc3QpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDApCisgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKGRzdCwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KK2VuZAor
CiBtYWNybyB2YXJJbmplY3Rpb25DaGVjayhzbG93UGF0aCkKICAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKQEAg
LTE5NTcsMTAgKzE5NjMsMTUgQEAgX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAgZGlzcGF0
Y2goNykKIAogLnJDbG9zdXJlVmFyOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuckdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFy
LCAuck1vZHVsZVZhcgogICAgIHJlc29sdmVTY29wZSgpCiAgICAgZGlzcGF0Y2goNykKIAorLnJN
b2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MKKyAgICBnZXRJbXBvcnRlZE1vZHVsZVNjb3BlKDEpCisgICAgZGlz
cGF0Y2goNykKKwogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAg
YmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWlj
KQpAQCAtMjE0NCwxMyArMjE1NSwxOCBAQCBfbGxpbnRfb3BfcHV0X3RvX3Njb3BlOgogICAgIGRp
c3BhdGNoKDcpCiAKIC5wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6Ci0gICAgYmlu
ZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucER5bmFtaWMKKyAgICBi
aW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wTW9kdWxlVmFyCiAg
ICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQogICAgIHZhckluamVjdGlvbkNoZWNrKC5w
RHluYW1pYykKICAgICBsb2FkVmFyaWFibGUoMSwgdDApCiAgICAgcHV0Q2xvc3VyZVZhcigpCiAg
ICAgZGlzcGF0Y2goNykKIAorLnBNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwg
LnBEeW5hbWljCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVf
cmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCisgICAgZGlzcGF0Y2goNykKKwogLnBEeW5h
bWljOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF90b19zY29wZSkKICAg
ICBkaXNwYXRjaCg3KQpAQCAtMjIzMyw0ICsyMjQ5LDQgQEAgX2xsaW50X29wX2xvYWRfYXJyb3dm
dW5jdGlvbl90aGlzOgogICAgIGxvYWRwIEpTQXJyb3dGdW5jdGlvbjo6bV9ib3VuZFRoaXNbdDBd
LCB0MAogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
ICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxl
QW5hbHl6ZXIuY3BwCmluZGV4IGY2MjM4ZmI5NjgwMmJlNTM3ZTkxYWRjMjZiODJkODkwYjk1NDAz
MmQuLjY0MjU1YzViZTVlZmQ1MDk4YmZjM2MxNWFlMTg2ZmZhYzQ4ZmQ5MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC04Miw3ICs4
Miw5IEBAIHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPmxvb2tVcEltcG9y
dEVudHJ5KGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVu
dHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPnRyeUdldEltcG9ydEVu
dHJ5KGxvY2FsTmFtZS5nZXQoKSk7CisgICAgQVNTRVJUKG9wdGlvbmFsSW1wb3J0RW50cnkpOwor
ICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gKm9wdGlvbmFsSW1wb3J0RW50cnk7CiAgICAg
aWYgKHZhcmlhYmxlLmlzSW1wb3J0ZWROYW1lc3BhY2UoKSkgewogICAgICAgICAvLyBFeHBvcnRl
ZCBuYW1lc3BhY2UgYmluZGluZy4KICAgICAgICAgLy8gaW1wb3J0ICogYXMgbmFtZXNwYWNlIGZy
b20gIm1vZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCmluZGV4IDc1ODA4MzMyZTRkZDQwODQ0MmEwMzQzN2Q1NWMxMDVhY2MyOTVhYjEu
LjM1YjYyOTc5MjA3ZWZhYzg3NDU2ZDc3MjY0YjRiMGZhZmZlODYyZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMjcwLDYg
KzI3MCwxMiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKQogICAg
IFRIUk9XKGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorewor
ICAgIEJFR0lOKCk7CisgICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSk7Cit9CisKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9ub3QpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggMDY3ZGYwYzM4ZTkxMjBi
ZjcwN2NmZGU0MWMzZWZiZjJhNjg3MmVlMy4uMzAwOTg1NWZmNmJhMmQxNTI4M2RiOGY4NWYzY2U0
NTdkZGIyODY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKQEAgLTE4OSw2ICsxODksNyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2VudGVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2NhbGxl
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpOworU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0
ZV9lcnJvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25vdCk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VxKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmVxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCAw
MDI4NWE2NzU3NzM0NzQ3OWJkOWE5YjdiOTM5NTVjMjY0MzQ2NTdjLi4xYjkzZThmZDEyNTdkMGQ3
OGFhNzkzNjg4MTEyNGNhZjY5OTQ0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuY3BwCkBAIC0yMTksNiArMjE5LDEwIEBAIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9y
KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bnRheCBlcnJvciIp
KSk7CiB9CiAKK0pTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKK30KIAogSlNPYmpl
Y3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggZWMzMGEzZGM0NjZlMWVi
NDQ5YjNlNTg1YWE4MDQ5MmVmMTk4NDY0Ny4uZjQ2ZmUzNzZmYjg2YzY1MmU0YWVjODQ5MDEzY2Vh
MmRmM2M4MDFiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBAIC03NCw2
ICs3NCw3IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVy
cm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVy
cywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdlLgog
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwog
SlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7
CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiBpbmxpbmUgSlNPYmplY3QqIHRocm93UmFu
Z2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyBy
ZXR1cm4gc3RhdGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3Io
c3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFw
IHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAppbmRleCBjZGNlYjMwNDI2NWY5NzZkMDA3N2FlZmQ2NTdiNWI3YmFi
YmYyYTE2Li45NmVmZjQ1NThkMmU3M2Q5ZjNiNzQxZjY3ZDZlYmFkNWYyZjMyZWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC01Nyw2ICs1Nyw5IEBA
IGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwog
Y2xhc3MgSlNTY29wZTsKIGNsYXNzIFdlYkFzc2VtYmx5Q29kZUJsb2NrOworY2xhc3MgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jazsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xhc3MgSlNTY29wZTsK
IAogZW51bSBDb21waWxhdGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29t
cGlsYXRpb24gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IDRlMDk0ZmQ2NzliOWQ1YmNmNGI4ODZmMzYwMmM2YzFiMGZiMjA5
MWEuLjVhOGE3MzUxNzE2NWZjZDJhNzVmOGNjZGQ1MzQ0YzQzNjcxYjExODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg0LDYg
Kzg0LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1
ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgpAQCAtMzEyLDYgKzMxMyw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBl
RGF0YVZpZXcpXS5zdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0RhdGFWaWV3OjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5wcm90
b3R5cGUuZ2V0KCkpKTsKICAgICAKICAgICBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTTGV4aWNhbEVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMpKTsKKyAgICBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNN
b2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAgICAgbV9zdHJp
Y3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cmljdEV2YWxBY3RpdmF0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9kZWJ1Z2dl
clNjb3BlU3RydWN0dXJlLnNldChtX3ZtLCB0aGlzLCBEZWJ1Z2dlclNjb3BlOjpjcmVhdGVTdHJ1
Y3R1cmUobV92bSwgdGhpcykpOwogICAgIG1fd2l0aFNjb3BlU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgSlNXaXRoU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKQEAg
LTc5MSw2ICs3OTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZWRBcmd1bWVudHNTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX291dE9mQmFuZEFyZ3Vt
ZW50c1N0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCAxY2EzMWI3YjEyNmZiMmVmZDNiNzE5MGVhZjc2NGY1Y2RhMDk5MWZl
Li5lMzM0MDBlYWUyZDliZmRhNzdkYjFiYTY0NGIxYmU5NmY2Y2U4NjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzMiw2ICsyMzIs
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4aWNhbEVudmlyb25tZW50U3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlRW52aXJvbm1lbnRT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kaXJlY3RBcmd1bWVudHNT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zY29wZWRBcmd1bWVudHNT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vdXRPZkJhbmRBcmd1bWVu
dHNTdHJ1Y3R1cmU7CkBAIC00NDksNiArNDUwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiB3aXRoU2Nv
cGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBhY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52
aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmlyb25t
ZW50U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVk
QXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvdXRPZkJhbmRBcmd1
bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVj
dHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggOTUxNjMxOGQ3MDE2OWUzZGQ4YzJiZWY3ODMzMTI1
Njc1YzVlMjE4Yi4uNDQ4ZWE0MzFiN2I3Yzk4MjYyZDQxMGJmMDFmODQ5MzcxZDhhYjU3NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1l
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9u
bWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUmVnaXN0ZXI7
CiAgICAgCiBjbGFzcyBKU0xleGljYWxFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0Vudmlyb25tZW50
UmVjb3JkIHsKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQo
Vk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKICAgICAKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNiOGMyOWIyOTAyMjlhM2FjNGQ3YTdhODBkZjBkNzI4MTU4
ZjZjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNN
b2R1bGVFbnZpcm9ubWVudDo6c19pbmZvID0geyAiSlNNb2R1bGVFbnZpcm9ubWVudCIsICZCYXNl
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVFbnZpcm9ubWVudCkgfTsK
KworSlNNb2R1bGVFbnZpcm9ubWVudCogSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKAorICAg
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICAvLyBKU0xleGljYWxFbnZpcm9ubWVudCAocHJlY2lz
ZWx5LCBKU0Vudmlyb25tZW50UmVjb3JkKSBoYXMgdGhlIHN0b3JhZ2UgdG8gc3RvcmUgdGhlIHZh
cmlhYmxlIHNsb3RzIGFmdGVyIHRoZSBpdHMgY2xhc3Mgc3RvcmFnZS4KKyAgICAvLyBCZWNhdXNl
IHRoZSBvZmZzZXQgb2YgdGhlIHZhcmlhYmxlIHNsb3RzIGFyZSBmaXhlZCBpbiB0aGUgSlNFbnZp
cm9ubWVudFJlY29yZCwgaW5oZXJpdHRpbmcgdGhlc2UgY2xhc3MgYW5kIGFkZGluZyBuZXcgbWVt
YmVyIGZpZWxkIGlzIG5vdCBhbGxvd2VkLAorICAgIC8vIHRoZSBuZXcgbWVtYmVyIHdpbGwgb3Zl
cmxhcCB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8gVG8ga2VlcCB0aGUgSlNNb2R1bGVFbnZp
cm9ubWVudCBjb21wYXRpYmxlIHRvIHRoZSBKU0xleGljYWxFbnZpcm9ubWVudCBidXQgYWRkIHRo
ZSBuZXcgbWVtYmVyIHRvIHN0b3JlIHRoZSBKU01vZHVsZVJlY29yZCwgd2UgYWRkaXRpb25hbGx5
IGFsbG9jYXRlCisgICAgLy8gdGhlIHN0b3JhZ2UgYWZ0ZXIgdGhlIHZhcmlhYmxlIHNsb3RzLgor
ICAgIC8vCisgICAgLy8gSlNMZXhpY2FsRW52aXJvbm1lbnQ6CisgICAgLy8gICAgIFsgSlNMZXhp
Y2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXQorICAgIC8vCisgICAgLy8gSlNNb2R1
bGVFbnZpcm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJp
YWJsZSBzbG90cyBdWyBhZGRpdGlvbmFsIHNsb3RzIGZvciBKU01vZHVsZUVudmlyb25tZW50IF0K
KyAgICBKU01vZHVsZUVudmlyb25tZW50KiByZXN1bHQgPQorICAgICAgICBuZXcgKAorICAgICAg
ICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxKU01vZHVsZUVudmlyb25t
ZW50Pih2bS5oZWFwLCBKU01vZHVsZUVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZShzeW1ib2xU
YWJsZSkpKQorICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KHZtLCBzdHJ1Y3R1cmUsIGN1cnJl
bnRTY29wZSwgc3ltYm9sVGFibGUpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGlu
aXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lk
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNWYWx1ZSBpbml0
aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSk7CisgICAgdGhpcy0+bW9kdWxlUmVjb3JkU2xv
dCgpLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKK30KKwordm9pZCBKU01vZHVsZUVudmly
b25tZW50Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVs
ZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT52YXJpYWJs
ZXMoKSwgdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+c2NvcGVTaXplKCkpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmRTbG90KCkpOworfQorCitib29sIEpT
TW9kdWxlRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01v
ZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gdGhp
c09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50
eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAg
ICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50ID0gcmVz
b2x1dGlvbi5tb2R1bGVSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgIFByb3Bl
cnR5U2xvdCByZWRpcmVjdFNsb3QoaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAg
IGlmIChpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlTbG90KGltcG9ydGVkTW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgcmVkaXJlY3RTbG90KSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHJl
ZGlyZWN0U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgLy8g
RklYTUU6IGdldE93blByb3BlcnR5U2xvdCBjYW5ub3QgdGhyb3cgYW55IGVycm9ycy4KKyAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIGV4ZWMt
PmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCByZWRpcmVjdFNs
b3QuYXR0cmlidXRlcygpLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9u
bWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzQXJyYXksIEVudW1lcmF0
aW9uTW9kZSBtb2RlKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIGlmIChwcm9wZXJ0eU5hbWVz
QXJyYXkuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhaXIgOiB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+aW1wb3J0RW50cmllcygpKSB7
CisgICAgICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAg
ICAgICAgICBpZiAoIWltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4ZWMtPnZtKCkpKQorICAgICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZXNBcnJheS5hZGQoaW1wb3J0RW50cnkubG9jYWxOYW1lKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNBcnJheSwgbW9kZSk7Cit9CisK
K3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8gQWxsIGltcG9ydGVkIGJp
bmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gdGhpc09i
amVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50eXBl
ID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmV0dXJuIEJh
c2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30K
KworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBKU01v
ZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PihjZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KKyAg
ICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVz
b2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51
aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb246OlR5cGU6OlJlc29sdmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNWUxMmVlZmM1NDhiOWVl
NmViZjMxM2ZhN2E4ZDRjNzE2OTE0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAgLTAsMCArMSwxMDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBK
U01vZHVsZUVudmlyb25tZW50X2gKKyNkZWZpbmUgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisKKyNp
bmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3Jk
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBSZWdpc3RlcjsKKworY2xhc3MgSlNNb2R1
bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9ubWVudCB7CisgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNMZXhpY2FsRW52aXJvbm1lbnQgQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisK
KyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
SlNTY29wZSosIFN5bWJvbFRhYmxlKiwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVj
b3JkKik7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPm1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCk7CisgICAgICAgIHJldHVy
biBjcmVhdGUodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSwgaW5pdGlh
bFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCksIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTW9k
dWxlUmVjb3JkKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVsZVJl
Y29yZD4pPihCYXNlOjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpOworICAgIH0KKworICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKSAr
IHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KTsKKyAgICB9CisKKyAgICBKU01v
ZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtb2R1bGVS
ZWNvcmRTbG90KCkuZ2V0KCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
KTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAg
c3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKworcHJpdmF0ZToKKyAgICBKU01vZHVs
ZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CisK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9k
dWxlUmVjb3JkKik7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPiYgbW9k
dWxlUmVjb3JkU2xvdCgpCisgICAgeworICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxXcml0
ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykg
KyBvZmZzZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJsZSgpKSk7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworaW5s
aW5lIEpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1lbnQoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9s
VGFibGUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVF
bnZpcm9ubWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKaW5kZXggN2I2MDYzNzRhNjA2MGI3NzAyMGM0ZWY0NTEyZTkyNDVlMDNmM2Zj
NS4uOGU4MmVmYTdmMTJhNzE3NzU0MWE5M2NkMTZjMzdmNzQ2YWQzOTMxYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKIApAQCAtNjAsMTAgKzYxLDQ5IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBKU01vZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGNl
bGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnQpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZXBlbmRlbmNpZXNNYXApOwogfQogCit2
b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVsZU5hbWUu
aW1wbCgpKTsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9zdGFyRXhwb3J0RW50cmllcy5h
ZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRJbXBv
cnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCit7CisgICAgYm9vbCBpc05ld0VudHJ5
ID0gbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSkuaXNO
ZXdFbnRyeTsKKyAgICBBU1NFUlRfVU5VU0VEKGlzTmV3RW50cnksIGlzTmV3RW50cnkpOyAvLyBU
aGlzIGlzIGd1YXJhbnRlZWQgYnkgdGhlIHBhcnNlci4KK30KKwordm9pZCBKU01vZHVsZVJlY29y
ZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQoreworICAgIGJvb2wg
aXNOZXdFbnRyeSA9IG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCks
IGVudHJ5KS5pc05ld0VudHJ5OworICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdF
bnRyeSk7IC8vIFRoaXMgaXMgZ3VhcmFudGVlZCBieSB0aGUgcGFyc2VyLgorfQorCithdXRvIEpT
TW9kdWxlUmVjb3JkOjp0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogbG9jYWxO
YW1lKSAtPiBPcHRpb25hbDxJbXBvcnRFbnRyeT4KK3sKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9y
ID0gbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0g
bV9pbXBvcnRFbnRyaWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1
cm4gT3B0aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7Cit9CisKK2F1dG8gSlNN
b2R1bGVSZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnRO
YW1lKSAtPiBPcHRpb25hbDxFeHBvcnRFbnRyeT4KK3sKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9y
ID0gbV9leHBvcnRFbnRyaWVzLmZpbmQoZXhwb3J0TmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yID09
IG1fZXhwb3J0RW50cmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0
dXJuIE9wdGlvbmFsPEV4cG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOworfQorCiBhdXRvIEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYg
ZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRyeQogewogICAgIHJldHVybiBF
eHBvcnRFbnRyeSB7IFR5cGU6OkxvY2FsLCBleHBvcnROYW1lLCBJZGVudGlmaWVyKCksIElkZW50
aWZpZXIoKSwgbG9jYWxOYW1lLCB2YXJpYWJsZSB9OwpAQCAtNzksNiArMTE5LDIxIEBAIGF1dG8g
SlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlm
aWVyJiBleHBvcnROYW1lLCBjCiAgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5kaXJl
Y3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKIH0KIAorYXV0byBKU01vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbjo6bm90Rm91bmQoKSAtPiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIFJlc29sdXRp
b24geyBUeXBlOjpOb3RGb3VuZCwgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07Cit9CisKK2F1dG8g
SlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OmVycm9yKCkgLT4gUmVzb2x1dGlvbgoreworICAg
IHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6RXJyb3IsIG51bGxwdHIsIElkZW50aWZpZXIoKSB9
OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKSAtPiBS
ZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIFJlc29sdXRpb24geyBUeXBlOjpBbWJpZ3VvdXMsIG51
bGxwdHIsIElkZW50aWZpZXIoKSB9OworfQorCiBzdGF0aWMgSlNWYWx1ZSBpZGVudGlmaWVyVG9K
U1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsK
ICAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKQpAQCAtOTMsNiArMTQ4LDI2NiBAQCBKU01v
ZHVsZVJlY29yZCogSlNNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihw
YWlyLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpKSk7CiB9
CiAKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVJbXBvcnQoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpIC0+IFJlc29sdXRpb24KK3sKKyAgICBPcHRpb25h
bDxJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IHRyeUdldEltcG9ydEVudHJ5KGxv
Y2FsTmFtZS5pbXBsKCkpOworICAgIGlmICghb3B0aW9uYWxJbXBvcnRFbnRyeSkKKyAgICAgICAg
cmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CisKKyAgICBjb25zdCBhdXRvJiBpbXBvcnRF
bnRyeSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OworICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVz
cGFjZShleGVjLT52bSgpKSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7
CisKKyAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9y
dGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgIHJldHVybiBp
bXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1l
KTsKK30KKworc3RydWN0IFJlc29sdmVRdWVyeSB7CisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKQorICAg
ICAgICA6IG1vZHVsZVJlY29yZChtb2R1bGVSZWNvcmQpCisgICAgICAgICwgZXhwb3J0TmFtZShl
eHBvcnROYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvbHZlUXVlcnkoSlNNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZCwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkKKyAgICAgICAg
OiBSZXNvbHZlUXVlcnkobW9kdWxlUmVjb3JkLCBleHBvcnROYW1lLmltcGwoKSkKKyAgICB7Cisg
ICAgfQorCisgICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIFJlc29s
dmVRdWVyeShFbXB0eVZhbHVlVGFnKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIERlbGV0ZWRW
YWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9OworICAgIFJlc29sdmVRdWVyeShEZWxldGVkVmFsdWVU
YWcpCisgICAgICAgIDogbW9kdWxlUmVjb3JkKG51bGxwdHIpCisgICAgICAgICwgZXhwb3J0TmFt
ZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBp
c0VtcHR5VmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFleHBvcnROYW1lOwor
ICAgIH0KKworICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGV4cG9ydE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAg
ICAvLyBUaGUgbW9kdWxlIHJlY29yZCBpcyBub3QgbWFya2VkIGZyb20gdGhlIEdDLiBCdXQgdGhl
c2UgcmVjb3JkcyBhcmUgcmVhY2hhYmxlIGZyb20gdGhlIEpTR2xvYmFsT2JqZWN0LgorICAgIC8v
IFNvIHdlIGRvbid0IGNhcmUgdGhlIHJlYWNoYWJpbGl0eSB0byB0aGlzIHJlY29yZC4KKyAgICBK
U01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4gZXhwb3J0TmFtZTsKK307CisKK3N0cnVjdCBSZXNvbHZlUXVlcnlIYXNoIHsKKyAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBSZXNvbHZlUXVlcnkmLCBjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9Owor
CitpbmxpbmUgdW5zaWduZWQgUmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaChjb25zdCBSZXNvbHZlUXVl
cnkmIHF1ZXJ5KQoreworICAgIHJldHVybiBXVEY6OlB0ckhhc2g8SlNNb2R1bGVSZWNvcmQqPjo6
aGFzaChxdWVyeS5tb2R1bGVSZWNvcmQpICsgSWRlbnRpZmllclJlcEhhc2g6Omhhc2gocXVlcnku
ZXhwb3J0TmFtZSk7Cit9CisKK2lubGluZSBib29sIFJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKGNv
bnN0IFJlc29sdmVRdWVyeSYgbGhzLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJocykKK3sKKyAgICBy
ZXR1cm4gbGhzLm1vZHVsZVJlY29yZCA9PSByaHMubW9kdWxlUmVjb3JkICYmIGxocy5leHBvcnRO
YW1lID09IHJocy5leHBvcnROYW1lOworfQorCitzdGF0aWMgSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb24gcmVzb2x2ZUV4cG9ydExvb3AoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBSZXNvbHZlUXVl
cnkmIHJvb3QpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLXJlc29sdmVleHBvcnQKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGF2b2lk
cyBDKysgcmVjdXJzaW9uIG9mIHRoZSBuYWl2ZSBSZXNvbHZlRXhwb3J0IGltcGxlbWVudGF0aW9u
LgorICAgIC8vIEZsYXR0ZW4gdGhlIHJlY3Vyc2lvbiB0byB0aGUgbG9vcCB3aXRoIHRoZSB0YXNr
IHF1ZXVlIGFuZCBmcmFtZXMuCisgICAgLy8KKyAgICAvLyAxLiBwZW5kaW5nVGFza3MKKyAgICAv
LyAgICAgV2UgZW5xdWV1ZSB0aGUgcmVjdXJzaXZlIHJlc29sdmVFeHBvcnQgY2FsbCB0byB0aGlz
IHF1ZXVlIHRvIGF2b2lkIHJlY3Vyc2l2ZSBjYWxscyBpbiBDKysuCisgICAgLy8gICAgIFRoZSB0
YXNrIGhhcyAzIHR5cGVzLiAoMSkgUXVlcnksICgyKSBJbmRpcmVjdEZhbGxiYWNrIGFuZCAoMykg
R2F0aGVyU3RhcnMuCisgICAgLy8gICAgICgxKSBRdWVyeQorICAgIC8vICAgICAgICAgUXVlcnlp
bmcgdGhlIHJlc29sdXRpb24gdG8gdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgIC8vICAgICAoMikg
SW5kaXJlY3RGYWxsYmFjaworICAgIC8vICAgICAgICAgRXhhbWluZSB0aGUgcmVzdWx0IG9mIHRo
ZSBpbmRpcmVjdCBleHBvcnQgcmVzb2x1dGlvbi4gT25seSB3aGVuIHRoZSBpbmRpcmVjdCBleHBv
cnQgcmVzb2x1dGlvbiBmYWlscywKKyAgICAvLyAgICAgICAgIHdlIGxvb2sgaW50byB0aGUgc3Rh
ciBleHBvcnRzLiAoc3RlcCA1LWEtdmkpLgorICAgIC8vICAgICAoMykgR2F0aGVyU3RhcnMKKyAg
ICAvLyAgICAgICAgIEV4YW1pbmUgdGhlIHJlc3VsdCBvZiB0aGUgc3RhciBleHBvcnQgcmVzb2x1
dGlvbnMuCisgICAgLy8KKyAgICAvLyAyLiBmcmFtZXMKKyAgICAvLyAgICAgV2hlbiB0aGUgc3Bl
YyBjYWxscyB0aGUgcmVzb2x2ZUV4cG9ydCByZWN1cnNpdmVseSwgaW5zdGVhZCB3ZSBhcHBlbmQg
dGhlIGZyYW1lCisgICAgLy8gICAgICh0aGF0IGhvbGRzIHRoZSByZXN1bHQgcmVzb2x1dGlvbikg
dG8gdGhlIGZyYW1lcyBhbmQgZW5xdWV1ZSB0aGUgdGFzayB0byB0aGUgcGVuZGluZ1Rhc2tzLgor
ICAgIC8vICAgICBUaGUgZW50cnkgaW4gdGhlIGZyYW1lcyBtZWFucyB0aGUgKmxvY2FsKiByZXNv
bHV0aW9uIHJlc3VsdCBvZiB0aGUgc3BlY2lmaWMgcmVjdXJzaXZlIHJlc29sdmVFeHBvcnQuCisg
ICAgLy8KKyAgICAvLyBXZSBzaG91bGQgbWFpbnRhaW4gdGhlIGxvY2FsIHJlc29sdXRpb24gcmVz
dWx0IGluc3RlYWQgb2YgaG9sZGluZyB0aGUgZ2xvYmFsIHJlc29sdXRpb24gcmVzdWx0IG9ubHku
CisgICAgLy8gRm9yIGV4YW1wbGUsCisgICAgLy8KKyAgICAvLyAgICAgc3RhcgorICAgIC8vICgx
KSAtLS0+ICgyKSAiUmVzb2x2ZSIKKyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgIHwKKyAgICAv
LyAgICAgICstPiAoMykgIk5vdEZvdW5kIgorICAgIC8vICAgICAgfAorICAgIC8vICAgICAgfCAg
ICAgICBzdGFyCisgICAgLy8gICAgICArLT4gKDQpIC0tLT4gKDUpICJSZXNvbHZlIiBbaGVyZV0K
KyAgICAvLyAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgIHwKKyAgICAvLyAg
ICAgICAgICAgICAgICstPiAoNikgIkVycm9yIgorICAgIC8vCisgICAgLy8gQ29uc2lkZXIgdGhl
IGFib3ZlIGdyYXBoLiBUaGUgbnVtYmVycyByZXByZXNlbnRzIHRoZSBtb2R1bGVzLiBOb3cgd2Ug
YXJlIFtoZXJlXS4KKyAgICAvLyBJZiB3ZSBvbmx5IGhvbGQgdGhlIGdsb2JhbCByZXNvbHV0aW9u
IHJlc3VsdCBkdXJpbmcgdGhlIHJlc29sdmVFeHBvcnQgb3BlcmF0aW9uLCBbaGVyZV0sCisgICAg
Ly8gd2UgZGVjaWRlIHRoZSBlbnRpcmUgcmVzdWx0IG9mIHJlc29sdmVFeHBvcnQgaXMgIkFtYmln
dW91cyIsIGJlY2F1c2UgdGhlcmUgYXJlIG11bHRpcGxlCisgICAgLy8gIlJlc2xvdmUiIChpbiBt
b2R1bGUgKDIpIGFuZCAoNSkpLiBIb3dldmVyLCB0aGlzIHNob3VsZCBiZWNvbWUgIkVycm9yIiBi
ZWNhdXNlICg2KSB3aWxsCisgICAgLy8gcHJvcGFnYXRlICJFcnJvciIgc3RhdGUgdG8gdGhlICg0
KSwgKDQpIHdpbGwgYmVjb21lICJFcnJvciIgYW5kIHRoZW4sICgxKSB3aWxsIGJlY29tZQorICAg
IC8vICJFcnJvciIuIFdlIHNob3VsZCBhZ2dyZWdhdGUgdGhlIHJlc3VsdHMgYXQgdGhlIHN0YXIg
ZXhwb3J0cyBwb2ludCAoKDQpIGFuZCAoMSkpLgorCisgICAgdXNpbmcgUmVzb2x1dGlvbiA9IEpT
TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlc29s
dmVRdWVyeSwgUmVzb2x2ZVF1ZXJ5SGFzaCwgV1RGOjpDdXN0b21IYXNoVHJhaXRzPFJlc29sdmVR
dWVyeT4+IFJlc29sdmVTZXQ7CisgICAgZW51bSBjbGFzcyBUeXBlIHsgUXVlcnksIEluZGlyZWN0
RmFsbGJhY2ssIEdhdGhlclN0YXJzIH07CisgICAgc3RydWN0IFRhc2sgeworICAgICAgICBSZXNv
bHZlUXVlcnkgcXVlcnk7CisgICAgICAgIFR5cGUgdHlwZTsKKyAgICB9OworCisgICAgVmVjdG9y
PFRhc2ssIDg+IHBlbmRpbmdUYXNrczsKKyAgICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAg
SGFzaFNldDxKU01vZHVsZVJlY29yZCo+IHN0YXJTZXQ7CisgICAgVmVjdG9yPFJlc29sdXRpb24s
IDg+IGZyYW1lczsKKworICAgIGZyYW1lcy5hcHBlbmQoUmVzb2x1dGlvbjo6bm90Rm91bmQoKSk7
CisKKyAgICAvLyBDYWxsIHdoZW4gdGhlIHF1ZXJ5IGlzIG5vdCByZXNvbHZlZCBpbiB0aGUgY3Vy
cmVudCBtb2R1bGUuCisgICAgLy8gSXQgd2lsbCBlbnF1ZXVlIHRoZSBzdGFyIHJlc29sdXRpb24g
cmVxdWVzdHMuIFJldHVybiAiZmFsc2UiIGlmIHRoZSBlcnJvciBvY2N1cnMuCisgICAgYXV0byBy
ZXNvbHZlTm9uTG9jYWwgPSBbJl0oY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSkgLT4gYm9vbCB7
CisgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1yZXNvbHZlZXhwb3J0CisgICAgICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjMsIHN0
ZXAgNgorICAgICAgICAvLyBJZiB0aGUgImRlZmF1bHQiIG5hbWUgaXMgbm90IHJlc29sdmVkIGlu
IHRoZSBjdXJyZW50IG1vZHVsZSwgd2UgbmVlZCB0byB0aHJvdyBhbiBlcnJvciBhbmQgc3RvcCBy
ZXNvbHV0aW9uIGltbWVkaWF0ZWx5LAorICAgICAgICAvLyBSYXRpb25hbGUgdG8gdGhpcyBlcnJv
cjogQSBkZWZhdWx0IGV4cG9ydCBjYW5ub3QgYmUgcHJvdmlkZWQgYnkgYW4gZXhwb3J0ICouCisg
ICAgICAgIGlmIChxdWVyeS5leHBvcnROYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZh
dWx0S2V5d29yZC5pbXBsKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
Ly8gc3RlcCA3LCBJZiBleHBvcnRTdGFyU2V0IGNvbnRhaW5zIG1vZHVsZSwgdGhlbiByZXR1cm4g
bnVsbC4KKyAgICAgICAgaWYgKCFzdGFyU2V0LmFkZChxdWVyeS5tb2R1bGVSZWNvcmQpLmlzTmV3
RW50cnkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBFbnF1ZXVlIHRo
ZSB0YXNrIHRvIGdhdGhlciB0aGUgcmVzdWx0cyBvZiB0aGUgc3RhcnMuCisgICAgICAgIC8vIEFu
ZCBhcHBlbmQgdGhlIG5ldyBSZXNvbHV0aW9uIGZyYW1lIHRvIGdhdGhlciB0aGUgbG9jYWwgcmVz
dWx0IG9mIHRoZSBzdGFycy4KKyAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgcXVl
cnksIFR5cGU6OkdhdGhlclN0YXJzIH0pOworICAgICAgICBmcmFtZXMuYXBwZW5kKFJlc29sdXRp
b246Om5vdEZvdW5kKCkpOworCisgICAgICAgIC8vIEVucXVldWUgdGhlIHRhc2tzIGluIHJldmVy
c2Ugb3JkZXIuCisgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHF1ZXJ5Lm1vZHVsZVJlY29y
ZC0+c3RhckV4cG9ydEVudHJpZXMoKS5yYmVnaW4oKSwgZW5kID0gcXVlcnkubW9kdWxlUmVjb3Jk
LT5zdGFyRXhwb3J0RW50cmllcygpLnJlbmQoKTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9y
KSB7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBzdGFyTW9kdWxlTmFtZSA9ICppdGVyYXRvcjsK
KyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IHF1ZXJ5
Lm1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7CisgICAgICAgICAgICBwZW5k
aW5nVGFza3MuYXBwZW5kKFRhc2sgeyBSZXNvbHZlUXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNvcmQs
IHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpLCBUeXBlOjpRdWVyeSB9KTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IHJl
c29sdXRpb24gdmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4KKyAgICBhdXRvIGN1cnJlbnRUb3AgPSBb
Jl0gKCkgLT4gUmVzb2x1dGlvbiYgeworICAgICAgICBBU1NFUlQoIWZyYW1lcy5pc0VtcHR5KCkp
OworICAgICAgICByZXR1cm4gZnJhbWVzLmxhc3QoKTsKKyAgICB9OworCisgICAgLy8gTWVyZ2Ug
dGhlIGdpdmVuIHJlc29sdXRpb24gdG8gdGhlIGN1cnJlbnQgcmVzb2x1dGlvbiB2YWx1ZSBvZiB0
aGUgdG9wIGZyYW1lLgorICAgIC8vIElmIHRoZXJlIGlzIGFtYmlndWl0eSwgcmV0dXJuICJmYWxz
ZSIuIFdoZW4gdGhlICJmYWxzZSIgaXMgcmV0dXJuZWQsIHdlIHNob3VsZCBtYWtlIHRoZSByZXN1
bHQgImFtYmlndW91cyIuCisgICAgYXV0byBtZXJnZVRvQ3VycmVudFRvcCA9IFsmXSAoY29uc3Qg
UmVzb2x1dGlvbiYgcmVzb2x1dGlvbikgLT4gYm9vbCB7CisgICAgICAgIGlmIChyZXNvbHV0aW9u
LnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICBpZiAoY3VycmVudFRvcCgpLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlw
ZTo6Tm90Rm91bmQpIHsKKyAgICAgICAgICAgIGN1cnJlbnRUb3AoKSA9IHJlc29sdXRpb247Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjdXJyZW50
VG9wKCkubW9kdWxlUmVjb3JkICE9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkIHx8IGN1cnJlbnRU
b3AoKS5sb2NhbE5hbWUgIT0gcmVzb2x1dGlvbi5sb2NhbE5hbWUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIHBlbmRpbmdU
YXNrcy5hcHBlbmQoVGFzayB7IHJvb3QsIFR5cGU6OlF1ZXJ5IH0pOworICAgIHdoaWxlICghcGVu
ZGluZ1Rhc2tzLmlzRW1wdHkoKSkgeworICAgICAgICBjb25zdCBhdXRvIHRhc2sgPSBwZW5kaW5n
VGFza3MudGFrZUxhc3QoKTsKKyAgICAgICAgY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSA9IHRh
c2sucXVlcnk7CisKKyAgICAgICAgc3dpdGNoICh0YXNrLnR5cGUpIHsKKyAgICAgICAgY2FzZSBU
eXBlOjpRdWVyeTogeworICAgICAgICAgICAgaWYgKCFyZXNvbHZlU2V0LmFkZCh0YXNrLnF1ZXJ5
KS5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBK
U01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gcXVlcnkubW9kdWxlUmVjb3JkOworICAgICAg
ICAgICAgY29uc3QgT3B0aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5PiBvcHRpb25h
bEV4cG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkLT50cnlHZXRFeHBvcnRFbnRyeShxdWVyeS5leHBv
cnROYW1lLmdldCgpKTsKKyAgICAgICAgICAgIGlmICghb3B0aW9uYWxFeHBvcnRFbnRyeSkgewor
ICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgZXhwb3J0ZWQgYmluZGlu
ZyBpbiB0aGUgY3VycmVudCBtb2R1bGUsCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBs
b29rIGludG8gdGhlIHN0YXJzLgorICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZU5vbkxvY2Fs
KHRhc2sucXVlcnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6ZXJy
b3IoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSAqb3B0aW9uYWxFeHBvcnRFbnRyeTsKKyAg
ICAgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgeworICAgICAgICAgICAgY2FzZSBK
U01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICAgICAgY2Fz
ZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAg
ICAgICAgICBpZiAoIW1lcmdlVG9DdXJyZW50VG9wKFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpU
eXBlOjpSZXNvbHZlZCwgbW9kdWxlUmVjb3JkLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUgfSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6
RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OiB7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVS
ZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gbW9kdWxlUmVjb3JkLT5ob3N0UmVzb2x2ZUlt
cG9ydGVkTW9kdWxlKGV4ZWMsIGV4cG9ydEVudHJ5Lm1vZHVsZU5hbWUpOworCisgICAgICAgICAg
ICAgICAgLy8gV2hlbiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGRvZXMgbm90IHByb2R1Y2UgYW55IHJl
c29sdmVkIGJpbmRpbmcsIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycyBpbiB0aGUgKmN1
cnJlbnQqCisgICAgICAgICAgICAgICAgLy8gbW9kdWxlLiBUbyBkbyB0aGlzLCB3ZSBhcHBlbmQg
dGhlIGBJbmRpcmVjdEZhbGxiYWNrYCB0YXNrIHRvIHRoZSB0YXNrIHF1ZXVlLgorICAgICAgICAg
ICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpJbmRpcmVjdEZh
bGxiYWNrIH0pOworICAgICAgICAgICAgICAgIC8vIEFuZCBhcHBlbmQgdGhlIG5ldyBSZXNvbHV0
aW9uIGZyYW1lIHRvIGNoZWNrIHRoZSBpbmRpcmVjdCBleHBvcnQgd2lsbCBiZSByZXNvbHZlZCBv
ciBub3QuCisgICAgICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9uOjpub3RGb3Vu
ZCgpKTsKKyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBSZXNvbHZl
UXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNvcmQsIGV4cG9ydEVudHJ5LmltcG9ydE5hbWUpLCBUeXBl
OjpRdWVyeSB9KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBUeXBlOjpJbmRpcmVjdEZhbGxiYWNrOiB7CisgICAgICAgICAgICBjb25zdCBhdXRvIHJlc29s
dXRpb24gPSBmcmFtZXMudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgaWYgKHJlc29sdXRpb24u
dHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAgICAgIC8v
IEluZGlyZWN0IGV4cG9ydCBlbnRyeSBkb2VzIG5vdCBwcm9kdWNlIGFueSByZXNvbHZlZCBiaW5k
aW5nLgorICAgICAgICAgICAgICAgIC8vIFNvIHdlIHdpbGwgaW52ZXN0aWdhdGUgdGhlIHN0YXJz
LgorICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZU5vbkxvY2FsKHRhc2sucXVlcnkpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6ZXJyb3IoKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgaW5kaXJl
Y3QgZXhwb3J0IGVudHJ5IHByb2R1Y2VzIFJlc29sdmVkLCB3ZSBzaG91bGQgbWVyZ2UgaXQgdG8g
dGhlIHVwcGVyIGZyYW1lLgorICAgICAgICAgICAgLy8gQW5kIGRvIG5vdCBpbnZlc3RpZ2F0ZSB0
aGUgc3RhcnMgb2YgdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgICAgICAgICAgaWYgKCFtZXJnZVRv
Q3VycmVudFRvcChyZXNvbHV0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlv
bjo6YW1iaWd1b3VzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgVHlwZTo6R2F0aGVyU3RhcnM6IHsKKyAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBzdGFy
IHJlc29sdXRpb24gdG8gdGhlIHVwcGVyIGZyYW1lLgorICAgICAgICAgICAgY29uc3QgYXV0byBz
dGFyUmVzb2x1dGlvbiA9IGZyYW1lcy50YWtlTGFzdCgpOworICAgICAgICAgICAgaWYgKCFtZXJn
ZVRvQ3VycmVudFRvcChzdGFyUmVzb2x1dGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJl
c29sdXRpb246OmFtYmlndW91cygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChmcmFtZXMuc2l6ZSgpID09IDEpOworICAgIHJl
dHVybiBmcmFtZXNbMF07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnQo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKSAtPiBSZXNvbHV0
aW9uCit7CisgICAgcmV0dXJuIHJlc29sdmVFeHBvcnRMb29wKGV4ZWMsIFJlc29sdmVRdWVyeSh0
aGlzLCBleHBvcnROYW1lLmltcGwoKSkpOworfQorCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5r
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgc291cmNlQ29kZSgp
KTsKQEAgLTEwMSwxMSArNDE2LDEyMCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX21vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKKyAgICBpbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyhleGVjLCBleGVjdXRhYmxlKTsKIH0KIAotSlNWYWx1ZSBKU01vZHVs
ZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqKQordm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFu
dGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCiB7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorCisgICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKTsKKyAgICBTeW1ib2xUYWJsZSog
c3ltYm9sVGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xU
YWJsZSgpOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNN
b2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpW
YWx1ZSgpLCB0aGlzKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVj
bGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDku
CisgICAgLy8gRW5zdXJlIGFsbCB0aGUgaW5kaXJlY3QgZXhwb3J0cyBhcmUgY29ycmVjdGx5IHJl
c29sdmVkIHRvIHVuaXF1ZSBiaW5kaW5ncy4KKyAgICAvLyBFdmVuIGlmIHdlIGF2b2lkZWQgZHVw
bGljYXRlIGV4cG9ydHMgaW4gdGhlIHBhcnNlciwgc3RpbGwgYW1iaWd1b3VzIGV4cG9ydHMgb2Nj
dXIgZHVlIHRvIHRoZSBzdGFyIGV4cG9ydCAoYGV4cG9ydCAqIGZyb20gIm1vZCJgKS4KKyAgICAv
LyBXaGVuIHdlIHNlZSB0aGlzIHR5cGUgb2YgYW1iaWd1aXR5IGZvciB0aGUgaW5kaXJlY3QgZXhw
b3J0cyBoZXJlLCB0aHJvdyBhIHN5bnRheCBlcnJvci4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkg
PSBwYWlyLnZhbHVlOworICAgICAgICBpZiAoZXhwb3J0RW50cnkudHlwZSA9PSBKU01vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7CisgICAgICAgICAgICBjb25zdCBh
dXRvIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5h
bWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcg
bmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90
IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2Ug
UmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4
RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUg
JyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSBy
ZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJy
b3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJ
bmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29s
dmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1
bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0
ZXAgMTIuCisgICAgLy8gSW5zdGFudGlhdGUgbmFtZXNwYWNlIG9iamVjdHMgYW5kIGluaXRpYWxp
emUgdGhlIGJpbmRpbmdzIHdpdGggdGhlbSBpZiByZXF1aXJlZC4KKyAgICAvLyBBbmQgZW5zdXJl
IHRoYXQgYWxsIHRoZSBpbXBvcnRzIGNvcnJlY3RseSByZXNvbHZlZCB0byB1bmlxdWUgYmluZGlu
Z3MuCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7CisgICAg
ICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgSlNNb2R1
bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVj
LCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAgICAgaWYgKGltcG9ydEVudHJ5Lmlz
TmFtZXNwYWNlKHZtKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IE1vZHVsZU5hbWVzcGFjZU9i
amVjdCB3aWxsIGJlIGltcGxlbWVudGVkLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcwNQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBv
cnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CisgICAgICAgICAgICBzd2l0Y2ggKHJl
c29sdXRpb24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RG
b3VuZDoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmco
IkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1l
LmltcGwoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAg
ICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5k
aW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGNh
bm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtl
U3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2
ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQgc3Rl
cCAxNC4KKyAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgY29udGFpbnMgdGhlIGhlYXAgYWxsb2Nh
dGVkICJ2YXIiLCAibGV0IiBhbmQgImNvbnN0Ii4KKyAgICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBl
bnZpcm9ubWVudCwgd2UgaW5pdGlhbGl6ZWQgYWxsIHRoZSBzbG93IHdpdGggZW1wdHksIGl0J3Mg
b2sgZm9yIGxleGljYWwgdmFsdWVzLgorICAgIC8vIEJ1dCBmb3IgInZhciIsIHdlIHNob3VsZCBp
bml0aWFsaXplIGl0IHdpdGggdW5kZWZpbmVkLgorICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFi
bGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGVudHJ5ID0g
c3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOworICAgICAgICBWYXJPZmZzZXQg
b2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2so
KSkKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5nZXQoKSksIGpzVW5kZWZpbmVk
KCksIGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisg
ICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDE2LWEtaXYuCisgICAgLy8gSW5pdGlhbGl6
ZSBoZWFwIGFsbG9jYXRlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgICAgLy8gVGhleSBjYW4g
YmUgY2FsbGVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIHVuZGVy
IGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAgICBmb3IgKHNpemVfdCBpID0gMCwgbnVtYmVyT2ZG
dW5jdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IGkg
PCBudW1iZXJPZkZ1bmN0aW9uczsgKytpKSB7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5m
dW5jdGlvbkRlY2woaSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGVudHJ5ID0gc3ltYm9sVGFibGUt
PmdldCh1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmltcGwoKSk7CisgICAgICAg
IFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKCFvZmZz
ZXQuaXNTdGFjaygpKSB7CisgICAgICAgICAgICBBU1NFUlQoIXVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLT5uYW1lKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIGlmICh2bS50eXBlUHJvZmls
ZXIoKSB8fCB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpIHsKKyAgICAgICAgICAgICAgICB2bS5m
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLT5zb3VyY2VJRCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksCisgICAgICAg
ICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5k
T2Zmc2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5s
aW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlKCkpLCBtb2R1bGVFbnZpcm9u
bWVudCk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhl
YywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIGZhbHNlKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KHZtLCB0aGlz
LCBtb2R1bGVFbnZpcm9ubWVudCk7Cit9CisKK0pTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1
dGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBl
eGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0
KCksIGV4ZWMsIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCkpOworICAgIG1fbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuY2xlYXIoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgU3Ry
aW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlkKQpA
QCAtMTI5LDIzICs1NTMsMjUgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6ZHVtcCgpCiAgICAgICAg
IGRhdGFMb2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxu
Iik7CiAKICAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgp
LCAiIGVudHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50
cmllcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFp
ci52YWx1ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1
ZS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1
bGVSZXF1ZXN0KSwgIilcbiIpOworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0
RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7
CisgICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGltcG9ydEVu
dHJ5LmltcG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5s
b2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoaW1wb3J0RW50cnkubW9kdWxl
UmVxdWVzdCksICIpXG4iKTsKKyAgICB9CiAKICAgICBkYXRhTG9nKCIgICAgRXhwb3J0OiAiLCBt
X2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwogICAgIGZvciAoY29uc3QgYXV0
byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgewotICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYg
ZW50cnkgPSBwYWlyLnZhbHVlOwotICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAg
ICAgY29uc3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBzd2l0Y2gg
KGV4cG9ydEVudHJ5LnR5cGUpIHsKICAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9j
YWw6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUo
ZW50cnkubG9jYWxOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xv
Y2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuZXhwb3J0TmFtZSks
ICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmxvY2FsTmFtZSksICIpXG4i
KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6
Ok5hbWVzcGFjZToKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJl
eHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBw
cmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBkYXRh
TG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0
RW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRy
eS5tb2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1l
KSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9k
dWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1l
KGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZXhw
b3J0RW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRF
bnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
aAppbmRleCA4MWRhMzk2NmU4YzVhOGRhOTMwNGQyODJmNGZiY2E5NGYyNGVhZTQ4Li45NGU5MmFk
MDNlZjZiMmEyNjQyMzc1MDFiN2U3NWYyMTViYWZhNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc4LDggKzc5LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIH07CiAKICAgICB0eXBlZGVmIFdU
Rjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhh
c2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydE1hcDsKLSAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJS
ZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRNYXA7
CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEltcG9ydEVu
dHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+Pj4gSW1wb3J0RW50cmllczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRFbnRyaWVzOwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKIApAQCAtMTAwLDI1ICsxMDEsNDkgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHZvaWQgYWRkSW1wb3J0RW50cnko
Y29uc3QgSW1wb3J0RW50cnkmKTsKICAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9y
dEVudHJ5Jik7CiAKLSAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKKyAgICBPcHRpb25hbDxJ
bXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFt
ZSk7CisgICAgT3B0aW9uYWw8RXhwb3J0RW50cnk+IHRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRT
dHJpbmdJbXBsKiBleHBvcnROYW1lKTsKIAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KICAgICBjb25zdCBJZGVudGlmaWVy
JiBtb2R1bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUtleTsgfQogICAgIGNvbnN0IE9y
ZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXF1ZXN0ZWRNb2R1bGVzOyB9Ci0gICAgY29uc3QgRXhwb3J0TWFwJiBleHBvcnRFbnRyaWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9Ci0gICAgY29uc3QgSW1wb3J0TWFwJiBp
bXBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRFbnRyaWVzOyB9CisgICAgY29u
c3QgRXhwb3J0RW50cmllcyYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0
RW50cmllczsgfQorICAgIGNvbnN0IEltcG9ydEVudHJpZXMmIGltcG9ydEVudHJpZXMoKSBjb25z
dCB7IHJldHVybiBtX2ltcG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmll
clNldCYgc3RhckV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXJFeHBvcnRFbnRy
aWVzOyB9CiAKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KICAgICBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9sZXhp
Y2FsVmFyaWFibGVzOyB9CiAKICAgICB2b2lkIGR1bXAoKTsKIAorICAgIEpTTW9kdWxlRW52aXJv
bm1lbnQqIG1vZHVsZUVudmlyb25tZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21vZHVs
ZUVudmlyb25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7
CisgICAgfQogCiAgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSopOwogICAgIEpTVmFsdWUgZXhlY3V0
ZShFeGVjU3RhdGUqKTsKIAogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
Z2V0KCk7IH0KIAorICAgIHN0cnVjdCBSZXNvbHV0aW9uIHsKKyAgICAgICAgZW51bSBjbGFzcyBU
eXBlIHsgUmVzb2x2ZWQsIE5vdEZvdW5kLCBBbWJpZ3VvdXMsIEVycm9yIH07CisKKyAgICAgICAg
c3RhdGljIFJlc29sdXRpb24gbm90Rm91bmQoKTsKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24g
ZXJyb3IoKTsKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gYW1iaWd1b3VzKCk7CisKKyAgICAg
ICAgVHlwZSB0eXBlOworICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAg
ICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICB9OworCisgICAgUmVzb2x1dGlvbiByZXNv
bHZlRXhwb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpOworICAg
IFJlc29sdXRpb24gcmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBs
b2NhbE5hbWUpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1
bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKIHByaXZhdGU6
CiAgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUpCkBAIC0xMzQsNyArMTU5LDcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0g
ICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisgICAgdm9pZCBpbnN0YW50aWF0ZURlY2xh
cmF0aW9ucyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSopOwogCiAgICAgLy8g
VGhlIGxvYWRlciByZXNvbHZlcyB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBr
ZXkuIFRoZSBtb2R1bGUga2V5IGlzIHRoZSB1bmlxdWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoaXMg
bW9kdWxlLgogICAgIElkZW50aWZpZXIgbV9tb2R1bGVLZXk7CkBAIC0xNDUsNDUgKzE3MCwyMyBA
QCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJsZXM7CiAKICAgICAvLyBNYXAg
bG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgotICAgIEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7
CisgICAgSW1wb3J0RW50cmllcyBtX2ltcG9ydEVudHJpZXM7CiAKICAgICAvLyBNYXAgZXhwb3J0
TmFtZSAtPiBFeHBvcnRFbnRyeS4KLSAgICBFeHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOworICAg
IEV4cG9ydEVudHJpZXMgbV9leHBvcnRFbnRyaWVzOwogCi0gICAgSWRlbnRpZmllclNldCBtX3N0
YXJFeHBvcnRFbnRyaWVzOworICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2Ug
cmVzb2x2ZUV4cG9ydCByZXF1aXJlcyBpdC4KKyAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3N0
YXJFeHBvcnRFbnRyaWVzOwogCiAgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5j
ZSB0aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9y
ZGVyLgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1
ZXN0ZWRNb2R1bGVzOwogCi0gICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
PiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9k
ZXBlbmRlbmNpZXNNYXA7Ci19OwogCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5k
UmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9y
ZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSB2b2lk
IEpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkp
Ci17Ci0gICAgbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRy
eSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25z
dCBFeHBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9leHBvcnRFbnRyaWVzLmFkZChlbnRyeS5l
eHBvcnROYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29y
ZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0g
ICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxp
bmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRyeSYKLXsKLSAg
ICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsKLX0KKyAg
ICBXcml0ZUJhcnJpZXI8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+IG1fbW9kdWxl
RW52aXJvbm1lbnQ7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCBiYjJlZmRkMDYzMWNkMThlYTk3NTQyNjc0
YTJjZTcxODE1MDcyYzhmLi4yZDA2MDhkOWM3YTUxNjVmOTYzYTgyMzIyZWVhMjRiZTZhNjc1ZTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMjgsNiAr
MjgsOCBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xleGlj
YWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNs
dWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogCkBAIC02NSw2ICs2NywxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
YWJzdHJhY3RBY2Nlc3MoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgY29uc3QgSWRl
bnRpZgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAo
SlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBqc0R5bmFtaWNDYXN0PEpT
TW9kdWxlRW52aXJvbm1lbnQqPihzY29wZSkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3Jk
KiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVFbnZpcm9ubWVudC0+bW9kdWxlUmVjb3JkKCk7CisgICAg
ICAgICAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQtPnJlc29sdmVJbXBv
cnQoZXhlYywgaWRlbnQpOworICAgICAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01v
ZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgICAgICAg
ICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29y
ZDsKKyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZEVudmlyb25t
ZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgICAgICAg
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGltcG9ydGVkRW52aXJvbm1lbnQtPnN5bWJvbFRh
YmxlKCktPmdldChyZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAg
IEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9w
KG1ha2VUeXBlKE1vZHVsZVZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwgMCwg
aW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hwb2ludFNldCgpLCBlbnRyeS5zY29wZU9m
ZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAg
aWYgKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+dXNlc05vblN0cmljdEV2YWwo
KSkKICAgICAgICAgICAgIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzID0gdHJ1ZTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjMyLDYgKzI0Nyw3IEBAIGNvbnN0IGNoYXIqIHJlc29sdmVUeXBl
TmFtZShSZXNvbHZlVHlwZSB0eXBlKQogICAgICAgICAiR2xvYmFsVmFyIiwKICAgICAgICAgIkNs
b3N1cmVWYXIiLAogICAgICAgICAiTG9jYWxDbG9zdXJlVmFyIiwKKyAgICAgICAgIk1vZHVsZVZh
ciIsCiAgICAgICAgICJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MiLAogICAg
ICAgICAiR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCiAgICAgICAgICJDbG9zdXJl
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Njb3BlLmgKaW5kZXggYTY1MzE2NzQ5MGY2ODIyM2Y1MTFkZDI4OTA4OTI5ZmM0NmExOTczYy4u
MDI2YTI3MTRkYzhkOTIyYTk4Mjg4NWU1NDZiNTc4YmE5NjM0ODBhNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtNDUsNiArNDUsNyBAQCBlbnVtIFJlc29sdmVU
eXBlIHsKICAgICBHbG9iYWxWYXIsCiAgICAgQ2xvc3VyZVZhciwKICAgICBMb2NhbENsb3N1cmVW
YXIsCisgICAgTW9kdWxlVmFyLAogCiAgICAgLy8gRGl0dG8sIGJ1dCBhdCBsZWFzdCBvbmUgaW50
ZXJ2ZW5pbmcgc2NvcGUgdXNlZCBub24tc3RyaWN0IGV2YWwsIHdoaWNoCiAgICAgLy8gY2FuIGlu
amVjdCBhbiBpbnRlcmNlcHRpbmcgdmFyIGRlbGNhcmF0aW9uIGF0IHJ1bnRpbWUuCkBAIC03Miw2
ICs3Myw3IEBAIGlubGluZSBSZXNvbHZlVHlwZSBtYWtlVHlwZShSZXNvbHZlVHlwZSB0eXBlLCBi
b29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICBj
YXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgcmV0dXJuIENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrczoKICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpA
QCAtOTAsNiArOTIsNyBAQCBpbmxpbmUgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhSZXNv
bHZlVHlwZSB0eXBlKQogICAgIGNhc2UgR2xvYmFsVmFyOgogICAgIGNhc2UgQ2xvc3VyZVZhcjoK
ICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTEwMywx
MyArMTA2LDE0IEBAIGlubGluZSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVU
eXBlIHR5cGUpCiB9CiAKIHN0cnVjdCBSZXNvbHZlT3AgewotICAgIFJlc29sdmVPcChSZXNvbHZl
VHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0xleGljYWxF
bnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50
U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKKyAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwg
c2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQq
IGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0
cl90IG9wZXJhbmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBvcnRlZE5hbWUgPSBudWxscHRyKQog
ICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBkZXB0aChkZXB0aCkKICAgICAgICAgLCBz
dHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICAgICAsIGxleGljYWxFbnZpcm9ubWVudChsZXhpY2Fs
RW52aXJvbm1lbnQpCiAgICAgICAgICwgd2F0Y2hwb2ludFNldCh3YXRjaHBvaW50U2V0KQogICAg
ICAgICAsIG9wZXJhbmQob3BlcmFuZCkKKyAgICAgICAgLCBpbXBvcnRlZE5hbWUoaW1wb3J0ZWRO
YW1lKQogICAgIHsKICAgICB9CiAKQEAgLTExOSw2ICsxMjMsNyBAQCBzdHJ1Y3QgUmVzb2x2ZU9w
IHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50OwogICAgIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CiAgICAgdWludHB0cl90IG9wZXJhbmQ7CisgICAg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBvcnRlZE5hbWU7CiB9OwogCiBjbGFzcyBSZXNv
bHZlTW9kZUFuZFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggMjhlMGJhZGFhNzJhZjMwY2M3NzE5MTk2MDRh
NjEyZDZjZGI3M2UwNy4uNmU2ZjlmOWE2ZGE2MTgxMmUzYzIxYWQ0MzY2ZmQ4N2I3Y2QxNDdkOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJP
YmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2Uu
aCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNN
YXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1
bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgogI2luY2x1ZGUgIk5vZGVz
LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260416</attachid>
            <date>2015-09-01 23:39:27 -0700</date>
            <delta_ts>2015-09-02 11:12:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150901233909.patch</filename>
            <type>text/plain</type>
            <size>91520</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi44MGQ3NzNmOWE2OTM4ZmYx
ZGIwN2U5YThlOTU2ZTIyYzBlOWFhODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMTUtMDktMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21f
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2Nv
cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9yLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgICogcnVu
dGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojptb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmguCisgICAgICAgIChKU0M6OkpT
TW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJv
bm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9u
bWVudDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50
Ojptb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1
bGVSZWNvcmRTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1
bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29y
ZDo6YWRkRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OlJlc29sdmVR
dWVyeSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAg
ICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlJl
c29sdmVRdWVyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChKU0M6OnJlc29sdmVFeHBvcnRMb29wKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW5z
dGFudGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhl
Y3V0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBy
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpl
eHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmltcG9ydEVudHJp
ZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6c3RhckV4cG9ydEVudHJpZXMpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeSk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6YWJzdHJh
Y3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpyZXNvbHZlVHlwZU5hbWUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAoSlNDOjptYWtlVHlwZSk6CisgICAgICAgIChKU0M6
Om5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNv
bHZlT3ApOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoKKwogMjAx
NS0wOS0wMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBwcm90b2NvbCBnZW5lcmF0b3Igc2hvdWxkIG5vdCBhbGxvdyBub24tYm9vbGVhbiB2
YWx1ZXMgZm9yICJvcHRpb25hbCIga2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggNjgwNjBhNjk5ZmI0ODk3MDA2ZTRmYTk5MzIwMTI3MGM0ZDJlYzNkOS4uZWZhNTcwYTIx
MjYyMjQ2MzhlNTU1ODU4Y2RjZWZkYmFmZTAyOTI1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTM3LDYgKzUzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1F
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTG9jay5jcHAKICAgICBydW50aW1lL0pTTWFwLmNwcAog
ICAgIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAKKyAgICBydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuY3BwCiAgICAgcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKICAgICBydW50aW1lL0pT
TmF0aXZlU3RkRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggMzk5NjNiNDEwMTFjZTllNTAz
ZTM2ODlhMDY3NTQ1YTZiNDBiNDBiMS4uOGExMjZlNTU0NTNkMzhjMDRlOWMyYWMyYzI0NzgyM2Ix
NTQwNDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03ODYs
NiArNzg2LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmNwcCIgLz4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3Jk
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRpdmVTdGRG
dW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90
QW5PYmplY3QuY3BwIiAvPgpAQCAtMTY0MCw2ICsxNjQxLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTWFwSXRlcmF0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNb2R1bGVFbnZpcm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01vZHVsZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTm90QW5PYmplY3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAyYmY3MTgwNDBiMzRkNGZjMDA4M2YyMWE1
M2NlNDgyN2UxZmMwMjg2Li42OGU0YzdlNDRmOWM4ODJlMTM0Y2NmN2UzYTUwNjBhNmM0YzhjNzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CkBAIC03MjYsNiArNzI2LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNYXAuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25t
ZW50LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAt
MzUwNSw2ICszNTA4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
YXAuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIj4KICAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBmMjJlNzE2ZjUzMTEwN2ZlNTk4MWM1YTZkMTZkM2E0NTQxZTYx
OWY1Li5iYjE2MzAyZDEwMWQ0MDdlOWQyNjA0N2QyNzU3MDEwN2RmNzg3MjllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcyNiw2ICsxNzI2LDggQEAKIAkJRTM5NjNDRUUxQjcz
Rjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyog
Tm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5j
cHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwICovOyB9OworCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVF
bnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRG
MjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAq
LzsgfTsKQEAgLTM1ODcsNiArMzU4OSw4IEBACiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVj
b3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM2MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2
MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDc3Nyw2ICs0NzgxLDggQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVC
MDBDM0U2NDMgLyogSlNNYXAuaCAqLywKIAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyog
SlNNYXBJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpT
TWFwSXRlcmF0b3IuaCAqLywKKwkJCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpT
TW9kdWxlRW52aXJvbm1lbnQuaCAqLywKIAkJCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyog
SlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5oICovLAogCQkJCUUzM0U4RDFBMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLywKQEAgLTYxMzksNiArNjE0NSw3IEBACiAJCQkJMEYyQjlD
RTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZl
bmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzRDIzOUM5MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYw
RjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTcwOUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzg2LDYgKzczOTMsNyBAQAogCQkJCTBG
NkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0QyMzlDODFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJl
Z2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAppbmRleCBjNGM2NmQzYjc5NzZmOTc3NWJkMTM0ZDFlYTk4OWMxNGE0
NWRhYWQ3Li42NzI2NDNjZThhODVhOGMyZDRkNWJmNzYxYzAzZGNkMGEyZTkwOWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDgsNiArNDgs
NyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmly
b25tZW50LmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTE5NzIsOSArMTk3
MywxNCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9w
ID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUpOwogICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBvcC50eXBlOwogICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA1XS51Lm9wZXJhbmQgPSBvcC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChv
cC5sZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2
XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52
aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
aWYgKG9wLmxleGljYWxFbnZpcm9ubWVudCkgeworICAgICAgICAgICAgICAgIGlmIChvcC50eXBl
ID09IE1vZHVsZVZhcikgeworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHRoZSBsaW5rZWQg
bW9kdWxlIGVudmlyb25tZW50IHN0cm9uZ2x5IHJlZmVyZW5jZWQuCisgICAgICAgICAgICAgICAg
ICAgIGFkZENvbnN0YW50KG9wLmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5qc0NlbGwuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFi
bGUsIG9wLmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZt
KCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgp
KTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
Nl0udS5wb2ludGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0xOTk5LDcgKzIwMDUsMTIgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBH
ZXQsIG1vZGVBbmRUeXBlLnR5cGUoKSk7CiAKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
NF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgb3Au
dHlwZSkub3BlcmFuZCgpOworICAgICAgICAgICAgLy8gTW9kdWxlVmFyIGNhbiBnZXQgdGhlIHZh
cmlhYmxlIGFzIHRoZSBzYW1lIHRvIENsb3N1cmVWYXIuCisgICAgICAgICAgICBpZiAob3AudHlw
ZSA9PSBNb2R1bGVWYXIpCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9w
ZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBDbG9zdXJlVmFy
KS5vcGVyYW5kKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9k
ZSgpLCBvcC50eXBlKS5vcGVyYW5kKCk7CisKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IEds
b2JhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCiAg
ICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LndhdGNocG9pbnRTZXQgPSBvcC53
YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtMjA2
NywxNyArMjA3OCwxOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgICAg
IC8vIHdlJ3JlIGFic3RyYWN0bHkgInJlYWQiaW5nIGZyb20gYSBKU1Njb3BlLgogICAgICAgICAg
ICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0
eXBlKTsKIAotICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIpCisgICAg
ICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVs
ZVZhcikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJv
bm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9
PSBHbG9iYWxWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gbV9nbG9iYWxP
YmplY3QuZ2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAg
ICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA9IChvcC50eXBlID09IE1vZHVsZVZhcikg
PyBvcC5pbXBvcnRlZE5hbWUuZ2V0KCkgOiBpZGVudC5pbXBsKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHN5bWJvbFRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiBvdXIgcGFyZW50IHNjb3BlIHdhcyBjcmVhdGVkIHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJs
ZWQsIGl0IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQgZm9yIHByb2ZpbGluZyB5ZXQuCiAgICAgICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIp
OwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVu
aXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9y
VmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxv
Y2tlciwgaW1wbCwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0g
c3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgp
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFy
aWFibGVJRCA9IFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiZGRkMDM2N2YzYmUzNzI3NjlhZGZm
YmNmYTU5ODQzMThiMjNjNzg4Li4zODIzYmM3NTVjODRhNmY4ZWJhYmRjMDUwOTBmYmVhM2JhMWYw
Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04
Miw2ICs4Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRpb247CitjbGFzcyBKU01v
ZHVsZUVudmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJl
b3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggN2Y2NTA1MmRhOGYyZjFm
OTc0MzRjOGNiN2E2YTIwZmM0MjI2ZTUwNy4uOTc5YzhlNjgwZDZkOGQwNjhlNmRmZjQ1YjVkNWFl
MDhkYTE2OWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVu
dC5oIgpAQCAtMzgzMyw2ICszODM0LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCByZXNvbHZlVHlwZSA9PSBHbG9i
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFBoYW50b20sIGdldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6IHsKKyAgICAgICAg
ICAgICAgICAvLyBTaW5jZSB0aGUgdmFsdWUgb2YgdGhlICJzY29wZSIgdmlydHVhbCByZWdpc3Rl
ciBpcyBub3QgdXNlZCBpbiBMTEludCAvIGJhc2VsaW5lIG9wX3Jlc29sdmVfc2NvcGUgd2l0aCBN
b2R1bGVWYXIsCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCBub3QgdG8ga2VlcCBpdCBhbGl2
ZSBieSB0aGUgUGhhbnRvbSBub2RlLgorICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1l
bnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjdXJy
ZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpOworICAgICAgICAgICAgICAgIC8vIE1v
ZHVsZSBlbnZpcm9ubWVudCBpcyBhbHJlYWR5IHN0cm9uZ2x5IHJlZmVyZW5jZWQgYnkgdGhlIENv
ZGVCbG9jay4KKyAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtK
U0NvbnN0YW50KG1vZHVsZUVudmlyb25tZW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAg
ICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6IHsKQEAgLTQwMDIsNiArNDAxMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoR2V0Q2xvc3VyZVZhciwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiks
IHNjb3BlTm9kZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTQwODYsNiArNDA5NiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgorICAg
ICAgICAgICAgICAgIC8vIE5lZWQgbm90IHRvIGtlZXAgInNjb3BlIiBhbmQgInZhbHVlIiByZWdp
c3RlciB2YWx1ZXMgaGVyZSBieSBQaGFudG9tIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB0
aGV5IGFyZSBub3QgdXNlZCBpbiBMTEludCAvIGJhc2VsaW5lIG9wX3B1dF90b19zY29wZSB3aXRo
IE1vZHVsZVZhci4KKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggZmE2MmVhNmYzNzZkODhjZWZmNGU5ODI3NTQzMjY2ZTBkOTNhNDQ5Yy4u
NWE3YTJhZTVkZDBlNmQwMDQ5MWMwNzdiYzU0OGRiZGQxNzE2NmJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJK
U1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMTk0LDYgKzExOTUs
NTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihy
ZXN1bHQpOwogfQogCitKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZp
cm9ubWVudCogc2NvcGUpCit7CisgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBs
aW5nU2NvcGUgc2FtcGxpbmdTY29wZSh0aGlzKTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9
PSAmY2FsbEZyYW1lLT52bSgpKTsKKyAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJy
ZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5
KCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNj
b3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1
cnNlKCkpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vy
cm9yKGNhbGxGcmFtZSkpOworCisgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFi
bGUtPnByZXBhcmVGb3JFeGVjdXRpb24oY2FsbEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZv
ckNhbGwpOworICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IGNvbXBpbGVFcnJvcikpOworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpOworCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9n
ICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhy
b3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQo
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhp
cycuCisKKyAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmlu
ZWRgLgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1
bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1l
IHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0Nh
bGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmlu
ZWQoKSwgMSk7CisKKyAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxl
ZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4
ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJs
ZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFs
dWUgcmVzdWx0OworICAgIHsKKyAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxS
ZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisK
KyAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkp
CisgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291
cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVt
bigpKTsKKworICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lO
TElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdI
b29rSUQgZGVidWdIb29rSUQpCiB7CiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1l
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDAzOGJjYTVjZmM3NWI5YjI0
NTc2MmQ2ZTY0ZjY4ZjJlNzhlYzYyNTEuLjRmZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0
MDk1YWY0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCkBAIC01NCw2ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpT
QXJyb3dGdW5jdGlvbjsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OworICAgIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiAgICAgY2xhc3MgSlNNb2R1
bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFBy
b2dyYW1FeGVjdXRhYmxlOwpAQCAtMjE1LDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNP
YmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29u
c3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRl
KEV2YWxFeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUq
KTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2Fs
bEZyYW1lKiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1l
bnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0
ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDhjZGYx
MWZkMzZmYWZkOTZiZjJiYjY3MWY1NWMzMWQ0NTdlNjQ0OS4uOWE0YWU0NTUyOWRlZmU0NzVkNjc3
YmY3MDRiNWM2MDc2ZTNlZDM2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTYW1wbGlu
Z1Rvb2wuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRB
cmd1bWVudHNUYWJsZS5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAKQEAgLTcwMyw2ICs3MDQsMTAgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRS
ZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0
KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkp
OwogICAgICAgICBicmVhazsKQEAgLTcxNiw3ICs3MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvdwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAg
IFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IEds
b2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9
PSBDbG9zdXJlVmFyKQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBy
ZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCBy
ZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKQEAgLTc3OCw2ICs3ODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJv
bV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1p
YzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODUyLDYgKzg1OCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVz
b2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xv
dCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNocG9pbnRTZXQpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAg
IGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODczLDcgKzg4MCwxMiBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxp
bmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworCisgICAgaWYgKHJl
c29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9t
b2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRU
b1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
ZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmlu
ZGV4IDgxMmQxYjk5ZTYzYzAxMjRlYWQ2OTg1MDQxZTdlYTg0YjQ5ZmZhZmYuLmU2M2JkNTkyMzkx
OTQ2ODc4ZjhjN2JjMGM2NDVkZTg5NmJkNDkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNDEsNiArNDEsNyBA
QAogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAj
aW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5j
bHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIApAQCAtNzM1LDYgKzczNiwxMSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAg
ICAgZW1pdFJlc29sdmVDbG9zdXJlKGRzdCwgc2NvcGUsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
KHJlc29sdmVUeXBlKSwgZGVwdGgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZh
cjoKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2Vs
bC5nZXQoKSksIHJlZ1QwKTsKKyAgICAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShq
dW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTc0OCw3ICs3NTQsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvdwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+
KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCi0gICAgaWYgKHJlc29sdmVUeXBl
ID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZl
VHlwZSA9PSBDbG9zdXJlVmFyKQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0
eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZh
ciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKQEAgLTgxMSw2ICs4MTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfZnJvbV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2Ug
RHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODg2LDYgKzg5Myw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVj
a3MocmVzb2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVy
YW5kU2xvdCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNocG9pbnRTZXQpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIER5bmFtaWM6CiAg
ICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTA1LDcgKzkx
MywxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICByZXR1cm47CiAgICAgd2hp
bGUgKGxpbmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworCisgICAg
aWYgKHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAgICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0
cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNzc3Y2ZkZTA5M2Ey
ZDEzZGY1ZmU1YzM2NmM5ODIyZjRhZTA4NGZhZS4uMTU2OTIxZTNhY2ViYmVmYTEzNjgyYzY4YzE5
ZDQ1NjE1ZmQxZmVjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKQEAgLTE0NywxMCArMTQ3LDExIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0m
IHZtKQogICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyID09IDEsICJMTEludCBhc3N1bWVzIEds
b2JhbFZhciBSZXN1bHRUeXBlIGlzID09IDEiKTsKICAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVW
YXIgPT0gMiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhciBSZXN1bHRUeXBlIGlzID09IDIiKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KExvY2FsQ2xvc3VyZVZhciA9PSAzLCAiTExJbnQgYXNzdW1lcyBM
b2NhbENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAzIik7Ci0gICAgc3RhdGljX2Fzc2VydChH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNCwgIkxMSW50IGFzc3VtZXMg
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNCIp
OwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA1
LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5
cGUgaXMgPT0gNSIpOwotICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MgUmVzdWx0VHlwZSBpcyA9PSA2Iik7Ci0gICAgc3RhdGljX2Fzc2VydChEeW5hbWljID09
IDcsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVzdWx0VHlwZSBpcyA9PSA3Iik7CisgICAgc3Rh
dGljX2Fzc2VydChNb2R1bGVWYXIgPT0gNCwgIkxMSW50IGFzc3VtZXMgTW9kdWxlVmFyIFJlc3Vs
dFR5cGUgaXMgPT0gNCIpOworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDYiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDcsICJMTElu
dCBhc3N1bWVzIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMg
PT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoRHluYW1pYyA9PSA4LCAiTExJbnQgYXNzdW1lcyBE
eW5hbWljIFJlc3VsdFR5cGUgaXMgPT0gOCIpOwogICAgIAogICAgIEFTU0VSVChSZXNvbHZlTW9k
ZUFuZFR5cGU6Om1hc2sgPT0gMHhmZmZmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDc1YzkxZjg2ODZlNGE1ZTA4
NTAxM2JiMTE5MjI1ZWRjOTdhNDQ1ZTQuLmE3MzE4ZjMzYWFhM2ExOWI4MWI2OGNkMTc1ZGVkMWE5
YjUyY2Q1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5MiwxMCArMTkyLDExIEBAIGNvbnN0IEdsb2JhbFByb3Bl
cnR5ID0gMAogY29uc3QgR2xvYmFsVmFyID0gMQogY29uc3QgQ2xvc3VyZVZhciA9IDIKIGNvbnN0
IExvY2FsQ2xvc3VyZVZhciA9IDMKLWNvbnN0IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcyA9IDQKLWNvbnN0IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA1Ci1j
b25zdCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDYKLWNvbnN0IER5bmFtaWMg
PSA3Citjb25zdCBNb2R1bGVWYXIgPSA0Citjb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MgPSA1Citjb25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0g
NgorY29uc3QgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA3Citjb25zdCBEeW5h
bWljID0gOAogCiBjb25zdCBSZXNvbHZlTW9kZU1hc2sgPSAweGZmZmYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQppbmRleCA3ZWY2Yjg3YzE3MGFkMDgzYjFmNTI5ZGE4ODM2YzAwY2RhNjRiNDc4Li41ZDUxMGNk
OGRkZWMzMDg2Y2VlYzYzZWM2MDkyYjQ2ODRlOTg4YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MjA0NSw2ICsyMDQ1LDEzIEBAIG1hY3JvIGdldEdsb2JhbE9iamVjdChkc3QpCiAgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCiBlbmQKIAorbWFjcm8gZ2V0SW1wb3J0ZWRN
b2R1bGVTY29wZShkc3QpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDApCisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKGRzdCwgdDEpCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ZW5kCisKIG1hY3JvIHZhckluamVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0
MApAQCAtMjA4NywxMCArMjA5NCwxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKICAgICBk
aXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5y
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEgdDAsIENsb3N1
cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNwYXRjaCg3KQog
Cisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoMSkKKyAg
ICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoK
ICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckds
b2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5
bmFtaWMpCkBAIC0yMjgxLDEzICsyMjkzLDE4IEBAIF9sbGludF9vcF9wdXRfdG9fc2NvcGU6CiAg
ICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKLSAg
ICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wRHluYW1pYwor
ICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBNb2R1bGVW
YXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5qZWN0aW9uQ2hl
Y2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MiwgdDEsIHQwKQogICAgIHB1dENs
b3N1cmVWYXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5wTW9kdWxlVmFyOgorICAgIGJpbmVxIHQw
LCBNb2R1bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93
X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorICAgIGRpc3BhdGNo
KDcpCisKIC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRf
dG9fc2NvcGUpCiAgICAgZGlzcGF0Y2goNykKQEAgLTIzODEsNCArMjM5OCw0IEBAIF9sbGludF9v
cF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDEpCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQogICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQyMTUy
YTJmMjc3YWRlNTg3OTc2YTFjM2YxMjAyMzcyOWIzOGE1OWEuLjVjMDBlNjQ2ZjYwMTBlNmJhNjg2
MWUzNGNlOWNmNzc0YTVhOGM0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xOTE4LDYgKzE5MTgsMTIgQEAg
bWFjcm8gZ2V0R2xvYmFsT2JqZWN0KGRzdCkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQog
ZW5kCiAKK21hY3JvIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoZHN0KQorICAgIGxvYWRwRnJvbUlu
c3RydWN0aW9uKDYsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihkc3QsIHQxKQorICAg
IHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCitlbmQKKwogbWFjcm8gdmFySW5qZWN0aW9uQ2hlY2so
c2xvd1BhdGgpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCkBAIC0xOTU3LDEwICsxOTYzLDE1IEBAIF9sbGlu
dF9vcF9yZXNvbHZlX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcjoKLSAg
ICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKICAgICByZXNvbHZl
U2NvcGUoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5yTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBN
b2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgZ2V0
SW1wb3J0ZWRNb2R1bGVTY29wZSgxKQorICAgIGRpc3BhdGNoKDcpCisKIC5yR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwog
ICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKQEAgLTIxNDQsMTMgKzIxNTUsMTggQEAg
X2xsaW50X29wX3B1dF90b19zY29wZToKICAgICBkaXNwYXRjaCg3KQogCiAucENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcywgLnBEeW5hbWljCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzLCAucE1vZHVsZVZhcgogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMo
MSwgMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgbG9hZFZhcmlhYmxl
KDEsIHQwKQogICAgIHB1dENsb3N1cmVWYXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5wTW9kdWxl
VmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vy
cm9yKQorICAgIGRpc3BhdGNoKDcpCisKIC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgZGlzcGF0Y2goNykKQEAgLTIyMzMsNCAr
MjI0OSw0IEBAIF9sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBsb2FkcCBK
U0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgy
KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBkaXNwYXRjaCgyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBmNjIzOGZi
OTY4MDJiZTUzN2U5MWFkYzI2YjgyZDg5MGI5NTQwMzJkLi42NDI1NWM1YmU1ZWZkNTA5OGJmYzNj
MTVhZTE4NmZmYWM0OGZkOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZUFuYWx5emVyLmNwcApAQCAtODIsNyArODIsOSBAQCB2b2lkIE1vZHVsZUFuYWx5emVy
OjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5h
bWUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRy
eSA9IG1vZHVsZVJlY29yZCgpLT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIE9w
dGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9
IG1vZHVsZVJlY29yZCgpLT50cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOworICAg
IEFTU0VSVChvcHRpb25hbEltcG9ydEVudHJ5KTsKKyAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRy
eSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OwogICAgIGlmICh2YXJpYWJsZS5pc0ltcG9ydGVkTmFt
ZXNwYWNlKCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAg
ICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3NTgwODMzMmU0
ZGQ0MDg0NDJhMDM0MzdkNTVjMTA1YWNjMjk1YWIxLi4zNWI2Mjk3OTIwN2VmYWM4NzQ1NmQ3NzI2
NGI0YjBmYWZmZTg2MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTI3MCw2ICsyNzAsMTIgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3Rocm93X3Rkel9lcnJvcikKICAgICBUSFJPVyhjcmVhdGVURFpFcnJvcihleGVj
KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFk
b25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKK3sKKyAgICBCRUdJTigpOworICAgIFRIUk9XKGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQogewog
ICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCmluZGV4IDA2N2RmMGMzOGU5MTIwYmY3MDdjZmRlNDFjM2VmYmYyYTY4NzJlZTMu
LjMwMDk4NTVmZjZiYTJkMTUyODNkYjhmODVmM2NlNDU3ZGRiMjg2NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0xODksNiArMTg5
LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lbnRlcik7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9jYWxsZWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF90b190aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhy
b3dfdGR6X2Vycm9yKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3Ry
aWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9ub3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9l
cSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lcSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggMDAyODVhNjc1NzczNDc0NzliZDlhOWI3Yjkz
OTU1YzI2NDM0NjU3Yy4uMWI5M2U4ZmQxMjU3ZDBkNzhhYTc5MzY4ODExMjRjYWY2OTk0NGI4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMjE5LDYgKzIxOSwx
MCBAQCBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJyb3IiKSkpOwogfQogCitKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJv
cihleGVjLCBtZXNzYWdlKSk7Cit9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5oCmluZGV4IGVjMzBhM2RjNDY2ZTFlYjQ0OWIzZTU4NWFhODA0OTJlZjE5ODQ2NDcu
LmY0NmZlMzc2ZmI4NmM2NTJlNGFlYzg0OTAxM2NlYTJkZjNjODAxYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtNzQsNiArNzQsNyBAQCBKU09iamVjdCogYWRkRXJy
b3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJj
ZUNvZGUmKQogLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNl
cHRpb24gd2l0aCBhIGRlZmF1bHQgbWVzc2FnZS4KIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmpl
Y3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOwogaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgpLnRocm93RXhj
ZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQog
CiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFs
dWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggY2Rj
ZWIzMDQyNjVmOTc2ZDAwNzdhZWZkNjU3YjViN2JhYmJmMmExNi4uOTZlZmY0NTU4ZDJlNzNkOWYz
Yjc0MWY2N2Q2ZWJhZDVmMmYzMmViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaApAQCAtNTcsNiArNTcsOSBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwog
Y2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBXZWJB
c3NlbWJseUNvZGVCbG9jazsKK2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBK
U01vZHVsZVJlY29yZDsKK2NsYXNzIEpTU2NvcGU7CiAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsg
Rmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA0ZTA5NGZk
Njc5YjlkNWJjZjRiODg2ZjM2MDJjNmMxYjBmYjIwOTFhLi41YThhNzM1MTcxNjVmY2QyYTc1Zjhj
Y2RkNTM0NGM0MzY3MWIxMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw3IEBACiAjaW5jbHVkZSAiSlNMb2Nr
LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgi
CiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3Qu
aCIKQEAgLTMxMiw2ICszMTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkK
ICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0uc3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJy
YXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0ucHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAg
bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZp
cm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9tb2R1bGVFbnZpcm9u
bWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5zZXQobV92bSwg
dGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRlU3RydWN0dXJlKG1fdm0sIHRoaXMpKTsKICAgICBt
X3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CkBAIC03OTEsNiArNzkzLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFjdGl2YXRp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xleGljYWxF
bnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMWNhMzFiN2Ix
MjZmYjJlZmQzYjcxOTBlYWY3NjRmNWNkYTA5OTFmZS4uZTMzNDAwZWFlMmQ5YmZkYTc3ZGIxYmE2
NDRiMWJlOTZmNmNlODY0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlOwpAQCAtNDQ5LDYgKzQ1
MCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2
YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBtb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJndW1l
bnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4
IDk1MTYzMThkNzAxNjllM2RkOGMyYmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMxYjdiN2M5
ODI2MmQ0MTBiZjAxZjg0OTM3MWQ4YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhpY2FsRW52
aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgorcHJvdGVj
dGVkOgogICAgIEpTTGV4aWNhbEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSos
IFN5bWJvbFRhYmxlKik7CiAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYjhj
MjliMjkwMjI5YTNhYzRkN2E3YTgwZGYwZDcyODE1OGY2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAt
MCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5o
IgorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnNfaW5mbyA9
IHsgIkpTTW9kdWxlRW52aXJvbm1lbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTTW9kdWxlRW52aXJvbm1lbnQpIH07CisKK0pTTW9kdWxlRW52aXJvbm1lbnQqIEpT
TW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSgKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNW
YWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAg
Ly8gSlNMZXhpY2FsRW52aXJvbm1lbnQgKHByZWNpc2VseSwgSlNFbnZpcm9ubWVudFJlY29yZCkg
aGFzIHRoZSBzdG9yYWdlIHRvIHN0b3JlIHRoZSB2YXJpYWJsZSBzbG90cyBhZnRlciB0aGUgaXRz
IGNsYXNzIHN0b3JhZ2UuCisgICAgLy8gQmVjYXVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB2YXJpYWJs
ZSBzbG90cyBhcmUgZml4ZWQgaW4gdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQsIGluaGVyaXR0aW5n
IHRoZXNlIGNsYXNzIGFuZCBhZGRpbmcgbmV3IG1lbWJlciBmaWVsZCBpcyBub3QgYWxsb3dlZCwK
KyAgICAvLyB0aGUgbmV3IG1lbWJlciB3aWxsIG92ZXJsYXAgdGhlIHZhcmlhYmxlIHNsb3RzLgor
ICAgIC8vIFRvIGtlZXAgdGhlIEpTTW9kdWxlRW52aXJvbm1lbnQgY29tcGF0aWJsZSB0byB0aGUg
SlNMZXhpY2FsRW52aXJvbm1lbnQgYnV0IGFkZCB0aGUgbmV3IG1lbWJlciB0byBzdG9yZSB0aGUg
SlNNb2R1bGVSZWNvcmQsIHdlIGFkZGl0aW9uYWxseSBhbGxvY2F0ZQorICAgIC8vIHRoZSBzdG9y
YWdlIGFmdGVyIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLworICAgIC8vIEpTTGV4aWNhbEVu
dmlyb25tZW50OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxl
IHNsb3RzIF0KKyAgICAvLworICAgIC8vIEpTTW9kdWxlRW52aXJvbm1lbnQ6CisgICAgLy8gICAg
IFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXVsgYWRkaXRpb25hbCBz
bG90cyBmb3IgSlNNb2R1bGVFbnZpcm9ubWVudCBdCisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
cmVzdWx0ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAg
ICBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVFbnZpcm9ubWVudD4odm0uaGVhcCwgSlNNb2R1bGVFbnZp
cm9ubWVudDo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUpKSkKKyAgICAgICAgSlNNb2R1bGVF
bnZpcm9ubWVudCh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKTsKKyAg
ICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCog
bW9kdWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFs
dWUpOworICAgIHRoaXMtPm1vZHVsZVJlY29yZFNsb3QoKS5zZXQodm0sIHRoaXMsIG1vZHVsZVJl
Y29yZCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1l
bnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5h
cHBlbmRWYWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPnN5bWJvbFRh
YmxlKCktPnNjb3BlU2l6ZSgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bW9k
dWxlUmVjb3JkU2xvdCgpKTsKK30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJv
bm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOwor
ICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5y
ZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1l
LnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
aW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkLT5tb2R1
bGVFbnZpcm9ubWVudCgpOworICAgICAgICBQcm9wZXJ0eVNsb3QgcmVkaXJlY3RTbG90KGltcG9y
dGVkTW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICBpZiAoaW1wb3J0ZWRNb2R1bGVFbnZpcm9u
bWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdChpbXBvcnRl
ZE1vZHVsZUVudmlyb25tZW50LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHJlZGlyZWN0U2xvdCkpIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSByZWRpcmVjdFNsb3QuZ2V0VmFsdWUoZXhlYywg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBnZXRPd25Qcm9wZXJ0eVNsb3Qg
Y2Fubm90IHRocm93IGFueSBlcnJvcnMuCisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgcmVkaXJlY3RTbG90LmF0dHJpYnV0ZXMoKSwgdmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEJh
c2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lc0FycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBKU01v
ZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PihjZWxsKTsKKyAgICBpZiAocHJvcGVydHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0
aWVzKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+bW9k
dWxlUmVjb3JkKCktPmltcG9ydEVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgYXV0byYg
aW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgaWYgKCFpbXBvcnRFbnRyeS5p
c05hbWVzcGFjZShleGVjLT52bSgpKSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzQXJy
YXkuYWRkKGltcG9ydEVudHJ5LmxvY2FsTmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9k
dWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+
KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgorICAg
IGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNv
bHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVp
ZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1
dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVu
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8gQWxsIGltcG9y
dGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0g
dGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlv
bi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZTVlMTJlZWZjNTQ4YjllZTZlYmYzMTNmYTdhOGQ0YzcxNjkxNGYxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisjZGVm
aW5lIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgUmVnaXN0ZXI7CisKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNM
ZXhpY2FsRW52aXJvbm1lbnQgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTGV4aWNh
bEVudmlyb25tZW50IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJv
bm1lbnQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEpT
VmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGljIEpTTW9k
dWxlRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1Zh
bHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKKyAgICB7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVFbnZpcm9u
bWVudFN0cnVjdHVyZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGN1
cnJlbnRTY29wZSwgc3ltYm9sVGFibGUsIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAg
ICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgp
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZk1vZHVsZVJlY29yZChTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KT4oQmFzZTo6YWxsb2NhdGlvblNp
emUoc3ltYm9sVGFibGUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25T
aXplKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZz
ZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJsZSkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9k
dWxlUmVjb3JkPik7CisgICAgfQorCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCgp
CisgICAgeworICAgICAgICByZXR1cm4gbW9kdWxlUmVjb3JkU2xvdCgpLmdldCgpOworICAgIH0K
KworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CisKK3ByaXZhdGU6CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVy
ZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSopOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgV3JpdGVC
YXJyaWVyQmFzZTxKU01vZHVsZVJlY29yZD4mIG1vZHVsZVJlY29yZFNsb3QoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxKU01vZHVsZVJlY29y
ZD4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3lt
Ym9sVGFibGUoKSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKK307CisKK2lubGluZSBKU01vZHVsZUVudmlyb25tZW50OjpK
U01vZHVsZUVudmlyb25tZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUq
IGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEpTTW9kdWxlRW52aXJvbm1lbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDdiNjA2Mzc0
YTYwNjBiNzcwMjBjNGVmNDUxMmU5MjQ1ZTAzZjNmYzUuLjhlODJlZmE3ZjEyYTcxNzc1NDFhOTNj
ZDE2YzM3Zjc0NmFkMzkzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU01h
cC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKQEAgLTYwLDEw
ICs2MSw0OSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX21vZHVsZUVudmlyb25tZW50KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZGVwZW5kZW5jaWVzTWFwKTsKIH0KIAordm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5k
UmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9y
ZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK3ZvaWQgSlNNb2R1
bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1l
KQoreworICAgIG1fc3RhckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30K
Kwordm9pZCBKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkm
IGVudHJ5KQoreworICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1faW1wb3J0RW50cmllcy5hZGQoZW50
cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpLmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VOVVNF
RChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsgLy8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBw
YXJzZXIuCit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4
cG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBib29sIGlzTmV3RW50cnkgPSBtX2V4cG9ydEVudHJp
ZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSkuaXNOZXdFbnRyeTsKKyAgICBB
U1NFUlRfVU5VU0VEKGlzTmV3RW50cnksIGlzTmV3RW50cnkpOyAvLyBUaGlzIGlzIGd1YXJhbnRl
ZWQgYnkgdGhlIHBhcnNlci4KK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0
RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSkgLT4gT3B0aW9uYWw8SW1wb3J0RW50
cnk+Cit7CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0RW50cmllcy5maW5kKGxv
Y2FsTmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50cmllcy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIE9wdGlvbmFsPEltcG9ydEVudHJ5Pihp
dGVyYXRvci0+dmFsdWUpOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRFeHBvcnRF
bnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0aW9uYWw8RXhwb3J0RW50
cnk+Cit7CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5maW5kKGV4
cG9ydE5hbWUpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJpZXMuZW5kKCkpCisg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRyeT4o
aXRlcmF0b3ItPnZhbHVlKTsKK30KKwogYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6
OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkg
LT4gRXhwb3J0RW50cnkKIHsKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwg
ZXhwb3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFi
bGUgfTsKQEAgLTc5LDYgKzExOSwyMSBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eTo6Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgYwogICAgIHJl
dHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1l
LCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07
CiB9CiAKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246Om5vdEZvdW5kKCkgLT4gUmVz
b2x1dGlvbgoreworICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6Tm90Rm91bmQsIG51bGxw
dHIsIElkZW50aWZpZXIoKSB9OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9u
OjplcnJvcigpIC0+IFJlc29sdXRpb24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6
OkVycm9yLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29y
ZDo6UmVzb2x1dGlvbjo6YW1iaWd1b3VzKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBS
ZXNvbHV0aW9uIHsgVHlwZTo6QW1iaWd1b3VzLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30K
Kwogc3RhdGljIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1i
b2woKSkKQEAgLTkzLDYgKzE0OCwyNjYgQEAgSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3Jk
Ojpob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICBy
ZXR1cm4ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOwogfQogCithdXRvIEpTTW9kdWxlUmVjb3JkOjpy
ZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1l
KSAtPiBSZXNvbHV0aW9uCit7CisgICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1w
b3J0RW50cnkgPSB0cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuaW1wbCgpKTsKKyAgICBpZiAo
IW9wdGlvbmFsSW1wb3J0RW50cnkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3Vu
ZCgpOworCisgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRy
eTsKKyAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAg
IHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGlt
cG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRy
eS5tb2R1bGVSZXF1ZXN0KTsKKyAgICByZXR1cm4gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBv
cnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7Cit9CisKK3N0cnVjdCBSZXNvbHZlUXVl
cnkgeworICAgIFJlc29sdmVRdWVyeShKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBVbmlx
dWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAgICAgOiBtb2R1bGVSZWNvcmQobW9kdWxl
UmVjb3JkKQorICAgICAgICAsIGV4cG9ydE5hbWUoZXhwb3J0TmFtZSkKKyAgICB7CisgICAgfQor
CisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgIDogUmVzb2x2ZVF1ZXJ5KG1vZHVsZVJlY29y
ZCwgZXhwb3J0TmFtZS5pbXBsKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gRW1wdHlWYWx1
ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAg
ICB7CisgICAgfQorCisgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsK
KyAgICBSZXNvbHZlUXVlcnkoRGVsZXRlZFZhbHVlVGFnKQorICAgICAgICA6IG1vZHVsZVJlY29y
ZChudWxscHRyKQorICAgICAgICAsIGV4cG9ydE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhZXhwb3J0TmFtZTsKKyAgICB9CisKKyAgICBib29sIGlzRGVsZXRl
ZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBleHBvcnROYW1lLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7CisgICAgfQorCisgICAgLy8gVGhlIG1vZHVsZSByZWNvcmQgaXMg
bm90IG1hcmtlZCBmcm9tIHRoZSBHQy4gQnV0IHRoZXNlIHJlY29yZHMgYXJlIHJlYWNoYWJsZSBm
cm9tIHRoZSBKU0dsb2JhbE9iamVjdC4KKyAgICAvLyBTbyB3ZSBkb24ndCBjYXJlIHRoZSByZWFj
aGFiaWxpdHkgdG8gdGhpcyByZWNvcmQuCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29y
ZDsKKyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGV4cG9ydE5hbWU7Cit9OworCitzdHJ1
Y3QgUmVzb2x2ZVF1ZXJ5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVz
b2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5Jiwg
Y29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKworaW5saW5lIHVuc2lnbmVkIFJlc29sdmVR
dWVyeUhhc2g6Omhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSkKK3sKKyAgICByZXR1cm4g
V1RGOjpQdHJIYXNoPEpTTW9kdWxlUmVjb3JkKj46Omhhc2gocXVlcnkubW9kdWxlUmVjb3JkKSAr
IElkZW50aWZpZXJSZXBIYXNoOjpoYXNoKHF1ZXJ5LmV4cG9ydE5hbWUpOworfQorCitpbmxpbmUg
Ym9vbCBSZXNvbHZlUXVlcnlIYXNoOjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmIGxocywgY29u
c3QgUmVzb2x2ZVF1ZXJ5JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0g
cmhzLm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKK30K
Kworc3RhdGljIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnRMb29wKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByb290KQoreworICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZXNvbHZlZXhw
b3J0CisgICAgLy8gVGhpcyBmdW5jdGlvbiBhdm9pZHMgQysrIHJlY3Vyc2lvbiBvZiB0aGUgbmFp
dmUgUmVzb2x2ZUV4cG9ydCBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBGbGF0dGVuIHRoZSByZWN1
cnNpb24gdG8gdGhlIGxvb3Agd2l0aCB0aGUgdGFzayBxdWV1ZSBhbmQgZnJhbWVzLgorICAgIC8v
CisgICAgLy8gMS4gcGVuZGluZ1Rhc2tzCisgICAgLy8gICAgIFdlIGVucXVldWUgdGhlIHJlY3Vy
c2l2ZSByZXNvbHZlRXhwb3J0IGNhbGwgdG8gdGhpcyBxdWV1ZSB0byBhdm9pZCByZWN1cnNpdmUg
Y2FsbHMgaW4gQysrLgorICAgIC8vICAgICBUaGUgdGFzayBoYXMgMyB0eXBlcy4gKDEpIFF1ZXJ5
LCAoMikgSW5kaXJlY3RGYWxsYmFjayBhbmQgKDMpIEdhdGhlclN0YXJzLgorICAgIC8vICAgICAo
MSkgUXVlcnkKKyAgICAvLyAgICAgICAgIFF1ZXJ5aW5nIHRoZSByZXNvbHV0aW9uIHRvIHRoZSBj
dXJyZW50IG1vZHVsZS4KKyAgICAvLyAgICAgKDIpIEluZGlyZWN0RmFsbGJhY2sKKyAgICAvLyAg
ICAgICAgIEV4YW1pbmUgdGhlIHJlc3VsdCBvZiB0aGUgaW5kaXJlY3QgZXhwb3J0IHJlc29sdXRp
b24uIE9ubHkgd2hlbiB0aGUgaW5kaXJlY3QgZXhwb3J0IHJlc29sdXRpb24gZmFpbHMsCisgICAg
Ly8gICAgICAgICB3ZSBsb29rIGludG8gdGhlIHN0YXIgZXhwb3J0cy4gKHN0ZXAgNS1hLXZpKS4K
KyAgICAvLyAgICAgKDMpIEdhdGhlclN0YXJzCisgICAgLy8gICAgICAgICBFeGFtaW5lIHRoZSBy
ZXN1bHQgb2YgdGhlIHN0YXIgZXhwb3J0IHJlc29sdXRpb25zLgorICAgIC8vCisgICAgLy8gMi4g
ZnJhbWVzCisgICAgLy8gICAgIFdoZW4gdGhlIHNwZWMgY2FsbHMgdGhlIHJlc29sdmVFeHBvcnQg
cmVjdXJzaXZlbHksIGluc3RlYWQgd2UgYXBwZW5kIHRoZSBmcmFtZQorICAgIC8vICAgICAodGhh
dCBob2xkcyB0aGUgcmVzdWx0IHJlc29sdXRpb24pIHRvIHRoZSBmcmFtZXMgYW5kIGVucXVldWUg
dGhlIHRhc2sgdG8gdGhlIHBlbmRpbmdUYXNrcy4KKyAgICAvLyAgICAgVGhlIGVudHJ5IGluIHRo
ZSBmcmFtZXMgbWVhbnMgdGhlICpsb2NhbCogcmVzb2x1dGlvbiByZXN1bHQgb2YgdGhlIHNwZWNp
ZmljIHJlY3Vyc2l2ZSByZXNvbHZlRXhwb3J0LgorICAgIC8vCisgICAgLy8gV2Ugc2hvdWxkIG1h
aW50YWluIHRoZSBsb2NhbCByZXNvbHV0aW9uIHJlc3VsdCBpbnN0ZWFkIG9mIGhvbGRpbmcgdGhl
IGdsb2JhbCByZXNvbHV0aW9uIHJlc3VsdCBvbmx5LgorICAgIC8vIEZvciBleGFtcGxlLAorICAg
IC8vCisgICAgLy8gICAgIHN0YXIKKyAgICAvLyAoMSkgLS0tPiAoMikgIlJlc29sdmUiCisgICAg
Ly8gICAgICB8CisgICAgLy8gICAgICB8CisgICAgLy8gICAgICArLT4gKDMpICJOb3RGb3VuZCIK
KyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgIHwgICAgICAgc3RhcgorICAgIC8vICAgICAgKy0+
ICg0KSAtLS0+ICg1KSAiUmVzb2x2ZSIgW2hlcmVdCisgICAgLy8gICAgICAgICAgICAgICB8Cisg
ICAgLy8gICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICArLT4gKDYpICJFcnJv
ciIKKyAgICAvLworICAgIC8vIENvbnNpZGVyIHRoZSBhYm92ZSBncmFwaC4gVGhlIG51bWJlcnMg
cmVwcmVzZW50cyB0aGUgbW9kdWxlcy4gTm93IHdlIGFyZSBbaGVyZV0uCisgICAgLy8gSWYgd2Ug
b25seSBob2xkIHRoZSBnbG9iYWwgcmVzb2x1dGlvbiByZXN1bHQgZHVyaW5nIHRoZSByZXNvbHZl
RXhwb3J0IG9wZXJhdGlvbiwgW2hlcmVdLAorICAgIC8vIHdlIGRlY2lkZSB0aGUgZW50aXJlIHJl
c3VsdCBvZiByZXNvbHZlRXhwb3J0IGlzICJBbWJpZ3VvdXMiLCBiZWNhdXNlIHRoZXJlIGFyZSBt
dWx0aXBsZQorICAgIC8vICJSZXNsb3ZlIiAoaW4gbW9kdWxlICgyKSBhbmQgKDUpKS4gSG93ZXZl
ciwgdGhpcyBzaG91bGQgYmVjb21lICJFcnJvciIgYmVjYXVzZSAoNikgd2lsbAorICAgIC8vIHBy
b3BhZ2F0ZSAiRXJyb3IiIHN0YXRlIHRvIHRoZSAoNCksICg0KSB3aWxsIGJlY29tZSAiRXJyb3Ii
IGFuZCB0aGVuLCAoMSkgd2lsbCBiZWNvbWUKKyAgICAvLyAiRXJyb3IiLiBXZSBzaG91bGQgYWdn
cmVnYXRlIHRoZSByZXN1bHRzIGF0IHRoZSBzdGFyIGV4cG9ydHMgcG9pbnQgKCg0KSBhbmQgKDEp
KS4KKworICAgIHVzaW5nIFJlc29sdXRpb24gPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjsK
KyAgICB0eXBlZGVmIFdURjo6SGFzaFNldDxSZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhhc2gs
IFdURjo6Q3VzdG9tSGFzaFRyYWl0czxSZXNvbHZlUXVlcnk+PiBSZXNvbHZlU2V0OworICAgIGVu
dW0gY2xhc3MgVHlwZSB7IFF1ZXJ5LCBJbmRpcmVjdEZhbGxiYWNrLCBHYXRoZXJTdGFycyB9Owor
ICAgIHN0cnVjdCBUYXNrIHsKKyAgICAgICAgUmVzb2x2ZVF1ZXJ5IHF1ZXJ5OworICAgICAgICBU
eXBlIHR5cGU7CisgICAgfTsKKworICAgIFZlY3RvcjxUYXNrLCA4PiBwZW5kaW5nVGFza3M7Cisg
ICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0OworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBz
dGFyU2V0OworICAgIFZlY3RvcjxSZXNvbHV0aW9uLCA4PiBmcmFtZXM7CisKKyAgICBmcmFtZXMu
YXBwZW5kKFJlc29sdXRpb246Om5vdEZvdW5kKCkpOworCisgICAgLy8gQ2FsbCB3aGVuIHRoZSBx
dWVyeSBpcyBub3QgcmVzb2x2ZWQgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgIC8vIEl0IHdp
bGwgZW5xdWV1ZSB0aGUgc3RhciByZXNvbHV0aW9uIHJlcXVlc3RzLiBSZXR1cm4gImZhbHNlIiBp
ZiB0aGUgZXJyb3Igb2NjdXJzLgorICAgIGF1dG8gcmVzb2x2ZU5vbkxvY2FsID0gWyZdKGNvbnN0
IFJlc29sdmVRdWVyeSYgcXVlcnkpIC0+IGJvb2wgeworICAgICAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtcmVzb2x2ZWV4cG9ydAorICAg
ICAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi4zLCBzdGVwIDYKKyAgICAgICAgLy8gSWYgdGhlICJk
ZWZhdWx0IiBuYW1lIGlzIG5vdCByZXNvbHZlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUsIHdlIG5l
ZWQgdG8gdGhyb3cgYW4gZXJyb3IgYW5kIHN0b3AgcmVzb2x1dGlvbiBpbW1lZGlhdGVseSwKKyAg
ICAgICAgLy8gUmF0aW9uYWxlIHRvIHRoaXMgZXJyb3I6IEEgZGVmYXVsdCBleHBvcnQgY2Fubm90
IGJlIHByb3ZpZGVkIGJ5IGFuIGV4cG9ydCAqLgorICAgICAgICBpZiAocXVlcnkuZXhwb3J0TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQuaW1wbCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIHN0ZXAgNywgSWYgZXhwb3J0U3RhclNl
dCBjb250YWlucyBtb2R1bGUsIHRoZW4gcmV0dXJuIG51bGwuCisgICAgICAgIGlmICghc3RhclNl
dC5hZGQocXVlcnkubW9kdWxlUmVjb3JkKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgLy8gRW5xdWV1ZSB0aGUgdGFzayB0byBnYXRoZXIgdGhlIHJlc3Vs
dHMgb2YgdGhlIHN0YXJzLgorICAgICAgICAvLyBBbmQgYXBwZW5kIHRoZSBuZXcgUmVzb2x1dGlv
biBmcmFtZSB0byBnYXRoZXIgdGhlIGxvY2FsIHJlc3VsdCBvZiB0aGUgc3RhcnMuCisgICAgICAg
IHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpHYXRoZXJTdGFycyB9KTsK
KyAgICAgICAgZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9uOjpub3RGb3VuZCgpKTsKKworICAgICAg
ICAvLyBFbnF1ZXVlIHRoZSB0YXNrcyBpbiByZXZlcnNlIG9yZGVyLgorICAgICAgICBmb3IgKGF1
dG8gaXRlcmF0b3IgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkucmJl
Z2luKCksIGVuZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJpZXMoKS5yZW5k
KCk7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgY29uc3QgYXV0
byYgc3Rhck1vZHVsZU5hbWUgPSAqaXRlcmF0b3I7CisgICAgICAgICAgICBKU01vZHVsZVJlY29y
ZCogaW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZl
SW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxl
TmFtZS5nZXQoKSkpOworICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVz
b2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBxdWVyeS5leHBvcnROYW1lLmdldCgpKSwg
VHlwZTo6UXVlcnkgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsK
KworICAgIC8vIFJldHVybiB0aGUgY3VycmVudCByZXNvbHV0aW9uIHZhbHVlIG9mIHRoZSB0b3Ag
ZnJhbWUuCisgICAgYXV0byBjdXJyZW50VG9wID0gWyZdICgpIC0+IFJlc29sdXRpb24mIHsKKyAg
ICAgICAgQVNTRVJUKCFmcmFtZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lcy5s
YXN0KCk7CisgICAgfTsKKworICAgIC8vIE1lcmdlIHRoZSBnaXZlbiByZXNvbHV0aW9uIHRvIHRo
ZSBjdXJyZW50IHJlc29sdXRpb24gdmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4KKyAgICAvLyBJZiB0
aGVyZSBpcyBhbWJpZ3VpdHksIHJldHVybiAiZmFsc2UiLiBXaGVuIHRoZSAiZmFsc2UiIGlzIHJl
dHVybmVkLCB3ZSBzaG91bGQgbWFrZSB0aGUgcmVzdWx0ICJhbWJpZ3VvdXMiLgorICAgIGF1dG8g
bWVyZ2VUb0N1cnJlbnRUb3AgPSBbJl0gKGNvbnN0IFJlc29sdXRpb24mIHJlc29sdXRpb24pIC0+
IGJvb2wgeworICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6
Ok5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKGN1cnJl
bnRUb3AoKS50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAg
ICBjdXJyZW50VG9wKCkgPSByZXNvbHV0aW9uOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudFRvcCgpLm1vZHVsZVJlY29yZCAhPSByZXNv
bHV0aW9uLm1vZHVsZVJlY29yZCB8fCBjdXJyZW50VG9wKCkubG9jYWxOYW1lICE9IHJlc29sdXRp
b24ubG9jYWxOYW1lKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH07CisKKyAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyByb290LCBU
eXBlOjpRdWVyeSB9KTsKKyAgICB3aGlsZSAoIXBlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgY29uc3QgYXV0byB0YXNrID0gcGVuZGluZ1Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAg
IGNvbnN0IFJlc29sdmVRdWVyeSYgcXVlcnkgPSB0YXNrLnF1ZXJ5OworCisgICAgICAgIHN3aXRj
aCAodGFzay50eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6UXVlcnk6IHsKKyAgICAgICAgICAg
IGlmICghcmVzb2x2ZVNldC5hZGQodGFzay5xdWVyeSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29y
ZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPEpTTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeT4gb3B0aW9uYWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJlY29y
ZC0+dHJ5R2V0RXhwb3J0RW50cnkocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSk7CisgICAgICAgICAg
ICBpZiAoIW9wdGlvbmFsRXhwb3J0RW50cnkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBtYXRjaGVkIGV4cG9ydGVkIGJpbmRpbmcgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLAor
ICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycy4KKyAgICAg
ICAgICAgICAgICBpZiAoIXJlc29sdmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVu
dHJ5ID0gKm9wdGlvbmFsRXhwb3J0RW50cnk7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVu
dHJ5LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVu
dFRvcChSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQsIG1vZHVsZVJlY29y
ZCwgZXhwb3J0RW50cnkubG9jYWxOYW1lIH0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
UmVzb2x1dGlvbjo6YW1iaWd1b3VzKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVj
dDogeworICAgICAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29y
ZCA9IG1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBleHBvcnRF
bnRyeS5tb2R1bGVOYW1lKTsKKworICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGltcG9ydGVk
IG1vZHVsZSBkb2VzIG5vdCBwcm9kdWNlIGFueSByZXNvbHZlZCBiaW5kaW5nLCB3ZSBuZWVkIHRv
IGxvb2sgaW50byB0aGUgc3RhcnMgaW4gdGhlICpjdXJyZW50KgorICAgICAgICAgICAgICAgIC8v
IG1vZHVsZS4gVG8gZG8gdGhpcywgd2UgYXBwZW5kIHRoZSBgSW5kaXJlY3RGYWxsYmFja2AgdGFz
ayB0byB0aGUgdGFzayBxdWV1ZS4KKyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5k
KFRhc2sgeyBxdWVyeSwgVHlwZTo6SW5kaXJlY3RGYWxsYmFjayB9KTsKKyAgICAgICAgICAgICAg
ICAvLyBBbmQgYXBwZW5kIHRoZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0byBjaGVjayB0aGUgaW5k
aXJlY3QgZXhwb3J0IHdpbGwgYmUgcmVzb2x2ZWQgb3Igbm90LgorICAgICAgICAgICAgICAgIGZy
YW1lcy5hcHBlbmQoUmVzb2x1dGlvbjo6bm90Rm91bmQoKSk7CisgICAgICAgICAgICAgICAgcGVu
ZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3Jk
LCBleHBvcnRFbnRyeS5pbXBvcnROYW1lKSwgVHlwZTo6UXVlcnkgfSk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVHlwZTo6SW5kaXJlY3RGYWxsYmFjazog
eworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gZnJhbWVzLnRha2VMYXN0KCk7
CisKKyAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6
Tm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICAvLyBJbmRpcmVjdCBleHBvcnQgZW50cnkgZG9l
cyBub3QgcHJvZHVjZSBhbnkgcmVzb2x2ZWQgYmluZGluZy4KKyAgICAgICAgICAgICAgICAvLyBT
byB3ZSB3aWxsIGludmVzdGlnYXRlIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJl
c29sdmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJl
c29sdXRpb246OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIElmIGluZGlyZWN0IGV4cG9ydCBlbnRyeSBwcm9kdWNlcyBS
ZXNvbHZlZCwgd2Ugc2hvdWxkIG1lcmdlIGl0IHRvIHRoZSB1cHBlciBmcmFtZS4KKyAgICAgICAg
ICAgIC8vIEFuZCBkbyBub3QgaW52ZXN0aWdhdGUgdGhlIHN0YXJzIG9mIHRoZSBjdXJyZW50IG1v
ZHVsZS4KKyAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3AocmVzb2x1dGlvbikpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmFtYmlndW91cygpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFR5cGU6OkdhdGhlclN0YXJzOiB7
CisgICAgICAgICAgICAvLyBNZXJnZSB0aGUgc3RhciByZXNvbHV0aW9uIHRvIHRoZSB1cHBlciBm
cmFtZS4KKyAgICAgICAgICAgIGNvbnN0IGF1dG8gc3RhclJlc29sdXRpb24gPSBmcmFtZXMudGFr
ZUxhc3QoKTsKKyAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3Aoc3RhclJlc29sdXRp
b24pKQorICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NF
UlQoZnJhbWVzLnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4gZnJhbWVzWzBdOworfQorCithdXRv
IEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgZXhwb3J0TmFtZSkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiByZXNvbHZl
RXhwb3J0TG9vcChleGVjLCBSZXNvbHZlUXVlcnkodGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsK
K30KKwogdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSk7CkBAIC0xMDEsMTEgKzQxNiwxMjAgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgZXhlY3V0YWJsZSk7CisgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhl
Y3V0YWJsZSk7CiB9CiAKLUpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRl
KikKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0
ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KQogewotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3Rh
bnRpYXRpb24KKworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2sgPSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKCk7CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gdW5saW5rZWRDb2Rl
QmxvY2stPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKTsKKyAgICBKU01vZHVsZUVudmly
b25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShl
eGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CisKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAg
IC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQgc3RlcCA5LgorICAgIC8vIEVuc3VyZSBhbGwgdGhlIGlu
ZGlyZWN0IGV4cG9ydHMgYXJlIGNvcnJlY3RseSByZXNvbHZlZCB0byB1bmlxdWUgYmluZGluZ3Mu
CisgICAgLy8gRXZlbiBpZiB3ZSBhdm9pZGVkIGR1cGxpY2F0ZSBleHBvcnRzIGluIHRoZSBwYXJz
ZXIsIHN0aWxsIGFtYmlndW91cyBleHBvcnRzIG9jY3VyIGR1ZSB0byB0aGUgc3RhciBleHBvcnQg
KGBleHBvcnQgKiBmcm9tICJtb2QiYCkuCisgICAgLy8gV2hlbiB3ZSBzZWUgdGhpcyB0eXBlIG9m
IGFtYmlndWl0eSBmb3IgdGhlIGluZGlyZWN0IGV4cG9ydHMgaGVyZSwgdGhyb3cgYSBzeW50YXgg
ZXJyb3IuCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgaWYg
KGV4cG9ydEVudHJ5LnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJ
bmRpcmVjdCkgeworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUV4
cG9ydChleGVjLCBleHBvcnRFbnRyeS5leHBvcnROYW1lKTsKKyAgICAgICAgICAgIHN3aXRjaCAo
cmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5v
dEZvdW5kOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmlu
ZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRy
eS5leHBvcnROYW1lLmltcGwoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91
czoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIklu
ZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhw
b3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBt
dWx0aXBsZSBiaW5kaW5ncy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgICAgIHRocm93
U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5n
IG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVz
LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1
dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9u
CisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDEyLgorICAgIC8vIEluc3RhbnRpYXRl
IG5hbWVzcGFjZSBvYmplY3RzIGFuZCBpbml0aWFsaXplIHRoZSBiaW5kaW5ncyB3aXRoIHRoZW0g
aWYgcmVxdWlyZWQuCisgICAgLy8gQW5kIGVuc3VyZSB0aGF0IGFsbCB0aGUgaW1wb3J0cyBjb3Jy
ZWN0bHkgcmVzb2x2ZWQgdG8gdW5pcXVlIGJpbmRpbmdzLgorICAgIGZvciAoY29uc3QgYXV0byYg
cGFpciA6IG1faW1wb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRy
eSA9IHBhaXIudmFsdWU7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9
IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVz
dCk7CisgICAgICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSkpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBNb2R1bGVOYW1lc3BhY2VPYmplY3Qgd2lsbCBiZSBpbXBsZW1lbnRlZC4K
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDg3MDUKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlv
biA9IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9y
dE5hbWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICAgICAgdGhy
b3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICci
LCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQu
IikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0
RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFt
YmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAg
ICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcg
bmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMu
IikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24K
KyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTQuCisgICAgLy8gTW9kdWxlIGVudmly
b25tZW50IGNvbnRhaW5zIHRoZSBoZWFwIGFsbG9jYXRlZCAidmFyIiwgImxldCIgYW5kICJjb25z
dCIuCisgICAgLy8gV2hlbiBjcmVhdGluZyB0aGUgZW52aXJvbm1lbnQsIHdlIGluaXRpYWxpemVk
IGFsbCB0aGUgc2xvdyB3aXRoIGVtcHR5LCBpdCdzIG9rIGZvciBsZXhpY2FsIHZhbHVlcy4KKyAg
ICAvLyBCdXQgZm9yICJ2YXIiLCB3ZSBzaG91bGQgaW5pdGlhbGl6ZSBpdCB3aXRoIHVuZGVmaW5l
ZC4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogbV9kZWNsYXJlZFZhcmlhYmxlcykg
eworICAgICAgICBjb25zdCBhdXRvJiBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodmFyaWFibGUu
a2V5LmdldCgpKTsKKyAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgp
OworICAgICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkpCisgICAgICAgICAgICBzeW1ib2xUYWJs
ZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2
YXJpYWJsZS5rZXkuZ2V0KCkpLCBqc1VuZGVmaW5lZCgpLCBmYWxzZSk7CisgICAgfQorCisgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQg
c3RlcCAxNi1hLWl2LgorICAgIC8vIEluaXRpYWxpemUgaGVhcCBhbGxvY2F0ZWQgZnVuY3Rpb24g
ZGVjbGFyYXRpb25zLgorICAgIC8vIFRoZXkgY2FuIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGJvZHkg
b2YgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCB1bmRlciBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisg
ICAgZm9yIChzaXplX3QgaSA9IDAsIG51bWJlck9mRnVuY3Rpb25zID0gdW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpOyBpIDwgbnVtYmVyT2ZGdW5jdGlvbnM7ICsraSkg
eworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOworICAgICAgICBj
b25zdCBhdXRvJiBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUtPm5hbWUoKS5pbXBsKCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnku
dmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAgICAgICAg
ICAgQVNTRVJUKCF1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmlzRW1wdHkoKSk7
CisgICAgICAgICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9m
aWxlcigpKSB7CisgICAgICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCkt
Pmluc2VydFVuZXhlY3V0ZWRSYW5nZShtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlSUQo
KSwKKyAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQ
cm9maWxpbmdTdGFydE9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUtPnNvdXJjZSgpKSwgbW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICAgICAgc3ltYm9s
VGFibGVQdXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLT5uYW1lKCksIGZ1bmN0aW9uLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBt
X21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOworfQor
CitKU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBpZiAoIW1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0
ZShtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpLCBleGVjLCBtX21vZHVsZUVudmlyb25t
ZW50LmdldCgpKTsKKyAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKQEAgLTEyOSwyMyArNTUzLDI1IEBAIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6OmR1bXAoKQogICAgICAgICBkYXRhTG9nKCIgICAgICBtb2R1bGUoIiwg
cHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lKSwgIilcbiIpOwogCiAgICAgZGF0YUxvZygiICAgIElt
cG9ydDogIiwgbV9pbXBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpCi0gICAgICAgIGRhdGFMb2coIiAg
ICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUuaW1wb3J0TmFtZSksICIpLCBs
b2NhbCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgi
LCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubW9kdWxlUmVxdWVzdCksICIpXG4iKTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3Qg
YXV0byYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBkYXRhTG9nKCIgICAgICBp
bXBvcnQoIiwgcHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5pbXBvcnROYW1lKSwgIiksIGxvY2Fs
KCIsIHByaW50YWJsZU5hbWUoaW1wb3J0RW50cnkubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgiLCBw
cmludGFibGVOYW1lKGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7CisgICAgfQog
CiAgICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNpemUoKSwgIiBl
bnRyaWVzXG4iKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMp
IHsKLSAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1ZTsKLSAgICAg
ICAgc3dpdGNoIChlbnRyeS50eXBlKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5
ID0gcGFpci52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CiAgICAg
ICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgotICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFt
ZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2NhbF0gIiwgImV4cG9ydCgiLCBwcmludGFi
bGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFt
ZShleHBvcnRFbnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6Ci0gICAgICAgICAgICBk
YXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50
cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVO
YW1lKSwgIilcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW05hbWVzcGFjZV0gIiwg
ImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbW9k
dWxlKCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkluZGly
ZWN0OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhwb3J0KCIs
IHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJpbnRhYmxl
TmFtZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5
Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5kaXJl
Y3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5leHBvcnROYW1lKSwg
IiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmltcG9ydE5hbWUpLCAiKSwg
bW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggODFkYTM5NjZlOGM1YThkYTkz
MDRkMjgyZjRmYmNhOTRmMjRlYWU0OC4uOTRlOTJhZDAzZWY2YjJhMjY0MjM3NTAxYjdlNzVmMjE1
YmFmYTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03OCw4
ICs3OSw4IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKICAgICB9OwogCiAgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsK
LSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50
cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4+PiBJbXBvcnRNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhh
c2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydEVudHJpZXM7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4g
RXhwb3J0RW50cmllczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKQEAgLTEwMCwyNSAr
MTAxLDQ5IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKICAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CiAgICAg
dm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwogCi0gICAgY29uc3QgSW1w
b3J0RW50cnkmIGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IHRyeUdldEltcG9ydEVu
dHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEV4cG9ydEVu
dHJ5PiB0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CiAK
ICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VDb2RlOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KCkgY29uc3QgeyByZXR1
cm4gbV9tb2R1bGVLZXk7IH0KICAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVxdWVz
dGVkTW9kdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQotICAgIGNv
bnN0IEV4cG9ydE1hcCYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50
cmllczsgfQotICAgIGNvbnN0IEltcG9ydE1hcCYgaW1wb3J0RW50cmllcygpIGNvbnN0IHsgcmV0
dXJuIG1faW1wb3J0RW50cmllczsgfQorICAgIGNvbnN0IEV4cG9ydEVudHJpZXMmIGV4cG9ydEVu
dHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBJbXBv
cnRFbnRyaWVzJiBpbXBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRFbnRyaWVz
OyB9CisgICAgY29uc3QgT3JkZXJlZElkZW50aWZpZXJTZXQmIHN0YXJFeHBvcnRFbnRyaWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFyRXhwb3J0RW50cmllczsgfQogCiAgICAgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2RlY2xh
cmVkVmFyaWFibGVzOyB9CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlczsgfQogCiAgICAgdm9p
ZCBkdW1wKCk7CiAKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgp
CisgICAgeworICAgICAgICBBU1NFUlQobV9tb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgIHJl
dHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOworICAgIH0KIAogICAgIHZvaWQgbGluayhF
eGVjU3RhdGUqKTsKICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXhlY1N0YXRlKik7CiAKICAgICBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSBjb25zdCB7IHJl
dHVybiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpOyB9CiAKKyAgICBzdHJ1Y3QgUmVz
b2x1dGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IFJlc29sdmVkLCBOb3RGb3VuZCwg
QW1iaWd1b3VzLCBFcnJvciB9OworCisgICAgICAgIHN0YXRpYyBSZXNvbHV0aW9uIG5vdEZvdW5k
KCk7CisgICAgICAgIHN0YXRpYyBSZXNvbHV0aW9uIGVycm9yKCk7CisgICAgICAgIHN0YXRpYyBS
ZXNvbHV0aW9uIGFtYmlndW91cygpOworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgSlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7
CisgICAgfTsKKworICAgIFJlc29sdXRpb24gcmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiBleHBvcnROYW1lKTsKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVJbXBvcnQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKTsKKworICAgIEpTTW9kdWxl
UmVjb3JkKiBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZU5hbWUpOworCiBwcml2YXRlOgogICAgIEpTTW9kdWxlUmVjb3JkKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVj
bGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJs
ZXMpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpAQCAtMTM0LDcgKzE1OSw3IEBAIGNs
YXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIEpTTW9kdWxlUmVjb3JkKiBob3N0UmVz
b2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5h
bWUpOworICAgIHZvaWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqKTsKIAogICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdp
dmVuIG1vZHVsZSBuYW1lIHRvIHRoZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUg
dW5pcXVlIHZhbHVlIHRvIHJlcHJlc2VudCB0aGlzIG1vZHVsZS4KICAgICBJZGVudGlmaWVyIG1f
bW9kdWxlS2V5OwpAQCAtMTQ1LDQ1ICsxNzAsMjMgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBw
dWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9s
ZXhpY2FsVmFyaWFibGVzOwogCiAgICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4K
LSAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOworICAgIEltcG9ydEVudHJpZXMgbV9pbXBv
cnRFbnRyaWVzOwogCiAgICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCi0gICAg
RXhwb3J0TWFwIG1fZXhwb3J0RW50cmllczsKKyAgICBFeHBvcnRFbnRyaWVzIG1fZXhwb3J0RW50
cmllczsKIAotICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKKyAgICAvLyBT
YXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHJlc29sdmVFeHBvcnQgcmVxdWlyZXMgaXQu
CisgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKIAogICAgIC8v
IFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMg
YW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KICAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgog
ICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKIAotICAgIFdyaXRl
QmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZTsKICAgICBXcml0ZUJhcnJpZXI8SlNNYXA+IG1fZGVwZW5kZW5jaWVzTWFwOwotfTsKIAotaW5s
aW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVu
dGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fcmVxdWVzdGVkTW9kdWxlcy5hZGQobW9kdWxl
TmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0
RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQotewotICAgIG1faW1wb3J0RW50cmllcy5h
ZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01v
ZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQotewot
ICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KTsK
LX0KLQotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeShjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fc3RhckV4cG9ydEVudHJpZXMuYWRk
KG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIGF1dG8gSlNNb2R1bGVSZWNvcmQ6Omxv
b2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFt
ZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCi17Ci0gICAgcmV0dXJuICgqbV9pbXBvcnRFbnRyaWVz
LmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Ci19CisgICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlOworICAgIFdyaXRlQmFycmll
cjxKU01vZHVsZUVudmlyb25tZW50PiBtX21vZHVsZUVudmlyb25tZW50OworfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAK
aW5kZXggYmIyZWZkZDA2MzFjZDE4ZWE5NzU0MjY3NGEyY2U3MTgxNTA3MmM4Zi4uMmQwNjA4ZDlj
N2E1MTY1Zjk2M2E4MjMyMmVlYTI0YmU2YTY3NWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRl
ICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNp
bmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIApAQCAtNjUs
NiArNjcsMTkgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVs
ZUVudmlyb25tZW50ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oc2NvcGUp
KSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gbW9kdWxlRW52
aXJvbm1lbnQtPm1vZHVsZVJlY29yZCgpOworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0
aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIGlkZW50KTsKKyAgICAgICAg
ICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5
cGU6OlJlc29sdmVkKSB7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVk
UmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAgICAgICAgSlNNb2R1
bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZpcm9ubWVudCA9IGltcG9ydGVkUmVjb3JkLT5tb2R1
bGVFbnZpcm9ubWVudCgpOworICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBpbXBvcnRlZEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQocmVzb2x1dGlvbi5sb2Nh
bE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsK
KyAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShNb2R1bGVWYXIsIG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIGltcG9ydGVkRW52aXJvbm1lbnQsIGVudHJ5
LndhdGNocG9pbnRTZXQoKSwgZW50cnkuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSwgcmVzb2x1dGlv
bi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChsZXhpY2FsRW52aXJvbm1lbnQtPnN5
bWJvbFRhYmxlKCktPnVzZXNOb25TdHJpY3RFdmFsKCkpCiAgICAgICAgICAgICBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMiw2ICsy
NDcsNyBAQCBjb25zdCBjaGFyKiByZXNvbHZlVHlwZU5hbWUoUmVzb2x2ZVR5cGUgdHlwZSkKICAg
ICAgICAgIkdsb2JhbFZhciIsCiAgICAgICAgICJDbG9zdXJlVmFyIiwKICAgICAgICAgIkxvY2Fs
Q2xvc3VyZVZhciIsCisgICAgICAgICJNb2R1bGVWYXIiLAogICAgICAgICAiR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAgIkdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MiLAogICAgICAgICAiQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Mi
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4IGE2NTMxNjc0OTBm
NjgyMjNmNTExZGQyODkwODkyOWZjNDZhMTk3M2MuLjAyNmEyNzE0ZGM4ZDkyMmE5ODI4ODVlNTQ2
YjU3OGJhOTYzNDgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgK
QEAgLTQ1LDYgKzQ1LDcgQEAgZW51bSBSZXNvbHZlVHlwZSB7CiAgICAgR2xvYmFsVmFyLAogICAg
IENsb3N1cmVWYXIsCiAgICAgTG9jYWxDbG9zdXJlVmFyLAorICAgIE1vZHVsZVZhciwKIAogICAg
IC8vIERpdHRvLCBidXQgYXQgbGVhc3Qgb25lIGludGVydmVuaW5nIHNjb3BlIHVzZWQgbm9uLXN0
cmljdCBldmFsLCB3aGljaAogICAgIC8vIGNhbiBpbmplY3QgYW4gaW50ZXJjZXB0aW5nIHZhciBk
ZWxjYXJhdGlvbiBhdCBydW50aW1lLgpAQCAtNzIsNiArNzMsNyBAQCBpbmxpbmUgUmVzb2x2ZVR5
cGUgbWFrZVR5cGUoUmVzb2x2ZVR5cGUgdHlwZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cykKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAg
ICAgIHJldHVybiBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsKKyAgICBjYXNlIE1v
ZHVsZVZhcjoKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoK
ICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTkwLDYgKzkyLDcgQEAgaW5saW5lIGJv
b2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5cGUgdHlwZSkKICAgICBjYXNlIEds
b2JhbFZhcjoKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6
CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIEdsb2JhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC0xMDMsMTMgKzEwNiwxNCBAQCBpbmxpbmUgYm9vbCBu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogfQogCiBzdHJ1Y3QgUmVz
b2x2ZU9wIHsKLSAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9u
bWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQpCisg
ICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQsIFdhdGNo
cG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kLCBVbmlxdWVkU3RyaW5n
SW1wbCogaW1wb3J0ZWROYW1lID0gbnVsbHB0cikKICAgICAgICAgOiB0eXBlKHR5cGUpCiAgICAg
ICAgICwgZGVwdGgoZGVwdGgpCiAgICAgICAgICwgc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAg
ICAgLCBsZXhpY2FsRW52aXJvbm1lbnQobGV4aWNhbEVudmlyb25tZW50KQogICAgICAgICAsIHdh
dGNocG9pbnRTZXQod2F0Y2hwb2ludFNldCkKICAgICAgICAgLCBvcGVyYW5kKG9wZXJhbmQpCisg
ICAgICAgICwgaW1wb3J0ZWROYW1lKGltcG9ydGVkTmFtZSkKICAgICB7CiAgICAgfQogCkBAIC0x
MTksNiArMTIzLDcgQEAgc3RydWN0IFJlc29sdmVPcCB7CiAgICAgSlNMZXhpY2FsRW52aXJvbm1l
bnQqIGxleGljYWxFbnZpcm9ubWVudDsKICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0
OwogICAgIHVpbnRwdHJfdCBvcGVyYW5kOworICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4g
aW1wb3J0ZWROYW1lOwogfTsKIAogY2xhc3MgUmVzb2x2ZU1vZGVBbmRUeXBlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCmlu
ZGV4IDI4ZTBiYWRhYTcyYWYzMGNjNzcxOTE5NjA0YTYxMmQ2Y2RiNzNlMDcuLjZlNmY5ZjlhNmRh
NjE4MTJlM2MyMWFkNDM2NmZkODdiN2NkMTQ3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVF
bnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9k
dWxlQW5hbHl6ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260426</attachid>
            <date>2015-09-02 11:13:10 -0700</date>
            <delta_ts>2015-09-03 11:39:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150902111251.patch</filename>
            <type>text/plain</type>
            <size>93233</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi5jMWQ5NDkwODA0YzZhZjcx
MzQxZGY5NzY1YTZhN2UwMThhOGViZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMTUtMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
Lmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21f
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2Nv
cGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vy
cm9yLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgICogcnVu
dGltZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0Ojptb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmguCisgICAgICAgIChKU0M6OkpT
TW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJv
bm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1l
bnQ6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9u
bWVudDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50
Ojptb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1
bGVSZWNvcmRTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1
bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29y
ZDo6YWRkRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OlJlc29sdmVR
dWVyeSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAg
ICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlJl
c29sdmVRdWVyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnlIYXNoOjpl
cXVhbCk6CisgICAgICAgIChKU0M6OnJlc29sdmVFeHBvcnRMb29wKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW5z
dGFudGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhl
Y3V0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBy
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpl
eHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmltcG9ydEVudHJp
ZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6c3RhckV4cG9ydEVudHJpZXMpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeSk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6YWJzdHJh
Y3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpyZXNvbHZlVHlwZU5hbWUpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAoSlNDOjptYWtlVHlwZSk6CisgICAgICAgIChKU0M6
Om5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNv
bHZlT3ApOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoKKwogMjAx
NS0wOS0wMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBwcm90b2NvbCBnZW5lcmF0b3Igc2hvdWxkIG5vdCBhbGxvdyBub24tYm9vbGVhbiB2
YWx1ZXMgZm9yICJvcHRpb25hbCIga2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggNjgwNjBhNjk5ZmI0ODk3MDA2ZTRmYTk5MzIwMTI3MGM0ZDJlYzNkOS4uZWZhNTcwYTIx
MjYyMjQ2MzhlNTU1ODU4Y2RjZWZkYmFmZTAyOTI1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTM3LDYgKzUzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1F
X1NPVVJDRVMKICAgICBydW50aW1lL0pTTG9jay5jcHAKICAgICBydW50aW1lL0pTTWFwLmNwcAog
ICAgIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAKKyAgICBydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuY3BwCiAgICAgcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKICAgICBydW50aW1lL0pT
TmF0aXZlU3RkRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggMzk5NjNiNDEwMTFjZTllNTAz
ZTM2ODlhMDY3NTQ1YTZiNDBiNDBiMS4uOGExMjZlNTU0NTNkMzhjMDRlOWMyYWMyYzI0NzgyM2Ix
NTQwNDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03ODYs
NiArNzg2LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmNwcCIgLz4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3Jk
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRpdmVTdGRG
dW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90
QW5PYmplY3QuY3BwIiAvPgpAQCAtMTY0MCw2ICsxNjQxLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTTWFwSXRlcmF0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNb2R1bGVFbnZpcm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU01vZHVsZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTm90QW5PYmplY3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAyYmY3MTgwNDBiMzRkNGZjMDA4M2YyMWE1
M2NlNDgyN2UxZmMwMjg2Li42OGU0YzdlNDRmOWM4ODJlMTM0Y2NmN2UzYTUwNjBhNmM0YzhjNzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CkBAIC03MjYsNiArNzI2LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNYXAuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25t
ZW50LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAt
MzUwNSw2ICszNTA4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
YXAuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIj4KICAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBmMjJlNzE2ZjUzMTEwN2ZlNTk4MWM1YTZkMTZkM2E0NTQxZTYx
OWY1Li5iYjE2MzAyZDEwMWQ0MDdlOWQyNjA0N2QyNzU3MDEwN2RmNzg3MjllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcyNiw2ICsxNzI2LDggQEAKIAkJRTM5NjNDRUUxQjcz
Rjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyog
Tm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5j
cHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwICovOyB9OworCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVF
bnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRG
MjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAq
LzsgfTsKQEAgLTM1ODcsNiArMzU4OSw4IEBACiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVj
b3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM2MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2
MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDc3Nyw2ICs0NzgxLDggQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVC
MDBDM0U2NDMgLyogSlNNYXAuaCAqLywKIAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyog
SlNNYXBJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpT
TWFwSXRlcmF0b3IuaCAqLywKKwkJCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpT
TW9kdWxlRW52aXJvbm1lbnQuaCAqLywKIAkJCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyog
SlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5oICovLAogCQkJCUUzM0U4RDFBMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05h
dGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLywKQEAgLTYxMzksNiArNjE0NSw3IEBACiAJCQkJMEYyQjlD
RTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZl
bmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzRDIzOUM5MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYw
RjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTcwOUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzg2LDYgKzczOTMsNyBAQAogCQkJCTBG
NkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0QyMzlDODFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJl
Z2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAppbmRleCBjNGM2NmQzYjc5NzZmOTc3NWJkMTM0ZDFlYTk4OWMxNGE0
NWRhYWQ3Li42NzI2NDNjZThhODVhOGMyZDRkNWJmNzYxYzAzZGNkMGEyZTkwOWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDgsNiArNDgs
NyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmly
b25tZW50LmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTE5NzIsOSArMTk3
MywxNCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9w
ID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUpOwogICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBvcC50eXBlOwogICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA1XS51Lm9wZXJhbmQgPSBvcC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChv
cC5sZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2
XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52
aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
aWYgKG9wLmxleGljYWxFbnZpcm9ubWVudCkgeworICAgICAgICAgICAgICAgIGlmIChvcC50eXBl
ID09IE1vZHVsZVZhcikgeworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHRoZSBsaW5rZWQg
bW9kdWxlIGVudmlyb25tZW50IHN0cm9uZ2x5IHJlZmVyZW5jZWQuCisgICAgICAgICAgICAgICAg
ICAgIGFkZENvbnN0YW50KG9wLmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5qc0NlbGwuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFi
bGUsIG9wLmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZt
KCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgp
KTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
Nl0udS5wb2ludGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0xOTk5LDcgKzIwMDUsMTIgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBH
ZXQsIG1vZGVBbmRUeXBlLnR5cGUoKSk7CiAKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
NF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUoKSwgb3Au
dHlwZSkub3BlcmFuZCgpOworICAgICAgICAgICAgLy8gTW9kdWxlVmFyIGNhbiBnZXQgdGhlIHZh
cmlhYmxlIGFzIHRoZSBzYW1lIHRvIENsb3N1cmVWYXIuCisgICAgICAgICAgICBpZiAob3AudHlw
ZSA9PSBNb2R1bGVWYXIpCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9w
ZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBDbG9zdXJlVmFy
KS5vcGVyYW5kKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9k
ZSgpLCBvcC50eXBlKS5vcGVyYW5kKCk7CisKICAgICAgICAgICAgIGlmIChvcC50eXBlID09IEds
b2JhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCiAg
ICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LndhdGNocG9pbnRTZXQgPSBvcC53
YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpAQCAtMjA2
NywxNyArMjA3OCwxOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgICAg
IC8vIHdlJ3JlIGFic3RyYWN0bHkgInJlYWQiaW5nIGZyb20gYSBKU1Njb3BlLgogICAgICAgICAg
ICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0
eXBlKTsKIAotICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIpCisgICAg
ICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVs
ZVZhcikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJv
bm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9
PSBHbG9iYWxWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gbV9nbG9iYWxP
YmplY3QuZ2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAg
ICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA9IChvcC50eXBlID09IE1vZHVsZVZhcikg
PyBvcC5pbXBvcnRlZE5hbWUuZ2V0KCkgOiBpZGVudC5pbXBsKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHN5bWJvbFRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiBvdXIgcGFyZW50IHNjb3BlIHdhcyBjcmVhdGVkIHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJs
ZWQsIGl0IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQgZm9yIHByb2ZpbGluZyB5ZXQuCiAgICAgICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIp
OwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVu
aXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9y
VmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxv
Y2tlciwgaW1wbCwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0g
c3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgp
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFy
aWFibGVJRCA9IFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiZGRkMDM2N2YzYmUzNzI3NjlhZGZm
YmNmYTU5ODQzMThiMjNjNzg4Li4zODIzYmM3NTVjODRhNmY4ZWJhYmRjMDUwOTBmYmVhM2JhMWYw
Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04
Miw2ICs4Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRpb247CitjbGFzcyBKU01v
ZHVsZUVudmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJl
b3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggN2Y2NTA1MmRhOGYyZjFm
OTc0MzRjOGNiN2E2YTIwZmM0MjI2ZTUwNy4uOTc5YzhlNjgwZDZkOGQwNjhlNmRmZjQ1YjVkNWFl
MDhkYTE2OWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVu
dC5oIgpAQCAtMzgzMyw2ICszODM0LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCByZXNvbHZlVHlwZSA9PSBHbG9i
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFBoYW50b20sIGdldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6IHsKKyAgICAgICAg
ICAgICAgICAvLyBTaW5jZSB0aGUgdmFsdWUgb2YgdGhlICJzY29wZSIgdmlydHVhbCByZWdpc3Rl
ciBpcyBub3QgdXNlZCBpbiBMTEludCAvIGJhc2VsaW5lIG9wX3Jlc29sdmVfc2NvcGUgd2l0aCBN
b2R1bGVWYXIsCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCBub3QgdG8ga2VlcCBpdCBhbGl2
ZSBieSB0aGUgUGhhbnRvbSBub2RlLgorICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1l
bnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjdXJy
ZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpOworICAgICAgICAgICAgICAgIC8vIE1v
ZHVsZSBlbnZpcm9ubWVudCBpcyBhbHJlYWR5IHN0cm9uZ2x5IHJlZmVyZW5jZWQgYnkgdGhlIENv
ZGVCbG9jay4KKyAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtK
U0NvbnN0YW50KG1vZHVsZUVudmlyb25tZW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAg
ICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6IHsKQEAgLTQwMDIsNiArNDAxMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoR2V0Q2xvc3VyZVZhciwgT3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiks
IHNjb3BlTm9kZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTQwODYsNiArNDA5NiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgorICAg
ICAgICAgICAgICAgIC8vIE5lZWQgbm90IHRvIGtlZXAgInNjb3BlIiBhbmQgInZhbHVlIiByZWdp
c3RlciB2YWx1ZXMgaGVyZSBieSBQaGFudG9tIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB0
aGV5IGFyZSBub3QgdXNlZCBpbiBMTEludCAvIGJhc2VsaW5lIG9wX3B1dF90b19zY29wZSB3aXRo
IE1vZHVsZVZhci4KKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggZmE2MmVhNmYzNzZkODhjZWZmNGU5ODI3NTQzMjY2ZTBkOTNhNDQ5Yy4u
NWE3YTJhZTVkZDBlNmQwMDQ5MWMwNzdiYzU0OGRiZGQxNzE2NmJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJK
U1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMTk0LDYgKzExOTUs
NTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihy
ZXN1bHQpOwogfQogCitKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZp
cm9ubWVudCogc2NvcGUpCit7CisgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBs
aW5nU2NvcGUgc2FtcGxpbmdTY29wZSh0aGlzKTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9
PSAmY2FsbEZyYW1lLT52bSgpKTsKKyAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJy
ZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5
KCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNj
b3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1
cnNlKCkpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vy
cm9yKGNhbGxGcmFtZSkpOworCisgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFi
bGUtPnByZXBhcmVGb3JFeGVjdXRpb24oY2FsbEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZv
ckNhbGwpOworICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IGNvbXBpbGVFcnJvcikpOworICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpOworCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9n
ICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNhbGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhy
b3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQo
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhp
cycuCisKKyAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmlu
ZWRgLgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1
bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1l
IHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0Nh
bGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmlu
ZWQoKSwgMSk7CisKKyAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxl
ZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4
ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJs
ZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFs
dWUgcmVzdWx0OworICAgIHsKKyAgICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxS
ZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKKyAgICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisK
KyAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkp
CisgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291
cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVt
bigpKTsKKworICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lO
TElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdI
b29rSUQgZGVidWdIb29rSUQpCiB7CiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1l
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDAzOGJjYTVjZmM3NWI5YjI0
NTc2MmQ2ZTY0ZjY4ZjJlNzhlYzYyNTEuLjRmZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0
MDk1YWY0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCkBAIC01NCw2ICs1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpT
QXJyb3dGdW5jdGlvbjsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OworICAgIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiAgICAgY2xhc3MgSlNNb2R1
bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFBy
b2dyYW1FeGVjdXRhYmxlOwpAQCAtMjE1LDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNP
YmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29u
c3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRl
KEV2YWxFeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUq
KTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2Fs
bEZyYW1lKiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1l
bnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0
ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDhjZGYx
MWZkMzZmYWZkOTZiZjJiYjY3MWY1NWMzMWQ0NTdlNjQ0OS4uOWE0YWU0NTUyOWRlZmU0NzVkNjc3
YmY3MDRiNWM2MDc2ZTNlZDM2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTYW1wbGlu
Z1Rvb2wuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRB
cmd1bWVudHNUYWJsZS5oIgorI2luY2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0
Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAKQEAgLTcwMyw2ICs3MDQsMTAgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRS
ZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0
KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkp
OwogICAgICAgICBicmVhazsKQEAgLTcxNiw3ICs3MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvdwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAg
IFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IEds
b2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9
PSBDbG9zdXJlVmFyKQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBy
ZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCBy
ZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKQEAgLTc3OCw2ICs3ODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJv
bV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1p
YzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODUyLDYgKzg1OCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVz
b2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xv
dCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNocG9pbnRTZXQpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAg
IGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODczLDcgKzg4MCwxMiBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxp
bmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworCisgICAgaWYgKHJl
c29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9t
b2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRU
b1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
ZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmlu
ZGV4IDgxMmQxYjk5ZTYzYzAxMjRlYWQ2OTg1MDQxZTdlYTg0YjQ5ZmZhZmYuLmU2M2JkNTkyMzkx
OTQ2ODc4ZjhjN2JjMGM2NDVkZTg5NmJkNDkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNDEsNiArNDEsNyBA
QAogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAj
aW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5j
bHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIApAQCAtNzM1LDYgKzczNiwxMSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAg
ICAgZW1pdFJlc29sdmVDbG9zdXJlKGRzdCwgc2NvcGUsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
KHJlc29sdmVUeXBlKSwgZGVwdGgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZh
cjoKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2Vs
bC5nZXQoKSksIHJlZ1QwKTsKKyAgICAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShq
dW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTc0OCw3ICs3NTQsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvdwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+
KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCi0gICAgaWYgKHJlc29sdmVUeXBl
ID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZl
VHlwZSA9PSBDbG9zdXJlVmFyKQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0
eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZh
ciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKQEAgLTgxMSw2ICs4MTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfZnJvbV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2Ug
RHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODg2LDYgKzg5Myw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVj
a3MocmVzb2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVy
YW5kU2xvdCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNocG9pbnRTZXQpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIER5bmFtaWM6CiAg
ICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtOTA1LDcgKzkx
MywxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICByZXR1cm47CiAgICAgd2hp
bGUgKGxpbmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworCisgICAg
aWYgKHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAgICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0
cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNzc3Y2ZkZTA5M2Ey
ZDEzZGY1ZmU1YzM2NmM5ODIyZjRhZTA4NGZhZS4uMTU2OTIxZTNhY2ViYmVmYTEzNjgyYzY4YzE5
ZDQ1NjE1ZmQxZmVjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKQEAgLTE0NywxMCArMTQ3LDExIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0m
IHZtKQogICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyID09IDEsICJMTEludCBhc3N1bWVzIEds
b2JhbFZhciBSZXN1bHRUeXBlIGlzID09IDEiKTsKICAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVW
YXIgPT0gMiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhciBSZXN1bHRUeXBlIGlzID09IDIiKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KExvY2FsQ2xvc3VyZVZhciA9PSAzLCAiTExJbnQgYXNzdW1lcyBM
b2NhbENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAzIik7Ci0gICAgc3RhdGljX2Fzc2VydChH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNCwgIkxMSW50IGFzc3VtZXMg
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNCIp
OwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA1
LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5
cGUgaXMgPT0gNSIpOwotICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MgUmVzdWx0VHlwZSBpcyA9PSA2Iik7Ci0gICAgc3RhdGljX2Fzc2VydChEeW5hbWljID09
IDcsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVzdWx0VHlwZSBpcyA9PSA3Iik7CisgICAgc3Rh
dGljX2Fzc2VydChNb2R1bGVWYXIgPT0gNCwgIkxMSW50IGFzc3VtZXMgTW9kdWxlVmFyIFJlc3Vs
dFR5cGUgaXMgPT0gNCIpOworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDYiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDcsICJMTElu
dCBhc3N1bWVzIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMg
PT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoRHluYW1pYyA9PSA4LCAiTExJbnQgYXNzdW1lcyBE
eW5hbWljIFJlc3VsdFR5cGUgaXMgPT0gOCIpOwogICAgIAogICAgIEFTU0VSVChSZXNvbHZlTW9k
ZUFuZFR5cGU6Om1hc2sgPT0gMHhmZmZmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDc1YzkxZjg2ODZlNGE1ZTA4
NTAxM2JiMTE5MjI1ZWRjOTdhNDQ1ZTQuLmE3MzE4ZjMzYWFhM2ExOWI4MWI2OGNkMTc1ZGVkMWE5
YjUyY2Q1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5MiwxMCArMTkyLDExIEBAIGNvbnN0IEdsb2JhbFByb3Bl
cnR5ID0gMAogY29uc3QgR2xvYmFsVmFyID0gMQogY29uc3QgQ2xvc3VyZVZhciA9IDIKIGNvbnN0
IExvY2FsQ2xvc3VyZVZhciA9IDMKLWNvbnN0IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcyA9IDQKLWNvbnN0IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA1Ci1j
b25zdCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDYKLWNvbnN0IER5bmFtaWMg
PSA3Citjb25zdCBNb2R1bGVWYXIgPSA0Citjb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MgPSA1Citjb25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0g
NgorY29uc3QgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA3Citjb25zdCBEeW5h
bWljID0gOAogCiBjb25zdCBSZXNvbHZlTW9kZU1hc2sgPSAweGZmZmYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQppbmRleCA3ZWY2Yjg3YzE3MGFkMDgzYjFmNTI5ZGE4ODM2YzAwY2RhNjRiNDc4Li41ZDUxMGNk
OGRkZWMzMDg2Y2VlYzYzZWM2MDkyYjQ2ODRlOTg4YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MjA0NSw2ICsyMDQ1LDEzIEBAIG1hY3JvIGdldEdsb2JhbE9iamVjdChkc3QpCiAgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCiBlbmQKIAorbWFjcm8gZ2V0SW1wb3J0ZWRN
b2R1bGVTY29wZShkc3QpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDApCisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKGRzdCwgdDEpCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ZW5kCisKIG1hY3JvIHZhckluamVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0
MApAQCAtMjA4NywxMCArMjA5NCwxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKICAgICBk
aXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5y
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEgdDAsIENsb3N1
cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNwYXRjaCg3KQog
Cisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoMSkKKyAg
ICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoK
ICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckds
b2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5
bmFtaWMpCkBAIC0yMjgxLDEzICsyMjkzLDE4IEBAIF9sbGludF9vcF9wdXRfdG9fc2NvcGU6CiAg
ICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKLSAg
ICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wRHluYW1pYwor
ICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBNb2R1bGVW
YXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5qZWN0aW9uQ2hl
Y2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MiwgdDEsIHQwKQogICAgIHB1dENs
b3N1cmVWYXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5wTW9kdWxlVmFyOgorICAgIGJpbmVxIHQw
LCBNb2R1bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93
X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorICAgIGRpc3BhdGNo
KDcpCisKIC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRf
dG9fc2NvcGUpCiAgICAgZGlzcGF0Y2goNykKQEAgLTIzODEsNCArMjM5OCw0IEBAIF9sbGludF9v
cF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDEpCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQogICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQyMTUy
YTJmMjc3YWRlNTg3OTc2YTFjM2YxMjAyMzcyOWIzOGE1OWEuLjVjMDBlNjQ2ZjYwMTBlNmJhNjg2
MWUzNGNlOWNmNzc0YTVhOGM0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xOTE4LDYgKzE5MTgsMTIgQEAg
bWFjcm8gZ2V0R2xvYmFsT2JqZWN0KGRzdCkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQog
ZW5kCiAKK21hY3JvIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoZHN0KQorICAgIGxvYWRwRnJvbUlu
c3RydWN0aW9uKDYsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihkc3QsIHQxKQorICAg
IHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCitlbmQKKwogbWFjcm8gdmFySW5qZWN0aW9uQ2hlY2so
c2xvd1BhdGgpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCkBAIC0xOTU3LDEwICsxOTYzLDE1IEBAIF9sbGlu
dF9vcF9yZXNvbHZlX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcjoKLSAg
ICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKICAgICByZXNvbHZl
U2NvcGUoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5yTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBN
b2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgZ2V0
SW1wb3J0ZWRNb2R1bGVTY29wZSgxKQorICAgIGRpc3BhdGNoKDcpCisKIC5yR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwog
ICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKQEAgLTIxNDQsMTMgKzIxNTUsMTggQEAg
X2xsaW50X29wX3B1dF90b19zY29wZToKICAgICBkaXNwYXRjaCg3KQogCiAucENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcywgLnBEeW5hbWljCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzLCAucE1vZHVsZVZhcgogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMo
MSwgMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgbG9hZFZhcmlhYmxl
KDEsIHQwKQogICAgIHB1dENsb3N1cmVWYXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5wTW9kdWxl
VmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vy
cm9yKQorICAgIGRpc3BhdGNoKDcpCisKIC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgZGlzcGF0Y2goNykKQEAgLTIyMzMsNCAr
MjI0OSw0IEBAIF9sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBsb2FkcCBK
U0Fycm93RnVuY3Rpb246Om1fYm91bmRUaGlzW3QwXSwgdDAKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgy
KQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICBkaXNwYXRjaCgyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBmNjIzOGZi
OTY4MDJiZTUzN2U5MWFkYzI2YjgyZDg5MGI5NTQwMzJkLi42NDI1NWM1YmU1ZWZkNTA5OGJmYzNj
MTVhZTE4NmZmYWM0OGZkOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZUFuYWx5emVyLmNwcApAQCAtODIsNyArODIsOSBAQCB2b2lkIE1vZHVsZUFuYWx5emVy
OjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5h
bWUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRy
eSA9IG1vZHVsZVJlY29yZCgpLT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIE9w
dGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9
IG1vZHVsZVJlY29yZCgpLT50cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOworICAg
IEFTU0VSVChvcHRpb25hbEltcG9ydEVudHJ5KTsKKyAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRy
eSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OwogICAgIGlmICh2YXJpYWJsZS5pc0ltcG9ydGVkTmFt
ZXNwYWNlKCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCiAgICAg
ICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3NTgwODMzMmU0
ZGQ0MDg0NDJhMDM0MzdkNTVjMTA1YWNjMjk1YWIxLi4zNWI2Mjk3OTIwN2VmYWM4NzQ1NmQ3NzI2
NGI0YjBmYWZmZTg2MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTI3MCw2ICsyNzAsMTIgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3Rocm93X3Rkel9lcnJvcikKICAgICBUSFJPVyhjcmVhdGVURFpFcnJvcihleGVj
KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFk
b25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKK3sKKyAgICBCRUdJTigpOworICAgIFRIUk9XKGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KQogewog
ICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCmluZGV4IDA2N2RmMGMzOGU5MTIwYmY3MDdjZmRlNDFjM2VmYmYyYTY4NzJlZTMu
LjMwMDk4NTVmZjZiYTJkMTUyODNkYjhmODVmM2NlNDU3ZGRiMjg2NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0xODksNiArMTg5
LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lbnRlcik7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9jYWxsZWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF90b190aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhy
b3dfdGR6X2Vycm9yKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3Ry
aWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9ub3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9l
cSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lcSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggMDAyODVhNjc1NzczNDc0NzliZDlhOWI3Yjkz
OTU1YzI2NDM0NjU3Yy4uMWI5M2U4ZmQxMjU3ZDBkNzhhYTc5MzY4ODExMjRjYWY2OTk0NGI4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMjE5LDYgKzIxOSwx
MCBAQCBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0
dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJyb3IiKSkpOwogfQogCitKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJv
cihleGVjLCBtZXNzYWdlKSk7Cit9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5oCmluZGV4IGVjMzBhM2RjNDY2ZTFlYjQ0OWIzZTU4NWFhODA0OTJlZjE5ODQ2NDcu
LmY0NmZlMzc2ZmI4NmM2NTJlNGFlYzg0OTAxM2NlYTJkZjNjODAxYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtNzQsNiArNzQsNyBAQCBKU09iamVjdCogYWRkRXJy
b3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJj
ZUNvZGUmKQogLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNl
cHRpb24gd2l0aCBhIGRlZmF1bHQgbWVzc2FnZS4KIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmpl
Y3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOwogaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgpLnRocm93RXhj
ZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQog
CiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFs
dWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggY2Rj
ZWIzMDQyNjVmOTc2ZDAwNzdhZWZkNjU3YjViN2JhYmJmMmExNi4uOTZlZmY0NTU4ZDJlNzNkOWYz
Yjc0MWY2N2Q2ZWJhZDVmMmYzMmViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaApAQCAtNTcsNiArNTcsOSBAQCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwog
Y2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBXZWJB
c3NlbWJseUNvZGVCbG9jazsKK2NsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBK
U01vZHVsZVJlY29yZDsKK2NsYXNzIEpTU2NvcGU7CiAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsg
Rmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA0ZTA5NGZk
Njc5YjlkNWJjZjRiODg2ZjM2MDJjNmMxYjBmYjIwOTFhLi41YThhNzM1MTcxNjVmY2QyYTc1Zjhj
Y2RkNTM0NGM0MzY3MWIxMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw3IEBACiAjaW5jbHVkZSAiSlNMb2Nr
LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgi
CiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3Qu
aCIKQEAgLTMxMiw2ICszMTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkK
ICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0uc3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJy
YXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0ucHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAg
bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZp
cm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9tb2R1bGVFbnZpcm9u
bWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5zZXQobV92bSwg
dGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRlU3RydWN0dXJlKG1fdm0sIHRoaXMpKTsKICAgICBt
X3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CkBAIC03OTEsNiArNzkzLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVy
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFjdGl2YXRp
b25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xleGljYWxF
bnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMWNhMzFiN2Ix
MjZmYjJlZmQzYjcxOTBlYWY3NjRmNWNkYTA5OTFmZS4uZTMzNDAwZWFlMmQ5YmZkYTc3ZGIxYmE2
NDRiMWJlOTZmNmNlODY0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0yMzIsNiArMjMyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlOwpAQCAtNDQ5LDYgKzQ1
MCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QgewogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2
YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBtb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJndW1l
bnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4
IDk1MTYzMThkNzAxNjllM2RkOGMyYmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMxYjdiN2M5
ODI2MmQ0MTBiZjAxZjg0OTM3MWQ4YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhpY2FsRW52
aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgorcHJvdGVj
dGVkOgogICAgIEpTTGV4aWNhbEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSos
IFN5bWJvbFRhYmxlKik7CiAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYjhj
MjliMjkwMjI5YTNhYzRkN2E3YTgwZGYwZDcyODE1OGY2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAt
MCwwICsxLDEzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5o
IgorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3Bh
Y2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnNfaW5mbyA9
IHsgIkpTTW9kdWxlRW52aXJvbm1lbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTTW9kdWxlRW52aXJvbm1lbnQpIH07CisKK0pTTW9kdWxlRW52aXJvbm1lbnQqIEpT
TW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSgKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNW
YWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAg
Ly8gSlNMZXhpY2FsRW52aXJvbm1lbnQgKHByZWNpc2VseSwgSlNFbnZpcm9ubWVudFJlY29yZCkg
aGFzIHRoZSBzdG9yYWdlIHRvIHN0b3JlIHRoZSB2YXJpYWJsZSBzbG90cyBhZnRlciB0aGUgaXRz
IGNsYXNzIHN0b3JhZ2UuCisgICAgLy8gQmVjYXVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB2YXJpYWJs
ZSBzbG90cyBhcmUgZml4ZWQgaW4gdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQsIGluaGVyaXR0aW5n
IHRoZXNlIGNsYXNzIGFuZCBhZGRpbmcgbmV3IG1lbWJlciBmaWVsZCBpcyBub3QgYWxsb3dlZCwK
KyAgICAvLyB0aGUgbmV3IG1lbWJlciB3aWxsIG92ZXJsYXAgdGhlIHZhcmlhYmxlIHNsb3RzLgor
ICAgIC8vIFRvIGtlZXAgdGhlIEpTTW9kdWxlRW52aXJvbm1lbnQgY29tcGF0aWJsZSB0byB0aGUg
SlNMZXhpY2FsRW52aXJvbm1lbnQgYnV0IGFkZCB0aGUgbmV3IG1lbWJlciB0byBzdG9yZSB0aGUg
SlNNb2R1bGVSZWNvcmQsIHdlIGFkZGl0aW9uYWxseSBhbGxvY2F0ZQorICAgIC8vIHRoZSBzdG9y
YWdlIGFmdGVyIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLworICAgIC8vIEpTTGV4aWNhbEVu
dmlyb25tZW50OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxl
IHNsb3RzIF0KKyAgICAvLworICAgIC8vIEpTTW9kdWxlRW52aXJvbm1lbnQ6CisgICAgLy8gICAg
IFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXVsgYWRkaXRpb25hbCBz
bG90cyBmb3IgSlNNb2R1bGVFbnZpcm9ubWVudCBdCisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
cmVzdWx0ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAg
ICBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVFbnZpcm9ubWVudD4odm0uaGVhcCwgSlNNb2R1bGVFbnZp
cm9ubWVudDo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUpKSkKKyAgICAgICAgSlNNb2R1bGVF
bnZpcm9ubWVudCh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKTsKKyAg
ICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCog
bW9kdWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFs
dWUpOworICAgIHRoaXMtPm1vZHVsZVJlY29yZFNsb3QoKS5zZXQodm0sIHRoaXMsIG1vZHVsZVJl
Y29yZCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1l
bnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5h
cHBlbmRWYWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPnN5bWJvbFRh
YmxlKCktPnNjb3BlU2l6ZSgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bW9k
dWxlUmVjb3JkU2xvdCgpKTsKK30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJv
bm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOwor
ICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5y
ZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1l
LnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
aW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkLT5tb2R1
bGVFbnZpcm9ubWVudCgpOworICAgICAgICBQcm9wZXJ0eVNsb3QgcmVkaXJlY3RTbG90KGltcG9y
dGVkTW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICBpZiAoaW1wb3J0ZWRNb2R1bGVFbnZpcm9u
bWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdChpbXBvcnRl
ZE1vZHVsZUVudmlyb25tZW50LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHJlZGlyZWN0U2xvdCkpIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSByZWRpcmVjdFNsb3QuZ2V0VmFsdWUoZXhlYywg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBnZXRPd25Qcm9wZXJ0eVNsb3Qg
Y2Fubm90IHRocm93IGFueSBlcnJvcnMuCisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgcmVkaXJlY3RTbG90LmF0dHJpYnV0ZXMoKSwgdmFsdWUpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEJh
c2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lc0FycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBKU01v
ZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PihjZWxsKTsKKyAgICBpZiAocHJvcGVydHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0
aWVzKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+bW9k
dWxlUmVjb3JkKCktPmltcG9ydEVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgYXV0byYg
aW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgaWYgKCFpbXBvcnRFbnRyeS5p
c05hbWVzcGFjZShleGVjLT52bSgpKSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzQXJy
YXkuYWRkKGltcG9ydEVudHJ5LmxvY2FsTmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6
OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9k
dWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+
KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgorICAg
IGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNv
bHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVp
ZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1
dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVu
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8gQWxsIGltcG9y
dGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0g
dGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlv
bi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ZTVlMTJlZWZjNTQ4YjllZTZlYmYzMTNmYTdhOGQ0YzcxNjkxNGYxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisjZGVm
aW5lIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgUmVnaXN0ZXI7CisKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNM
ZXhpY2FsRW52aXJvbm1lbnQgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTGV4aWNh
bEVudmlyb25tZW50IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJv
bm1lbnQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEpT
VmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGljIEpTTW9k
dWxlRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1Zh
bHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKKyAgICB7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVFbnZpcm9u
bWVudFN0cnVjdHVyZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGN1
cnJlbnRTY29wZSwgc3ltYm9sVGFibGUsIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAg
ICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgp
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQor
CisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZk1vZHVsZVJlY29yZChTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KT4oQmFzZTo6YWxsb2NhdGlvblNp
emUoc3ltYm9sVGFibGUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25T
aXplKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZz
ZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJsZSkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9k
dWxlUmVjb3JkPik7CisgICAgfQorCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCgp
CisgICAgeworICAgICAgICByZXR1cm4gbW9kdWxlUmVjb3JkU2xvdCgpLmdldCgpOworICAgIH0K
KworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3du
Tm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
QXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSk7CisKK3ByaXZhdGU6CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVy
ZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSopOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgV3JpdGVC
YXJyaWVyQmFzZTxKU01vZHVsZVJlY29yZD4mIG1vZHVsZVJlY29yZFNsb3QoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxKU01vZHVsZVJlY29y
ZD4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3lt
Ym9sVGFibGUoKSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKK307CisKK2lubGluZSBKU01vZHVsZUVudmlyb25tZW50OjpK
U01vZHVsZUVudmlyb25tZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUq
IGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIEpTTW9kdWxlRW52aXJvbm1lbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDdiNjA2Mzc0
YTYwNjBiNzcwMjBjNGVmNDUxMmU5MjQ1ZTAzZjNmYzUuLjNiYWY1YmI4NzcxMDRhNGYyZTUxMjg3
NmQ3ZGViZDQxMDUzZTY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU01h
cC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKQEAgLTYwLDEw
ICs2MSw0OSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX21vZHVsZUVudmlyb25tZW50KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZGVwZW5kZW5jaWVzTWFwKTsKIH0KIAordm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5k
UmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9y
ZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK3ZvaWQgSlNNb2R1
bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1l
KQoreworICAgIG1fc3RhckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30K
Kwordm9pZCBKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkm
IGVudHJ5KQoreworICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1faW1wb3J0RW50cmllcy5hZGQoZW50
cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpLmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VOVVNF
RChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsgLy8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBw
YXJzZXIuCit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4
cG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBib29sIGlzTmV3RW50cnkgPSBtX2V4cG9ydEVudHJp
ZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSkuaXNOZXdFbnRyeTsKKyAgICBB
U1NFUlRfVU5VU0VEKGlzTmV3RW50cnksIGlzTmV3RW50cnkpOyAvLyBUaGlzIGlzIGd1YXJhbnRl
ZWQgYnkgdGhlIHBhcnNlci4KK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0
RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSkgLT4gT3B0aW9uYWw8SW1wb3J0RW50
cnk+Cit7CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0RW50cmllcy5maW5kKGxv
Y2FsTmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50cmllcy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIE9wdGlvbmFsPEltcG9ydEVudHJ5Pihp
dGVyYXRvci0+dmFsdWUpOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRFeHBvcnRF
bnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0aW9uYWw8RXhwb3J0RW50
cnk+Cit7CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5maW5kKGV4
cG9ydE5hbWUpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJpZXMuZW5kKCkpCisg
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRyeT4o
aXRlcmF0b3ItPnZhbHVlKTsKK30KKwogYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6
OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkg
LT4gRXhwb3J0RW50cnkKIHsKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwg
ZXhwb3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFi
bGUgfTsKQEAgLTc5LDYgKzExOSwyMSBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eTo6Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgYwogICAgIHJl
dHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1l
LCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07
CiB9CiAKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246Om5vdEZvdW5kKCkgLT4gUmVz
b2x1dGlvbgoreworICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6Tm90Rm91bmQsIG51bGxw
dHIsIElkZW50aWZpZXIoKSB9OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9u
OjplcnJvcigpIC0+IFJlc29sdXRpb24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6
OkVycm9yLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29y
ZDo6UmVzb2x1dGlvbjo6YW1iaWd1b3VzKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBS
ZXNvbHV0aW9uIHsgVHlwZTo6QW1iaWd1b3VzLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30K
Kwogc3RhdGljIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1i
b2woKSkKQEAgLTkzLDYgKzE0OCwyNzkgQEAgSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3Jk
Ojpob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICBy
ZXR1cm4ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOwogfQogCithdXRvIEpTTW9kdWxlUmVjb3JkOjpy
ZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1l
KSAtPiBSZXNvbHV0aW9uCit7CisgICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1w
b3J0RW50cnkgPSB0cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuaW1wbCgpKTsKKyAgICBpZiAo
IW9wdGlvbmFsSW1wb3J0RW50cnkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3Vu
ZCgpOworCisgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRy
eTsKKyAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAg
IHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGlt
cG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRy
eS5tb2R1bGVSZXF1ZXN0KTsKKyAgICByZXR1cm4gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBv
cnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7Cit9CisKK3N0cnVjdCBSZXNvbHZlUXVl
cnkgeworICAgIFJlc29sdmVRdWVyeShKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBVbmlx
dWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAgICAgOiBtb2R1bGVSZWNvcmQobW9kdWxl
UmVjb3JkKQorICAgICAgICAsIGV4cG9ydE5hbWUoZXhwb3J0TmFtZSkKKyAgICB7CisgICAgfQor
CisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgIDogUmVzb2x2ZVF1ZXJ5KG1vZHVsZVJlY29y
ZCwgZXhwb3J0TmFtZS5pbXBsKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gRW1wdHlWYWx1
ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAg
ICB7CisgICAgfQorCisgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsK
KyAgICBSZXNvbHZlUXVlcnkoRGVsZXRlZFZhbHVlVGFnKQorICAgICAgICA6IG1vZHVsZVJlY29y
ZChudWxscHRyKQorICAgICAgICAsIGV4cG9ydE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhZXhwb3J0TmFtZTsKKyAgICB9CisKKyAgICBib29sIGlzRGVsZXRl
ZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBleHBvcnROYW1lLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7CisgICAgfQorCisgICAgLy8gVGhlIG1vZHVsZSByZWNvcmQgaXMg
bm90IG1hcmtlZCBmcm9tIHRoZSBHQy4gQnV0IHRoZXNlIHJlY29yZHMgYXJlIHJlYWNoYWJsZSBm
cm9tIHRoZSBKU0dsb2JhbE9iamVjdC4KKyAgICAvLyBTbyB3ZSBkb24ndCBjYXJlIHRoZSByZWFj
aGFiaWxpdHkgdG8gdGhpcyByZWNvcmQuCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29y
ZDsKKyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGV4cG9ydE5hbWU7Cit9OworCitzdHJ1
Y3QgUmVzb2x2ZVF1ZXJ5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVz
b2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5Jiwg
Y29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKworaW5saW5lIHVuc2lnbmVkIFJlc29sdmVR
dWVyeUhhc2g6Omhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSkKK3sKKyAgICByZXR1cm4g
V1RGOjpQdHJIYXNoPEpTTW9kdWxlUmVjb3JkKj46Omhhc2gocXVlcnkubW9kdWxlUmVjb3JkKSAr
IElkZW50aWZpZXJSZXBIYXNoOjpoYXNoKHF1ZXJ5LmV4cG9ydE5hbWUpOworfQorCitpbmxpbmUg
Ym9vbCBSZXNvbHZlUXVlcnlIYXNoOjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmIGxocywgY29u
c3QgUmVzb2x2ZVF1ZXJ5JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0g
cmhzLm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKK30K
Kworc3RhdGljIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnRMb29wKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByb290KQoreworICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZXNvbHZlZXhw
b3J0CisgICAgLy8gVGhpcyBmdW5jdGlvbiBhdm9pZHMgQysrIHJlY3Vyc2lvbiBvZiB0aGUgbmFp
dmUgUmVzb2x2ZUV4cG9ydCBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBGbGF0dGVuIHRoZSByZWN1
cnNpb24gdG8gdGhlIGxvb3Agd2l0aCB0aGUgdGFzayBxdWV1ZSBhbmQgZnJhbWVzLgorICAgIC8v
CisgICAgLy8gMS4gcGVuZGluZ1Rhc2tzCisgICAgLy8gICAgIFdlIGVucXVldWUgdGhlIHJlY3Vy
c2l2ZSByZXNvbHZlRXhwb3J0IGNhbGwgdG8gdGhpcyBxdWV1ZSB0byBhdm9pZCByZWN1cnNpdmUg
Y2FsbHMgaW4gQysrLgorICAgIC8vICAgICBUaGUgdGFzayBoYXMgMyB0eXBlcy4gKDEpIFF1ZXJ5
LCAoMikgSW5kaXJlY3RGYWxsYmFjayBhbmQgKDMpIEdhdGhlclN0YXJzLgorICAgIC8vICAgICAo
MSkgUXVlcnkKKyAgICAvLyAgICAgICAgIFF1ZXJ5aW5nIHRoZSByZXNvbHV0aW9uIHRvIHRoZSBj
dXJyZW50IG1vZHVsZS4KKyAgICAvLyAgICAgKDIpIEluZGlyZWN0RmFsbGJhY2sKKyAgICAvLyAg
ICAgICAgIEV4YW1pbmUgdGhlIHJlc3VsdCBvZiB0aGUgaW5kaXJlY3QgZXhwb3J0IHJlc29sdXRp
b24uIE9ubHkgd2hlbiB0aGUgaW5kaXJlY3QgZXhwb3J0IHJlc29sdXRpb24gZmFpbHMsCisgICAg
Ly8gICAgICAgICB3ZSBsb29rIGludG8gdGhlIHN0YXIgZXhwb3J0cy4gKHN0ZXAgNS1hLXZpKS4K
KyAgICAvLyAgICAgKDMpIEdhdGhlclN0YXJzCisgICAgLy8gICAgICAgICBFeGFtaW5lIHRoZSBy
ZXN1bHQgb2YgdGhlIHN0YXIgZXhwb3J0IHJlc29sdXRpb25zLgorICAgIC8vCisgICAgLy8gMi4g
ZnJhbWVzCisgICAgLy8gICAgIFdoZW4gdGhlIHNwZWMgY2FsbHMgdGhlIHJlc29sdmVFeHBvcnQg
cmVjdXJzaXZlbHksIGluc3RlYWQgd2UgYXBwZW5kIHRoZSBmcmFtZQorICAgIC8vICAgICAodGhh
dCBob2xkcyB0aGUgcmVzdWx0IHJlc29sdXRpb24pIHRvIHRoZSBmcmFtZXMgYW5kIGVucXVldWUg
dGhlIHRhc2sgdG8gdGhlIHBlbmRpbmdUYXNrcy4KKyAgICAvLyAgICAgVGhlIGVudHJ5IGluIHRo
ZSBmcmFtZXMgbWVhbnMgdGhlICpsb2NhbCogcmVzb2x1dGlvbiByZXN1bHQgb2YgdGhlIHNwZWNp
ZmljIHJlY3Vyc2l2ZSByZXNvbHZlRXhwb3J0LgorICAgIC8vCisgICAgLy8gV2Ugc2hvdWxkIG1h
aW50YWluIHRoZSBsb2NhbCByZXNvbHV0aW9uIHJlc3VsdCBpbnN0ZWFkIG9mIGhvbGRpbmcgdGhl
IGdsb2JhbCByZXNvbHV0aW9uIHJlc3VsdCBvbmx5LgorICAgIC8vIEZvciBleGFtcGxlLAorICAg
IC8vCisgICAgLy8gICAgIHN0YXIKKyAgICAvLyAoMSkgLS0tPiAoMikgIlJlc29sdmUiCisgICAg
Ly8gICAgICB8CisgICAgLy8gICAgICB8CisgICAgLy8gICAgICArLT4gKDMpICJOb3RGb3VuZCIK
KyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgIHwgICAgICAgc3RhcgorICAgIC8vICAgICAgKy0+
ICg0KSAtLS0+ICg1KSAiUmVzb2x2ZSIgW2hlcmVdCisgICAgLy8gICAgICAgICAgICAgICB8Cisg
ICAgLy8gICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICArLT4gKDYpICJFcnJv
ciIKKyAgICAvLworICAgIC8vIENvbnNpZGVyIHRoZSBhYm92ZSBncmFwaC4gVGhlIG51bWJlcnMg
cmVwcmVzZW50cyB0aGUgbW9kdWxlcy4gTm93IHdlIGFyZSBbaGVyZV0uCisgICAgLy8gSWYgd2Ug
b25seSBob2xkIHRoZSBnbG9iYWwgcmVzb2x1dGlvbiByZXN1bHQgZHVyaW5nIHRoZSByZXNvbHZl
RXhwb3J0IG9wZXJhdGlvbiwgW2hlcmVdLAorICAgIC8vIHdlIGRlY2lkZSB0aGUgZW50aXJlIHJl
c3VsdCBvZiByZXNvbHZlRXhwb3J0IGlzICJBbWJpZ3VvdXMiLCBiZWNhdXNlIHRoZXJlIGFyZSBt
dWx0aXBsZQorICAgIC8vICJSZXNsb3ZlIiAoaW4gbW9kdWxlICgyKSBhbmQgKDUpKS4gSG93ZXZl
ciwgdGhpcyBzaG91bGQgYmVjb21lICJFcnJvciIgYmVjYXVzZSAoNikgd2lsbAorICAgIC8vIHBy
b3BhZ2F0ZSAiRXJyb3IiIHN0YXRlIHRvIHRoZSAoNCksICg0KSB3aWxsIGJlY29tZSAiRXJyb3Ii
IGFuZCB0aGVuLCAoMSkgd2lsbCBiZWNvbWUKKyAgICAvLyAiRXJyb3IiLiBXZSBzaG91bGQgYWdn
cmVnYXRlIHRoZSByZXN1bHRzIGF0IHRoZSBzdGFyIGV4cG9ydHMgcG9pbnQgKCg0KSBhbmQgKDEp
KS4KKyAgICAvLworICAgIC8vIFVzdWFsbHksIGJvdGggIkVycm9yIiBhbmQgIkFtYmlndW91cyIg
c3RhdGVzIHdpbGwgdGhyb3cgdGhlIHN5bnRheCBlcnJvci4gU28gZXhjZXB0IGZvciB0aGUgY29u
dGVudCBvZiB0aGUKKyAgICAvLyBlcnJvciBtZXNzYWdlLCB0aGVyZSBhcmUgbm8gZGlmZmVyZW5j
ZS4gKEFuZCBpZiB3ZSBmaXggdGhlICg2KSB0aGF0IHJhaXNlcyAiRXJyb3IiLCBuZXh0LCBpdCB3
aWxsIHByb2R1Y2UKKyAgICAvLyB0aGUgIkFtYmlndW91cyIgZXJyb3IgZHVlIHRvICg1KS4gQW55
d2F5LCB1c2VyIG5lZWQgdG8gZml4IHRoZSBib3RoLiBTbyB3aGljaCBlcnJvciBzaG91bGQgYmUg
cmFpc2VkIGF0IGZpcnN0CisgICAgLy8gZG9lc24ndCBtYXR0ZXIgc28gbXVjaC4KKyAgICAvLwor
ICAgIC8vIEhvd2V2ZXIsIHRoaXMgbWF5IGJlY29tZSB0aGUgcHJvYmxlbSB1bmRlciB0aGUgbW9k
dWxlIG5hbWVzcGFjZSBjcmVhdGlvbi4KKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZ2V0bW9kdWxlbmFtZXNwYWNlCisgICAgLy8gc2Vj
dGlvbiAxNS4yLjEuMTgsIHN0ZXAgMy1kLWlpCisgICAgLy8gSGVyZSwgd2UgZGlzdGluZ3Vpc2gg
IkFtYmlndW91cyIgYW5kICJFcnJvciIuIFdoZW4gIkVycm9yIiBzdGF0ZSBpcyBwcm9kdWNlZCwg
d2UgbmVlZCB0byB0aHJvdyB0aGUgcHJvcGFnYXRlZCBlcnJvci4KKyAgICAvLyBCdXQgaWYgIkFt
YmlndW91cyIgc3RhdGUgY29tZXMsIHdlIGp1c3QgaWdub3JlIHRoZSByZXN1bHQuCisgICAgLy8g
VG8gZm9sbG93IHRoZSByZXF1aXJlbWVudCBzdHJpY3RseSwgaW4gdGhpcyBpbXBsZW1lbnRhdGlv
biwgd2Uga2VlcCB0aGUgbG9jYWwgcmVzb2x1dGlvbiByZXN1bHQgdG8gcHJvZHVjZSB0aGUKKyAg
ICAvLyBjb3JyZWN0IHJlc3VsdCB1bmRlciB0aGUgYWJvdmUgY29tcGxleCBjYXNlcy4KKworICAg
IHVzaW5nIFJlc29sdXRpb24gPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjsKKyAgICB0eXBl
ZGVmIFdURjo6SGFzaFNldDxSZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhhc2gsIFdURjo6Q3Vz
dG9tSGFzaFRyYWl0czxSZXNvbHZlUXVlcnk+PiBSZXNvbHZlU2V0OworICAgIGVudW0gY2xhc3Mg
VHlwZSB7IFF1ZXJ5LCBJbmRpcmVjdEZhbGxiYWNrLCBHYXRoZXJTdGFycyB9OworICAgIHN0cnVj
dCBUYXNrIHsKKyAgICAgICAgUmVzb2x2ZVF1ZXJ5IHF1ZXJ5OworICAgICAgICBUeXBlIHR5cGU7
CisgICAgfTsKKworICAgIFZlY3RvcjxUYXNrLCA4PiBwZW5kaW5nVGFza3M7CisgICAgUmVzb2x2
ZVNldCByZXNvbHZlU2V0OworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBzdGFyU2V0Owor
ICAgIFZlY3RvcjxSZXNvbHV0aW9uLCA4PiBmcmFtZXM7CisKKyAgICBmcmFtZXMuYXBwZW5kKFJl
c29sdXRpb246Om5vdEZvdW5kKCkpOworCisgICAgLy8gQ2FsbCB3aGVuIHRoZSBxdWVyeSBpcyBu
b3QgcmVzb2x2ZWQgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgIC8vIEl0IHdpbGwgZW5xdWV1
ZSB0aGUgc3RhciByZXNvbHV0aW9uIHJlcXVlc3RzLiBSZXR1cm4gImZhbHNlIiBpZiB0aGUgZXJy
b3Igb2NjdXJzLgorICAgIGF1dG8gcmVzb2x2ZU5vbkxvY2FsID0gWyZdKGNvbnN0IFJlc29sdmVR
dWVyeSYgcXVlcnkpIC0+IGJvb2wgeworICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJu
YXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtcmVzb2x2ZWV4cG9ydAorICAgICAgICAvLyBz
ZWN0aW9uIDE1LjIuMS4xNi4zLCBzdGVwIDYKKyAgICAgICAgLy8gSWYgdGhlICJkZWZhdWx0IiBu
YW1lIGlzIG5vdCByZXNvbHZlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUsIHdlIG5lZWQgdG8gdGhy
b3cgYW4gZXJyb3IgYW5kIHN0b3AgcmVzb2x1dGlvbiBpbW1lZGlhdGVseSwKKyAgICAgICAgLy8g
UmF0aW9uYWxlIHRvIHRoaXMgZXJyb3I6IEEgZGVmYXVsdCBleHBvcnQgY2Fubm90IGJlIHByb3Zp
ZGVkIGJ5IGFuIGV4cG9ydCAqLgorICAgICAgICBpZiAocXVlcnkuZXhwb3J0TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIC8vIHN0ZXAgNywgSWYgZXhwb3J0U3RhclNldCBjb250YWlu
cyBtb2R1bGUsIHRoZW4gcmV0dXJuIG51bGwuCisgICAgICAgIGlmICghc3RhclNldC5hZGQocXVl
cnkubW9kdWxlUmVjb3JkKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgLy8gRW5xdWV1ZSB0aGUgdGFzayB0byBnYXRoZXIgdGhlIHJlc3VsdHMgb2YgdGhl
IHN0YXJzLgorICAgICAgICAvLyBBbmQgYXBwZW5kIHRoZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0
byBnYXRoZXIgdGhlIGxvY2FsIHJlc3VsdCBvZiB0aGUgc3RhcnMuCisgICAgICAgIHBlbmRpbmdU
YXNrcy5hcHBlbmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpHYXRoZXJTdGFycyB9KTsKKyAgICAgICAg
ZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9uOjpub3RGb3VuZCgpKTsKKworICAgICAgICAvLyBFbnF1
ZXVlIHRoZSB0YXNrcyBpbiByZXZlcnNlIG9yZGVyLgorICAgICAgICBmb3IgKGF1dG8gaXRlcmF0
b3IgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkucmJlZ2luKCksIGVu
ZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJpZXMoKS5yZW5kKCk7IGl0ZXJh
dG9yICE9IGVuZDsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgY29uc3QgYXV0byYgc3Rhck1v
ZHVsZU5hbWUgPSAqaXRlcmF0b3I7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0
ZWRNb2R1bGVSZWNvcmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRN
b2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQo
KSkpOworICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5
KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBxdWVyeS5leHBvcnROYW1lLmdldCgpKSwgVHlwZTo6UXVl
cnkgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8v
IFJldHVybiB0aGUgY3VycmVudCByZXNvbHV0aW9uIHZhbHVlIG9mIHRoZSB0b3AgZnJhbWUuCisg
ICAgYXV0byBjdXJyZW50VG9wID0gWyZdICgpIC0+IFJlc29sdXRpb24mIHsKKyAgICAgICAgQVNT
RVJUKCFmcmFtZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lcy5sYXN0KCk7Cisg
ICAgfTsKKworICAgIC8vIE1lcmdlIHRoZSBnaXZlbiByZXNvbHV0aW9uIHRvIHRoZSBjdXJyZW50
IHJlc29sdXRpb24gdmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4KKyAgICAvLyBJZiB0aGVyZSBpcyBh
bWJpZ3VpdHksIHJldHVybiAiZmFsc2UiLiBXaGVuIHRoZSAiZmFsc2UiIGlzIHJldHVybmVkLCB3
ZSBzaG91bGQgbWFrZSB0aGUgcmVzdWx0ICJhbWJpZ3VvdXMiLgorICAgIGF1dG8gbWVyZ2VUb0N1
cnJlbnRUb3AgPSBbJl0gKGNvbnN0IFJlc29sdXRpb24mIHJlc29sdXRpb24pIC0+IGJvb2wgewor
ICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5k
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKGN1cnJlbnRUb3AoKS50
eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICBjdXJyZW50
VG9wKCkgPSByZXNvbHV0aW9uOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoY3VycmVudFRvcCgpLm1vZHVsZVJlY29yZCAhPSByZXNvbHV0aW9uLm1v
ZHVsZVJlY29yZCB8fCBjdXJyZW50VG9wKCkubG9jYWxOYW1lICE9IHJlc29sdXRpb24ubG9jYWxO
YW1lKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH07CisKKyAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyByb290LCBUeXBlOjpRdWVy
eSB9KTsKKyAgICB3aGlsZSAoIXBlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29u
c3QgYXV0byB0YXNrID0gcGVuZGluZ1Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGNvbnN0IFJl
c29sdmVRdWVyeSYgcXVlcnkgPSB0YXNrLnF1ZXJ5OworCisgICAgICAgIHN3aXRjaCAodGFzay50
eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6UXVlcnk6IHsKKyAgICAgICAgICAgIGlmICghcmVz
b2x2ZVNldC5hZGQodGFzay5xdWVyeSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHF1ZXJ5
Lm1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPEpTTW9kdWxlUmVjb3Jk
OjpFeHBvcnRFbnRyeT4gb3B0aW9uYWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0
RXhwb3J0RW50cnkocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIW9w
dGlvbmFsRXhwb3J0RW50cnkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBt
YXRjaGVkIGV4cG9ydGVkIGJpbmRpbmcgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLAorICAgICAgICAg
ICAgICAgIC8vIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAg
ICBpZiAoIXJlc29sdmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFJlc29sdXRpb246OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gKm9w
dGlvbmFsRXhwb3J0RW50cnk7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUp
IHsKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpM
b2NhbDoKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBl
OjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRvcChSZXNv
bHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQsIG1vZHVsZVJlY29yZCwgZXhwb3J0
RW50cnkubG9jYWxOYW1lIH0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlv
bjo6YW1iaWd1b3VzKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDogeworICAg
ICAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IG1vZHVs
ZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBleHBvcnRFbnRyeS5tb2R1
bGVOYW1lKTsKKworICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGltcG9ydGVkIG1vZHVsZSBk
b2VzIG5vdCBwcm9kdWNlIGFueSByZXNvbHZlZCBiaW5kaW5nLCB3ZSBuZWVkIHRvIGxvb2sgaW50
byB0aGUgc3RhcnMgaW4gdGhlICpjdXJyZW50KgorICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4g
VG8gZG8gdGhpcywgd2UgYXBwZW5kIHRoZSBgSW5kaXJlY3RGYWxsYmFja2AgdGFzayB0byB0aGUg
dGFzayBxdWV1ZS4KKyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBx
dWVyeSwgVHlwZTo6SW5kaXJlY3RGYWxsYmFjayB9KTsKKyAgICAgICAgICAgICAgICAvLyBBbmQg
YXBwZW5kIHRoZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0byBjaGVjayB0aGUgaW5kaXJlY3QgZXhw
b3J0IHdpbGwgYmUgcmVzb2x2ZWQgb3Igbm90LgorICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBl
bmQoUmVzb2x1dGlvbjo6bm90Rm91bmQoKSk7CisgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tz
LmFwcGVuZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBleHBvcnRF
bnRyeS5pbXBvcnROYW1lKSwgVHlwZTo6UXVlcnkgfSk7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgVHlwZTo6SW5kaXJlY3RGYWxsYmFjazogeworICAgICAg
ICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gZnJhbWVzLnRha2VMYXN0KCk7CisKKyAgICAg
ICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQp
IHsKKyAgICAgICAgICAgICAgICAvLyBJbmRpcmVjdCBleHBvcnQgZW50cnkgZG9lcyBub3QgcHJv
ZHVjZSBhbnkgcmVzb2x2ZWQgYmluZGluZy4KKyAgICAgICAgICAgICAgICAvLyBTbyB3ZSB3aWxs
IGludmVzdGlnYXRlIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVOb25M
b2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246
OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIElmIGluZGlyZWN0IGV4cG9ydCBlbnRyeSBwcm9kdWNlcyBSZXNvbHZlZCwg
d2Ugc2hvdWxkIG1lcmdlIGl0IHRvIHRoZSB1cHBlciBmcmFtZS4KKyAgICAgICAgICAgIC8vIEFu
ZCBkbyBub3QgaW52ZXN0aWdhdGUgdGhlIHN0YXJzIG9mIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAg
ICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3AocmVzb2x1dGlvbikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFJlc29sdXRpb246OmFtYmlndW91cygpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFR5cGU6OkdhdGhlclN0YXJzOiB7CisgICAgICAg
ICAgICAvLyBNZXJnZSB0aGUgc3RhciByZXNvbHV0aW9uIHRvIHRoZSB1cHBlciBmcmFtZS4KKyAg
ICAgICAgICAgIGNvbnN0IGF1dG8gc3RhclJlc29sdXRpb24gPSBmcmFtZXMudGFrZUxhc3QoKTsK
KyAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3Aoc3RhclJlc29sdXRpb24pKQorICAg
ICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQoZnJhbWVz
LnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4gZnJhbWVzWzBdOworfQorCithdXRvIEpTTW9kdWxl
UmVjb3JkOjpyZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
ZXhwb3J0TmFtZSkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9v
cChleGVjLCBSZXNvbHZlUXVlcnkodGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKK30KKwogdm9p
ZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3Jl
YXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSk7CkBAIC0xMDEsMTEgKzQyOSwxMjAgQEAgdm9pZCBKU01v
ZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhl
Y3V0YWJsZSk7CisgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSk7
CiB9CiAKLUpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKikKK3ZvaWQg
SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQogewotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24K
KworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sg
PSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KCk7CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPm1v
ZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKTsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBt
b2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CisKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rp
b24gMTUuMi4xLjE2LjQgc3RlcCA5LgorICAgIC8vIEVuc3VyZSBhbGwgdGhlIGluZGlyZWN0IGV4
cG9ydHMgYXJlIGNvcnJlY3RseSByZXNvbHZlZCB0byB1bmlxdWUgYmluZGluZ3MuCisgICAgLy8g
RXZlbiBpZiB3ZSBhdm9pZGVkIGR1cGxpY2F0ZSBleHBvcnRzIGluIHRoZSBwYXJzZXIsIHN0aWxs
IGFtYmlndW91cyBleHBvcnRzIG9jY3VyIGR1ZSB0byB0aGUgc3RhciBleHBvcnQgKGBleHBvcnQg
KiBmcm9tICJtb2QiYCkuCisgICAgLy8gV2hlbiB3ZSBzZWUgdGhpcyB0eXBlIG9mIGFtYmlndWl0
eSBmb3IgdGhlIGluZGlyZWN0IGV4cG9ydHMgaGVyZSwgdGhyb3cgYSBzeW50YXggZXJyb3IuCisg
ICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNv
bnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgaWYgKGV4cG9ydEVu
dHJ5LnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdCkg
eworICAgICAgICAgICAgY29uc3QgYXV0byByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVj
LCBleHBvcnRFbnRyeS5leHBvcnROYW1lKTsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlv
bi50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgor
ICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJl
Y3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnRO
YW1lLmltcGwoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAg
ICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkg
ZXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5p
bXBsKCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBi
aW5kaW5ncy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNl
IFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJy
b3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2Rl
ZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlw
ZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8g
c2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDEyLgorICAgIC8vIEluc3RhbnRpYXRlIG5hbWVzcGFj
ZSBvYmplY3RzIGFuZCBpbml0aWFsaXplIHRoZSBiaW5kaW5ncyB3aXRoIHRoZW0gaWYgcmVxdWly
ZWQuCisgICAgLy8gQW5kIGVuc3VyZSB0aGF0IGFsbCB0aGUgaW1wb3J0cyBjb3JyZWN0bHkgcmVz
b2x2ZWQgdG8gdW5pcXVlIGJpbmRpbmdzLgorICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1f
aW1wb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IHBhaXIu
dmFsdWU7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNv
bHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAg
ICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSkpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBNb2R1bGVOYW1lc3BhY2VPYmplY3Qgd2lsbCBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3MDUKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IGltcG9y
dGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOwor
ICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhF
cnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmco
aW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBl
OjpBbWJpZ3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtl
U3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1w
b3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBt
dWx0aXBsZSBiaW5kaW5ncy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgICAgIHRocm93
U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnZGVm
YXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBl
OjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBz
ZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTQuCisgICAgLy8gTW9kdWxlIGVudmlyb25tZW50IGNv
bnRhaW5zIHRoZSBoZWFwIGFsbG9jYXRlZCAidmFyIiwgImxldCIgYW5kICJjb25zdCIuCisgICAg
Ly8gV2hlbiBjcmVhdGluZyB0aGUgZW52aXJvbm1lbnQsIHdlIGluaXRpYWxpemVkIGFsbCB0aGUg
c2xvdyB3aXRoIGVtcHR5LCBpdCdzIG9rIGZvciBsZXhpY2FsIHZhbHVlcy4KKyAgICAvLyBCdXQg
Zm9yICJ2YXIiLCB3ZSBzaG91bGQgaW5pdGlhbGl6ZSBpdCB3aXRoIHVuZGVmaW5lZC4KKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogbV9kZWNsYXJlZFZhcmlhYmxlcykgeworICAgICAg
ICBjb25zdCBhdXRvJiBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodmFyaWFibGUua2V5LmdldCgp
KTsKKyAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgpOworICAgICAg
ICBpZiAoIW9mZnNldC5pc1N0YWNrKCkpCisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1
bGVFbnZpcm9ubWVudCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5r
ZXkuZ2V0KCkpLCBqc1VuZGVmaW5lZCgpLCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xh
cmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQgc3RlcCAxNi1h
LWl2LgorICAgIC8vIEluaXRpYWxpemUgaGVhcCBhbGxvY2F0ZWQgZnVuY3Rpb24gZGVjbGFyYXRp
b25zLgorICAgIC8vIFRoZXkgY2FuIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGJvZHkgb2YgdGhlIG1v
ZHVsZSBpcyBleGVjdXRlZCB1bmRlciBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgZm9yIChz
aXplX3QgaSA9IDAsIG51bWJlck9mRnVuY3Rpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJl
ck9mRnVuY3Rpb25EZWNscygpOyBpIDwgbnVtYmVyT2ZGdW5jdGlvbnM7ICsraSkgeworICAgICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUg
PSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOworICAgICAgICBjb25zdCBhdXRv
JiBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5h
bWUoKS5pbXBsKCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0
KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAgICAgICAgICAgQVNTRVJU
KCF1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmlzRW1wdHkoKSk7CisgICAgICAg
ICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9maWxlcigpKSB7
CisgICAgICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVu
ZXhlY3V0ZWRSYW5nZShtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlSUQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdT
dGFydE9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNv
dXJjZSgpKSwgbW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQo
bW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1l
KCksIGZ1bmN0aW9uLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX21vZHVsZUVu
dmlyb25tZW50LnNldCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOworfQorCitKU1ZhbHVl
IEpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIW1f
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShtX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpLCBleGVjLCBtX21vZHVsZUVudmlyb25tZW50LmdldCgp
KTsKKyAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mIHVpZCkKQEAgLTEyOSwyMyArNTY2LDI1IEBAIHZvaWQgSlNNb2R1bGVS
ZWNvcmQ6OmR1bXAoKQogICAgICAgICBkYXRhTG9nKCIgICAgICBtb2R1bGUoIiwgcHJpbnRhYmxl
TmFtZShtb2R1bGVOYW1lKSwgIilcbiIpOwogCiAgICAgZGF0YUxvZygiICAgIEltcG9ydDogIiwg
bV9pbXBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpCi0gICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9y
dCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBw
cmludGFibGVOYW1lKHBhaXIudmFsdWUubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFi
bGVOYW1lKHBhaXIudmFsdWUubW9kdWxlUmVxdWVzdCksICIpXG4iKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgYXV0byYgaW1w
b3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBkYXRhTG9nKCIgICAgICBpbXBvcnQoIiwg
cHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50
YWJsZU5hbWUoaW1wb3J0RW50cnkubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVO
YW1lKGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7CisgICAgfQogCiAgICAgZGF0
YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4i
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKLSAgICAg
ICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1ZTsKLSAgICAgICAgc3dpdGNo
IChlbnRyeS50eXBlKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGV4cG9ydEVudHJ5ID0gcGFpci52
YWx1ZTsKKyAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CiAgICAgICAgIGNhc2Ug
RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xv
Y2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBs
b2NhbCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIiAgICAgIFtMb2NhbF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4
cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRF
bnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6Ci0gICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0
TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilc
biIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgi
LCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHBy
aW50YWJsZU5hbWUoZXhwb3J0RW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OgotICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhwb3J0KCIsIHByaW50YWJs
ZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRy
eS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5h
bWUpLCAiKVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5kaXJlY3RdICIsICJl
eHBvcnQoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5leHBvcnROYW1lKSwgIiksIGltcG9y
dCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIs
IHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggODFkYTM5NjZlOGM1YThkYTkzMDRkMjgyZjRm
YmNhOTRmMjRlYWU0OC4uMDg1MjFiNGNjZDNiMDRhYWVlMDNiM2I0NDFhMjFjMWY2ZDQxOTY0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03OCw4ICs3OSw4IEBA
IGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAg
ICB9OwogCiAgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50cnksIElkZW50
aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBv
cnRNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4
cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydEVudHJpZXM7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVy
UmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0RW50
cmllczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKQEAgLTEwMCwyNSArMTAxLDQ5IEBA
IGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAg
ICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CiAgICAgdm9pZCBhZGRF
eHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwogCi0gICAgY29uc3QgSW1wb3J0RW50cnkm
IGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSk7CisgICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IHRyeUdldEltcG9ydEVudHJ5KFVuaXF1
ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEV4cG9ydEVudHJ5PiB0cnlH
ZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7CiAKICAgICBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlOyB9
CiAgICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1
bGVLZXk7IH0KICAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVxdWVzdGVkTW9kdWxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQotICAgIGNvbnN0IEV4cG9y
dE1hcCYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50cmllczsgfQot
ICAgIGNvbnN0IEltcG9ydE1hcCYgaW1wb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1faW1w
b3J0RW50cmllczsgfQorICAgIGNvbnN0IEV4cG9ydEVudHJpZXMmIGV4cG9ydEVudHJpZXMoKSBj
b25zdCB7IHJldHVybiBtX2V4cG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBJbXBvcnRFbnRyaWVz
JiBpbXBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRFbnRyaWVzOyB9CisgICAg
Y29uc3QgT3JkZXJlZElkZW50aWZpZXJTZXQmIHN0YXJFeHBvcnRFbnRyaWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFyRXhwb3J0RW50cmllczsgfQogCiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgZGVjbGFyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2RlY2xhcmVkVmFyaWFi
bGVzOyB9CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlczsgfQogCiAgICAgdm9pZCBkdW1wKCk7
CiAKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9tb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgIHJldHVybiBtX21v
ZHVsZUVudmlyb25tZW50LmdldCgpOworICAgIH0KIAogICAgIHZvaWQgbGluayhFeGVjU3RhdGUq
KTsKICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXhlY1N0YXRlKik7CiAKICAgICBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpOyB9CiAKKyAgICBzdHJ1Y3QgUmVzb2x1dGlvbiB7
CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IFJlc29sdmVkLCBOb3RGb3VuZCwgQW1iaWd1b3Vz
LCBFcnJvciB9OworCisgICAgICAgIHN0YXRpYyBSZXNvbHV0aW9uIG5vdEZvdW5kKCk7CisgICAg
ICAgIHN0YXRpYyBSZXNvbHV0aW9uIGVycm9yKCk7CisgICAgICAgIHN0YXRpYyBSZXNvbHV0aW9u
IGFtYmlndW91cygpOworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgSlNNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZDsKKyAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7CisgICAgfTsK
KworICAgIFJlc29sdXRpb24gcmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBleHBvcnROYW1lKTsKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVJbXBvcnQoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBo
b3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1v
ZHVsZU5hbWUpOworCiBwcml2YXRlOgogICAgIEpTTW9kdWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJp
YWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCiAgICAg
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpAQCAtMTM0LDcgKzE1OSw3IEBAIGNsYXNzIEpTTW9k
dWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIAotICAgIEpTTW9kdWxlUmVjb3JkKiBob3N0UmVzb2x2ZUltcG9y
dGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworICAg
IHZvaWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqKTsKIAogICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVs
ZSBuYW1lIHRvIHRoZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZh
bHVlIHRvIHJlcHJlc2VudCB0aGlzIG1vZHVsZS4KICAgICBJZGVudGlmaWVyIG1fbW9kdWxlS2V5
OwpAQCAtMTQ0LDQ2ICsxNjksMzcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNE
ZXN0cnVjdGlibGVPYmplY3QgewogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9kZWNsYXJlZFZh
cmlhYmxlczsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fbGV4aWNhbFZhcmlhYmxlczsKIAor
ICAgIC8vIEN1cnJlbnRseSwgd2UgZG9uJ3Qga2VlcCB0aGUgb2NjdXJyZW5jZSBvcmRlciBvZiB0
aGUgaW1wb3J0IC8gZXhwb3J0IGVudHJpZXMuCisgICAgLy8gU28sIHdlIGRvZXMgbm90IGd1YXJh
bnRlZSB0aGUgb3JkZXIgb2YgdGhlIGVycm9ycy4KKyAgICAvLyBlLmcuIFRoZSBpbXBvcnQgZGVj
bGFyYXRpb24gdGhhdCBvY2N1cnIgbGF0ZXIgdGhhbiB0aGUgYW5vdGhlciBpbXBvcnQgZGVjbGFy
YXRpb24gbWF5CisgICAgLy8gICAgICB0aHJvdyB0aGUgZXJyb3IgZXZlbiBpZiB0aGUgZm9ybWVy
IGltcG9ydCBkZWNsYXJhdGlvbiBhbHNvIGhhcyB0aGUgaW52YWxpZCBjb250ZW50LgorICAgIC8v
CisgICAgLy8gICAgICBpbXBvcnQgLi4uIC8vICgxKSB0aGlzIGhhcyBzb21lIGludmFsaWQgY29u
dGVudC4KKyAgICAvLyAgICAgIGltcG9ydCAuLi4gLy8gKDIpIHRoaXMgYWxzbyBoYXMgc29tZSBp
bnZhbGlkIGNvbnRlbnQuCisgICAgLy8KKyAgICAvLyAgICAgIEluIHRoZSBhYm92ZSBjYXNlLCAo
MikgbWF5IHRocm93IHRoZSBlcnJvciBlYXJsaWVyIHRoYW4gKDEpCisgICAgLy8KKyAgICAvLyBC
dXQsIGluIHRoZSBhbGwgY2FzZXMsIHdlIHdpbGwgdGhyb3cgdGhlIHN5bnRheCBlcnJvci4gU28g
ZXhjZXB0IGZvciB0aGUgY29udGVudCBvZiB0aGUgc3ludGF4IGVycm9yLAorICAgIC8vIHRoZXJl
IGFyZSBubyBkaWZmZXJlbmNlLgorCiAgICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRy
eS4KLSAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOworICAgIEltcG9ydEVudHJpZXMgbV9p
bXBvcnRFbnRyaWVzOwogCiAgICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCi0g
ICAgRXhwb3J0TWFwIG1fZXhwb3J0RW50cmllczsKKyAgICBFeHBvcnRFbnRyaWVzIG1fZXhwb3J0
RW50cmllczsKIAotICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKKyAgICAv
LyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHJlc29sdmVFeHBvcnQgcmVxdWlyZXMg
aXQuCisgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKIAogICAg
IC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9h
ZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KICAgICAvLyBodHRwOi8vd3d3
LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlv
bgogICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKIAotICAgIFdy
aXRlQmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8SlNNYXA+IG1fZGVwZW5kZW5jaWVzTWFwOwotfTsKIAot
aW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fcmVxdWVzdGVkTW9kdWxlcy5hZGQobW9k
dWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkSW1w
b3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQotewotICAgIG1faW1wb3J0RW50cmll
cy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBK
U01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQot
ewotICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5
KTsKLX0KLQotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeShj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fc3RhckV4cG9ydEVudHJpZXMu
YWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIGF1dG8gSlNNb2R1bGVSZWNvcmQ6
Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2Fs
TmFtZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCi17Ci0gICAgcmV0dXJuICgqbV9pbXBvcnRFbnRy
aWVzLmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Ci19CisgICAgV3JpdGVCYXJyaWVyPE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlOworICAgIFdyaXRlQmFy
cmllcjxKU01vZHVsZUVudmlyb25tZW50PiBtX21vZHVsZUVudmlyb25tZW50OworfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAKaW5kZXggYmIyZWZkZDA2MzFjZDE4ZWE5NzU0MjY3NGEyY2U3MTgxNTA3MmM4Zi4uMmQwNjA4
ZDljN2E1MTY1Zjk2M2E4MjMyMmVlYTI0YmU2YTY3NWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNs
dWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIApAQCAt
NjUsNiArNjcsMTkgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNTdGF0
ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKEpTTW9kdWxlRW52aXJvbm1lbnQqIG1v
ZHVsZUVudmlyb25tZW50ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oc2Nv
cGUpKSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gbW9kdWxl
RW52aXJvbm1lbnQtPm1vZHVsZVJlY29yZCgpOworICAgICAgICAgICAgY29uc3QgYXV0byByZXNv
bHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIGlkZW50KTsKKyAgICAg
ICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246
OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9y
dGVkUmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAgICAgICAgSlNN
b2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZpcm9ubWVudCA9IGltcG9ydGVkUmVjb3JkLT5t
b2R1bGVFbnZpcm9ubWVudCgpOworICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBpbXBvcnRlZEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQocmVzb2x1dGlvbi5s
b2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgp
KTsKKyAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShNb2R1bGVWYXIsIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIGltcG9ydGVkRW52aXJvbm1lbnQsIGVu
dHJ5LndhdGNocG9pbnRTZXQoKSwgZW50cnkuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSwgcmVzb2x1
dGlvbi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChsZXhpY2FsRW52aXJvbm1lbnQt
PnN5bWJvbFRhYmxlKCktPnVzZXNOb25TdHJpY3RFdmFsKCkpCiAgICAgICAgICAgICBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcyA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMiw2
ICsyNDcsNyBAQCBjb25zdCBjaGFyKiByZXNvbHZlVHlwZU5hbWUoUmVzb2x2ZVR5cGUgdHlwZSkK
ICAgICAgICAgIkdsb2JhbFZhciIsCiAgICAgICAgICJDbG9zdXJlVmFyIiwKICAgICAgICAgIkxv
Y2FsQ2xvc3VyZVZhciIsCisgICAgICAgICJNb2R1bGVWYXIiLAogICAgICAgICAiR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAgIkdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MiLAogICAgICAgICAiQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MiLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4IGE2NTMxNjc0
OTBmNjgyMjNmNTExZGQyODkwODkyOWZjNDZhMTk3M2MuLjAyNmEyNzE0ZGM4ZDkyMmE5ODI4ODVl
NTQ2YjU3OGJhOTYzNDgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgZW51bSBSZXNvbHZlVHlwZSB7CiAgICAgR2xvYmFsVmFyLAog
ICAgIENsb3N1cmVWYXIsCiAgICAgTG9jYWxDbG9zdXJlVmFyLAorICAgIE1vZHVsZVZhciwKIAog
ICAgIC8vIERpdHRvLCBidXQgYXQgbGVhc3Qgb25lIGludGVydmVuaW5nIHNjb3BlIHVzZWQgbm9u
LXN0cmljdCBldmFsLCB3aGljaAogICAgIC8vIGNhbiBpbmplY3QgYW4gaW50ZXJjZXB0aW5nIHZh
ciBkZWxjYXJhdGlvbiBhdCBydW50aW1lLgpAQCAtNzIsNiArNzMsNyBAQCBpbmxpbmUgUmVzb2x2
ZVR5cGUgbWFrZVR5cGUoUmVzb2x2ZVR5cGUgdHlwZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcykKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAg
ICAgICAgIHJldHVybiBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsKKyAgICBjYXNl
IE1vZHVsZVZhcjoKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
czoKICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTkwLDYgKzkyLDcgQEAgaW5saW5l
IGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5cGUgdHlwZSkKICAgICBjYXNl
IEdsb2JhbFZhcjoKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVW
YXI6CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNl
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC0xMDMsMTMgKzEwNiwxNCBAQCBpbmxpbmUgYm9v
bCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogfQogCiBzdHJ1Y3Qg
UmVzb2x2ZU9wIHsKLSAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRo
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZp
cm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQp
CisgICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQsIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kLCBVbmlxdWVkU3Ry
aW5nSW1wbCogaW1wb3J0ZWROYW1lID0gbnVsbHB0cikKICAgICAgICAgOiB0eXBlKHR5cGUpCiAg
ICAgICAgICwgZGVwdGgoZGVwdGgpCiAgICAgICAgICwgc3RydWN0dXJlKHN0cnVjdHVyZSkKICAg
ICAgICAgLCBsZXhpY2FsRW52aXJvbm1lbnQobGV4aWNhbEVudmlyb25tZW50KQogICAgICAgICAs
IHdhdGNocG9pbnRTZXQod2F0Y2hwb2ludFNldCkKICAgICAgICAgLCBvcGVyYW5kKG9wZXJhbmQp
CisgICAgICAgICwgaW1wb3J0ZWROYW1lKGltcG9ydGVkTmFtZSkKICAgICB7CiAgICAgfQogCkBA
IC0xMTksNiArMTIzLDcgQEAgc3RydWN0IFJlc29sdmVPcCB7CiAgICAgSlNMZXhpY2FsRW52aXJv
bm1lbnQqIGxleGljYWxFbnZpcm9ubWVudDsKICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50
U2V0OwogICAgIHVpbnRwdHJfdCBvcGVyYW5kOworICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4gaW1wb3J0ZWROYW1lOwogfTsKIAogY2xhc3MgUmVzb2x2ZU1vZGVBbmRUeXBlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3Bw
CmluZGV4IDI4ZTBiYWRhYTcyYWYzMGNjNzcxOTE5NjA0YTYxMmQ2Y2RiNzNlMDcuLjZlNmY5Zjlh
NmRhNjE4MTJlM2MyMWFkNDM2NmZkODdiN2NkMTQ3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAi
TW9kdWxlQW5hbHl6ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260501</attachid>
            <date>2015-09-03 11:39:34 -0700</date>
            <delta_ts>2015-09-03 11:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150903113934.patch</filename>
            <type>text/plain</type>
            <size>105024</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi5hNWE0Y2EyZmYxNWI2ZGU5
ZTQ2NjI4NWJlNmY2NjcwZTQ2NGVlM2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDcgQEAKKzIwMTUtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3B1dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0
X3RvX3Njb3BlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF90b19z
Y29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAg
ICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3Iu
Y3BwOgorICAgICAgICAoSlNDOjp0aHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKiBydW50aW1l
L0Vycm9yLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Om1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpt
b2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxF
bnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlND
OjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlND
OjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU01v
ZHVsZUVudmlyb25tZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmguCisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJv
bm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om9mZnNldE9m
TW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2Nh
dGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNv
cmQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmRTbG90
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVu
dCk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6
YWRkSW1wb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0
RW50cnkpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OlJlc29sdmVRdWVyeSk6CisgICAg
ICAgIChKU0M6OlJlc29sdmVRdWVyeTo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6UmVz
b2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeUhh
c2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnlIYXNoOjplcXVhbCk6CisgICAg
ICAgIChKU0M6OnJlc29sdmVFeHBvcnRMb29wKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNs
YXJhdGlvbnMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZSk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpleHBvcnRFbnRyaWVz
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmltcG9ydEVudHJpZXMpOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6c3RhckV4cG9ydEVudHJpZXMpOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6bW9kdWxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6YWJzdHJhY3RBY2Nlc3MpOgor
ICAgICAgICAoSlNDOjpyZXNvbHZlVHlwZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29w
ZS5oOgorICAgICAgICAoSlNDOjptYWtlVHlwZSk6CisgICAgICAgIChKU0M6Om5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgorICAg
ICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoKKwogMjAxNS0wOS0wMSAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm90
b2NvbCBnZW5lcmF0b3Igc2hvdWxkIG5vdCBhbGxvdyBub24tYm9vbGVhbiB2YWx1ZXMgZm9yICJv
cHRpb25hbCIga2V5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjgwNjBh
Njk5ZmI0ODk3MDA2ZTRmYTk5MzIwMTI3MGM0ZDJlYzNkOS4uZWZhNTcwYTIxMjYyMjQ2MzhlNTU1
ODU4Y2RjZWZkYmFmZTAyOTI1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNTM3LDYgKzUzNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAg
ICBydW50aW1lL0pTTG9jay5jcHAKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUv
SlNNYXBJdGVyYXRvci5jcHAKKyAgICBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCiAg
ICAgcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKICAgICBydW50aW1lL0pTTmF0aXZlU3RkRnVu
Y3Rpb24uY3BwCiAgICAgcnVudGltZS9KU05vdEFuT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggMzk5NjNiNDEwMTFjZTllNTAzZTM2ODlhMDY3NTQ1
YTZiNDBiNDBiMS4uOGExMjZlNTU0NTNkMzhjMDRlOWMyYWMyYzI0NzgyM2IxNTQwNDIzMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCkBAIC03ODYsNiArNzg2LDcgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuY3Bw
IiAvPgpAQCAtMTY0MCw2ICsxNjQxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNMb2NrLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwSXRlcmF0
b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZp
cm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVs
ZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hdGl2
ZVN0ZEZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
Tm90QW5PYmplY3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCAyYmY3MTgwNDBiMzRkNGZjMDA4M2YyMWE1M2NlNDgyN2UxZmMw
Mjg2Li42OGU0YzdlNDRmOWM4ODJlMTM0Y2NmN2UzYTUwNjBhNmM0YzhjNzUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03MjYsNiAr
NzI2LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmNwcCI+Cisg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMzUwNSw2ICszNTA4
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCI+CiAgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmMjJlNzE2ZjUzMTEwN2ZlNTk4MWM1YTZkMTZkM2E0NTQxZTYxOWY1Li5iYjE2MzAy
ZDEwMWQ0MDdlOWQyNjA0N2QyNzU3MDEwN2RmNzg3MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTcyNiw2ICsxNzI2LDggQEAKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1
IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXpl
TW9kdWxlLmNwcCAqLzsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJ
CUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICov
OyB9OworCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5Qzcx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAv
KiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1
MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1
ODcsNiArMzU4OSw4IEBACiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5
emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNB
bmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
M0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAv
KiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDc3Nyw2ICs0NzgxLDggQEAKIAkJCQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyog
SlNNYXAuaCAqLywKIAkJCQlBNzRERUY4RjE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRv
ci5jcHAgKi8sCiAJCQkJQTc0REVGOTAxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3Iu
aCAqLywKKwkJCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAgKi8sCisJCQkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuaCAqLywKIAkJCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNv
cmQuY3BwICovLAogCQkJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5oICovLAogCQkJCUUzM0U4RDFBMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0
aW9uLmNwcCAqLywKQEAgLTYxMzksNiArNjE0NSw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAw
QjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lz
UGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYwRjE5QjE2QjcyOUZB
MDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUZC
ODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC03Mzg2LDYgKzczOTMsNyBAQAogCQkJCTBGNkM3MzUwMUFDOUY5
OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQ0MjE2
Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5
QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAppbmRleCBjNGM2NmQzYjc5NzZmOTc3NWJkMTM0ZDFlYTk4OWMxNGE0NWRhYWQ3Li40NThi
MDY1Yjk2NTIzYmU1MTM1N2IwZGIxOGZmMmRmN2U5MDI0ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTE3NjcsNiArMTc2OCw3IEBAIENvZGVC
bG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3JlZ2lz
dGVySW5kZXhdLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC0+anND
ZWxsRm9yTGlua1RpbWVDb25zdGFudCh0eXBlKSk7CiAgICAgfQogCisgICAgLy8gTk9URTogVGhp
cyBpbnZvbHZlcyBjbG9uaW5nIHRoZSBzeW1ib2wgdGFibGUgZm9yIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQuCiAgICAgSGFzaFNldDxpbnQsIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IGNsb25lZENvbnN0YW50U3ltYm9sVGFibGVzOwog
ICAgIHsKICAgICAgICAgSGFzaFNldDxTeW1ib2xUYWJsZSo+IGNsb25lZFN5bWJvbFRhYmxlczsK
QEAgLTE5NzIsOSArMTk3NCwxNCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAg
ICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUp
OwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBvcC50eXBlOwog
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51Lm9wZXJhbmQgPSBvcC5kZXB0aDsKLSAg
ICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpCi0gICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxl
LCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOwotICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaWYgKG9wLmxleGljYWxFbnZpcm9ubWVudCkgeworICAgICAgICAgICAg
ICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikgeworICAgICAgICAgICAgICAgICAgICAvLyBL
ZWVwIHRoZSBsaW5rZWQgbW9kdWxlIGVudmlyb25tZW50IHN0cm9uZ2x5IHJlZmVyZW5jZWQuCisg
ICAgICAgICAgICAgICAgICAgIGFkZENvbnN0YW50KG9wLmxleGljYWxFbnZpcm9ubWVudCk7Cisg
ICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5qc0NlbGwuc2V0KCp2bSgp
LCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5zeW1i
b2xUYWJsZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50
LT5zeW1ib2xUYWJsZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgNl0udS5wb2ludGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0xOTk5LDcgKzIwMDYsMTIgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW4KICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1sz
XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJh
Y3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwg
c2NvcGUsIGlkZW50LCBHZXQsIG1vZGVBbmRUeXBlLnR5cGUoKSk7CiAKLSAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRU
eXBlLm1vZGUoKSwgb3AudHlwZSkub3BlcmFuZCgpOworICAgICAgICAgICAgLy8gTW9kdWxlVmFy
IGNhbiBnZXQgdGhlIHZhcmlhYmxlIGFzIHRoZSBzYW1lIHRvIENsb3N1cmVWYXIuCisgICAgICAg
ICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9k
ZSgpLCBDbG9zdXJlVmFyKS5vcGVyYW5kKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUo
bW9kZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5vcGVyYW5kKCk7CisKICAgICAgICAgICAgIGlm
IChvcC50eXBlID09IEdsb2JhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MpCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LndhdGNo
cG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Auc3Ry
dWN0dXJlKQpAQCAtMjA2NywxNyArMjA3OSwxOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgog
ICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGFic3RyYWN0bHkgInJlYWQiaW5nIGZyb20gYSBKU1Nj
b3BlLgogICAgICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVz
b2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3Bl
LCBpZGVudCwgR2V0LCB0eXBlKTsKIAotICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENs
b3N1cmVWYXIpCisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBv
cC50eXBlID09IE1vZHVsZVZhcikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBv
cC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAob3AudHlwZSA9PSBHbG9iYWxWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRh
YmxlID0gbV9nbG9iYWxPYmplY3QuZ2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0gICAgICAgICAgICAg
ICAgCisKKyAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA9IChvcC50eXBl
ID09IE1vZHVsZVZhcikgPyBvcC5pbXBvcnRlZE5hbWUuZ2V0KCkgOiBpZGVudC5pbXBsKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICAg
ICAgICAgICAgICAvLyBJZiBvdXIgcGFyZW50IHNjb3BlIHdhcyBjcmVhdGVkIHdoaWxlIHByb2Zp
bGluZyB3YXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQgZm9yIHByb2ZpbGlu
ZyB5ZXQuCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVBy
b2ZpbGluZyhsb2NrZXIpOwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0g
c3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2
bSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5n
bG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJ
REZvclZhcmlhYmxlKGxvY2tlciwgaW1wbCwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBn
bG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2Nr
ZXIsIGltcGwsICp2bSgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiZGRkMDM2
N2YzYmUzNzI3NjlhZGZmYmNmYTU5ODQzMThiMjNjNzg4Li4zODIzYmM3NTVjODRhNmY4ZWJhYmRj
MDUwOTBmYmVhM2JhMWYwZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC04Miw2ICs4Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRp
b247CitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9k
ZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgK
aW5kZXggNDA5NWE5MDlkODU2Yzc4ZDQ1ZTA4ZDExY2M5NWVmNjI4NzMwOTE1OC4uZGFlNzlmMjdl
ZmNkZjFkMTJmOTA5MmE5NzM4NzIwYzBjNDEyYzE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTUyNywyOSArNTI3LDM1
IEBAIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBV
bmxpbmtlZEdsb2JhbENvZGVCbG9jayB7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICAvLyBUaGlzIHN5bWJvbCB0YWJsZSByZXBy
ZXNlbnRzIHRoZSBsYXlvdXQgb2YgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4gVGhpcyBzeW1ib2wg
dGFibGUgd2lsbCBiZSBtb2RpZmllZCBieSB0aGUgYnl0ZQotICAgIC8vIGNvZGUgZ2VuZXJhdG9y
IHNpbmNlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5jbHVkZXMgdGhlIHRvcC1tb3N0IGxleGlj
YWwgY2FwdHVyZWQgdmFyaWFibGVzIGluc2lkZSB0aGUgbW9kdWxlIGNvZGUuCi0gICAgLy8gVGhp
cyBtZWFucyB0aGF0LCBvbmNlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgYWxsb2NhdGVkIGFu
ZCBpbnN0YW50aWF0ZWQgZnJvbSB0aGlzIHN5bWJvbCB0YWJsZSwgaXQgaXMgdGl0ZWx5Ci0gICAg
Ly8gY291cGxlZCB3aXRoIHRoZSBzcGVjaWZpYyB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2Rl
IGJsb2NrIGFuZCB0aGUgc3ltYm9sIHRhYmxlLiBTbyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1
bGUKLSAgICAvLyBjb2RlLCB3ZSBzaG91bGQgbm90IGNsZWFyIHRoZSB1bmxpbmtlZCBtb2R1bGUg
cHJvZ3JhbSBjb2RlIGJsb2NrIGluIHRoZSBtb2R1bGUgZXhlY3V0YWJsZS4gVGhpcyByZXF1aXJl
bWVudCBpcyBtZXQKLSAgICAvLyBiZWNhdXNlIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBvbmx5IGNs
ZWFycyB1bmxpbmtlZCBjb2RlIGluICgxKSB1bm1hcmtlZCBleGVjdXRhYmxlcyBhbmQgKDIpIGZ1
bmN0aW9uIGV4ZWN1dGFibGVzLgorICAgIC8vIFRoaXMgb2Zmc2V0IHJlcHJlc2VudHMgdGhlIGNv
bnN0YW50IHJlZ2lzdGVyIG9mZnNldCB0byB0aGUgc3RvcmVkIHN5bWJvbCB0YWJsZSB0aGF0IHJl
cHJlc2VudHMgdGhlIGxheW91dCBvZiB0aGUKKyAgICAvLyBtb2R1bGUgZW52aXJvbm1lbnQuIFRo
aXMgc3ltYm9sIHRhYmxlIGlzIGNyZWF0ZWQgYnkgdGhlIGJ5dGUgY29kZSBnZW5lcmF0b3Igc2lu
Y2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpbmNsdWRlcworICAgIC8vIHRoZSB0b3AtbW9zdCBs
ZXhpY2FsIGNhcHR1cmVkIHZhcmlhYmxlcyBpbnNpZGUgdGhlIG1vZHVsZSBjb2RlLiBUaGlzIG1l
YW5zIHRoYXQsIG9uY2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpcworICAgIC8vIGFsbG9jYXRl
ZCBhbmQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyBzeW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseSBj
b3VwbGVkIHdpdGggdGhlIHNwZWNpZmljIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtCisgICAgLy8g
Y29kZSBibG9jayBhbmQgdGhlIHN0b3JlZCBzeW1ib2wgdGFibGUuIFNvIGJlZm9yZSBleGVjdXRp
bmcgdGhlIG1vZHVsZSBjb2RlLCB3ZSBzaG91bGQgbm90IGNsZWFyIHRoZSB1bmxpbmtlZCBtb2R1
bGUKKyAgICAvLyBwcm9ncmFtIGNvZGUgYmxvY2sgaW4gdGhlIG1vZHVsZSBleGVjdXRhYmxlLiBU
aGlzIHJlcXVpcmVtZW50IGlzIG1ldCBiZWNhdXNlIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBvbmx5
IGNsZWFycworICAgIC8vIHVubGlua2VkIGNvZGUgaW4gKDEpIHVubWFya2VkIGV4ZWN1dGFibGVz
IGFuZCAoMikgZnVuY3Rpb24gZXhlY3V0YWJsZXMuCiAgICAgLy8KICAgICAvLyBTaW5jZSB0aGUg
ZnVuY3Rpb24gY29kZSBtYXkgYmUgZXhlY3V0ZWQgcmVwZWF0ZWRseSBhbmQgdGhlIGVudmlyb25t
ZW50IG9mIGVhY2ggZnVuY3Rpb24gZXhlY3V0aW9uIGlzIGRpZmZlcmVudCwKICAgICAvLyB0aGUg
ZnVuY3Rpb24gY29kZSBuZWVkIHRvIGFsbG9jYXRlIGFuZCBpbnN0YW50aWF0ZSB0aGUgZW52aXJv
bm1lbnQgaW4gdGhlIHByb2xvZ3VlIG9mIHRoZSBmdW5jdGlvbiBjb2RlLiBPbiB0aGUKICAgICAv
LyBvdGhlciBoYW5kLCB0aGUgbW9kdWxlIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBvbmNlLiBTbyB3
ZSBjYW4gaW5zdGFudGlhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBvdXRzaWRlIHRoZSBtb2R1
bGUKLSAgICAvLyBjb2RlLiBBdCB0aGF0IHRpbWUsIHdlIGNvbnN0cnVjdCB0aGUgbW9kdWxlIGVu
dmlyb25tZW50IGJ5IHVzaW5nIHRoaXMgc3ltYm9sIHRhYmxlIGJlZm9yZSBleGVjdXRpbmcgdGhl
IG1vZHVsZSBjb2RlLgotICAgIC8vIEluc3RhbnRpYXRpbmcgdGhlIG1vZHVsZSBlbnZpcm9ubWVu
dCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUgY29kZSBpcyByZXF1aXJlZCB0byBsaW5rIHRo
ZSBpbXBvcnRlZCBiaW5kaW5ncwotICAgIC8vIGJldHdlZW4gdGhlIG1vZHVsZXMuCisgICAgLy8g
Y29kZS4gQXQgdGhhdCB0aW1lLCB3ZSBjb25zdHJ1Y3QgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBi
eSB1c2luZyB0aGUgc3ltYm9sIHRhYmxlIHRoYXQgd2lsbCBiZSBjbG9uZWQgaW4gdGhlIGxpbmtl
ZAorICAgIC8vIENvZGVCbG9jayBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUgY29kZS4gSW5z
dGFudGlhdGluZyB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJlZm9yZSBleGVjdXRpbmcgdGhlIG1v
ZHVsZSBjb2RlIGlzCisgICAgLy8gcmVxdWlyZWQgdG8gbGluayB0aGUgaW1wb3J0ZWQgYmluZGlu
Z3MgYmV0d2VlbiB0aGUgbW9kdWxlcy4KICAgICAvLwotICAgIC8vIFRoZSB1bmxpbmtlZCBtb2R1
bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIG9ubHkgaG9sZHMgdGhlIHN5bWJvbCB0YWJsZS4gSXQgZG9l
cyBub3QgaG9sZCB0aGUgbW9kdWxlIGVudmlyb25tZW50LiBTbyB3aGlsZQotICAgIC8vIHRoZSBt
b2R1bGUgZW52aXJvbm1lbnQgcmVxdWlyZXMgdGhlIHNwZWNpZmljIHVubGlua2VkIG1vZHVsZSBw
cm9ncmFtIGNvZGUgYmxvY2ssIHRoZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jawotICAgIC8v
IGNhbiBiZSB1c2VkIGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluc3RhbnRpYXRlZCBmcm9t
IHRoaXMgdW5saW5rZWQgY29kZSBibG9jay4gVGhlcmUgaXMgMTpOIHJlbGF0aW9uIGJldHdlZW4K
LSAgICAvLyB0aGUgdW5saW5rZWQgbW9kdWxlIGNvZGUgYmxvY2sgYW5kIHRoZSBtb2R1bGUgZW52
aXJvbm1lbnRzLiBTbyB0aGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBjYW4g
YmUgY2FjaGVkLgorICAgIC8vIFRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2Nr
IG9ubHkgaG9sZHMgdGhlIHByZS1jbG9uZWQgc3ltYm9sIHRhYmxlIGluIGl0cyBjb25zdGFudCBy
ZWdpc3RlciBwb29sLiBJdCBkb2VzCisgICAgLy8gbm90IGhvbGQgdGhlIGluc3RhbnRpYXRlZCBt
b2R1bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgcmVxdWly
ZXMgdGhlIHNwZWNpZmljIHVubGlua2VkIG1vZHVsZQorICAgIC8vIHByb2dyYW0gY29kZSBibG9j
aywgdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrIGNhbiBiZSB1c2VkIGZvciB0aGUgbW9k
dWxlIGVudmlyb25tZW50IGluc3RhbnRpYXRlZCBmcm9tIHRoaXMKKyAgICAvLyB1bmxpbmtlZCBj
b2RlIGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbiB0aGUgdW5saW5rZWQgbW9k
dWxlIGNvZGUgYmxvY2sgYW5kIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzLiBTbyB0aGUKKyAgICAv
LyB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBjYWNoZWQuCiAgICAg
Ly8KICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGxpbmtlZCBjb2RlIGJsb2NrIGZvciB0
aGUgbW9kdWxlIGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSByZXNvbHZlZCByZWZlcmVuY2VzIHRv
IHRoZSBpbXBvcnRlZAogICAgIC8vIGJpbmRpbmdzLiBUaGUgaW1wb3J0ZWQgYmluZGluZyByZWZl
cmVuY2VzIHRoZSBvdGhlciBtb2R1bGUgZW52aXJvbm1lbnQsIHNvIHRoZSBsaW5rZWQgY29kZSBi
bG9jayBpcyB0aXRseSBjb3VwbGVkCiAgICAgLy8gd2l0aCB0aGUgc3BlY2lmaWMgc2V0IG9mIHRo
ZSBtb2R1bGUgZW52aXJvbm1lbnRzLiBUaHVzLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sgc2hvdWxk
IG5vdCBiZSBjYWNoZWQuCi0gICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0K
KyAgICBpbnQgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZz
ZXQoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lz
dGVyT2Zmc2V0OyB9CisgICAgdm9pZCBzZXRNb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29u
c3RhbnRSZWdpc3Rlck9mZnNldChpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9tb2R1bGVF
bnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCA9IG9mZnNldDsKKyAg
ICB9CiAKIHByaXZhdGU6CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNKiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQpAQCAt
NTU3LDEzICs1NjMsNyBAQCBjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmlu
YWwgOiBwdWJsaWMgVW5saW5rZWRHbG9iYWxDb2RlQmxvY2sgewogICAgIHsKICAgICB9CiAKLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLSAgICB7Ci0gICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKLSAgICAgICAgbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLnNl
dCh2bSwgdGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZSh2bSkpOwotICAgIH0KLQotICAgIFdyaXRl
QmFycmllcjxTeW1ib2xUYWJsZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlOworICAg
IGludCBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0
IHsgMCB9OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggNzgzYjIxNTdhMWYxZTEzYzJlY2MxYWZmZjVlN2ZkYzQ5ZmU5ZTNk
Ny4uODdjMGRiNWE4ZWRjMTlhMDMxNDA0YmFmZWEyOTkwNmU4MzgwYmM0OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTUyNCw5ICs1MjQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgIGlm
IChtX2lzQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzID0g
ZmFsc2U7CiAKLSAgICAvLyBVc2UgdGhlIHN5bWJvbCB0YWJsZSBhbGxvY2F0ZWQgaW4gdGhlIHVu
bGlua2VkIGNvZGUgYmxvY2suIFRoaXMgc3ltYm9sIHRhYmxlCi0gICAgLy8gd2lsbCBiZSB1c2Vk
IHRvIGFsbG9jYXRlIGFuZCBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50LgotICAg
IFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlID0gY29kZUJsb2NrLT5t
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCk7CisgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKCptX3ZtKTsKICAgICBt
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRVc2VzTm9uU3RyaWN0RXZhbChtX3VzZXNO
b25TdHJpY3RFdmFsKTsKICAgICBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5zZXRTY29w
ZVR5cGUoU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlKTsKIApAQCAtNTgwLDYg
KzU3OCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1v
ZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgVmFyaWFibGVFbnZpcm9ubWVu
dCYgbGV4aWNhbFZhcmlhYmxlcyA9IG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2FsVmFyaWFibGVz
KCk7CiAgICAgaW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMsIG1v
ZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUsIFNjb3BlUmVnaXN0ZXJUeXBlOjpCbG9jaywgbG9v
a1VwVmFyS2luZCk7CiAKKyAgICAvLyBXZSBrZWVwIHRoZSBzeW1ib2wgdGFibGUgaW4gY29uc3Rh
bnQgcmVnaXN0ZXIgcG9vbC4KICAgICBSZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlID0g
bnVsbHB0cjsKICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIGNvbnN0YW50U3lt
Ym9sVGFibGUgPSBhZGRDb25zdGFudFZhbHVlKG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUp
OwpAQCAtNjQ0LDYgKzY0MywxMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICAgICAg
ICAgbV9mdW5jdGlvbnNUb0luaXRpYWxpemUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9u
LCBOb3JtYWxGdW5jdGlvblZhcmlhYmxlKSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBS
ZW1lbWJlciB0aGUgY29uc3RhbnQgcmVnaXN0ZXIgb2Zmc2V0IHRvIHRoZSB0b3AtbW9zdCBzeW1i
b2wgdGFibGUuIFRoaXMgc3ltYm9sIHRhYmxlIHdpbGwgYmUKKyAgICAvLyBjbG9uZWQgaW4gdGhl
IGNvZGUgYmxvY2sgbGlua2luZy4gQWZ0ZXIgdGhhdCwgdG8gY3JlYXRlIHRoZSBtb2R1bGUgZW52
aXJvbm1lbnQsIHdlIHJldHJpZXZlCisgICAgLy8gdGhlIGNsb25lZCBzeW1ib2wgdGFibGUgZnJv
bSB0aGUgbGlua2VkIGNvZGUgYmxvY2sgYnkgdXNpbmcgdGhpcyBvZmZzZXQuCisgICAgY29kZUJs
b2NrLT5zZXRNb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNl
dChjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpKTsKIH0KIAogQnl0ZWNvZGVHZW5lcmF0b3I6
On5CeXRlY29kZUdlbmVyYXRvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDdmNjUwNTJkYThmMmYxZjk3NDM0YzhjYjdhNmEyMGZj
NDIyNmU1MDcuLjk3OWM4ZTY4MGQ2ZDhkMDY4ZTZkZmY0NWI1ZDVhZTA4ZGExNjlmNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmly
b25tZW50LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQ
dXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKQEAgLTM4MzMsNiAr
MzgzNCwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXRE
aXJlY3QobV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOiB7CisgICAgICAgICAgICAgICAgLy8gU2luY2Ug
dGhlIHZhbHVlIG9mIHRoZSAic2NvcGUiIHZpcnR1YWwgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4g
TExJbnQgLyBiYXNlbGluZSBvcF9yZXNvbHZlX3Njb3BlIHdpdGggTW9kdWxlVmFyLAorICAgICAg
ICAgICAgICAgIC8vIHdlIG5lZWQgbm90IHRvIGtlZXAgaXQgYWxpdmUgYnkgdGhlIFBoYW50b20g
bm9kZS4KKyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9u
bWVudCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY3VycmVudEluc3RydWN0aW9uWzZd
LnUuanNDZWxsLmdldCgpKTsKKyAgICAgICAgICAgICAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQg
aXMgYWxyZWFkeSBzdHJvbmdseSByZWZlcmVuY2VkIGJ5IHRoZSBDb2RlQmxvY2suCisgICAgICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudChtb2R1bGVF
bnZpcm9ubWVudCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVW
YXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7
CkBAIC00MDAyLDYgKzQwMTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEdldENsb3N1cmVW
YXIsIE9wSW5mbyhvcGVyYW5kKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBzY29wZU5vZGUpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9k
dWxlVmFyOgogICAgICAgICAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00MDg2
LDYgKzQwOTYsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXNlIE1vZHVsZVZhcjoKKyAgICAgICAgICAgICAgICAvLyBO
ZWVkIG5vdCB0byBrZWVwICJzY29wZSIgYW5kICJ2YWx1ZSIgcmVnaXN0ZXIgdmFsdWVzIGhlcmUg
YnkgUGhhbnRvbSBiZWNhdXNlCisgICAgICAgICAgICAgICAgLy8gdGhleSBhcmUgbm90IHVzZWQg
aW4gTExJbnQgLyBiYXNlbGluZSBvcF9wdXRfdG9fc2NvcGUgd2l0aCBNb2R1bGVWYXIuCisgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworCiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZh
NjJlYTZmMzc2ZDg4Y2VmZjRlOTgyNzU0MzI2NmUwZDkzYTQ0OWMuLjVhN2EyYWU1ZGQwZTZkMDA0
OTFjMDc3YmM1NDhkYmRkMTcxNjZiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg
IkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAtMTE5NCw2ICsxMTk1LDU0IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAorSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTTW9kdWxlRW52aXJvbm1lbnQqIHNjb3BlKQor
eworICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKKyAgICBTYW1wbGluZ1Njb3BlIHNhbXBsaW5n
U2NvcGUodGhpcyk7CisKKyAgICBBU1NFUlQoc2NvcGUtPnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0o
KSk7CisgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CisgICAgQVNTRVJUKCF2bS5pc0NvbGxl
Y3RvckJ1c3koKSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGlu
Z0FQSUxvY2soKSk7CisgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgICAgICByZXR1
cm4ganNOdWxsKCk7CisKKyAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmds
b2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIXZtLmlzU2FmZVRvUmVjdXJzZSgpKQorICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsK
KworICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uKGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsKTsKKyAgICBpZiAo
VU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihj
YWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsK
KyAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjdXRhYmxlLT5jb2Rl
QmxvY2soKTsKKworICAgIGlmIChVTkxJS0VMWSh2bS53YXRjaGRvZyAmJiB2bS53YXRjaGRvZy0+
ZGlkRmlyZShjYWxsRnJhbWUpKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworCisgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgorCisgICAgLy8gVGhl
IHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KKyAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVu
dmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJl
Y29yZHMtZ2V0dGhpc2JpbmRpbmcKKyAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsK
KyAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgSlNDYWxsZWU6OmNyZWF0ZSh2bSwg
c2NvcGUtPmdsb2JhbE9iamVjdCgpLCBzY29wZSksIGpzVW5kZWZpbmVkKCksIDEpOworCisgICAg
aWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQorICAg
ICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2VV
UkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkp
OworCisgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKKyAgICBKU1ZhbHVlIHJlc3VsdDsKKyAgICB7
CisgICAgICAgIFNhbXBsaW5nVG9vbDo6Q2FsbFJlY29yZCBjYWxsUmVjb3JkKG1fc2FtcGxlci5n
ZXQoKSk7CisgICAgICAgIHJlc3VsdCA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS0+
ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgfQorCisgICAgaWYgKExlZ2FjeVBy
b2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQorICAgICAgICBwcm9maWxl
ci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBleGVjdXRh
YmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAgICByZXR1
cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOworfQorCiBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnBy
ZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9va0lE
KQogewogICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9i
amVjdCgpLT5kZWJ1Z2dlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCAwMzhiY2E1Y2ZjNzViOWIyNDU3NjJkNmU2NGY2OGYyZTc4
ZWM2MjUxLi40ZmVmYWE2Y2Y4ZTMxYWYyZDM1OWQxNjNiYWM4YTFhNDA5NWFmNDRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNTQs
NiArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0Fycm93RnVuY3Rpb247CiAg
ICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFz
cyBKU01vZHVsZUVudmlyb25tZW50OwogICAgIGNsYXNzIEpTTW9kdWxlUmVjb3JkOwogICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsK
QEAgLTIxNSw2ICsyMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNWYWx1ZSBleGVj
dXRlQ2FsbChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBD
YWxsRGF0YSYsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0Jik7CiAgICAgICAgIEpT
T2JqZWN0KiBleGVjdXRlQ29uc3RydWN0KENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwg
Q29uc3RydWN0VHlwZSwgY29uc3QgQ29uc3RydWN0RGF0YSYsIGNvbnN0IEFyZ0xpc3QmLCBKU1Zh
bHVlIG5ld1RhcmdldCk7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSos
IENhbGxGcmFtZSosIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Njb3BlKik7CisgICAgICAgIEpTVmFs
dWUgZXhlY3V0ZShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTTW9kdWxl
RW52aXJvbm1lbnQqKTsKIAogICAgICAgICB2b2lkIGdldEFyZ3VtZW50c0RhdGEoQ2FsbEZyYW1l
KiwgSlNGdW5jdGlvbiomLCBwdHJkaWZmX3QmIGZpcnN0UGFyYW1ldGVySW5kZXgsIFJlZ2lzdGVy
KiYgYXJndiwgaW50JiBhcmdjKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQ4Y2RmMTFmZDM2ZmFmZDk2YmYyYmI2
NzFmNTVjMzFkNDU3ZTY0NDkuLjQ5ZmU5M2ZhMTQ4OTFhM2EyMTUxYjBiNzRlODdlZjkyYzQ4Zjc4
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCiAjaW5jbHVk
ZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIK
KyNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KIAogCkBAIC03MDMsNiArNzA0LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVf
c2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNlIENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgICAgICBlbWl0UmVzb2x2ZUNsb3N1cmUoZHN0
LCBzY29wZSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpLCBkZXB0aCk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKSwgcmVnVDApOworICAg
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7
CkBAIC03MTYsMTIgKzcyMSwxNSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29w
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvdwogICAgIGludCBk
c3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIFJlc29sdmVUeXBlIHJl
c29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmQpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8
IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQor
ICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBH
bG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBN
b2R1bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAorCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwog
ICAgIGludDMyX3Qgc2NvcGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAg
IGludDMyX3QgaWRlbnRpZmllckluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKKyAgICAvLyBNb2R1bGVWYXIgZG9lcyBub3Qga2VlcCB0aGUgc2NvcGUgcmVnaXN0ZXIgdmFs
dWUgYWxpdmUgaW4gREZHLgorICAgIEFTU0VSVChyZXNvbHZlVHlwZSAhPSBNb2R1bGVWYXIpOwog
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlLCBkc3QsIHNjb3BlLCBpZGVu
dGlmaWVySW5kZXgpOwogfQogCkBAIC03NzgsNiArNzg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNl
IER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTg1Miw2ICs4NjEsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hl
Y2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGVtaXRQdXRDbG9zdXJlVmFyKHNjb3BlLCAqb3Bl
cmFuZFNsb3QsIHZhbHVlLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53YXRjaHBvaW50U2V0KTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBEeW5hbWljOgog
ICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTg3Myw3ICs4
ODMsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgcmV0dXJuOwogICAgIHdo
aWxlIChsaW5rQ291bnQtLSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKKworICAg
IGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90aHJvd19z
dHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CisgICAgICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTW9kdWxlVmFyIGRvZXMg
bm90IGtlZXAgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVlIGFsaXZlIGluIERGRy4KKyAgICAgICAg
QVNTRVJUKHJlc29sdmVUeXBlICE9IE1vZHVsZVZhcik7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKKyAgICB9CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggODEyZDFiOTllNjNjMDEyNGVhZDY5ODUwNDFlN2VhODRi
NDlmZmFmZi4uZTYzYmQ1OTIzOTE5NDY4NzhmOGM3YmMwYzY0NWRlODk2YmQ0OTNlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKKyNpbmNsdWRlICJT
bG93UGF0aENhbGwuaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogCkBA
IC03MzUsNiArNzM2LDExIEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOgogICAgICAgICBlbWl0UmVzb2x2ZUNsb3N1cmUoZHN0LCBzY29wZSwgbmVl
ZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpLCBkZXB0aCk7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgcmVnVDEpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY3VycmVudElu
c3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKSwgcmVnVDApOworICAgICAgICBlbWl0U3RvcmUo
ZHN0LCByZWdUMSwgcmVnVDApOworICAgICAgICBicmVhazsKICAgICBjYXNlIER5bmFtaWM6CiAg
ICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzQ4LDcgKzc1
NCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0
aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAK
LSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0g
R2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCisgICAgaWYgKHJlc29sdmVU
eXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNv
bHZlVHlwZSA9PSBDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwpAQCAtODExLDYgKzgxNyw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIExvY2FsQ2xv
c3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBA
IC04ODYsNiArODkzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOwogICAgICAgICBlbWl0UHV0Q2xv
c3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90LCB2YWx1ZSwgY3VycmVudEluc3RydWN0aW9uWzVd
LnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgog
ICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAg
YnJlYWs7CkBAIC05MDUsNyArOTEzLDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9f
c2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAg
ICAgIHJldHVybjsKICAgICB3aGlsZSAobGlua0NvdW50LS0pCiAgICAgICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJ
bnN0cnVjdGlvbik7CisKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAg
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJy
b3IpOworICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIH0gZWxzZQorICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAppbmRleCA3NzdjZmRlMDkzYTJkMTNkZjVmZTVjMzY2Yzk4MjJmNGFlMDg0ZmFlLi4xNTY5MjFl
M2FjZWJiZWZhMTM2ODJjNjhjMTlkNDU2MTVmZDFmZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTQ3LDEwICsxNDcsMTEgQEAgdm9pZCBEYXRhOjpw
ZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXIgPT0g
MSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyIFJlc3VsdFR5cGUgaXMgPT0gMSIpOwogICAgIHN0
YXRpY19hc3NlcnQoQ2xvc3VyZVZhciA9PSAyLCAiTExJbnQgYXNzdW1lcyBDbG9zdXJlVmFyIFJl
c3VsdFR5cGUgaXMgPT0gMiIpOwogICAgIHN0YXRpY19hc3NlcnQoTG9jYWxDbG9zdXJlVmFyID09
IDMsICJMTEludCBhc3N1bWVzIExvY2FsQ2xvc3VyZVZhciBSZXN1bHRUeXBlIGlzID09IDMiKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9
PSA0LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mg
UmVzdWx0VHlwZSBpcyA9PSA0Iik7Ci0gICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA1Iik7Ci0gICAgc3RhdGljX2Fzc2VydChDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA2LCAiTExJbnQgYXNzdW1lcyBDbG9zdXJl
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDYiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KER5bmFtaWMgPT0gNywgIkxMSW50IGFzc3VtZXMgRHluYW1pYyBSZXN1bHRUeXBl
IGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1vZHVsZVZhciA9PSA0LCAiTExJbnQgYXNz
dW1lcyBNb2R1bGVWYXIgUmVzdWx0VHlwZSBpcyA9PSA0Iik7CisgICAgc3RhdGljX2Fzc2VydChH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNSwgIkxMSW50IGFzc3VtZXMg
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNSIp
OworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA2
LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5
cGUgaXMgPT0gNiIpOworICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPT0gNywgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MgUmVzdWx0VHlwZSBpcyA9PSA3Iik7CisgICAgc3RhdGljX2Fzc2VydChEeW5hbWljID09
IDgsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVzdWx0VHlwZSBpcyA9PSA4Iik7CiAgICAgCiAg
ICAgQVNTRVJUKFJlc29sdmVNb2RlQW5kVHlwZTo6bWFzayA9PSAweGZmZmYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyN2NiY2M1
ZDk5MjhiNjM0NDFhNGQwN2RiNTcwNTBlMGY4ZGE0MGI2Li5lMmQ5MjhmMzEwNmM4OTgzZmNlZTIx
NzJlYmJiZWVlZTNkZmI3MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKQEAgLTEzNjEsNiArMTM2MSwxMCBAQCBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaGFuZGxlX2V4Y2VwdGlvbikKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX3Njb3BlKQogewogICAgIExMSU5UX0JFR0lOKCk7CisgICAgUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4ocGNbNF0udS5vcGVy
YW5kKTsKKyAgICAvLyBNb2R1bGVWYXIgZG9lcyBub3Qga2VlcCB0aGUgc2NvcGUgcmVnaXN0ZXIg
dmFsdWUgYWxpdmUgaW4gREZHLgorICAgIEFTU0VSVF9VTlVTRUQocmVzb2x2ZVR5cGUsIHJlc29s
dmVUeXBlICE9IE1vZHVsZVZhcik7CisKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CiAgICAgSlNTY29w
ZSogc2NvcGUgPSBMTElOVF9PUCgyKS5SZWdpc3Rlcjo6c2NvcGUoKTsKICAgICBMTElOVF9SRVRV
Uk4oSlNTY29wZTo6cmVzb2x2ZShleGVjLCBzY29wZSwgaWRlbnQpKTsKQEAgLTEzNzQsNiArMTM3
OCw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV9zY29wZSkKICAg
ICBKU09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3QqPihMTElOVF9PUCgyKS5qc1ZhbHVl
KCkpOwogICAgIFJlc29sdmVNb2RlQW5kVHlwZSBtb2RlQW5kVHlwZShwY1s0XS51Lm9wZXJhbmQp
OwogCisgICAgQVNTRVJUKG1vZGVBbmRUeXBlLnR5cGUoKSAhPSBNb2R1bGVWYXIpOworCiAgICAg
UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUpOwogICAgIGlmICghc2NvcGUtPmdldFByb3BlcnR5U2xv
dChleGVjLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgaWYgKG1vZGVBbmRUeXBlLm1vZGUoKSA9
PSBUaHJvd0lmTm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNzVjOTFmODY4NmU0YTVlMDg1MDEzYmIxMTky
MjVlZGM5N2E0NDVlNC4uYTczMThmMzNhYWEzYTE5YjgxYjY4Y2QxNzVkZWQxYTliNTJjZDVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtMTkyLDEwICsxOTIsMTEgQEAgY29uc3QgR2xvYmFsUHJvcGVydHkgPSAwCiBj
b25zdCBHbG9iYWxWYXIgPSAxCiBjb25zdCBDbG9zdXJlVmFyID0gMgogY29uc3QgTG9jYWxDbG9z
dXJlVmFyID0gMwotY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0g
NAotY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDUKLWNvbnN0IENsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNgotY29uc3QgRHluYW1pYyA9IDcKK2NvbnN0
IE1vZHVsZVZhciA9IDQKK2NvbnN0IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cyA9IDUKK2NvbnN0IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Citjb25zdCBD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDcKK2NvbnN0IER5bmFtaWMgPSA4CiAK
IGNvbnN0IFJlc29sdmVNb2RlTWFzayA9IDB4ZmZmZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDdl
ZjZiODdjMTcwYWQwODNiMWY1MjlkYTg4MzZjMDBjZGE2NGI0NzguLjVkNTEwY2Q4ZGRlYzMwODZj
ZWVjNjNlYzYwOTJiNDY4NGU5ODhhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDQ1LDYgKzIw
NDUsMTMgQEAgbWFjcm8gZ2V0R2xvYmFsT2JqZWN0KGRzdCkKICAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KIGVuZAogCittYWNybyBnZXRJbXBvcnRlZE1vZHVsZVNjb3Bl
KGRzdCkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MCkKKyAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oZHN0LCB0MSkKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCitlbmQKKwogbWFj
cm8gdmFySW5qZWN0aW9uQ2hlY2soc2xvd1BhdGgpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCkBAIC0yMDg3
LDEwICsyMDk0LDE1IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgogICAgIGRpc3BhdGNoKDcp
CiAKIC5yQ2xvc3VyZVZhcjoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJN
b2R1bGVWYXIKICAgICByZXNvbHZlU2NvcGUoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5yTW9kdWxl
VmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzCisgICAgZ2V0SW1wb3J0ZWRNb2R1bGVTY29wZSgxKQorICAgIGRpc3BhdGNo
KDcpCisKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVx
IHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKQEAg
LTIyODEsMTMgKzIyOTMsMTggQEAgX2xsaW50X29wX3B1dF90b19zY29wZToKICAgICBkaXNwYXRj
aCg3KQogCiAucENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgotICAgIGJpbmVxIHQw
LCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBEeW5hbWljCisgICAgYmluZXEg
dDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucE1vZHVsZVZhcgogICAgIHdy
aXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygucER5bmFt
aWMpCiAgICAgbG9hZFZhcmlhYmxlKDEsIHQyLCB0MSwgdDApCiAgICAgcHV0Q2xvc3VyZVZhcigp
CiAgICAgZGlzcGF0Y2goNykKIAorLnBNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZh
ciwgLnBEeW5hbWljCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdGhyb3dfc3RyaWN0X21v
ZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCisgICAgZGlzcGF0Y2goNykKKwogLnBE
eW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF90b19zY29wZSkK
ICAgICBkaXNwYXRjaCg3KQpAQCAtMjM4MSw0ICsyMzk4LDQgQEAgX2xsaW50X29wX2xvYWRfYXJy
b3dmdW5jdGlvbl90aGlzOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICBz
dG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCiAgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCisgICAgZGlzcGF0Y2goMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggZDIxNTJhMmYyNzdhZGU1
ODc5NzZhMWMzZjEyMDIzNzI5YjM4YTU5YS4uNWMwMGU2NDZmNjAxMGU2YmE2ODYxZTM0Y2U5Y2Y3
NzRhNWE4YzQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE5MTgsNiArMTkxOCwxMiBAQCBtYWNybyBnZXRH
bG9iYWxPYmplY3QoZHN0KQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCiBlbmQKIAorbWFj
cm8gZ2V0SW1wb3J0ZWRNb2R1bGVTY29wZShkc3QpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24o
NiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKGRzdCwgdDEpCisgICAgc3RvcmVxIHQw
LCBbY2ZyLCB0MSwgOF0KK2VuZAorCiBtYWNybyB2YXJJbmplY3Rpb25DaGVjayhzbG93UGF0aCkK
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QwXSwgdDAKQEAgLTE5NTcsMTAgKzE5NjMsMTUgQEAgX2xsaW50X29wX3Jlc29s
dmVfc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgotICAgIGJpbmVxIHQw
LCBDbG9zdXJlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAg
IGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29sdmVTY29wZSgpCiAg
ICAgZGlzcGF0Y2goNykKIAorLnJNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwg
LnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBnZXRJbXBvcnRlZE1v
ZHVsZVNjb3BlKDEpCisgICAgZGlzcGF0Y2goNykKKwogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5q
ZWN0aW9uQ2hlY2soLnJEeW5hbWljKQpAQCAtMjE0NCwxMyArMjE1NSwxOCBAQCBfbGxpbnRfb3Bf
cHV0X3RvX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5wQ2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLCAucER5bmFtaWMKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5wTW9kdWxlVmFyCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQogICAg
IHZhckluamVjdGlvbkNoZWNrKC5wRHluYW1pYykKICAgICBsb2FkVmFyaWFibGUoMSwgdDApCiAg
ICAgcHV0Q2xvc3VyZVZhcigpCiAgICAgZGlzcGF0Y2goNykKIAorLnBNb2R1bGVWYXI6CisgICAg
YmluZXEgdDAsIE1vZHVsZVZhciwgLnBEeW5hbWljCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCisgICAg
ZGlzcGF0Y2goNykKKwogLnBEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX3B1dF90b19zY29wZSkKICAgICBkaXNwYXRjaCg3KQpAQCAtMjIzMyw0ICsyMjQ5LDQgQEAg
X2xsaW50X29wX2xvYWRfYXJyb3dmdW5jdGlvbl90aGlzOgogICAgIGxvYWRwIEpTQXJyb3dGdW5j
dGlvbjo6bV9ib3VuZFRoaXNbdDBdLCB0MAogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MSkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4IGY2MjM4ZmI5NjgwMmJlNTM3
ZTkxYWRjMjZiODJkODkwYjk1NDAzMmQuLmMxYTNjYzJiMWYwNjgxZTA1OTkyZDVjZDRlNjI2YmU4
ODBkNGI5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxl
QW5hbHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5h
bHl6ZXIuY3BwCkBAIC04Miw3ICs4Miw5IEBAIHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZh
cmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxl
UmVjb3JkKCktPmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8SlNN
b2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gbW9kdWxlUmVj
b3JkKCktPnRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5nZXQoKSk7CisgICAgQVNTRVJUKG9w
dGlvbmFsSW1wb3J0RW50cnkpOworICAgIGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRy
eSYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsKICAgICBpZiAodmFyaWFibGUu
aXNJbXBvcnRlZE5hbWVzcGFjZSgpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBi
aW5kaW5nLgogICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5k
ZXggNzU4MDgzMzJlNGRkNDA4NDQyYTAzNDM3ZDU1YzEwNWFjYzI5NWFiMS4uMzViNjI5NzkyMDdl
ZmFjODc0NTZkNzcyNjRiNGIwZmFmZmU4NjJlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0yNzAsNiArMjcwLDEyIEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpCiAgICAgVEhST1coY3JlYXRl
VERaRXJyb3IoZXhlYykpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfc3Ry
aWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCit7CisgICAgQkVHSU4oKTsK
KyAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX25vdCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAwNjdkZjBjMzhlOTEyMGJmNzA3Y2ZkZTQxYzNl
ZmJmMmE2ODcyZWUzLi4zMDA5ODU1ZmY2YmEyZDE1MjgzZGI4Zjg1ZjNjZTQ1N2RkYjI4NjY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApA
QCAtMTg5LDYgKzE4OSw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZW50ZXIp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfY2FsbGVlKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfdG9fdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Rocm93X3Rkel9lcnJvcik7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbm90KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZXEpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IDAwMjg1YTY3NTc3MzQ3
NDc5YmQ5YTliN2I5Mzk1NWMyNjQzNDY1N2MuLjFiOTNlOGZkMTI1N2QwZDc4YWE3OTM2ODgxMTI0
Y2FmNjk5NDRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAg
LTIxOSw2ICsyMTksMTAgQEAgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKIH0KIAorSlNP
YmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit7CisgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOworfQogCiBKU09iamVjdCogY3JlYXRlRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCBlYzMwYTNkYzQ2NmUxZWI0NDliM2U1ODVhYTgw
NDkyZWYxOTg0NjQ3Li5mNDZmZTM3NmZiODZjNjUyZTRhZWM4NDkwMTNjZWEyZGYzYzgwMWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTc0LDYgKzc0LDcgQEAgSlNP
YmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iamVjdCogZXJyb3IsIGludCBsaW5l
LCBjb25zdCBTb3VyY2VDb2RlJikKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4g
dGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCiBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKik7CiBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKTsKIGlubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKEV4ZWNT
dGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBzdGF0ZS0+
dm0oKS50aHJvd0V4Y2VwdGlvbihzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JN
ZXNzYWdlKSk7IH0KIAogLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIHdyYXAgcmVzdWx0IGFzIGFu
IEVuY29kZWRKU1ZhbHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAppbmRleCBiMWQwMDU1ZWNmMDI0MzQyOWZhZjE5ZWRhZmY4ZmUwNjUzOWI2ZDc1Li40
MTcwNDc0YjM3MGFmMjIyNWViNTgyYTFkYzg1ZDQ1N2RhY2IyZWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtNTk2LDYgKzU5NiwxMSBAQCB2
b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQogICAgIEJhc2U6OmNsZWFy
Q29kZSgpOwogfQogCitTeW1ib2xUYWJsZSogTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6Om1vZHVs
ZUVudmlyb25tZW50U3ltYm9sVGFibGUoKQoreworICAgIHJldHVybiBqc0Nhc3Q8U3ltYm9sVGFi
bGUqPihtX21vZHVsZVByb2dyYW1Db2RlQmxvY2stPmdldENvbnN0YW50KG1fdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLT5tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRS
ZWdpc3Rlck9mZnNldCgpKSk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1
dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
IHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGNkY2ViMzA0MjY1Zjk3NmQwMDc3YWVmZDY1N2I1
YjdiYWJiZjJhMTYuLmNjZDM5MTJkYTA0MzIzYjM3OTk0NzIxNWY4YWU4ODUyMjcyMDAwNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTU3LDYgKzU3
LDkgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2s7CiBjbGFzcyBKU1Njb3BlOwogY2xhc3MgV2ViQXNzZW1ibHlDb2RlQmxvY2s7CitjbGFzcyBN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CitjbGFzcyBKU1Nj
b3BlOwogCiBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXpp
bmdDb21waWxhdGlvbiB9OwogCkBAIC01ODksNiArNTkyLDkgQEAgY2xhc3MgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRXhlY3V0
YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhu
ZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxz
ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJu
IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKKyAgICAvLyBSZXR1
cm4gdGhlIHN5bWJvbCB0YWJsZSBpbiB0aGUgbGlua2VkIGNvZGUgYmxvY2suCisgICAgU3ltYm9s
VGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKTsKKwogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDRlMDk0ZmQ2NzliOWQ1YmNmNGI4
ODZmMzYwMmM2YzFiMGZiMjA5MWEuLjVhOGE3MzUxNzE2NWZjZDJhNzVmOGNjZGQ1MzQ0YzQzNjcx
YjExODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTg0LDYgKzg0LDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRl
ICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU01vZHVs
ZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJK
U05hdGl2ZVN0ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgpAQCAtMzEyLDYg
KzMxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fdHlwZWRB
cnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5zdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0Rh
dGFWaWV3OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fdHlwZWRBcnJheXNbdG9JbmRleChU
eXBlRGF0YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCkpKTsKICAgICAKICAgICBtX2xleGljYWxFbnZp
cm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTGV4aWNhbEVudmlyb25tZW50OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKKyAgICBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzKSk7CiAgICAgbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgp
KSk7CiAgICAgbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnNldChtX3ZtLCB0aGlzLCBEZWJ1Z2dl
clNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUobV92bSwgdGhpcykpOwogICAgIG1fd2l0aFNjb3BlU3Ry
dWN0dXJlLnNldCh2bSwgdGhpcywgSlNXaXRoU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywganNOdWxsKCkpKTsKQEAgLTc5MSw2ICs3OTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbGV4aWNhbEVudmlyb25tZW50U3Ry
dWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9u
bWVudFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGlyZWN0
QXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
Y29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAxY2EzMWI3YjEyNmZiMmVmZDNiNzE5
MGVhZjc2NGY1Y2RhMDk5MWZlLi5lMzM0MDBlYWUyZDliZmRhNzdkYjFiYTY0NGIxYmU5NmY2Y2U4
NjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTIzMiw2ICsyMzIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dp
dGhTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2
YWxBY3RpdmF0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4
aWNhbEVudmlyb25tZW50U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmU7CkBAIC00NDksNiArNDUwLDcgQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAg
U3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29w
ZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1
cmUqIG1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVF
bnZpcm9ubWVudFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZGlyZWN0QXJndW1l
bnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBvdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX291dE9m
QmFuZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKaW5kZXggOTUxNjMxOGQ3MDE2
OWUzZGQ4YzJiZWY3ODMzMTI1Njc1YzVlMjE4Yi4uNDQ4ZWE0MzFiN2I3Yzk4MjYyZDQxMGJmMDFm
ODQ5MzcxZDhhYjU3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgUmVnaXN0ZXI7CiAgICAgCiBjbGFzcyBKU0xleGljYWxFbnZpcm9ubWVudCA6IHB1
YmxpYyBKU0Vudmlyb25tZW50UmVjb3JkIHsKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgSlNM
ZXhpY2FsRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUq
KTsKICAgICAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzcwMTczMTJjNjZkNjI1Mzc2
OTcyNDAxMDllMDdiZDAwMjc2NDY2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCkBAIC0wLDAgKzEsMTMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisKKyNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gSlNNb2R1bGVFbnZpcm9ubWVudDo6c19pbmZvID0geyAiSlNNb2R1bGVF
bnZpcm9ubWVudCIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1
bGVFbnZpcm9ubWVudCkgfTsKKworSlNNb2R1bGVFbnZpcm9ubWVudCogSlNNb2R1bGVFbnZpcm9u
bWVudDo6Y3JlYXRlKAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUq
IGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxW
YWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICAvLyBKU0xleGljYWxF
bnZpcm9ubWVudCAocHJlY2lzZWx5LCBKU0Vudmlyb25tZW50UmVjb3JkKSBoYXMgdGhlIHN0b3Jh
Z2UgdG8gc3RvcmUgdGhlIHZhcmlhYmxlIHNsb3RzIGFmdGVyIHRoZSBpdHMgY2xhc3Mgc3RvcmFn
ZS4KKyAgICAvLyBCZWNhdXNlIHRoZSBvZmZzZXQgb2YgdGhlIHZhcmlhYmxlIHNsb3RzIGFyZSBm
aXhlZCBpbiB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCwgaW5oZXJpdHRpbmcgdGhlc2UgY2xhc3Mg
YW5kIGFkZGluZyBuZXcgbWVtYmVyIGZpZWxkIGlzIG5vdCBhbGxvd2VkLAorICAgIC8vIHRoZSBu
ZXcgbWVtYmVyIHdpbGwgb3ZlcmxhcCB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8gVG8ga2Vl
cCB0aGUgSlNNb2R1bGVFbnZpcm9ubWVudCBjb21wYXRpYmxlIHRvIHRoZSBKU0xleGljYWxFbnZp
cm9ubWVudCBidXQgYWRkIHRoZSBuZXcgbWVtYmVyIHRvIHN0b3JlIHRoZSBKU01vZHVsZVJlY29y
ZCwgd2UgYWRkaXRpb25hbGx5IGFsbG9jYXRlCisgICAgLy8gdGhlIHN0b3JhZ2UgYWZ0ZXIgdGhl
IHZhcmlhYmxlIHNsb3RzLgorICAgIC8vCisgICAgLy8gSlNMZXhpY2FsRW52aXJvbm1lbnQ6Cisg
ICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXQorICAg
IC8vCisgICAgLy8gSlNNb2R1bGVFbnZpcm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxF
bnZpcm9ubWVudCBdWyB2YXJpYWJsZSBzbG90cyBdWyBhZGRpdGlvbmFsIHNsb3RzIGZvciBKU01v
ZHVsZUVudmlyb25tZW50IF0KKyAgICBKU01vZHVsZUVudmlyb25tZW50KiByZXN1bHQgPQorICAg
ICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwKKyAgICAgICAgICAgIGFsbG9jYXRlQ2Vs
bDxKU01vZHVsZUVudmlyb25tZW50Pih2bS5oZWFwLCBKU01vZHVsZUVudmlyb25tZW50OjphbGxv
Y2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpKQorICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KHZt
LCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpOworICAgIHJlc3VsdC0+Zmlu
aXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSk7CisgICAgdGhp
cy0+bW9kdWxlUmVjb3JkU2xvdCgpLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKK30KKwor
dm9pZCBKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0
aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+c3ltYm9sVGFibGUoKS0+c2NvcGVT
aXplKCkpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmRTbG90
KCkpOworfQorCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgSlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgp
LT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlO
YW1lLnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6
UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgLy8gV2hlbiByZXNvbHZlSW1w
b3J0IHJlc29sdmVzIHRoZSByZXNvbHV0aW9uLCB0aGUgaW1wb3J0ZWQgbW9kdWxlIGVudmlyb25t
ZW50IG11c3QgaGF2ZSB0aGUgYmluZGluZy4KKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
aW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkLT5tb2R1
bGVFbnZpcm9ubWVudCgpOworICAgICAgICBQcm9wZXJ0eVNsb3QgcmVkaXJlY3RTbG90KGltcG9y
dGVkTW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICBib29sIHJlc3VsdCA9IGltcG9ydGVkTW9k
dWxlRW52aXJvbm1lbnQtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNs
b3QoaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUs
IHJlZGlyZWN0U2xvdCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwor
ICAgICAgICBBU1NFUlQocmVkaXJlY3RTbG90LmlzVmFsdWUoKSk7CisgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSByZWRpcmVjdFNsb3QuZ2V0VmFsdWUoZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUp
OworICAgICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKyAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCByZWRpcmVjdFNsb3QuYXR0cmlidXRlcygpLCB2YWx1ZSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK3ZvaWQg
SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
QXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIGlm
IChwcm9wZXJ0eU5hbWVzQXJyYXkuaW5jbHVkZVN0cmluZ1Byb3BlcnRpZXMoKSkgeworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+aW1w
b3J0RW50cmllcygpKSB7CisgICAgICAgICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6SW1wb3J0
RW50cnkmIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGlmICghaW1wb3J0
RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lc0FycmF5LmFkZChpbXBvcnRFbnRyeS5sb2NhbE5hbWUpOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lc0FycmF5LCBtb2RlKTsKK30KKwordm9pZCBKU01vZHVsZUVudmly
b25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAg
ICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPihjZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJs
ZS4KKyAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gdGhpc09iamVj
dC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVp
ZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50eXBlID09
IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmV0dXJuIEJhc2U6
OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKK30KKwor
Ym9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBKU01vZHVs
ZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihj
ZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KKyAgICBK
U01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxl
UmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBw
cm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxl
UmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2Vm
YTYyNjNiMmIyNzQ5Zjc4OGMwYTdmMDczZjc2NzdhMDA5YjAzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCkBAIC0w
LDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisjZGVmaW5lIEpTTW9kdWxlRW52aXJv
bm1lbnRfaAorCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJK
U01vZHVsZVJlY29yZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgUmVnaXN0ZXI7CisK
K2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNMZXhpY2FsRW52aXJvbm1lbnQg
eworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTGV4aWNhbEVudmlyb25tZW50IEJhc2U7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9w
ZXJ0eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSosIEpTVmFsdWUgaW5pdGlhbFZhbHVl
LCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGljIEpTTW9kdWxlRW52aXJvbm1lbnQqIGNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIGN1cnJl
bnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwg
SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9s
VGFibGUsIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3JkKTsKKyAgICB9CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpzTnVsbCgpLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVf
dCBvZmZzZXRPZk1vZHVsZVJlY29yZChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgewor
ICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gQmFzZTo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUp
OworICAgICAgICBBU1NFUlQoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJh
cnJpZXI8SlNNb2R1bGVSZWNvcmQ+KT4ob2Zmc2V0KSA9PSBvZmZzZXQpOworICAgICAgICByZXR1
cm4gb2Zmc2V0OworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoU3lt
Ym9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTW9k
dWxlUmVjb3JkKHN5bWJvbFRhYmxlKSArIHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNv
cmQ+KTsKKyAgICB9CisKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtb2R1bGVSZWNvcmRTbG90KCkuZ2V0KCk7CisgICAgfQorCisgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsK
KworcHJpdmF0ZToKKyAgICBKU01vZHVsZUVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNT
Y29wZSosIFN5bWJvbFRhYmxlKik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNW
YWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBXcml0ZUJhcnJpZXJC
YXNlPEpTTW9kdWxlUmVjb3JkPiYgbW9kdWxlUmVjb3JkU2xvdCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gKmJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPio+KGJp
dHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJs
ZSgpKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBT
bG90VmlzaXRvciYpOworfTsKKworaW5saW5lIEpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxl
RW52aXJvbm1lbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVu
dFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gSlNNb2R1bGVFbnZpcm9ubWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggN2I2MDYzNzRhNjA2MGI3
NzAyMGM0ZWY0NTEyZTkyNDVlMDNmM2ZjNS4uZTM5MjVlZjAwZDRhYzU1MGE0ZDA5ODQ1YjkzNTBk
NjI4NTlkZjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisj
aW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApAQCAtNjAsMTAgKzYxLDQ5
IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU01vZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlRW52aXJvbm1lbnQpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9k
ZXBlbmRlbmNpZXNNYXApOwogfQogCit2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0
ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3JlcXVlc3Rl
ZE1vZHVsZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKwordm9pZCBKU01vZHVsZVJlY29y
ZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7Cisg
ICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCit2b2lk
IEpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkp
Cit7CisgICAgYm9vbCBpc05ld0VudHJ5ID0gbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2Nh
bE5hbWUuaW1wbCgpLCBlbnRyeSkuaXNOZXdFbnRyeTsKKyAgICBBU1NFUlRfVU5VU0VEKGlzTmV3
RW50cnksIGlzTmV3RW50cnkpOyAvLyBUaGlzIGlzIGd1YXJhbnRlZWQgYnkgdGhlIHBhcnNlci4K
K30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50
cnkmIGVudHJ5KQoreworICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1fZXhwb3J0RW50cmllcy5hZGQo
ZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KS5pc05ld0VudHJ5OworICAgIEFTU0VSVF9V
TlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7IC8vIFRoaXMgaXMgZ3VhcmFudGVlZCBieSB0
aGUgcGFyc2VyLgorfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRJbXBvcnRFbnRyeShV
bmlxdWVkU3RyaW5nSW1wbCogbG9jYWxOYW1lKSAtPiBPcHRpb25hbDxJbXBvcnRFbnRyeT4KK3sK
KyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1l
KTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9pbXBvcnRFbnRyaWVzLmVuZCgpKQorICAgICAgICBy
ZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gT3B0aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9y
LT52YWx1ZSk7Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVu
aXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBPcHRpb25hbDxFeHBvcnRFbnRyeT4KK3sK
KyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9leHBvcnRFbnRyaWVzLmZpbmQoZXhwb3J0TmFt
ZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fZXhwb3J0RW50cmllcy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIE9wdGlvbmFsPEV4cG9ydEVudHJ5PihpdGVyYXRv
ci0+dmFsdWUpOworfQorCiBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRl
TG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9j
YWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBv
cnRFbnRyeQogewogICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkxvY2FsLCBleHBvcnRO
YW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgbG9jYWxOYW1lLCB2YXJpYWJsZSB9OwpA
QCAtNzksNiArMTE5LDIxIEBAIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVh
dGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjCiAgICAgcmV0dXJuIEV4
cG9ydEVudHJ5IHsgVHlwZTo6SW5kaXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9y
dE5hbWUsIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKIH0KIAor
YXV0byBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6bm90Rm91bmQoKSAtPiBSZXNvbHV0aW9u
Cit7CisgICAgcmV0dXJuIFJlc29sdXRpb24geyBUeXBlOjpOb3RGb3VuZCwgbnVsbHB0ciwgSWRl
bnRpZmllcigpIH07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OmVycm9y
KCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6RXJyb3Is
IG51bGxwdHIsIElkZW50aWZpZXIoKSB9OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNv
bHV0aW9uOjphbWJpZ3VvdXMoKSAtPiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIFJlc29sdXRp
b24geyBUeXBlOjpBbWJpZ3VvdXMsIG51bGxwdHIsIElkZW50aWZpZXIoKSB9OworfQorCiBzdGF0
aWMgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKQpA
QCAtOTMsNiArMTQ4LDI3OSBAQCBKU01vZHVsZVJlY29yZCogSlNNb2R1bGVSZWNvcmQ6Omhvc3RS
ZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdAogICAgIHJldHVybiBq
c0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihwYWlyLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGV4ZWMsICJ2YWx1ZSIpKSk7CiB9CiAKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVJ
bXBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpIC0+IFJl
c29sdXRpb24KK3sKKyAgICBPcHRpb25hbDxJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRy
eSA9IHRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5pbXBsKCkpOworICAgIGlmICghb3B0aW9u
YWxJbXBvcnRFbnRyeSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CisK
KyAgICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRy
eTsKKyAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisgICAgICAg
IHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGlt
cG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRy
eS5tb2R1bGVSZXF1ZXN0KTsKKyAgICByZXR1cm4gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBv
cnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7Cit9CisKK3N0cnVjdCBSZXNvbHZlUXVl
cnkgeworICAgIFJlc29sdmVRdWVyeShKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBVbmlx
dWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAgICAgOiBtb2R1bGVSZWNvcmQobW9kdWxl
UmVjb3JkKQorICAgICAgICAsIGV4cG9ydE5hbWUoZXhwb3J0TmFtZSkKKyAgICB7CisgICAgfQor
CisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgIDogUmVzb2x2ZVF1ZXJ5KG1vZHVsZVJlY29y
ZCwgZXhwb3J0TmFtZS5pbXBsKCkpCisgICAgeworICAgIH0KKworICAgIGVudW0gRW1wdHlWYWx1
ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAg
ICB7CisgICAgfQorCisgICAgZW51bSBEZWxldGVkVmFsdWVUYWcgeyBEZWxldGVkVmFsdWUgfTsK
KyAgICBSZXNvbHZlUXVlcnkoRGVsZXRlZFZhbHVlVGFnKQorICAgICAgICA6IG1vZHVsZVJlY29y
ZChudWxscHRyKQorICAgICAgICAsIGV4cG9ydE5hbWUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhZXhwb3J0TmFtZTsKKyAgICB9CisKKyAgICBib29sIGlzRGVsZXRl
ZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBleHBvcnROYW1lLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7CisgICAgfQorCisgICAgLy8gVGhlIG1vZHVsZSByZWNvcmQgaXMg
bm90IG1hcmtlZCBmcm9tIHRoZSBHQy4gQnV0IHRoZXNlIHJlY29yZHMgYXJlIHJlYWNoYWJsZSBm
cm9tIHRoZSBKU0dsb2JhbE9iamVjdC4KKyAgICAvLyBTbyB3ZSBkb24ndCBjYXJlIHRoZSByZWFj
aGFiaWxpdHkgdG8gdGhpcyByZWNvcmQuCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29y
ZDsKKyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGV4cG9ydE5hbWU7Cit9OworCitzdHJ1
Y3QgUmVzb2x2ZVF1ZXJ5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVz
b2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5Jiwg
Y29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFy
ZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKworaW5saW5lIHVuc2lnbmVkIFJlc29sdmVR
dWVyeUhhc2g6Omhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSkKK3sKKyAgICByZXR1cm4g
V1RGOjpQdHJIYXNoPEpTTW9kdWxlUmVjb3JkKj46Omhhc2gocXVlcnkubW9kdWxlUmVjb3JkKSAr
IElkZW50aWZpZXJSZXBIYXNoOjpoYXNoKHF1ZXJ5LmV4cG9ydE5hbWUpOworfQorCitpbmxpbmUg
Ym9vbCBSZXNvbHZlUXVlcnlIYXNoOjplcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmIGxocywgY29u
c3QgUmVzb2x2ZVF1ZXJ5JiByaHMpCit7CisgICAgcmV0dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0g
cmhzLm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFtZSA9PSByaHMuZXhwb3J0TmFtZTsKK30K
Kworc3RhdGljIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnRMb29wKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByb290KQoreworICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZXNvbHZlZXhw
b3J0CisgICAgLy8gVGhpcyBmdW5jdGlvbiBhdm9pZHMgQysrIHJlY3Vyc2lvbiBvZiB0aGUgbmFp
dmUgUmVzb2x2ZUV4cG9ydCBpbXBsZW1lbnRhdGlvbi4KKyAgICAvLyBGbGF0dGVuIHRoZSByZWN1
cnNpb24gdG8gdGhlIGxvb3Agd2l0aCB0aGUgdGFzayBxdWV1ZSBhbmQgZnJhbWVzLgorICAgIC8v
CisgICAgLy8gMS4gcGVuZGluZ1Rhc2tzCisgICAgLy8gICAgIFdlIGVucXVldWUgdGhlIHJlY3Vy
c2l2ZSByZXNvbHZlRXhwb3J0IGNhbGwgdG8gdGhpcyBxdWV1ZSB0byBhdm9pZCByZWN1cnNpdmUg
Y2FsbHMgaW4gQysrLgorICAgIC8vICAgICBUaGUgdGFzayBoYXMgMyB0eXBlcy4gKDEpIFF1ZXJ5
LCAoMikgSW5kaXJlY3RGYWxsYmFjayBhbmQgKDMpIEdhdGhlclN0YXJzLgorICAgIC8vICAgICAo
MSkgUXVlcnkKKyAgICAvLyAgICAgICAgIFF1ZXJ5aW5nIHRoZSByZXNvbHV0aW9uIHRvIHRoZSBj
dXJyZW50IG1vZHVsZS4KKyAgICAvLyAgICAgKDIpIEluZGlyZWN0RmFsbGJhY2sKKyAgICAvLyAg
ICAgICAgIEV4YW1pbmUgdGhlIHJlc3VsdCBvZiB0aGUgaW5kaXJlY3QgZXhwb3J0IHJlc29sdXRp
b24uIE9ubHkgd2hlbiB0aGUgaW5kaXJlY3QgZXhwb3J0IHJlc29sdXRpb24gZmFpbHMsCisgICAg
Ly8gICAgICAgICB3ZSBsb29rIGludG8gdGhlIHN0YXIgZXhwb3J0cy4gKHN0ZXAgNS1hLXZpKS4K
KyAgICAvLyAgICAgKDMpIEdhdGhlclN0YXJzCisgICAgLy8gICAgICAgICBFeGFtaW5lIHRoZSBy
ZXN1bHQgb2YgdGhlIHN0YXIgZXhwb3J0IHJlc29sdXRpb25zLgorICAgIC8vCisgICAgLy8gMi4g
ZnJhbWVzCisgICAgLy8gICAgIFdoZW4gdGhlIHNwZWMgY2FsbHMgdGhlIHJlc29sdmVFeHBvcnQg
cmVjdXJzaXZlbHksIGluc3RlYWQgd2UgYXBwZW5kIHRoZSBmcmFtZQorICAgIC8vICAgICAodGhh
dCBob2xkcyB0aGUgcmVzdWx0IHJlc29sdXRpb24pIHRvIHRoZSBmcmFtZXMgYW5kIGVucXVldWUg
dGhlIHRhc2sgdG8gdGhlIHBlbmRpbmdUYXNrcy4KKyAgICAvLyAgICAgVGhlIGVudHJ5IGluIHRo
ZSBmcmFtZXMgbWVhbnMgdGhlICpsb2NhbCogcmVzb2x1dGlvbiByZXN1bHQgb2YgdGhlIHNwZWNp
ZmljIHJlY3Vyc2l2ZSByZXNvbHZlRXhwb3J0LgorICAgIC8vCisgICAgLy8gV2Ugc2hvdWxkIG1h
aW50YWluIHRoZSBsb2NhbCByZXNvbHV0aW9uIHJlc3VsdCBpbnN0ZWFkIG9mIGhvbGRpbmcgdGhl
IGdsb2JhbCByZXNvbHV0aW9uIHJlc3VsdCBvbmx5LgorICAgIC8vIEZvciBleGFtcGxlLAorICAg
IC8vCisgICAgLy8gICAgIHN0YXIKKyAgICAvLyAoMSkgLS0tPiAoMikgIlJlc29sdmUiCisgICAg
Ly8gICAgICB8CisgICAgLy8gICAgICB8CisgICAgLy8gICAgICArLT4gKDMpICJOb3RGb3VuZCIK
KyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgIHwgICAgICAgc3RhcgorICAgIC8vICAgICAgKy0+
ICg0KSAtLS0+ICg1KSAiUmVzb2x2ZSIgW2hlcmVdCisgICAgLy8gICAgICAgICAgICAgICB8Cisg
ICAgLy8gICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICArLT4gKDYpICJFcnJv
ciIKKyAgICAvLworICAgIC8vIENvbnNpZGVyIHRoZSBhYm92ZSBncmFwaC4gVGhlIG51bWJlcnMg
cmVwcmVzZW50cyB0aGUgbW9kdWxlcy4gTm93IHdlIGFyZSBbaGVyZV0uCisgICAgLy8gSWYgd2Ug
b25seSBob2xkIHRoZSBnbG9iYWwgcmVzb2x1dGlvbiByZXN1bHQgZHVyaW5nIHRoZSByZXNvbHZl
RXhwb3J0IG9wZXJhdGlvbiwgW2hlcmVdLAorICAgIC8vIHdlIGRlY2lkZSB0aGUgZW50aXJlIHJl
c3VsdCBvZiByZXNvbHZlRXhwb3J0IGlzICJBbWJpZ3VvdXMiLCBiZWNhdXNlIHRoZXJlIGFyZSBt
dWx0aXBsZQorICAgIC8vICJSZXNsb3ZlIiAoaW4gbW9kdWxlICgyKSBhbmQgKDUpKS4gSG93ZXZl
ciwgdGhpcyBzaG91bGQgYmVjb21lICJFcnJvciIgYmVjYXVzZSAoNikgd2lsbAorICAgIC8vIHBy
b3BhZ2F0ZSAiRXJyb3IiIHN0YXRlIHRvIHRoZSAoNCksICg0KSB3aWxsIGJlY29tZSAiRXJyb3Ii
IGFuZCB0aGVuLCAoMSkgd2lsbCBiZWNvbWUKKyAgICAvLyAiRXJyb3IiLiBXZSBzaG91bGQgYWdn
cmVnYXRlIHRoZSByZXN1bHRzIGF0IHRoZSBzdGFyIGV4cG9ydHMgcG9pbnQgKCg0KSBhbmQgKDEp
KS4KKyAgICAvLworICAgIC8vIFVzdWFsbHksIGJvdGggIkVycm9yIiBhbmQgIkFtYmlndW91cyIg
c3RhdGVzIHdpbGwgdGhyb3cgdGhlIHN5bnRheCBlcnJvci4gU28gZXhjZXB0IGZvciB0aGUgY29u
dGVudCBvZiB0aGUKKyAgICAvLyBlcnJvciBtZXNzYWdlLCB0aGVyZSBhcmUgbm8gZGlmZmVyZW5j
ZS4gKEFuZCBpZiB3ZSBmaXggdGhlICg2KSB0aGF0IHJhaXNlcyAiRXJyb3IiLCBuZXh0LCBpdCB3
aWxsIHByb2R1Y2UKKyAgICAvLyB0aGUgIkFtYmlndW91cyIgZXJyb3IgZHVlIHRvICg1KS4gQW55
d2F5LCB1c2VyIG5lZWQgdG8gZml4IHRoZSBib3RoLiBTbyB3aGljaCBlcnJvciBzaG91bGQgYmUg
cmFpc2VkIGF0IGZpcnN0CisgICAgLy8gZG9lc24ndCBtYXR0ZXIgc28gbXVjaC4KKyAgICAvLwor
ICAgIC8vIEhvd2V2ZXIsIHRoaXMgbWF5IGJlY29tZSB0aGUgcHJvYmxlbSB1bmRlciB0aGUgbW9k
dWxlIG5hbWVzcGFjZSBjcmVhdGlvbi4KKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZ2V0bW9kdWxlbmFtZXNwYWNlCisgICAgLy8gc2Vj
dGlvbiAxNS4yLjEuMTgsIHN0ZXAgMy1kLWlpCisgICAgLy8gSGVyZSwgd2UgZGlzdGluZ3Vpc2gg
IkFtYmlndW91cyIgYW5kICJFcnJvciIuIFdoZW4gIkVycm9yIiBzdGF0ZSBpcyBwcm9kdWNlZCwg
d2UgbmVlZCB0byB0aHJvdyB0aGUgcHJvcGFnYXRlZCBlcnJvci4KKyAgICAvLyBCdXQgaWYgIkFt
YmlndW91cyIgc3RhdGUgY29tZXMsIHdlIGp1c3QgaWdub3JlIHRoZSByZXN1bHQuCisgICAgLy8g
VG8gZm9sbG93IHRoZSByZXF1aXJlbWVudCBzdHJpY3RseSwgaW4gdGhpcyBpbXBsZW1lbnRhdGlv
biwgd2Uga2VlcCB0aGUgbG9jYWwgcmVzb2x1dGlvbiByZXN1bHQgdG8gcHJvZHVjZSB0aGUKKyAg
ICAvLyBjb3JyZWN0IHJlc3VsdCB1bmRlciB0aGUgYWJvdmUgY29tcGxleCBjYXNlcy4KKworICAg
IHVzaW5nIFJlc29sdXRpb24gPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjsKKyAgICB0eXBl
ZGVmIFdURjo6SGFzaFNldDxSZXNvbHZlUXVlcnksIFJlc29sdmVRdWVyeUhhc2gsIFdURjo6Q3Vz
dG9tSGFzaFRyYWl0czxSZXNvbHZlUXVlcnk+PiBSZXNvbHZlU2V0OworICAgIGVudW0gY2xhc3Mg
VHlwZSB7IFF1ZXJ5LCBJbmRpcmVjdEZhbGxiYWNrLCBHYXRoZXJTdGFycyB9OworICAgIHN0cnVj
dCBUYXNrIHsKKyAgICAgICAgUmVzb2x2ZVF1ZXJ5IHF1ZXJ5OworICAgICAgICBUeXBlIHR5cGU7
CisgICAgfTsKKworICAgIFZlY3RvcjxUYXNrLCA4PiBwZW5kaW5nVGFza3M7CisgICAgUmVzb2x2
ZVNldCByZXNvbHZlU2V0OworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBzdGFyU2V0Owor
ICAgIFZlY3RvcjxSZXNvbHV0aW9uLCA4PiBmcmFtZXM7CisKKyAgICBmcmFtZXMuYXBwZW5kKFJl
c29sdXRpb246Om5vdEZvdW5kKCkpOworCisgICAgLy8gQ2FsbCB3aGVuIHRoZSBxdWVyeSBpcyBu
b3QgcmVzb2x2ZWQgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgIC8vIEl0IHdpbGwgZW5xdWV1
ZSB0aGUgc3RhciByZXNvbHV0aW9uIHJlcXVlc3RzLiBSZXR1cm4gImZhbHNlIiBpZiB0aGUgZXJy
b3Igb2NjdXJzLgorICAgIGF1dG8gcmVzb2x2ZU5vbkxvY2FsID0gWyZdKGNvbnN0IFJlc29sdmVR
dWVyeSYgcXVlcnkpIC0+IGJvb2wgeworICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJu
YXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtcmVzb2x2ZWV4cG9ydAorICAgICAgICAvLyBz
ZWN0aW9uIDE1LjIuMS4xNi4zLCBzdGVwIDYKKyAgICAgICAgLy8gSWYgdGhlICJkZWZhdWx0IiBu
YW1lIGlzIG5vdCByZXNvbHZlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUsIHdlIG5lZWQgdG8gdGhy
b3cgYW4gZXJyb3IgYW5kIHN0b3AgcmVzb2x1dGlvbiBpbW1lZGlhdGVseSwKKyAgICAgICAgLy8g
UmF0aW9uYWxlIHRvIHRoaXMgZXJyb3I6IEEgZGVmYXVsdCBleHBvcnQgY2Fubm90IGJlIHByb3Zp
ZGVkIGJ5IGFuIGV4cG9ydCAqLgorICAgICAgICBpZiAocXVlcnkuZXhwb3J0TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQuaW1wbCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIC8vIHN0ZXAgNywgSWYgZXhwb3J0U3RhclNldCBjb250YWlu
cyBtb2R1bGUsIHRoZW4gcmV0dXJuIG51bGwuCisgICAgICAgIGlmICghc3RhclNldC5hZGQocXVl
cnkubW9kdWxlUmVjb3JkKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgLy8gRW5xdWV1ZSB0aGUgdGFzayB0byBnYXRoZXIgdGhlIHJlc3VsdHMgb2YgdGhl
IHN0YXJzLgorICAgICAgICAvLyBBbmQgYXBwZW5kIHRoZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0
byBnYXRoZXIgdGhlIGxvY2FsIHJlc3VsdCBvZiB0aGUgc3RhcnMuCisgICAgICAgIHBlbmRpbmdU
YXNrcy5hcHBlbmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpHYXRoZXJTdGFycyB9KTsKKyAgICAgICAg
ZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9uOjpub3RGb3VuZCgpKTsKKworICAgICAgICAvLyBFbnF1
ZXVlIHRoZSB0YXNrcyBpbiByZXZlcnNlIG9yZGVyLgorICAgICAgICBmb3IgKGF1dG8gaXRlcmF0
b3IgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkucmJlZ2luKCksIGVu
ZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJpZXMoKS5yZW5kKCk7IGl0ZXJh
dG9yICE9IGVuZDsgKytpdGVyYXRvcikgeworICAgICAgICAgICAgY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgc3Rhck1vZHVsZU5hbWUgPSAqaXRlcmF0b3I7CisgICAgICAgICAgICBK
U01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQt
Pmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVj
LCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVu
ZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBxdWVyeS5leHBvcnRO
YW1lLmdldCgpKSwgVHlwZTo6UXVlcnkgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfTsKKworICAgIC8vIFJldHVybiB0aGUgY3VycmVudCByZXNvbHV0aW9uIHZhbHVl
IG9mIHRoZSB0b3AgZnJhbWUuCisgICAgYXV0byBjdXJyZW50VG9wID0gWyZdICgpIC0+IFJlc29s
dXRpb24mIHsKKyAgICAgICAgQVNTRVJUKCFmcmFtZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgcmV0
dXJuIGZyYW1lcy5sYXN0KCk7CisgICAgfTsKKworICAgIC8vIE1lcmdlIHRoZSBnaXZlbiByZXNv
bHV0aW9uIHRvIHRoZSBjdXJyZW50IHJlc29sdXRpb24gdmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4K
KyAgICAvLyBJZiB0aGVyZSBpcyBhbWJpZ3VpdHksIHJldHVybiAiZmFsc2UiLiBXaGVuIHRoZSAi
ZmFsc2UiIGlzIHJldHVybmVkLCB3ZSBzaG91bGQgbWFrZSB0aGUgcmVzdWx0ICJhbWJpZ3VvdXMi
LgorICAgIGF1dG8gbWVyZ2VUb0N1cnJlbnRUb3AgPSBbJl0gKGNvbnN0IFJlc29sdXRpb24mIHJl
c29sdXRpb24pIC0+IGJvb2wgeworICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29s
dXRpb246OlR5cGU6Ok5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAg
ICAgaWYgKGN1cnJlbnRUb3AoKS50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7
CisgICAgICAgICAgICBjdXJyZW50VG9wKCkgPSByZXNvbHV0aW9uOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudFRvcCgpLm1vZHVsZVJl
Y29yZCAhPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZCB8fCBjdXJyZW50VG9wKCkubG9jYWxOYW1l
ICE9IHJlc29sdXRpb24ubG9jYWxOYW1lKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRh
c2sgeyByb290LCBUeXBlOjpRdWVyeSB9KTsKKyAgICB3aGlsZSAoIXBlbmRpbmdUYXNrcy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgY29uc3QgVGFzayB0YXNrID0gcGVuZGluZ1Rhc2tzLnRha2VMYXN0
KCk7CisgICAgICAgIGNvbnN0IFJlc29sdmVRdWVyeSYgcXVlcnkgPSB0YXNrLnF1ZXJ5OworCisg
ICAgICAgIHN3aXRjaCAodGFzay50eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6UXVlcnk6IHsK
KyAgICAgICAgICAgIGlmICghcmVzb2x2ZVNldC5hZGQodGFzay5xdWVyeSkuaXNOZXdFbnRyeSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQq
IG1vZHVsZVJlY29yZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgIGNvbnN0IE9w
dGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeT4gb3B0aW9uYWxFeHBvcnRFbnRyeSA9
IG1vZHVsZVJlY29yZC0+dHJ5R2V0RXhwb3J0RW50cnkocXVlcnkuZXhwb3J0TmFtZS5nZXQoKSk7
CisgICAgICAgICAgICBpZiAoIW9wdGlvbmFsRXhwb3J0RW50cnkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBJZiB0aGVyZSBpcyBubyBtYXRjaGVkIGV4cG9ydGVkIGJpbmRpbmcgaW4gdGhlIGN1cnJl
bnQgbW9kdWxlLAorICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBz
dGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmVycm9yKCk7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeSYgZXhwb3J0RW50cnkgPSAqb3B0aW9uYWxFeHBvcnRF
bnRyeTsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgeworICAgICAgICAg
ICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAg
ICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToK
KyAgICAgICAgICAgICAgICBpZiAoIW1lcmdlVG9DdXJyZW50VG9wKFJlc29sdXRpb24geyBSZXNv
bHV0aW9uOjpUeXBlOjpSZXNvbHZlZCwgbW9kdWxlUmVjb3JkLCBleHBvcnRFbnRyeS5sb2NhbE5h
bWUgfSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMo
KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY2FzZSBKU01vZHVs
ZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OiB7CisgICAgICAgICAgICAgICAg
SlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gbW9kdWxlUmVjb3JkLT5ob3N0
UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGV4cG9ydEVudHJ5Lm1vZHVsZU5hbWUpOworCisg
ICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGRvZXMgbm90IHByb2R1
Y2UgYW55IHJlc29sdmVkIGJpbmRpbmcsIHdlIG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycyBp
biB0aGUgKmN1cnJlbnQqCisgICAgICAgICAgICAgICAgLy8gbW9kdWxlLiBUbyBkbyB0aGlzLCB3
ZSBhcHBlbmQgdGhlIGBJbmRpcmVjdEZhbGxiYWNrYCB0YXNrIHRvIHRoZSB0YXNrIHF1ZXVlLgor
ICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpJ
bmRpcmVjdEZhbGxiYWNrIH0pOworICAgICAgICAgICAgICAgIC8vIEFuZCBhcHBlbmQgdGhlIG5l
dyBSZXNvbHV0aW9uIGZyYW1lIHRvIGNoZWNrIHRoZSBpbmRpcmVjdCBleHBvcnQgd2lsbCBiZSBy
ZXNvbHZlZCBvciBub3QuCisgICAgICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9u
Ojpub3RGb3VuZCgpKTsKKyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sg
eyBSZXNvbHZlUXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNvcmQsIGV4cG9ydEVudHJ5LmltcG9ydE5h
bWUpLCBUeXBlOjpRdWVyeSB9KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBUeXBlOjpJbmRpcmVjdEZhbGxiYWNrOiB7CisgICAgICAgICAgICBKU01vZHVs
ZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gZnJhbWVzLnRha2VMYXN0KCk7CisKKyAg
ICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91
bmQpIHsKKyAgICAgICAgICAgICAgICAvLyBJbmRpcmVjdCBleHBvcnQgZW50cnkgZG9lcyBub3Qg
cHJvZHVjZSBhbnkgcmVzb2x2ZWQgYmluZGluZy4KKyAgICAgICAgICAgICAgICAvLyBTbyB3ZSB3
aWxsIGludmVzdGlnYXRlIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVO
b25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRp
b246OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIElmIGluZGlyZWN0IGV4cG9ydCBlbnRyeSBwcm9kdWNlcyBSZXNvbHZl
ZCwgd2Ugc2hvdWxkIG1lcmdlIGl0IHRvIHRoZSB1cHBlciBmcmFtZS4KKyAgICAgICAgICAgIC8v
IEFuZCBkbyBub3QgaW52ZXN0aWdhdGUgdGhlIHN0YXJzIG9mIHRoZSBjdXJyZW50IG1vZHVsZS4K
KyAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3AocmVzb2x1dGlvbikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmFtYmlndW91cygpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFR5cGU6OkdhdGhlclN0YXJzOiB7CisgICAg
ICAgICAgICAvLyBNZXJnZSB0aGUgc3RhciByZXNvbHV0aW9uIHRvIHRoZSB1cHBlciBmcmFtZS4K
KyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHN0YXJSZXNvbHV0aW9uID0g
ZnJhbWVzLnRha2VMYXN0KCk7CisgICAgICAgICAgICBpZiAoIW1lcmdlVG9DdXJyZW50VG9wKHN0
YXJSZXNvbHV0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6YW1iaWd1
b3VzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgQVNTRVJUKGZyYW1lcy5zaXplKCkgPT0gMSk7CisgICAgcmV0dXJuIGZyYW1lc1swXTsK
K30KKworYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpIC0+IFJlc29sdXRpb24KK3sKKyAgICByZXR1
cm4gcmVzb2x2ZUV4cG9ydExvb3AoZXhlYywgUmVzb2x2ZVF1ZXJ5KHRoaXMsIGV4cG9ydE5hbWUu
aW1wbCgpKSk7Cit9CisKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2VDb2RlKCkpOwpAQCAtMTAxLDExICs0
MjksMTIwIEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KGV4
ZWMtPnZtKCksIHRoaXMsIGV4ZWN1dGFibGUpOworICAgIGluc3RhbnRpYXRlRGVjbGFyYXRpb25z
KGV4ZWMsIGV4ZWN1dGFibGUpOwogfQogCi1KU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpleGVjdXRl
KEV4ZWNTdGF0ZSopCit2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9u
cyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSkKIHsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFy
YXRpb25pbnN0YW50aWF0aW9uCisKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZS0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpOworICAg
IEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9u
bWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlz
KTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0
YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDkuCisgICAgLy8gRW5z
dXJlIGFsbCB0aGUgaW5kaXJlY3QgZXhwb3J0cyBhcmUgY29ycmVjdGx5IHJlc29sdmVkIHRvIHVu
aXF1ZSBiaW5kaW5ncy4KKyAgICAvLyBFdmVuIGlmIHdlIGF2b2lkZWQgZHVwbGljYXRlIGV4cG9y
dHMgaW4gdGhlIHBhcnNlciwgc3RpbGwgYW1iaWd1b3VzIGV4cG9ydHMgb2NjdXIgZHVlIHRvIHRo
ZSBzdGFyIGV4cG9ydCAoYGV4cG9ydCAqIGZyb20gIm1vZCJgKS4KKyAgICAvLyBXaGVuIHdlIHNl
ZSB0aGlzIHR5cGUgb2YgYW1iaWd1aXR5IGZvciB0aGUgaW5kaXJlY3QgZXhwb3J0cyBoZXJlLCB0
aHJvdyBhIHN5bnRheCBlcnJvci4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9y
dEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGV4cG9ydEVudHJ5ID0gcGFp
ci52YWx1ZTsKKyAgICAgICAgaWYgKGV4cG9ydEVudHJ5LnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6
OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdCkgeworICAgICAgICAgICAgUmVzb2x1dGlvbiBy
ZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBleHBvcnRFbnRyeS5leHBvcnROYW1lKTsK
KyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBjYXNl
IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4
RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUg
JyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSksICInIGlzIG5vdCBmb3Vu
ZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBT
dHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2
ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgor
ICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJl
Y3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBi
eSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVj
bGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDEy
LgorICAgIC8vIEluc3RhbnRpYXRlIG5hbWVzcGFjZSBvYmplY3RzIGFuZCBpbml0aWFsaXplIHRo
ZSBiaW5kaW5ncyB3aXRoIHRoZW0gaWYgcmVxdWlyZWQuCisgICAgLy8gQW5kIGVuc3VyZSB0aGF0
IGFsbCB0aGUgaW1wb3J0cyBjb3JyZWN0bHkgcmVzb2x2ZWQgdG8gdW5pcXVlIGJpbmRpbmdzLgor
ICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykgeworICAgICAgICBj
b25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBKU01v
ZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4
ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgICAgICBpZiAoaW1wb3J0RW50cnku
aXNOYW1lc3BhY2Uodm0pKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogTW9kdWxlTmFtZXNwYWNl
T2JqZWN0IHdpbGwgYmUgaW1wbGVtZW50ZWQuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NzA1CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4
cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKKyAgICAgICAgICAgIHN3aXRjaCAo
cmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5v
dEZvdW5kOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmlu
ZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5LmltcG9ydE5h
bWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAg
ICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJp
bmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5LmltcG9ydE5hbWUuaW1wbCgpKSwgIicg
Y2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9u
OjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1h
a2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSByZXNv
bHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9k
dWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBz
dGVwIDE0LgorICAgIC8vIE1vZHVsZSBlbnZpcm9ubWVudCBjb250YWlucyB0aGUgaGVhcCBhbGxv
Y2F0ZWQgInZhciIsICJmdW5jdGlvbiIsICJsZXQiLCAiY29uc3QiLCBhbmQgImNsYXNzIi4KKyAg
ICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBlbnZpcm9ubWVudCwgd2UgaW5pdGlhbGl6ZWQgYWxsIHRo
ZSBzbG90cyB3aXRoIGVtcHR5LCBpdCdzIG9rIGZvciBsZXhpY2FsIHZhbHVlcy4KKyAgICAvLyBC
dXQgZm9yICJ2YXIiIGFuZCAiZnVuY3Rpb24iLCB3ZSBzaG91bGQgaW5pdGlhbGl6ZSBpdCB3aXRo
IHVuZGVmaW5lZC4gVGhleSBhcmUgY29udGFpbmVkIGluIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMu
CisgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6IG1fZGVjbGFyZWRWYXJpYWJsZXMpIHsK
KyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodmFyaWFi
bGUua2V5LmdldCgpKTsKKyAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNl
dCgpOworICAgICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkpCisgICAgICAgICAgICBzeW1ib2xU
YWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVj
LCB2YXJpYWJsZS5rZXkuZ2V0KCkpLCBqc1VuZGVmaW5lZCgpLCBmYWxzZSk7CisgICAgfQorCisg
ICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2Vj
LW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2
LjQgc3RlcCAxNi1hLWl2LgorICAgIC8vIEluaXRpYWxpemUgaGVhcCBhbGxvY2F0ZWQgZnVuY3Rp
b24gZGVjbGFyYXRpb25zLgorICAgIC8vIFRoZXkgY2FuIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGJv
ZHkgb2YgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCB1bmRlciBjaXJjdWxhciBkZXBlbmRlbmNpZXMu
CisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9
IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgbnVtYmVyT2ZGdW5jdGlvbnMgPSB1bmxpbmtlZENv
ZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7IGkgPCBudW1iZXJPZkZ1bmN0aW9uczsg
KytpKSB7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CisgICAg
ICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgVmFyT2Zmc2V0IG9mZnNl
dCA9IGVudHJ5LnZhck9mZnNldCgpOworICAgICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVCghdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKS5p
c0VtcHR5KCkpOworICAgICAgICAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpIHx8IHZtLmNvbnRy
b2xGbG93UHJvZmlsZXIoKSkgeworICAgICAgICAgICAgICAgIHZtLmZ1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2UobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUt
PnNvdXJjZUlEKCksCisgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgdW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPmxpbmsodm0sIG1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLT5zb3VyY2UoKSksIG1vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAg
ICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlvbiwgZmFsc2UpOworICAgICAgICB9CisgICAg
fQorCisgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIHRoaXMsIG1vZHVsZUVudmlyb25t
ZW50KTsKK30KKworSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgaWYgKCFtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQorICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVy
KCktPmV4ZWN1dGUobV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5nZXQoKSwgZXhlYywgbV9tb2R1
bGVFbnZpcm9ubWVudC5nZXQoKSk7CisgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jbGVh
cigpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFt
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCkBAIC0xMjksMjMgKzU2Niwy
NSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpkdW1wKCkKICAgICAgICAgZGF0YUxvZygiICAgICAg
bW9kdWxlKCIsIHByaW50YWJsZU5hbWUobW9kdWxlTmFtZSksICIpXG4iKTsKIAogICAgIGRhdGFM
b2coIiAgICBJbXBvcnQ6ICIsIG1faW1wb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKQotICAgICAgICBk
YXRhTG9nKCIgICAgICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmltcG9ydE5h
bWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmxvY2FsTmFtZSksICIp
LCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLm1vZHVsZVJlcXVlc3QpLCAiKVxu
Iik7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7CisgICAg
ICAgIGNvbnN0IEltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAg
IGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGltcG9ydEVudHJ5LmltcG9y
dE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5sb2NhbE5hbWUp
LCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCks
ICIpXG4iKTsKKyAgICB9CiAKICAgICBkYXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVu
dHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwogICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IG1fZXhwb3J0RW50cmllcykgewotICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkgPSBw
YWlyLnZhbHVlOwotICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAgICAgY29uc3Qg
RXhwb3J0RW50cnkmIGV4cG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChl
eHBvcnRFbnRyeS50eXBlKSB7CiAgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkxvY2Fs
OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50
YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGVu
dHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2Nh
bF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAi
KSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpO
YW1lc3BhY2U6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhw
b3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVu
dHJ5LmV4cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnku
bW9kdWxlTmFtZSksICIpXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAg
W0luZGlyZWN0XSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSks
ICIpLCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVs
ZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShl
eHBvcnRFbnRyeS5leHBvcnROYW1lKSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9y
dEVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50
cnkubW9kdWxlTmFtZSksICIpXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgK
aW5kZXggODFkYTM5NjZlOGM1YThkYTkzMDRkMjgyZjRmYmNhOTRmMjRlYWU0OC4uMDg1MjFiNGNj
ZDNiMDRhYWVlMDNiM2I0NDFhMjFjMWY2ZDQxOTY0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC03OCw4ICs3OSw4IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDog
cHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB9OwogCiAgICAgdHlwZWRlZiBXVEY6
Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNo
PiBPcmRlcmVkSWRlbnRpZmllclNldDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBvcnRNYXA7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVw
SGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRy
eSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4+IEltcG9ydEVudHJpZXM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0RW50cmllczsKIAogICAgIERFQ0xBUkVfRVhQ
T1JUX0lORk87CiAKQEAgLTEwMCwyNSArMTAxLDQ5IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDog
cHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNv
bnN0IEltcG9ydEVudHJ5Jik7CiAgICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRF
bnRyeSYpOwogCi0gICAgY29uc3QgSW1wb3J0RW50cnkmIGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8SW1w
b3J0RW50cnk+IHRyeUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUp
OworICAgIE9wdGlvbmFsPEV4cG9ydEVudHJ5PiB0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3Ry
aW5nSW1wbCogZXhwb3J0TmFtZSk7CiAKICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVLZXk7IH0KICAgICBjb25zdCBPcmRl
cmVkSWRlbnRpZmllclNldCYgcmVxdWVzdGVkTW9kdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVx
dWVzdGVkTW9kdWxlczsgfQotICAgIGNvbnN0IEV4cG9ydE1hcCYgZXhwb3J0RW50cmllcygpIGNv
bnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50cmllczsgfQotICAgIGNvbnN0IEltcG9ydE1hcCYgaW1w
b3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1faW1wb3J0RW50cmllczsgfQorICAgIGNvbnN0
IEV4cG9ydEVudHJpZXMmIGV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydEVu
dHJpZXM7IH0KKyAgICBjb25zdCBJbXBvcnRFbnRyaWVzJiBpbXBvcnRFbnRyaWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgT3JkZXJlZElkZW50aWZpZXJT
ZXQmIHN0YXJFeHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGFyRXhwb3J0RW50cmll
czsgfQogCiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMo
KSBjb25zdCB7IHJldHVybiBtX2RlY2xhcmVkVmFyaWFibGVzOyB9CiAgICAgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNh
bFZhcmlhYmxlczsgfQogCiAgICAgdm9pZCBkdW1wKCk7CiAKKyAgICBKU01vZHVsZUVudmlyb25t
ZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9tb2R1bGVF
bnZpcm9ubWVudCk7CisgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOwor
ICAgIH0KIAogICAgIHZvaWQgbGluayhFeGVjU3RhdGUqKTsKICAgICBKU1ZhbHVlIGV4ZWN1dGUo
RXhlY1N0YXRlKik7CiAKICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdl
dCgpOyB9CiAKKyAgICBzdHJ1Y3QgUmVzb2x1dGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSB7IFJlc29sdmVkLCBOb3RGb3VuZCwgQW1iaWd1b3VzLCBFcnJvciB9OworCisgICAgICAgIHN0
YXRpYyBSZXNvbHV0aW9uIG5vdEZvdW5kKCk7CisgICAgICAgIHN0YXRpYyBSZXNvbHV0aW9uIGVy
cm9yKCk7CisgICAgICAgIHN0YXRpYyBSZXNvbHV0aW9uIGFtYmlndW91cygpOworCisgICAgICAg
IFR5cGUgdHlwZTsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICAg
ICAgSWRlbnRpZmllciBsb2NhbE5hbWU7CisgICAgfTsKKworICAgIFJlc29sdXRpb24gcmVzb2x2
ZUV4cG9ydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKTsKKyAgICBS
ZXNvbHV0aW9uIHJlc29sdmVJbXBvcnQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbG9j
YWxOYW1lKTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxl
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworCiBwcml2YXRlOgog
ICAgIEpTTW9kdWxlUmVjb3JkKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZUtleSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQpAQCAtMTM0LDcgKzE1OSw3IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAg
IEpTTW9kdWxlUmVjb3JkKiBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworICAgIHZvaWQgaW5zdGFudGlhdGVEZWNsYXJh
dGlvbnMoRXhlY1N0YXRlKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqKTsKIAogICAgIC8vIFRo
ZSBsb2FkZXIgcmVzb2x2ZXMgdGhlIGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRoZSBtb2R1bGUga2V5
LiBUaGUgbW9kdWxlIGtleSBpcyB0aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJlc2VudCB0aGlzIG1v
ZHVsZS4KICAgICBJZGVudGlmaWVyIG1fbW9kdWxlS2V5OwpAQCAtMTQ0LDQ2ICsxNjksMzcgQEAg
Y2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgbV9kZWNsYXJlZFZhcmlhYmxlczsKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IG1fbGV4aWNhbFZhcmlhYmxlczsKIAorICAgIC8vIEN1cnJlbnRseSwgd2UgZG9u
J3Qga2VlcCB0aGUgb2NjdXJyZW5jZSBvcmRlciBvZiB0aGUgaW1wb3J0IC8gZXhwb3J0IGVudHJp
ZXMuCisgICAgLy8gU28sIHdlIGRvZXMgbm90IGd1YXJhbnRlZSB0aGUgb3JkZXIgb2YgdGhlIGVy
cm9ycy4KKyAgICAvLyBlLmcuIFRoZSBpbXBvcnQgZGVjbGFyYXRpb24gdGhhdCBvY2N1cnIgbGF0
ZXIgdGhhbiB0aGUgYW5vdGhlciBpbXBvcnQgZGVjbGFyYXRpb24gbWF5CisgICAgLy8gICAgICB0
aHJvdyB0aGUgZXJyb3IgZXZlbiBpZiB0aGUgZm9ybWVyIGltcG9ydCBkZWNsYXJhdGlvbiBhbHNv
IGhhcyB0aGUgaW52YWxpZCBjb250ZW50LgorICAgIC8vCisgICAgLy8gICAgICBpbXBvcnQgLi4u
IC8vICgxKSB0aGlzIGhhcyBzb21lIGludmFsaWQgY29udGVudC4KKyAgICAvLyAgICAgIGltcG9y
dCAuLi4gLy8gKDIpIHRoaXMgYWxzbyBoYXMgc29tZSBpbnZhbGlkIGNvbnRlbnQuCisgICAgLy8K
KyAgICAvLyAgICAgIEluIHRoZSBhYm92ZSBjYXNlLCAoMikgbWF5IHRocm93IHRoZSBlcnJvciBl
YXJsaWVyIHRoYW4gKDEpCisgICAgLy8KKyAgICAvLyBCdXQsIGluIHRoZSBhbGwgY2FzZXMsIHdl
IHdpbGwgdGhyb3cgdGhlIHN5bnRheCBlcnJvci4gU28gZXhjZXB0IGZvciB0aGUgY29udGVudCBv
ZiB0aGUgc3ludGF4IGVycm9yLAorICAgIC8vIHRoZXJlIGFyZSBubyBkaWZmZXJlbmNlLgorCiAg
ICAgLy8gTWFwIGxvY2FsTmFtZSAtPiBJbXBvcnRFbnRyeS4KLSAgICBJbXBvcnRNYXAgbV9pbXBv
cnRFbnRyaWVzOworICAgIEltcG9ydEVudHJpZXMgbV9pbXBvcnRFbnRyaWVzOwogCiAgICAgLy8g
TWFwIGV4cG9ydE5hbWUgLT4gRXhwb3J0RW50cnkuCi0gICAgRXhwb3J0TWFwIG1fZXhwb3J0RW50
cmllczsKKyAgICBFeHBvcnRFbnRyaWVzIG1fZXhwb3J0RW50cmllczsKIAotICAgIElkZW50aWZp
ZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKKyAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9y
ZGVyIHNpbmNlIHJlc29sdmVFeHBvcnQgcmVxdWlyZXMgaXQuCisgICAgT3JkZXJlZElkZW50aWZp
ZXJTZXQgbV9zdGFyRXhwb3J0RW50cmllczsKIAogICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ug
b3JkZXIgc2luY2UgdGhlIG1vZHVsZSBsb2FkZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMg
aW4gdGhpcyBvcmRlci4KICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgogICAgIE9yZGVyZWRJZGVudGlmaWVy
U2V0IG1fcmVxdWVzdGVkTW9kdWxlczsKIAotICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZT4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8
SlNNYXA+IG1fZGVwZW5kZW5jaWVzTWFwOwotfTsKIAotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQot
ewotICAgIG1fcmVxdWVzdGVkTW9kdWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1p
bmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50
cnkmIGVudHJ5KQotewotICAgIG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmlt
cGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0
RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQotewotICAgIG1fZXhwb3J0RW50cmllcy5h
ZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KTsKLX0KLQotaW5saW5lIHZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVO
YW1lKQotewotICAgIG1fc3RhckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsK
LX0KLQotaW5saW5lIGF1dG8gSlNNb2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0RW50
cnkmCi17Ci0gICAgcmV0dXJuICgqbV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSkudmFs
dWU7Ci19CisgICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPiBtX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOworICAgIFdyaXRlQmFycmllcjxKU01vZHVsZUVudmlyb25tZW50
PiBtX21vZHVsZUVudmlyb25tZW50OworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggYmIyZWZkZDA2MzFjZDE4
ZWE5NzU0MjY3NGEyY2U3MTgxNTA3MmM4Zi4uMWRjYWY3N2E1NWZlMDQ4OThkMTE2NWM0MDQ2NWJk
NzFlMWE0YmJiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAK
QEAgLTI4LDYgKzI4LDggQEAKIAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIApAQCAtNjUsNiArNjcsMTkgQEAgc3RhdGljIGlu
bGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IGNvbnN0IElkZW50aWYKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAg
ICAgICAgaWYgKEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNEeW5h
bWljQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oc2NvcGUpKSB7CisgICAgICAgICAgICBKU01v
ZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gbW9kdWxlRW52aXJvbm1lbnQtPm1vZHVsZVJlY29y
ZCgpOworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9
IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUltcG9ydChleGVjLCBpZGVudCk7CisgICAgICAgICAgICBp
ZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpS
ZXNvbHZlZCkgeworICAgICAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZFJlY29y
ZCA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkOworICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIGltcG9ydGVkRW52aXJvbm1lbnQgPSBpbXBvcnRlZFJlY29yZC0+bW9kdWxlRW52
aXJvbm1lbnQoKTsKKyAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gaW1w
b3J0ZWRFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KHJlc29sdXRpb24ubG9jYWxOYW1l
LmltcGwoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CisgICAg
ICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFrZVR5cGUoTW9kdWxlVmFyLCBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyksIGRlcHRoLCAwLCBpbXBvcnRlZEVudmlyb25tZW50LCBlbnRyeS53YXRj
aHBvaW50U2V0KCksIGVudHJ5LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCksIHJlc29sdXRpb24ubG9j
YWxOYW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAobGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xU
YWJsZSgpLT51c2VzTm9uU3RyaWN0RXZhbCgpKQogICAgICAgICAgICAgbmVlZHNWYXJJbmplY3Rp
b25DaGVja3MgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzIsNiArMjQ3LDcg
QEAgY29uc3QgY2hhciogcmVzb2x2ZVR5cGVOYW1lKFJlc29sdmVUeXBlIHR5cGUpCiAgICAgICAg
ICJHbG9iYWxWYXIiLAogICAgICAgICAiQ2xvc3VyZVZhciIsCiAgICAgICAgICJMb2NhbENsb3N1
cmVWYXIiLAorICAgICAgICAiTW9kdWxlVmFyIiwKICAgICAgICAgIkdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrcyIsCiAgICAgICAgICJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIiwKICAgICAgICAgIkNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAppbmRleCBhNjUzMTY3NDkwZjY4MjIz
ZjUxMWRkMjg5MDg5MjlmYzQ2YTE5NzNjLi4wMjZhMjcxNGRjOGQ5MjJhOTgyODg1ZTU0NmI1Nzhi
YTk2MzQ4MGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCkBAIC00
NSw2ICs0NSw3IEBAIGVudW0gUmVzb2x2ZVR5cGUgewogICAgIEdsb2JhbFZhciwKICAgICBDbG9z
dXJlVmFyLAogICAgIExvY2FsQ2xvc3VyZVZhciwKKyAgICBNb2R1bGVWYXIsCiAKICAgICAvLyBE
aXR0bywgYnV0IGF0IGxlYXN0IG9uZSBpbnRlcnZlbmluZyBzY29wZSB1c2VkIG5vbi1zdHJpY3Qg
ZXZhbCwgd2hpY2gKICAgICAvLyBjYW4gaW5qZWN0IGFuIGludGVyY2VwdGluZyB2YXIgZGVsY2Fy
YXRpb24gYXQgcnVudGltZS4KQEAgLTcyLDYgKzczLDcgQEAgaW5saW5lIFJlc29sdmVUeXBlIG1h
a2VUeXBlKFJlc29sdmVUeXBlIHR5cGUsIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiAg
ICAgY2FzZSBDbG9zdXJlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICBy
ZXR1cm4gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgY2FzZSBNb2R1bGVW
YXI6CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAg
Y2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC05MCw2ICs5Miw3IEBAIGlubGluZSBib29sIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiAgICAgY2FzZSBHbG9iYWxW
YXI6CiAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFyOgorICAg
IGNhc2UgTW9kdWxlVmFyOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBHbG9iYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzOgpAQCAtMTAzLDEzICsxMDYsMTQgQEAgaW5saW5lIGJvb2wgbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5cGUgdHlwZSkKIH0KIAogc3RydWN0IFJlc29sdmVP
cCB7Ci0gICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQs
IFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kKQorICAgIFJl
c29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBXYXRjaHBvaW50
U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCwgVW5pcXVlZFN0cmluZ0ltcGwq
IGltcG9ydGVkTmFtZSA9IG51bGxwdHIpCiAgICAgICAgIDogdHlwZSh0eXBlKQogICAgICAgICAs
IGRlcHRoKGRlcHRoKQogICAgICAgICAsIHN0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgICAgICwg
bGV4aWNhbEVudmlyb25tZW50KGxleGljYWxFbnZpcm9ubWVudCkKICAgICAgICAgLCB3YXRjaHBv
aW50U2V0KHdhdGNocG9pbnRTZXQpCiAgICAgICAgICwgb3BlcmFuZChvcGVyYW5kKQorICAgICAg
ICAsIGltcG9ydGVkTmFtZShpbXBvcnRlZE5hbWUpCiAgICAgewogICAgIH0KIApAQCAtMTE5LDYg
KzEyMyw3IEBAIHN0cnVjdCBSZXNvbHZlT3AgewogICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBs
ZXhpY2FsRW52aXJvbm1lbnQ7CiAgICAgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldDsKICAg
ICB1aW50cHRyX3Qgb3BlcmFuZDsKKyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGltcG9y
dGVkTmFtZTsKIH07CiAKIGNsYXNzIFJlc29sdmVNb2RlQW5kVHlwZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAppbmRleCAy
OGUwYmFkYWE3MmFmMzBjYzc3MTkxOTYwNGE2MTJkNmNkYjczZTA3Li42ZTZmOWY5YTZkYTYxODEy
ZTNjMjFhZDQzNjZmZDg3YjdjZDE0N2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJKU0ludGVybmFsUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIk1vZHVsZUFu
YWx5emVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260503</attachid>
            <date>2015-09-03 11:49:14 -0700</date>
            <delta_ts>2015-09-03 11:55:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150903114913.patch</filename>
            <type>text/plain</type>
            <size>106327</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi5kN2M4Y2ZlNGRkZDNhMTZl
NWIwZDA5ZDRmYzcwOTY3YTlmNWMxZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTUtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF90b19zY29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9f
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6Cisg
ICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAgIChK
U0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
LmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgICogcnVudGlt
ZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjptb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxl
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmly
b25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpvZmZzZXRP
Zk1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9j
YXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVj
b3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVjb3JkU2xv
dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1l
bnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OmFkZEltcG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9y
dEVudHJ5KToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkpOgorICAg
ICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6OlJl
c29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnlI
YXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwpOgorICAg
ICAgICAoSlNDOjpyZXNvbHZlRXhwb3J0TG9vcCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVj
bGFyYXRpb25zKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9KU01v
ZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhwb3J0RW50cmll
cyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbXBvcnRFbnRyaWVzKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnN0YXJFeHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToK
KyAgICAgICAgKEpTQzo6cmVzb2x2ZVR5cGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTU2Nv
cGUuaDoKKyAgICAgICAgKEpTQzo6bWFrZVR5cGUpOgorICAgICAgICAoSlNDOjpuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyk6CisgICAgICAgIChKU0M6OlJlc29sdmVPcDo6UmVzb2x2ZU9wKToKKyAg
ICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisKIDIwMTUtMDktMDEgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJv
dG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBub3QgYWxsb3cgbm9uLWJvb2xlYW4gdmFsdWVzIGZvciAi
b3B0aW9uYWwiIGtleQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDY4MDYw
YTY5OWZiNDg5NzAwNmU0ZmE5OTMyMDEyNzBjNGQyZWMzZDkuLmVmYTU3MGEyMTI2MjI0NjM4ZTU1
NTg1OGNkY2VmZGJhZmUwMjkyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTUzNyw2ICs1MzcsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAg
ICAgcnVudGltZS9KU0xvY2suY3BwCiAgICAgcnVudGltZS9KU01hcC5jcHAKICAgICBydW50aW1l
L0pTTWFwSXRlcmF0b3IuY3BwCisgICAgcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAog
ICAgIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU05hdGl2ZVN0ZEZ1
bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDM5OTYzYjQxMDExY2U5ZTUwM2UzNjg5YTA2NzU0
NWE2YjQwYjQwYjEuLjhhMTI2ZTU1NDUzZDM4YzA0ZTljMmFjMmMyNDc4MjNiMTU0MDQyMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzg2LDYgKzc4Niw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNw
cCIgLz4KQEAgLTE2NDAsNiArMTY0MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U01hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJh
dG9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52
aXJvbm1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1
bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U05vdEFuT2JqZWN0LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggMmJmNzE4MDQwYjM0ZDRmYzAwODNmMjFhNTNjZTQ4MjdlMWZj
MDI4Ni4uNjhlNGM3ZTQ0ZjljODgyZTEzNGNjZjdlM2E1MDYwYTZjNGM4Yzc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNzI2LDYg
KzcyNiw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTM1MDUsNiArMzUw
OCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiPgogICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuaCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuaCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyZTcxNmY1MzExMDdmZTU5ODFjNWE2ZDE2ZDNhNDU0MWU2MTlmNS4uYmIxNjMw
MmQxMDFkNDA3ZTlkMjYwNDdkMjc1NzAxMDdkZjc4NzI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE3MjYsNiArMTcyNiw4IEBACiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENF
NSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9Owog
CQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0
RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAq
LzsgfTsKKwkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0Yy
NkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0Ig
LyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1
NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0z
NTg3LDYgKzM1ODksOCBAQAogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFs
eXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0
MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYg
LyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ3NzcsNiArNDc4MSw4IEBACiAJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IEpTTWFwLmggKi8sCiAJCQkJQTc0REVGOEYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0
b3IuY3BwICovLAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9y
LmggKi8sCisJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwICovLAorCQkJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmly
b25tZW50LmggKi8sCiAJCQkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVj
b3JkLmNwcCAqLywKIAkJCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNv
cmQuaCAqLywKIAkJCQlFMzNFOEQxQTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5j
dGlvbi5jcHAgKi8sCkBAIC02MTM5LDYgKzYxNDUsNyBAQAogCQkJCTBGMkI5Q0U5MTlEMEJBN0Qw
MEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0Q4OUNGQzE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNp
c1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMEYxOUIxNkI3MjlG
QTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlG
Qjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtNzM4Niw2ICs3MzkzLDcgQEAKIAkJCQkwRjZDNzM1MDFBQzlG
OTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDIx
NjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0Yz
OUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggYzRjNjZkM2I3OTc2Zjk3NzViZDEzNGQxZWE5ODljMTRhNDVkYWFkNy4uNDU4
YjA2NWI5NjUyM2JlNTEzNTdiMGRiMThmZjJkZjdlOTAyNDg5MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0xNzY3LDYgKzE3NjgsNyBAQCBDb2Rl
QmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdp
c3RlckluZGV4XS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QtPmpz
Q2VsbEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpOwogICAgIH0KIAorICAgIC8vIE5PVEU6IFRo
aXMgaW52b2x2ZXMgY2xvbmluZyB0aGUgc3ltYm9sIHRhYmxlIGZvciB0aGUgbW9kdWxlIGVudmly
b25tZW50LgogICAgIEhhc2hTZXQ8aW50LCBXVEY6OkludEhhc2g8aW50PiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBjbG9uZWRDb25zdGFudFN5bWJvbFRhYmxlczsK
ICAgICB7CiAgICAgICAgIEhhc2hTZXQ8U3ltYm9sVGFibGUqPiBjbG9uZWRTeW1ib2xUYWJsZXM7
CkBAIC0xOTcyLDkgKzE5NzQsMTQgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAg
ICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwgR2V0LCB0eXBl
KTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gb3AudHlwZTsK
ICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0udS5vcGVyYW5kID0gb3AuZGVwdGg7Ci0g
ICAgICAgICAgICBpZiAob3AubGV4aWNhbEVudmlyb25tZW50KQotICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgNl0udS5zeW1ib2xUYWJsZS5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJs
ZSwgb3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpKTsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpIHsKKyAgICAgICAgICAg
ICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
S2VlcCB0aGUgbGlua2VkIG1vZHVsZSBlbnZpcm9ubWVudCBzdHJvbmdseSByZWZlcmVuY2VkLgor
ICAgICAgICAgICAgICAgICAgICBhZGRDb25zdGFudChvcC5sZXhpY2FsRW52aXJvbm1lbnQpOwor
ICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuanNDZWxsLnNldCgqdm0o
KSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQpOworICAgICAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuc3lt
Ym9sVGFibGUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVu
dC0+c3ltYm9sVGFibGUoKSk7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBp
bnN0cnVjdGlvbnNbaSArIDZdLnUucG9pbnRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMTk5OSw3ICsyMDA2LDEyIEBAIENvZGVCbG9jazo6Q29kZUJsb2Nr
KFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGluCiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3Ry
YWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgs
IHNjb3BlLCBpZGVudCwgR2V0LCBtb2RlQW5kVHlwZS50eXBlKCkpOwogCi0gICAgICAgICAgICBp
bnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IFJlc29sdmVNb2RlQW5kVHlwZShtb2RlQW5k
VHlwZS5tb2RlKCksIG9wLnR5cGUpLm9wZXJhbmQoKTsKKyAgICAgICAgICAgIC8vIE1vZHVsZVZh
ciBjYW4gZ2V0IHRoZSB2YXJpYWJsZSBhcyB0aGUgc2FtZSB0byBDbG9zdXJlVmFyLgorICAgICAg
ICAgICAgaWYgKG9wLnR5cGUgPT0gTW9kdWxlVmFyKQorICAgICAgICAgICAgICAgIGluc3RydWN0
aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1v
ZGUoKSwgQ2xvc3VyZVZhcikub3BlcmFuZCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBl
KG1vZGVBbmRUeXBlLm1vZGUoKSwgb3AudHlwZSkub3BlcmFuZCgpOworCiAgICAgICAgICAgICBp
ZiAob3AudHlwZSA9PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0udS53YXRj
aHBvaW50U2V0ID0gb3Aud2F0Y2hwb2ludFNldDsKICAgICAgICAgICAgIGVsc2UgaWYgKG9wLnN0
cnVjdHVyZSkKQEAgLTIwNjcsMTcgKzIwNzksMTggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4K
ICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBhYnN0cmFjdGx5ICJyZWFkImluZyBmcm9tIGEgSlNT
Y29wZS4KICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJl
c29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29w
ZSwgaWRlbnQsIEdldCwgdHlwZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBD
bG9zdXJlVmFyKQorICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIgfHwg
b3AudHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0g
b3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyKQogICAgICAgICAgICAgICAgICAgICBzeW1ib2xU
YWJsZSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpLT5zeW1ib2xUYWJsZSgpOwotICAgICAgICAgICAg
ICAgIAorCisgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwgPSAob3AudHlw
ZSA9PSBNb2R1bGVWYXIpID8gb3AuaW1wb3J0ZWROYW1lLmdldCgpIDogaWRlbnQuaW1wbCgpOwog
ICAgICAgICAgICAgICAgIGlmIChzeW1ib2xUYWJsZSkgewogICAgICAgICAgICAgICAgICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgb3VyIHBhcmVudCBzY29wZSB3YXMgY3JlYXRlZCB3aGlsZSBwcm9m
aWxpbmcgd2FzIGRpc2FibGVkLCBpdCB3aWxsIG5vdCBoYXZlIHByZXBhcmVkIGZvciBwcm9maWxp
bmcgeWV0LgogICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+cHJlcGFyZUZvclR5cGVQ
cm9maWxpbmcobG9ja2VyKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9
IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAq
dm0oKSk7Ci0gICAgICAgICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xUYWJsZS0+
Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaWRlbnQuaW1wbCgpLCAqdm0oKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVl
SURGb3JWYXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
Z2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUobG9j
a2VyLCBpbXBsLCAqdm0oKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBUeXBlUHJvZmlsZXJOb0dsb2JhbElERXhpc3RzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYmRkZDAz
NjdmM2JlMzcyNzY5YWRmZmJjZmE1OTg0MzE4YjIzYzc4OC4uMzgyM2JjNzU1Yzg0YTZmOGViYWJk
YzA1MDkwZmJlYTNiYTFmMGY3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaApAQCAtODIsNiArODIsNyBAQCBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBSZXBhdGNoQnVmZmVyOwogY2xhc3MgVHlwZUxvY2F0
aW9uOworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIAogZW51bSBSZW9wdGltaXphdGlvbk1v
ZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAppbmRleCAyZmUxYmI4N2ZmMjc2NGM2ZWFlMmIzNmY0MmExNjc4YjI4NjcyNmQ2Li5jMTE0
YjliNTdkMTQ0ZDE2NWVhNDFkYWQ4ZjJhNjhlZThmYThiNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTI5Nyw3
ICsyOTcsNiBAQCB2b2lkIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aQogICAgIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlKTsKIH0KIAogVW5saW5rZWRDb2RlQmxvY2s6On5VbmxpbmtlZENvZGVCbG9jaygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCmluZGV4IDQwOTVhOTA5ZDg1NmM3OGQ0NWUwOGQxMWNjOTVlZjYyODczMDkxNTguLmRmNTE4
ZDIxNDFjOWM3ODllMzUyOTI3ODU4NDcwMTAzMTYzOGVlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0zOCw3ICszOCw2
IEBACiAjaW5jbHVkZSAiUGFyc2VyTW9kZXMuaCIKICNpbmNsdWRlICJSZWdFeHAuaCIKICNpbmNs
dWRlICJTcGVjaWFsUG9pbnRlci5oIgotI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCiAjaW5jbHVk
ZSAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmly
b25tZW50LmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC01NSw3ICs1NCw2IEBA
IGNsYXNzIFBhcnNlckVycm9yOwogY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIGNsYXNzIFNvdXJj
ZUNvZGU7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKLWNsYXNzIFN5bWJvbFRhYmxlOwogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOwogY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC01MjcsMjkgKzUyNSwzNSBAQCBjbGFz
cyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgZmluYWwgOiBwdWJsaWMgVW5saW5rZWRH
bG9iYWxDb2RlQmxvY2sgewogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCi0gICAgLy8gVGhpcyBzeW1ib2wgdGFibGUgcmVwcmVzZW50cyB0
aGUgbGF5b3V0IG9mIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFRoaXMgc3ltYm9sIHRhYmxlIHdp
bGwgYmUgbW9kaWZpZWQgYnkgdGhlIGJ5dGUKLSAgICAvLyBjb2RlIGdlbmVyYXRvciBzaW5jZSB0
aGUgbW9kdWxlIGVudmlyb25tZW50IGluY2x1ZGVzIHRoZSB0b3AtbW9zdCBsZXhpY2FsIGNhcHR1
cmVkIHZhcmlhYmxlcyBpbnNpZGUgdGhlIG1vZHVsZSBjb2RlLgotICAgIC8vIFRoaXMgbWVhbnMg
dGhhdCwgb25jZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IGlzIGFsbG9jYXRlZCBhbmQgaW5zdGFu
dGlhdGVkIGZyb20gdGhpcyBzeW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseQotICAgIC8vIGNvdXBs
ZWQgd2l0aCB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBh
bmQgdGhlIHN5bWJvbCB0YWJsZS4gU28gYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlCi0gICAg
Ly8gY29kZSwgd2Ugc2hvdWxkIG5vdCBjbGVhciB0aGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0g
Y29kZSBibG9jayBpbiB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuIFRoaXMgcmVxdWlyZW1lbnQgaXMg
bWV0Ci0gICAgLy8gYmVjYXVzZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igb25seSBjbGVhcnMgdW5s
aW5rZWQgY29kZSBpbiAoMSkgdW5tYXJrZWQgZXhlY3V0YWJsZXMgYW5kICgyKSBmdW5jdGlvbiBl
eGVjdXRhYmxlcy4KKyAgICAvLyBUaGlzIG9mZnNldCByZXByZXNlbnRzIHRoZSBjb25zdGFudCBy
ZWdpc3RlciBvZmZzZXQgdG8gdGhlIHN0b3JlZCBzeW1ib2wgdGFibGUgdGhhdCByZXByZXNlbnRz
IHRoZSBsYXlvdXQgb2YgdGhlCisgICAgLy8gbW9kdWxlIGVudmlyb25tZW50LiBUaGlzIHN5bWJv
bCB0YWJsZSBpcyBjcmVhdGVkIGJ5IHRoZSBieXRlIGNvZGUgZ2VuZXJhdG9yIHNpbmNlIHRoZSBt
b2R1bGUgZW52aXJvbm1lbnQgaW5jbHVkZXMKKyAgICAvLyB0aGUgdG9wLW1vc3QgbGV4aWNhbCBj
YXB0dXJlZCB2YXJpYWJsZXMgaW5zaWRlIHRoZSBtb2R1bGUgY29kZS4gVGhpcyBtZWFucyB0aGF0
LCBvbmNlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMKKyAgICAvLyBhbGxvY2F0ZWQgYW5kIGlu
c3RhbnRpYXRlZCBmcm9tIHRoaXMgc3ltYm9sIHRhYmxlLCBpdCBpcyB0aXRlbHkgY291cGxlZCB3
aXRoIHRoZSBzcGVjaWZpYyB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbQorICAgIC8vIGNvZGUgYmxv
Y2sgYW5kIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxlLiBTbyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBt
b2R1bGUgY29kZSwgd2Ugc2hvdWxkIG5vdCBjbGVhciB0aGUgdW5saW5rZWQgbW9kdWxlCisgICAg
Ly8gcHJvZ3JhbSBjb2RlIGJsb2NrIGluIHRoZSBtb2R1bGUgZXhlY3V0YWJsZS4gVGhpcyByZXF1
aXJlbWVudCBpcyBtZXQgYmVjYXVzZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igb25seSBjbGVhcnMK
KyAgICAvLyB1bmxpbmtlZCBjb2RlIGluICgxKSB1bm1hcmtlZCBleGVjdXRhYmxlcyBhbmQgKDIp
IGZ1bmN0aW9uIGV4ZWN1dGFibGVzLgogICAgIC8vCiAgICAgLy8gU2luY2UgdGhlIGZ1bmN0aW9u
IGNvZGUgbWF5IGJlIGV4ZWN1dGVkIHJlcGVhdGVkbHkgYW5kIHRoZSBlbnZpcm9ubWVudCBvZiBl
YWNoIGZ1bmN0aW9uIGV4ZWN1dGlvbiBpcyBkaWZmZXJlbnQsCiAgICAgLy8gdGhlIGZ1bmN0aW9u
IGNvZGUgbmVlZCB0byBhbGxvY2F0ZSBhbmQgaW5zdGFudGlhdGUgdGhlIGVudmlyb25tZW50IGlu
IHRoZSBwcm9sb2d1ZSBvZiB0aGUgZnVuY3Rpb24gY29kZS4gT24gdGhlCiAgICAgLy8gb3RoZXIg
aGFuZCwgdGhlIG1vZHVsZSBjb2RlIGlzIGV4ZWN1dGVkIG9ubHkgb25jZS4gU28gd2UgY2FuIGlu
c3RhbnRpYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgb3V0c2lkZSB0aGUgbW9kdWxlCi0gICAg
Ly8gY29kZS4gQXQgdGhhdCB0aW1lLCB3ZSBjb25zdHJ1Y3QgdGhlIG1vZHVsZSBlbnZpcm9ubWVu
dCBieSB1c2luZyB0aGlzIHN5bWJvbCB0YWJsZSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUg
Y29kZS4KLSAgICAvLyBJbnN0YW50aWF0aW5nIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYmVmb3Jl
IGV4ZWN1dGluZyB0aGUgbW9kdWxlIGNvZGUgaXMgcmVxdWlyZWQgdG8gbGluayB0aGUgaW1wb3J0
ZWQgYmluZGluZ3MKLSAgICAvLyBiZXR3ZWVuIHRoZSBtb2R1bGVzLgorICAgIC8vIGNvZGUuIEF0
IHRoYXQgdGltZSwgd2UgY29uc3RydWN0IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYnkgdXNpbmcg
dGhlIHN5bWJvbCB0YWJsZSB0aGF0IHdpbGwgYmUgY2xvbmVkIGluIHRoZSBsaW5rZWQKKyAgICAv
LyBDb2RlQmxvY2sgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlIGNvZGUuIEluc3RhbnRpYXRp
bmcgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUgY29k
ZSBpcworICAgIC8vIHJlcXVpcmVkIHRvIGxpbmsgdGhlIGltcG9ydGVkIGJpbmRpbmdzIGJldHdl
ZW4gdGhlIG1vZHVsZXMuCiAgICAgLy8KLSAgICAvLyBUaGUgdW5saW5rZWQgbW9kdWxlIHByb2dy
YW0gY29kZSBibG9jayBvbmx5IGhvbGRzIHRoZSBzeW1ib2wgdGFibGUuIEl0IGRvZXMgbm90IGhv
bGQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4gU28gd2hpbGUKLSAgICAvLyB0aGUgbW9kdWxlIGVu
dmlyb25tZW50IHJlcXVpcmVzIHRoZSBzcGVjaWZpYyB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBj
b2RlIGJsb2NrLCB0aGUgdW5saW5rZWQgbW9kdWxlIGNvZGUgYmxvY2sKLSAgICAvLyBjYW4gYmUg
dXNlZCBmb3IgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpbnN0YW50aWF0ZWQgZnJvbSB0aGlzIHVu
bGlua2VkIGNvZGUgYmxvY2suIFRoZXJlIGlzIDE6TiByZWxhdGlvbiBiZXR3ZWVuCi0gICAgLy8g
dGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrIGFuZCB0aGUgbW9kdWxlIGVudmlyb25tZW50
cy4gU28gdGhlIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hl
ZC4KKyAgICAvLyBUaGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBvbmx5IGhv
bGRzIHRoZSBwcmUtY2xvbmVkIHN5bWJvbCB0YWJsZSBpbiBpdHMgY29uc3RhbnQgcmVnaXN0ZXIg
cG9vbC4gSXQgZG9lcworICAgIC8vIG5vdCBob2xkIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlIGVu
dmlyb25tZW50LiBTbyB3aGlsZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IHJlcXVpcmVzIHRoZSBz
cGVjaWZpYyB1bmxpbmtlZCBtb2R1bGUKKyAgICAvLyBwcm9ncmFtIGNvZGUgYmxvY2ssIHRoZSB1
bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBjYW4gYmUgdXNlZCBmb3IgdGhlIG1vZHVsZSBlbnZp
cm9ubWVudCBpbnN0YW50aWF0ZWQgZnJvbSB0aGlzCisgICAgLy8gdW5saW5rZWQgY29kZSBibG9j
ay4gVGhlcmUgaXMgMTpOIHJlbGF0aW9uIGJldHdlZW4gdGhlIHVubGlua2VkIG1vZHVsZSBjb2Rl
IGJsb2NrIGFuZCB0aGUgbW9kdWxlIGVudmlyb25tZW50cy4gU28gdGhlCisgICAgLy8gdW5saW5r
ZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBjYW4gYmUgY2FjaGVkLgogICAgIC8vCiAgICAg
Ly8gT24gdGhlIG90aGVyIGhhbmQsIHRoZSBsaW5rZWQgY29kZSBibG9jayBmb3IgdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudCBpbmNsdWRlcyB0aGUgcmVzb2x2ZWQgcmVmZXJlbmNlcyB0byB0aGUgaW1w
b3J0ZWQKICAgICAvLyBiaW5kaW5ncy4gVGhlIGltcG9ydGVkIGJpbmRpbmcgcmVmZXJlbmNlcyB0
aGUgb3RoZXIgbW9kdWxlIGVudmlyb25tZW50LCBzbyB0aGUgbGlua2VkIGNvZGUgYmxvY2sgaXMg
dGl0bHkgY291cGxlZAogICAgIC8vIHdpdGggdGhlIHNwZWNpZmljIHNldCBvZiB0aGUgbW9kdWxl
IGVudmlyb25tZW50cy4gVGh1cywgdGhlIGxpbmtlZCBjb2RlIGJsb2NrIHNob3VsZCBub3QgYmUg
Y2FjaGVkLgotICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkg
eyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CisgICAgaW50
IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0KCkgeyBy
ZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNl
dDsgfQorICAgIHZvaWQgc2V0TW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVn
aXN0ZXJPZmZzZXQoaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fbW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgPSBvZmZzZXQ7CisgICAgfQogCiBw
cml2YXRlOgogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbykKQEAgLTU1NywxMyAr
NTYxLDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVi
bGljIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCi0gICAgewotICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7Ci0gICAgICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5zZXQodm0sIHRo
aXMsIFN5bWJvbFRhYmxlOjpjcmVhdGUodm0pKTsKLSAgICB9Ci0KLSAgICBXcml0ZUJhcnJpZXI8
U3ltYm9sVGFibGU+IG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9t
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCB7IDAgfTsK
IAogcHVibGljOgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDc4M2IyMTU3YTFmMWUxM2MyZWNjMWFmZmY1ZTdmZGM0OWZlOWUzZDcuLjg3YzBk
YjVhOGVkYzE5YTAzMTQwNGJhZmVhMjk5MDZlODM4MGJjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC01MjQsOSArNTI0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICBpZiAobV9pc0J1
aWx0aW5GdW5jdGlvbikKICAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOwog
Ci0gICAgLy8gVXNlIHRoZSBzeW1ib2wgdGFibGUgYWxsb2NhdGVkIGluIHRoZSB1bmxpbmtlZCBj
b2RlIGJsb2NrLiBUaGlzIHN5bWJvbCB0YWJsZQotICAgIC8vIHdpbGwgYmUgdXNlZCB0byBhbGxv
Y2F0ZSBhbmQgaW5zdGFudGlhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4KLSAgICBTeW1ib2xU
YWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSA9IGNvZGVCbG9jay0+bW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVu
dFN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZSgqbV92bSk7CiAgICAgbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0
RXZhbCk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0U2NvcGVUeXBlKFN5
bWJvbFRhYmxlOjpTY29wZVR5cGU6OkxleGljYWxTY29wZSk7CiAKQEAgLTU4MCw2ICs1NzgsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9n
cmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGlj
YWxWYXJpYWJsZXMgPSBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpOwogICAg
IGluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhsZXhpY2FsVmFyaWFibGVzLCBtb2R1bGVFbnZp
cm9ubWVudFN5bWJvbFRhYmxlLCBTY29wZVJlZ2lzdGVyVHlwZTo6QmxvY2ssIGxvb2tVcFZhcktp
bmQpOwogCisgICAgLy8gV2Uga2VlcCB0aGUgc3ltYm9sIHRhYmxlIGluIGNvbnN0YW50IHJlZ2lz
dGVyIHBvb2wuCiAgICAgUmVnaXN0ZXJJRCogY29uc3RhbnRTeW1ib2xUYWJsZSA9IG51bGxwdHI7
CiAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQogICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxl
ID0gYWRkQ29uc3RhbnRWYWx1ZShtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKTsKQEAgLTY0
NCw2ICs2NDMsMTEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICAgICAgICAgIG1fZnVu
Y3Rpb25zVG9Jbml0aWFsaXplLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihmdW5jdGlvbiwgTm9ybWFs
RnVuY3Rpb25WYXJpYWJsZSkpOwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gUmVtZW1iZXIg
dGhlIGNvbnN0YW50IHJlZ2lzdGVyIG9mZnNldCB0byB0aGUgdG9wLW1vc3Qgc3ltYm9sIHRhYmxl
LiBUaGlzIHN5bWJvbCB0YWJsZSB3aWxsIGJlCisgICAgLy8gY2xvbmVkIGluIHRoZSBjb2RlIGJs
b2NrIGxpbmtpbmcuIEFmdGVyIHRoYXQsIHRvIGNyZWF0ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50
LCB3ZSByZXRyaWV2ZQorICAgIC8vIHRoZSBjbG9uZWQgc3ltYm9sIHRhYmxlIGZyb20gdGhlIGxp
bmtlZCBjb2RlIGJsb2NrIGJ5IHVzaW5nIHRoaXMgb2Zmc2V0LgorICAgIGNvZGVCbG9jay0+c2V0
TW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQoY29uc3Rh
bnRTeW1ib2xUYWJsZS0+aW5kZXgoKSk7CiB9CiAKIEJ5dGVjb2RlR2VuZXJhdG9yOjp+Qnl0ZWNv
ZGVHZW5lcmF0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCA3ZjY1MDUyZGE4ZjJmMWY5NzQzNGM4Y2I3YTZhMjBmYzQyMjZlNTA3
Li45NzljOGU2ODBkNmQ4ZDA2OGU2ZGZmNDViNWQ1YWUwOGRhMTY5ZjU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDIsNiArNDIs
NyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0
YXR1cy5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCkBAIC0zODMzLDYgKzM4MzQsMTQg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAg
ICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0RGlyZWN0KG1f
aW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIE1vZHVsZVZhcjogeworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSB2YWx1
ZSBvZiB0aGUgInNjb3BlIiB2aXJ0dWFsIHJlZ2lzdGVyIGlzIG5vdCB1c2VkIGluIExMSW50IC8g
YmFzZWxpbmUgb3BfcmVzb2x2ZV9zY29wZSB3aXRoIE1vZHVsZVZhciwKKyAgICAgICAgICAgICAg
ICAvLyB3ZSBuZWVkIG5vdCB0byBrZWVwIGl0IGFsaXZlIGJ5IHRoZSBQaGFudG9tIG5vZGUuCisg
ICAgICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBq
c0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2Vs
bC5nZXQoKSk7CisgICAgICAgICAgICAgICAgLy8gTW9kdWxlIGVudmlyb25tZW50IGlzIGFscmVh
ZHkgc3Ryb25nbHkgcmVmZXJlbmNlZCBieSB0aGUgQ29kZUJsb2NrLgorICAgICAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgd2Vha0pTQ29uc3RhbnQobW9kdWxlRW52aXJvbm1l
bnQpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAg
ICAgICAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogewpAQCAtNDAw
Miw2ICs0MDExLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRDbG9zdXJlVmFyLCBPcElu
Zm8ob3BlcmFuZCksIE9wSW5mbyhwcmVkaWN0aW9uKSwgc2NvcGVOb2RlKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIE1vZHVsZVZhcjoK
ICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA4Niw2ICs0MDk2
LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgICAgICAgICAgLy8gTmVlZCBub3Qg
dG8ga2VlcCAic2NvcGUiIGFuZCAidmFsdWUiIHJlZ2lzdGVyIHZhbHVlcyBoZXJlIGJ5IFBoYW50
b20gYmVjYXVzZQorICAgICAgICAgICAgICAgIC8vIHRoZXkgYXJlIG5vdCB1c2VkIGluIExMSW50
IC8gYmFzZWxpbmUgb3BfcHV0X3RvX3Njb3BlIHdpdGggTW9kdWxlVmFyLgorICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwog
ICAgICAgICAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBmYTYyZWE2ZjM3
NmQ4OGNlZmY0ZTk4Mjc1NDMyNjZlMGQ5M2E0NDljLi41YTdhMmFlNWRkMGU2ZDAwNDkxYzA3N2Jj
NTQ4ZGJkZDE3MTY2YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0JvdW5k
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKQEAgLTExOTQsNiArMTE5NSw1NCBAQCBKU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNW
YWx1ZQogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU01vZHVsZUVudmlyb25tZW50KiBzY29wZSkKK3sKKyAgICBW
TSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgU2FtcGxpbmdTY29wZSBzYW1wbGluZ1Njb3BlKHRo
aXMpOworCisgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOworICAg
IEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5
KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2Nr
KCkpOworICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOworCisgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmpl
Y3QoKSk7CisgICAgaWYgKCF2bS5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisKKyAgICBK
U09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihj
YWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKFVOTElLRUxZ
KCEhY29tcGlsZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCk7
CisKKyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUo
Y2FsbEZyYW1lKSkpCisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oY2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKworICAgIC8vIFRoZSB8dGhpc3wg
b2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCisgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVu
dC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdl
dHRoaXNiaW5kaW5nCisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJv
dG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5n
bG9iYWxPYmplY3QoKSwgc2NvcGUpLCBqc1VuZGVmaW5lZCgpLCAxKTsKKworICAgIGlmIChMZWdh
Y3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJv
ZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4
ZWN1dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAg
IC8vIEV4ZWN1dGUgdGhlIGNvZGU6CisgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgeworICAgICAg
ICBTYW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOwor
ICAgICAgICByZXN1bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUo
JnZtLCAmcHJvdG9DYWxsRnJhbWUpOworICAgIH0KKworICAgIGlmIChMZWdhY3lQcm9maWxlciog
cHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXItPmRpZEV4
ZWN1dGUoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmly
c3RMaW5lKCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworCisgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4ocmVzdWx0KTsKK30KKwogTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRl
YnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCkKIHsKICAg
ICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+
ZGVidWdnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKaW5kZXggMDM4YmNhNWNmYzc1YjliMjQ1NzYyZDZlNjRmNjhmMmU3OGVjNjI1MS4u
NGZlZmFhNmNmOGUzMWFmMmQzNTlkMTYzYmFjOGExYTQwOTVhZjQ0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTU0LDYgKzU0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNz
IEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgSlNNb2R1
bGVFbnZpcm9ubWVudDsKICAgICBjbGFzcyBKU01vZHVsZVJlY29yZDsKICAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CkBAIC0yMTUs
NiArMjE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwo
Q2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEm
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCog
ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVj
dFR5cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdU
YXJnZXQpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJh
bWUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU01vZHVsZUVudmlyb25t
ZW50Kik7CiAKICAgICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVu
Y3Rpb24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3Ys
IGludCYgYXJnYyk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA0OGNkZjExZmQzNmZhZmQ5NmJmMmJiNjcxZjU1YzMx
ZDQ1N2U2NDQ5Li40OWZlOTNmYTE0ODkxYTNhMjE1MWIwYjc0ZTg3ZWY5MmM0OGY3ODc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgogI2luY2x1ZGUgIlNjb3Bl
ZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCisjaW5jbHVk
ZSAiU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAK
IApAQCAtNzAzLDYgKzcwNCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrczoKICAgICAgICAgZW1pdFJlc29sdmVDbG9zdXJlKGRzdCwgc2NvcGUs
IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSwgZGVwdGgpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGN1
cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSksIHJlZ1QwKTsKKyAgICAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAgICBicmVhazsKICAgICBjYXNlIER5bmFt
aWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzE2
LDEyICs3MjEsMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3cKICAgICBpbnQgZHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlw
ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVy
YW5kKTsKIAotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICBpZiAo
cmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFy
IHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFy
KQogICAgICAgICByZXR1cm47CiAKKwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBpbnQz
Ml90IHNjb3BlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBpbnQzMl90
IGlkZW50aWZpZXJJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAg
Ly8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVlIGFsaXZl
IGluIERGRy4KKyAgICBBU1NFUlQocmVzb2x2ZVR5cGUgIT0gTW9kdWxlVmFyKTsKICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZSwgZHN0LCBzY29wZSwgaWRlbnRpZmllcklu
ZGV4KTsKIH0KIApAQCAtNzc4LDYgKzc4Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9t
X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWlj
OgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1vZHVsZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC04NTIsNiArODYxLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNv
bHZlVHlwZSkpOwogICAgICAgICBlbWl0UHV0Q2xvc3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90
LCB2YWx1ZSwgY3VycmVudEluc3RydWN0aW9uWzVdLnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAg
YWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CkBAIC04NzMsNyArODgzLDE1IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAgIHJldHVybjsKICAgICB3aGlsZSAobGlu
a0NvdW50LS0pCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CisKKyAgICBpZiAocmVz
b2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAgICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21v
ZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOworICAgICAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVw
IHRoZSBzY29wZSByZWdpc3RlciB2YWx1ZSBhbGl2ZSBpbiBERkcuCisgICAgICAgIEFTU0VSVChy
ZXNvbHZlVHlwZSAhPSBNb2R1bGVWYXIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgfQogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwCmluZGV4IDgxMmQxYjk5ZTYzYzAxMjRlYWQ2OTg1MDQxZTdlYTg0YjQ5ZmZhZmYu
LmU2M2JkNTkyMzkxOTQ2ODc4ZjhjN2JjMGM2NDVkZTg5NmJkNDkzZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1
bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCisjaW5jbHVkZSAiU2xvd1BhdGhD
YWxsLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIApAQCAtNzM1LDYg
KzczNiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKICAgICAgICAgZW1pdFJlc29sdmVDbG9zdXJlKGRzdCwgc2NvcGUsIG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSwgZGVwdGgpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIE1vZHVsZVZhcjoKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZyksIHJlZ1QxKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlv
bls2XS51LmpzQ2VsbC5nZXQoKSksIHJlZ1QwKTsKKyAgICAgICAgZW1pdFN0b3JlKGRzdCwgcmVn
VDEsIHJlZ1QwKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBh
ZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTc0OCw3ICs3NTQsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvdwogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8
UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCi0gICAgaWYg
KHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZh
ciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBH
bG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUg
PT0gQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKQEAgLTgxMSw2ICs4MTcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODg2LDYg
Kzg5Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIo
c2NvcGUsICpvcGVyYW5kU2xvdCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNo
cG9pbnRTZXQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNl
IER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtOTA1LDcgKzkxMywxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICByZXR1
cm47CiAgICAgd2hpbGUgKGxpbmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rp
b24pOworCisgICAgaWYgKHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAgICAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAg
ICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXgg
Nzc3Y2ZkZTA5M2EyZDEzZGY1ZmU1YzM2NmM5ODIyZjRhZTA4NGZhZS4uMTU2OTIxZTNhY2ViYmVm
YTEzNjgyYzY4YzE5ZDQ1NjE1ZmQxZmVjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKQEAgLTE0NywxMCArMTQ3LDExIEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMoVk0mIHZtKQogICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyID09IDEsICJMTElu
dCBhc3N1bWVzIEdsb2JhbFZhciBSZXN1bHRUeXBlIGlzID09IDEiKTsKICAgICBzdGF0aWNfYXNz
ZXJ0KENsb3N1cmVWYXIgPT0gMiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhciBSZXN1bHRUeXBl
IGlzID09IDIiKTsKICAgICBzdGF0aWNfYXNzZXJ0KExvY2FsQ2xvc3VyZVZhciA9PSAzLCAiTExJ
bnQgYXNzdW1lcyBMb2NhbENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAzIik7Ci0gICAgc3Rh
dGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNCwgIkxM
SW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5
cGUgaXMgPT0gNCIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcyA9PSA1LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIFJlc3VsdFR5cGUgaXMgPT0gNSIpOwotICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA2Iik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChEeW5hbWljID09IDcsICJMTEludCBhc3N1bWVzIER5bmFtaWMgUmVzdWx0VHlwZSBpcyA9PSA3
Iik7CisgICAgc3RhdGljX2Fzc2VydChNb2R1bGVWYXIgPT0gNCwgIkxMSW50IGFzc3VtZXMgTW9k
dWxlVmFyIFJlc3VsdFR5cGUgaXMgPT0gNCIpOworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50
IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09
IDYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
ID09IDcsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJl
c3VsdFR5cGUgaXMgPT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoRHluYW1pYyA9PSA4LCAiTExJ
bnQgYXNzdW1lcyBEeW5hbWljIFJlc3VsdFR5cGUgaXMgPT0gOCIpOwogICAgIAogICAgIEFTU0VS
VChSZXNvbHZlTW9kZUFuZFR5cGU6Om1hc2sgPT0gMHhmZmZmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMjdjYmNjNWQ5OTI4YjYz
NDQxYTRkMDdkYjU3MDUwZTBmOGRhNDBiNi4uZTJkOTI4ZjMxMDZjODk4M2ZjZWUyMTcyZWJiYmVl
ZWUzZGZiNzJiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCkBAIC0xMzYxLDYgKzEzNjEsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2hhbmRsZV9leGNlcHRpb24pCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cmVzb2x2ZV9zY29wZSkKIHsKICAgICBMTElOVF9CRUdJTigpOworICAgIFJlc29sdmVUeXBlIHJl
c29sdmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KHBjWzRdLnUub3BlcmFuZCk7Cisg
ICAgLy8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVlIGFs
aXZlIGluIERGRy4KKyAgICBBU1NFUlRfVU5VU0VEKHJlc29sdmVUeXBlLCByZXNvbHZlVHlwZSAh
PSBNb2R1bGVWYXIpOworCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2Rl
QmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgIEpTU2NvcGUqIHNjb3Bl
ID0gTExJTlRfT1AoMikuUmVnaXN0ZXI6OnNjb3BlKCk7CiAgICAgTExJTlRfUkVUVVJOKEpTU2Nv
cGU6OnJlc29sdmUoZXhlYywgc2NvcGUsIGlkZW50KSk7CkBAIC0xMzc0LDYgKzEzNzgsOCBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fc2NvcGUpCiAgICAgSlNPYmpl
Y3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKICAg
ICBSZXNvbHZlTW9kZUFuZFR5cGUgbW9kZUFuZFR5cGUocGNbNF0udS5vcGVyYW5kKTsKIAorICAg
IEFTU0VSVChtb2RlQW5kVHlwZS50eXBlKCkgIT0gTW9kdWxlVmFyKTsKKwogICAgIFByb3BlcnR5
U2xvdCBzbG90KHNjb3BlKTsKICAgICBpZiAoIXNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aWRlbnQsIHNsb3QpKSB7CiAgICAgICAgIGlmIChtb2RlQW5kVHlwZS5tb2RlKCkgPT0gVGhyb3dJ
Zk5vdEZvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCmluZGV4IDc1YzkxZjg2ODZlNGE1ZTA4NTAxM2JiMTE5MjI1ZWRjOTdh
NDQ1ZTQuLmE3MzE4ZjMzYWFhM2ExOWI4MWI2OGNkMTc1ZGVkMWE5YjUyY2Q1ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE5MiwxMCArMTkyLDExIEBAIGNvbnN0IEdsb2JhbFByb3BlcnR5ID0gMAogY29uc3QgR2xv
YmFsVmFyID0gMQogY29uc3QgQ2xvc3VyZVZhciA9IDIKIGNvbnN0IExvY2FsQ2xvc3VyZVZhciA9
IDMKLWNvbnN0IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDQKLWNvbnN0
IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA1Ci1jb25zdCBDbG9zdXJlVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcyA9IDYKLWNvbnN0IER5bmFtaWMgPSA3Citjb25zdCBNb2R1bGVW
YXIgPSA0Citjb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA1Citj
b25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNgorY29uc3QgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA3Citjb25zdCBEeW5hbWljID0gOAogCiBjb25zdCBS
ZXNvbHZlTW9kZU1hc2sgPSAweGZmZmYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA3ZWY2Yjg3YzE3
MGFkMDgzYjFmNTI5ZGE4ODM2YzAwY2RhNjRiNDc4Li41ZDUxMGNkOGRkZWMzMDg2Y2VlYzYzZWM2
MDkyYjQ2ODRlOTg4YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjA0NSw2ICsyMDQ1LDEzIEBA
IG1hY3JvIGdldEdsb2JhbE9iamVjdChkc3QpCiAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCiBlbmQKIAorbWFjcm8gZ2V0SW1wb3J0ZWRNb2R1bGVTY29wZShkc3QpCisg
ICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KGRzdCwgdDEpCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorZW5kCisKIG1hY3JvIHZhcklu
amVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MApAQCAtMjA4NywxMCArMjA5
NCwxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKICAgICBkaXNwYXRjaCg3KQogCiAuckNs
b3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFy
CiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNwYXRjaCg3KQogCisuck1vZHVsZVZhcjoKKyAg
ICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoMSkKKyAgICBkaXNwYXRjaCg3KQorCiAu
ckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCkBAIC0yMjgxLDEz
ICsyMjkzLDE4IEBAIF9sbGludF9vcF9wdXRfdG9fc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAog
LnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKLSAgICBiaW5lcSB0MCwgQ2xvc3Vy
ZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wRHluYW1pYworICAgIGJpbmVxIHQwLCBDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBNb2R1bGVWYXIKICAgICB3cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnBEeW5hbWljKQogICAg
IGxvYWRWYXJpYWJsZSgxLCB0MiwgdDEsIHQwKQogICAgIHB1dENsb3N1cmVWYXIoKQogICAgIGRp
c3BhdGNoKDcpCiAKKy5wTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5wRHlu
YW1pYworICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRv
bmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorICAgIGRpc3BhdGNoKDcpCisKIC5wRHluYW1pYzoK
ICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfdG9fc2NvcGUpCiAgICAgZGlz
cGF0Y2goNykKQEAgLTIzODEsNCArMjM5OCw0IEBAIF9sbGludF9vcF9sb2FkX2Fycm93ZnVuY3Rp
b25fdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQogICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDIpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorICAgIGRpc3BhdGNoKDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGQyMTUyYTJmMjc3YWRlNTg3OTc2YTFj
M2YxMjAyMzcyOWIzOGE1OWEuLjVjMDBlNjQ2ZjYwMTBlNmJhNjg2MWUzNGNlOWNmNzc0YTVhOGM0
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCkBAIC0xOTE4LDYgKzE5MTgsMTIgQEAgbWFjcm8gZ2V0R2xvYmFsT2Jq
ZWN0KGRzdCkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQogZW5kCiAKK21hY3JvIGdldElt
cG9ydGVkTW9kdWxlU2NvcGUoZHN0KQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQwKQor
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihkc3QsIHQxKQorICAgIHN0b3JlcSB0MCwgW2Nmciwg
dDEsIDhdCitlbmQKKwogbWFjcm8gdmFySW5qZWN0aW9uQ2hlY2soc2xvd1BhdGgpCiAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MF0sIHQwCkBAIC0xOTU3LDEwICsxOTYzLDE1IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3Bl
OgogICAgIGRpc3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcjoKLSAgICBiaW5lcSB0MCwgQ2xvc3Vy
ZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBiaW5lcSB0
MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKICAgICByZXNvbHZlU2NvcGUoKQogICAgIGRpc3Bh
dGNoKDcpCiAKKy5yTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgZ2V0SW1wb3J0ZWRNb2R1bGVTY29w
ZSgxKQorICAgIGRpc3BhdGNoKDcpCisKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNo
ZWNrKC5yRHluYW1pYykKQEAgLTIxNDQsMTMgKzIxNTUsMTggQEAgX2xsaW50X29wX3B1dF90b19z
Y29wZToKICAgICBkaXNwYXRjaCg3KQogCiAucENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBE
eW5hbWljCisgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
cE1vZHVsZVZhcgogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKICAgICB2YXJJbmpl
Y3Rpb25DaGVjaygucER5bmFtaWMpCiAgICAgbG9hZFZhcmlhYmxlKDEsIHQwKQogICAgIHB1dENs
b3N1cmVWYXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5wTW9kdWxlVmFyOgorICAgIGJpbmVxIHQw
LCBNb2R1bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93
X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorICAgIGRpc3BhdGNo
KDcpCisKIC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRf
dG9fc2NvcGUpCiAgICAgZGlzcGF0Y2goNykKQEAgLTIyMzMsNCArMjI0OSw0IEBAIF9sbGludF9v
cF9sb2FkX2Fycm93ZnVuY3Rpb25fdGhpczoKICAgICBsb2FkcCBKU0Fycm93RnVuY3Rpb246Om1f
Ym91bmRUaGlzW3QwXSwgdDAKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAg
c3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKyAgICBkaXNwYXRjaCgyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBmNjIzOGZiOTY4MDJiZTUzN2U5MWFkYzI2
YjgyZDg5MGI5NTQwMzJkLi5jMWEzY2MyYjFmMDY4MWUwNTk5MmQ1Y2Q0ZTYyNmJlODgwZDRiOTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNw
cApAQCAtODIsNyArODIsOSBAQCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgp
LT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEpTTW9kdWxlUmVj
b3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLT50
cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOworICAgIEFTU0VSVChvcHRpb25hbElt
cG9ydEVudHJ5KTsKKyAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkmIGltcG9y
dEVudHJ5ID0gKm9wdGlvbmFsSW1wb3J0RW50cnk7CiAgICAgaWYgKHZhcmlhYmxlLmlzSW1wb3J0
ZWROYW1lc3BhY2UoKSkgewogICAgICAgICAvLyBFeHBvcnRlZCBuYW1lc3BhY2UgYmluZGluZy4K
ICAgICAgICAgLy8gaW1wb3J0ICogYXMgbmFtZXNwYWNlIGZyb20gIm1vZCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDc1ODA4
MzMyZTRkZDQwODQ0MmEwMzQzN2Q1NWMxMDVhY2MyOTVhYjEuLjM1YjYyOTc5MjA3ZWZhYzg3NDU2
ZDc3MjY0YjRiMGZhZmZlODYyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMjcwLDYgKzI3MCwxMiBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKQogICAgIFRIUk9XKGNyZWF0ZVREWkVycm9y
KGV4ZWMpKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2Rl
X3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQoreworICAgIEJFR0lOKCk7CisgICAgVEhS
T1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ub3Qp
CiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKaW5kZXggMDY3ZGYwYzM4ZTkxMjBiZjcwN2NmZGU0MWMzZWZiZjJhNjg3
MmVlMy4uMzAwOTg1NWZmNmJhMmQxNTI4M2RiOGY4NWYzY2U0NTdkZGIyODY2NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTE4OSw2
ICsxODksNyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VudGVyKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2NhbGxlZSk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF90aHJvd190ZHpfZXJyb3IpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJv
d19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25vdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2VxKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmVxKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCAwMDI4NWE2NzU3NzM0NzQ3OWJkOWE5
YjdiOTM5NTVjMjY0MzQ2NTdjLi4xYjkzZThmZDEyNTdkMGQ3OGFhNzkzNjg4MTEyNGNhZjY5OTQ0
YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0yMTksNiAr
MjE5LDEwIEBAIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bnRheCBlcnJvciIpKSk7CiB9CiAKK0pTT2JqZWN0KiB0
aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRh
eEVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKK30KIAogSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yLmgKaW5kZXggZWMzMGEzZGM0NjZlMWViNDQ5YjNlNTg1YWE4MDQ5MmVmMTk4
NDY0Ny4uZjQ2ZmUzNzZmYjg2YzY1MmU0YWVjODQ5MDEzY2VhMmRmM2M4MDFiNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCkBAIC03NCw2ICs3NCw3IEBAIEpTT2JqZWN0KiBh
ZGRFcnJvckluZm8oRXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3Qg
U291cmNlQ29kZSYpCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgY3JlYXRlIGFuIHRocm93IGFu
IGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdlLgogSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7CiBpbmxpbmUgSlNPYmplY3QqIHRocm93UmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0
YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gc3RhdGUtPnZtKCkudGhy
b3dFeGNlcHRpb24oc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkp
OyB9CiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVk
SlNWYWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
aW5kZXggYjFkMDA1NWVjZjAyNDM0MjlmYWYxOWVkYWZmOGZlMDY1MzliNmQ3NS4uNDE3MDQ3NGIz
NzBhZjIyMjVlYjU4MmExZGM4NWQ0NTdkYWNiMmVhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTU5Niw2ICs1OTYsMTEgQEAgdm9pZCBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xlYXJDb2RlKCkKICAgICBCYXNlOjpjbGVhckNvZGUoKTsK
IH0KIAorU3ltYm9sVGFibGUqIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjptb2R1bGVFbnZpcm9u
bWVudFN5bWJvbFRhYmxlKCkKK3sKKyAgICByZXR1cm4ganNDYXN0PFN5bWJvbFRhYmxlKj4obV9t
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLT5nZXRDb25zdGFudChtX3VubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jay0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJP
ZmZzZXQoKSkpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpi
YXNlbGluZUNvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAg
RnVuY3Rpb25Db2RlQmxvY2sqIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAppbmRleCBjZGNlYjMwNDI2NWY5NzZkMDA3N2FlZmQ2NTdiNWI3YmFiYmYy
YTE2Li5jY2QzOTEyZGEwNDMyM2IzNzk5NDcyMTVmOGFlODg1MjI3MjAwMDYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC01Nyw2ICs1Nyw5IEBAIGNs
YXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xh
c3MgSlNTY29wZTsKIGNsYXNzIFdlYkFzc2VtYmx5Q29kZUJsb2NrOworY2xhc3MgTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jazsKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworY2xhc3MgSlNTY29wZTsKIAog
ZW51bSBDb21waWxhdGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGls
YXRpb24gfTsKIApAQCAtNTg5LDYgKzU5Miw5IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIEV4ZWN1dGFibGVJbmZv
IGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3Rp
dmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgZmFsc2UpOyB9CiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCisgICAgLy8gUmV0dXJuIHRoZSBz
eW1ib2wgdGFibGUgaW4gdGhlIGxpbmtlZCBjb2RlIGJsb2NrLgorICAgIFN5bWJvbFRhYmxlKiBt
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIFNjcmlwdEV4ZWN1dGFibGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA0ZTA5NGZkNjc5YjlkNWJjZjRiODg2ZjM2MDJj
NmMxYjBmYjIwOTFhLi41YThhNzM1MTcxNjVmY2QyYTc1ZjhjY2RkNTM0NGM0MzY3MWIxMTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CkBAIC04NCw2ICs4NCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAu
aCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNOYXRpdmVT
dGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKQEAgLTMxMiw2ICszMTMsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3R5cGVkQXJyYXlzW3Rv
SW5kZXgoVHlwZURhdGFWaWV3KV0uc3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNEYXRhVmlldzo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFW
aWV3KV0ucHJvdG90eXBlLmdldCgpKSk7CiAgICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzKSk7CisgICAgbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwog
ICAgIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJpY3RF
dmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAg
IG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5zZXQobV92bSwgdGhpcywgRGVidWdnZXJTY29wZTo6
Y3JlYXRlU3RydWN0dXJlKG1fdm0sIHRoaXMpKTsKICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTV2l0aFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVs
bCgpKSk7CkBAIC03OTEsNiArNzkzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7
CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RpcmVjdEFyZ3VtZW50
c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2NvcGVkQXJn
dW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vdXRP
ZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMWNhMzFiN2IxMjZmYjJlZmQzYjcxOTBlYWY3NjRm
NWNkYTA5OTFmZS4uZTMzNDAwZWFlMmQ5YmZkYTc3ZGIxYmE2NDRiMWJlOTZmNmNlODY0MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0y
MzIsNiArMjMyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2xleGljYWxFbnZp
cm9ubWVudFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZUVu
dmlyb25tZW50U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGlyZWN0
QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc2NvcGVk
QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb3V0T2ZC
YW5kQXJndW1lbnRzU3RydWN0dXJlOwpAQCAtNDQ5LDYgKzQ1MCw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVy
ZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBtb2R1
bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1l
bnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGRpcmVjdEFyZ3VtZW50c1N0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb3V0
T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkJhbmRBcmd1
bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCmluZGV4IDk1MTYzMThkNzAxNjllM2RkOGMy
YmVmNzgzMzEyNTY3NWM1ZTIxOGIuLjQ0OGVhNDMxYjdiN2M5ODI2MmQ0MTBiZjAxZjg0OTM3MWQ4
YWI1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNh
bEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhp
Y2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhpY2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNF
bnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgorcHJvdGVjdGVkOgogICAgIEpTTGV4aWNhbEVu
dmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CiAgICAg
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3MDE3MzEyYzY2ZDYyNTM3Njk3MjQwMTA5
ZTA3YmQwMDI3NjQ2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorCisjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnNfaW5mbyA9IHsgIkpTTW9kdWxlRW52aXJvbm1l
bnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTTW9kdWxlRW52aXJv
bm1lbnQpIH07CisKK0pTTW9kdWxlRW52aXJvbm1lbnQqIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNy
ZWF0ZSgKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50
U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpT
TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgLy8gSlNMZXhpY2FsRW52aXJvbm1l
bnQgKHByZWNpc2VseSwgSlNFbnZpcm9ubWVudFJlY29yZCkgaGFzIHRoZSBzdG9yYWdlIHRvIHN0
b3JlIHRoZSB2YXJpYWJsZSBzbG90cyBhZnRlciB0aGUgaXRzIGNsYXNzIHN0b3JhZ2UuCisgICAg
Ly8gQmVjYXVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB2YXJpYWJsZSBzbG90cyBhcmUgZml4ZWQgaW4g
dGhlIEpTRW52aXJvbm1lbnRSZWNvcmQsIGluaGVyaXR0aW5nIHRoZXNlIGNsYXNzIGFuZCBhZGRp
bmcgbmV3IG1lbWJlciBmaWVsZCBpcyBub3QgYWxsb3dlZCwKKyAgICAvLyB0aGUgbmV3IG1lbWJl
ciB3aWxsIG92ZXJsYXAgdGhlIHZhcmlhYmxlIHNsb3RzLgorICAgIC8vIFRvIGtlZXAgdGhlIEpT
TW9kdWxlRW52aXJvbm1lbnQgY29tcGF0aWJsZSB0byB0aGUgSlNMZXhpY2FsRW52aXJvbm1lbnQg
YnV0IGFkZCB0aGUgbmV3IG1lbWJlciB0byBzdG9yZSB0aGUgSlNNb2R1bGVSZWNvcmQsIHdlIGFk
ZGl0aW9uYWxseSBhbGxvY2F0ZQorICAgIC8vIHRoZSBzdG9yYWdlIGFmdGVyIHRoZSB2YXJpYWJs
ZSBzbG90cy4KKyAgICAvLworICAgIC8vIEpTTGV4aWNhbEVudmlyb25tZW50OgorICAgIC8vICAg
ICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF0KKyAgICAvLworICAg
IC8vIEpTTW9kdWxlRW52aXJvbm1lbnQ6CisgICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1l
bnQgXVsgdmFyaWFibGUgc2xvdHMgXVsgYWRkaXRpb25hbCBzbG90cyBmb3IgSlNNb2R1bGVFbnZp
cm9ubWVudCBdCisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogcmVzdWx0ID0KKyAgICAgICAgbmV3
ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8SlNNb2R1
bGVFbnZpcm9ubWVudD4odm0uaGVhcCwgSlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNp
emUoc3ltYm9sVGFibGUpKSkKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCh2bSwgc3RydWN0
dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0
aW9uKHZtLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
VmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUpOworICAgIHRoaXMtPm1vZHVs
ZVJlY29yZFNsb3QoKS5zZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgSlNN
b2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVj
dC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPnNjb3BlU2l6ZSgpKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkU2xvdCgpKTsKK30K
KworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIEpTTW9kdWxlUmVjb3JkOjpS
ZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2
ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQo
KSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRp
b246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgIC8vIFdoZW4gcmVzb2x2ZUltcG9ydCByZXNv
bHZlcyB0aGUgcmVzb2x1dGlvbiwgdGhlIGltcG9ydGVkIG1vZHVsZSBlbnZpcm9ubWVudCBtdXN0
IGhhdmUgdGhlIGJpbmRpbmcuCisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9ydGVk
TW9kdWxlRW52aXJvbm1lbnQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZC0+bW9kdWxlRW52aXJv
bm1lbnQoKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHJlZGlyZWN0U2xvdChpbXBvcnRlZE1vZHVs
ZUVudmlyb25tZW50KTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBpbXBvcnRlZE1vZHVsZUVudmly
b25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KGltcG9y
dGVkTW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHJlc29sdXRpb24ubG9jYWxOYW1lLCByZWRpcmVj
dFNsb3QpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAg
QVNTRVJUKHJlZGlyZWN0U2xvdC5pc1ZhbHVlKCkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
cmVkaXJlY3RTbG90LmdldFZhbHVlKGV4ZWMsIHJlc29sdXRpb24ubG9jYWxOYW1lKTsKKyAgICAg
ICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpc09iamVjdCwgcmVkaXJlY3RTbG90LmF0dHJpYnV0ZXMoKSwgdmFsdWUpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCit2b2lkIEpTTW9kdWxl
RW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lc0FycmF5LCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBpZiAocHJvcGVy
dHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPmltcG9ydEVudHJp
ZXMoKSkgeworICAgICAgICAgICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5JiBp
bXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBpZiAoIWltcG9ydEVudHJ5Lmlz
TmFtZXNwYWNlKGV4ZWMtPnZtKCkpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXNBcnJh
eS5hZGQoaW1wb3J0RW50cnkubG9jYWxOYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZXNBcnJheSwgbW9kZSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNNb2R1
bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4o
Y2VsbCk7CisgICAgLy8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAg
SlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVs
ZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywg
cHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVs
ZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNN
b2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNNb2R1bGVFbnZpcm9u
bWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7Cisg
ICAgLy8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgSlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgp
LT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlO
YW1lLnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6
UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdlZmE2MjYzYjJi
Mjc0OWY3ODhjMGE3ZjA3M2Y3Njc3YTAwOWIwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuaApAQCAtMCwwICsxLDEw
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorI2RlZmluZSBKU01vZHVsZUVudmlyb25tZW50X2gK
KworI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVS
ZWNvcmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFJlZ2lzdGVyOworCitjbGFzcyBK
U01vZHVsZUVudmlyb25tZW50IDogcHVibGljIEpTTGV4aWNhbEVudmlyb25tZW50IHsKKyAgICBm
cmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0xleGljYWxFbnZpcm9ubWVudCBCYXNlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
czsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1
bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUs
IFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQpCisgICAgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlLCBp
bml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZNb2R1bGVSZWNvcmQoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAg
c2l6ZV90IG9mZnNldCA9IEJhc2U6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgQVNTRVJUKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpT
TW9kdWxlUmVjb3JkPik+KG9mZnNldCkgPT0gb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG9mZnNl
dDsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZk1vZHVsZVJlY29y
ZChzeW1ib2xUYWJsZSkgKyBzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPik7Cisg
ICAgfQorCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCgpCisgICAgeworICAgICAg
ICByZXR1cm4gbW9kdWxlUmVjb3JkU2xvdCgpLmdldCgpOworICAgIH0KKworICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGRl
bGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7CisKK3ByaXZh
dGU6CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBT
eW1ib2xUYWJsZSopOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTVmFsdWUgaW5p
dGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgV3JpdGVCYXJyaWVyQmFzZTxKU01v
ZHVsZVJlY29yZD4mIG1vZHVsZVJlY29yZFNsb3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuICpi
aXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxKU01vZHVsZVJlY29yZD4qPihiaXR3aXNlX2Nh
c3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFibGUoKSkpOwor
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKK307CisKK2lubGluZSBKU01vZHVsZUVudmlyb25tZW50OjpKU01vZHVsZUVudmlyb25t
ZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwg
U3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjdXJy
ZW50U2NvcGUsIHN5bWJvbFRhYmxlKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEpTTW9kdWxlRW52aXJvbm1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDdiNjA2Mzc0YTYwNjBiNzcwMjBjNGVm
NDUxMmU5MjQ1ZTAzZjNmYzUuLmUzOTI1ZWYwMGQ0YWM1NTBhNGQwOTg0NWI5MzUwZDYyODU5ZGY5
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUg
IkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKQEAgLTYwLDEwICs2MSw0OSBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNN
b2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmly
b25tZW50KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVwZW5kZW5j
aWVzTWFwKTsKIH0KIAordm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxl
KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9yZXF1ZXN0ZWRNb2R1bGVz
LmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZFN0
YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fc3Rh
ckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKwordm9pZCBKU01vZHVs
ZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQoreworICAg
IGJvb2wgaXNOZXdFbnRyeSA9IG1faW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmlt
cGwoKSwgZW50cnkpLmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBp
c05ld0VudHJ5KTsgLy8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBwYXJzZXIuCit9CisKK3Zv
aWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRy
eSkKK3sKKyAgICBib29sIGlzTmV3RW50cnkgPSBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4
cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSkuaXNOZXdFbnRyeTsKKyAgICBBU1NFUlRfVU5VU0VEKGlz
TmV3RW50cnksIGlzTmV3RW50cnkpOyAvLyBUaGlzIGlzIGd1YXJhbnRlZWQgYnkgdGhlIHBhcnNl
ci4KK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0
cmluZ0ltcGwqIGxvY2FsTmFtZSkgLT4gT3B0aW9uYWw8SW1wb3J0RW50cnk+Cit7CisgICAgY29u
c3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSk7CisgICAg
aWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50cmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgcmV0dXJuIE9wdGlvbmFsPEltcG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUp
OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjp0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3Ry
aW5nSW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0aW9uYWw8RXhwb3J0RW50cnk+Cit7CisgICAgY29u
c3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5maW5kKGV4cG9ydE5hbWUpOworICAg
IGlmIChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJpZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVl
KTsKK30KKwogYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNv
bnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkK
IHsKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRl
bnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUgfTsKQEAgLTc5LDYg
KzExOSwyMSBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgYwogICAgIHJldHVybiBFeHBvcnRFbnRy
eSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJ
ZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07CiB9CiAKK2F1dG8gSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdXRpb246Om5vdEZvdW5kKCkgLT4gUmVzb2x1dGlvbgoreworICAg
IHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6Tm90Rm91bmQsIG51bGxwdHIsIElkZW50aWZpZXIo
KSB9OworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjplcnJvcigpIC0+IFJl
c29sdXRpb24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6OkVycm9yLCBudWxscHRy
LCBJZGVudGlmaWVyKCkgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6
YW1iaWd1b3VzKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlw
ZTo6QW1iaWd1b3VzLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30KKwogc3RhdGljIEpTVmFs
dWUgaWRlbnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSkKQEAgLTkzLDYg
KzE0OCwyNzkgQEAgSlNNb2R1bGVSZWNvcmQqIEpTTW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUlt
cG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QKICAgICByZXR1cm4ganNDYXN0PEpT
TW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAidmFsdWUiKSkpOwogfQogCithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKSAtPiBSZXNvbHV0aW9u
Cit7CisgICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSB0cnlH
ZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuaW1wbCgpKTsKKyAgICBpZiAoIW9wdGlvbmFsSW1wb3J0
RW50cnkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgpOworCisgICAgY29u
c3QgSW1wb3J0RW50cnkmIGltcG9ydEVudHJ5ID0gKm9wdGlvbmFsSW1wb3J0RW50cnk7CisgICAg
aWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4ZWMtPnZtKCkpKQorICAgICAgICByZXR1cm4g
UmVzb2x1dGlvbjo6bm90Rm91bmQoKTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1v
ZHVsZSA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxl
UmVxdWVzdCk7CisgICAgcmV0dXJuIGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMs
IGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOworfQorCitzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5IHsKKyAg
ICBSZXNvbHZlUXVlcnkoSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCwgVW5pcXVlZFN0cmlu
Z0ltcGwqIGV4cG9ydE5hbWUpCisgICAgICAgIDogbW9kdWxlUmVjb3JkKG1vZHVsZVJlY29yZCkK
KyAgICAgICAgLCBleHBvcnROYW1lKGV4cG9ydE5hbWUpCisgICAgeworICAgIH0KKworICAgIFJl
c29sdmVRdWVyeShKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkLCBjb25zdCBJZGVudGlmaWVy
JiBleHBvcnROYW1lKQorICAgICAgICA6IFJlc29sdmVRdWVyeShtb2R1bGVSZWNvcmQsIGV4cG9y
dE5hbWUuaW1wbCgpKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBF
bXB0eVZhbHVlIH07CisgICAgUmVzb2x2ZVF1ZXJ5KEVtcHR5VmFsdWVUYWcpCisgICAgeworICAg
IH0KKworICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRlZFZhbHVlIH07CisgICAgUmVz
b2x2ZVF1ZXJ5KERlbGV0ZWRWYWx1ZVRhZykKKyAgICAgICAgOiBtb2R1bGVSZWNvcmQobnVsbHB0
cikKKyAgICAgICAgLCBleHBvcnROYW1lKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAg
IHsKKyAgICB9CisKKyAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gIWV4cG9ydE5hbWU7CisgICAgfQorCisgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZXhwb3J0TmFtZS5pc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpOworICAgIH0KKworICAgIC8vIFRoZSBtb2R1bGUgcmVjb3JkIGlzIG5vdCBtYXJr
ZWQgZnJvbSB0aGUgR0MuIEJ1dCB0aGVzZSByZWNvcmRzIGFyZSByZWFjaGFibGUgZnJvbSB0aGUg
SlNHbG9iYWxPYmplY3QuCisgICAgLy8gU28gd2UgZG9uJ3QgY2FyZSB0aGUgcmVhY2hhYmlsaXR5
IHRvIHRoaXMgcmVjb3JkLgorICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQ7CisgICAg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBleHBvcnROYW1lOworfTsKKworc3RydWN0IFJlc29s
dmVRdWVyeUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlc29sdmVRdWVy
eSYpOworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYsIGNvbnN0IFJl
c29sdmVRdWVyeSYpOworICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5
T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK2lubGluZSB1bnNpZ25lZCBSZXNvbHZlUXVlcnlIYXNo
OjpoYXNoKGNvbnN0IFJlc29sdmVRdWVyeSYgcXVlcnkpCit7CisgICAgcmV0dXJuIFdURjo6UHRy
SGFzaDxKU01vZHVsZVJlY29yZCo+OjpoYXNoKHF1ZXJ5Lm1vZHVsZVJlY29yZCkgKyBJZGVudGlm
aWVyUmVwSGFzaDo6aGFzaChxdWVyeS5leHBvcnROYW1lKTsKK30KKworaW5saW5lIGJvb2wgUmVz
b2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5JiBsaHMsIGNvbnN0IFJlc29s
dmVRdWVyeSYgcmhzKQoreworICAgIHJldHVybiBsaHMubW9kdWxlUmVjb3JkID09IHJocy5tb2R1
bGVSZWNvcmQgJiYgbGhzLmV4cG9ydE5hbWUgPT0gcmhzLmV4cG9ydE5hbWU7Cit9CisKK3N0YXRp
YyBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0TG9vcChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFJlc29sdmVRdWVyeSYgcm9vdCkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtcmVzb2x2ZWV4cG9ydAorICAg
IC8vIFRoaXMgZnVuY3Rpb24gYXZvaWRzIEMrKyByZWN1cnNpb24gb2YgdGhlIG5haXZlIFJlc29s
dmVFeHBvcnQgaW1wbGVtZW50YXRpb24uCisgICAgLy8gRmxhdHRlbiB0aGUgcmVjdXJzaW9uIHRv
IHRoZSBsb29wIHdpdGggdGhlIHRhc2sgcXVldWUgYW5kIGZyYW1lcy4KKyAgICAvLworICAgIC8v
IDEuIHBlbmRpbmdUYXNrcworICAgIC8vICAgICBXZSBlbnF1ZXVlIHRoZSByZWN1cnNpdmUgcmVz
b2x2ZUV4cG9ydCBjYWxsIHRvIHRoaXMgcXVldWUgdG8gYXZvaWQgcmVjdXJzaXZlIGNhbGxzIGlu
IEMrKy4KKyAgICAvLyAgICAgVGhlIHRhc2sgaGFzIDMgdHlwZXMuICgxKSBRdWVyeSwgKDIpIElu
ZGlyZWN0RmFsbGJhY2sgYW5kICgzKSBHYXRoZXJTdGFycy4KKyAgICAvLyAgICAgKDEpIFF1ZXJ5
CisgICAgLy8gICAgICAgICBRdWVyeWluZyB0aGUgcmVzb2x1dGlvbiB0byB0aGUgY3VycmVudCBt
b2R1bGUuCisgICAgLy8gICAgICgyKSBJbmRpcmVjdEZhbGxiYWNrCisgICAgLy8gICAgICAgICBF
eGFtaW5lIHRoZSByZXN1bHQgb2YgdGhlIGluZGlyZWN0IGV4cG9ydCByZXNvbHV0aW9uLiBPbmx5
IHdoZW4gdGhlIGluZGlyZWN0IGV4cG9ydCByZXNvbHV0aW9uIGZhaWxzLAorICAgIC8vICAgICAg
ICAgd2UgbG9vayBpbnRvIHRoZSBzdGFyIGV4cG9ydHMuIChzdGVwIDUtYS12aSkuCisgICAgLy8g
ICAgICgzKSBHYXRoZXJTdGFycworICAgIC8vICAgICAgICAgRXhhbWluZSB0aGUgcmVzdWx0IG9m
IHRoZSBzdGFyIGV4cG9ydCByZXNvbHV0aW9ucy4KKyAgICAvLworICAgIC8vIDIuIGZyYW1lcwor
ICAgIC8vICAgICBXaGVuIHRoZSBzcGVjIGNhbGxzIHRoZSByZXNvbHZlRXhwb3J0IHJlY3Vyc2l2
ZWx5LCBpbnN0ZWFkIHdlIGFwcGVuZCB0aGUgZnJhbWUKKyAgICAvLyAgICAgKHRoYXQgaG9sZHMg
dGhlIHJlc3VsdCByZXNvbHV0aW9uKSB0byB0aGUgZnJhbWVzIGFuZCBlbnF1ZXVlIHRoZSB0YXNr
IHRvIHRoZSBwZW5kaW5nVGFza3MuCisgICAgLy8gICAgIFRoZSBlbnRyeSBpbiB0aGUgZnJhbWVz
IG1lYW5zIHRoZSAqbG9jYWwqIHJlc29sdXRpb24gcmVzdWx0IG9mIHRoZSBzcGVjaWZpYyByZWN1
cnNpdmUgcmVzb2x2ZUV4cG9ydC4KKyAgICAvLworICAgIC8vIFdlIHNob3VsZCBtYWludGFpbiB0
aGUgbG9jYWwgcmVzb2x1dGlvbiByZXN1bHQgaW5zdGVhZCBvZiBob2xkaW5nIHRoZSBnbG9iYWwg
cmVzb2x1dGlvbiByZXN1bHQgb25seS4KKyAgICAvLyBGb3IgZXhhbXBsZSwKKyAgICAvLworICAg
IC8vICAgICBzdGFyCisgICAgLy8gKDEpIC0tLT4gKDIpICJSZXNvbHZlIgorICAgIC8vICAgICAg
fAorICAgIC8vICAgICAgfAorICAgIC8vICAgICAgKy0+ICgzKSAiTm90Rm91bmQiCisgICAgLy8g
ICAgICB8CisgICAgLy8gICAgICB8ICAgICAgIHN0YXIKKyAgICAvLyAgICAgICstPiAoNCkgLS0t
PiAoNSkgIlJlc29sdmUiIFtoZXJlXQorICAgIC8vICAgICAgICAgICAgICAgfAorICAgIC8vICAg
ICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgKy0+ICg2KSAiRXJyb3IiCisgICAg
Ly8KKyAgICAvLyBDb25zaWRlciB0aGUgYWJvdmUgZ3JhcGguIFRoZSBudW1iZXJzIHJlcHJlc2Vu
dHMgdGhlIG1vZHVsZXMuIE5vdyB3ZSBhcmUgW2hlcmVdLgorICAgIC8vIElmIHdlIG9ubHkgaG9s
ZCB0aGUgZ2xvYmFsIHJlc29sdXRpb24gcmVzdWx0IGR1cmluZyB0aGUgcmVzb2x2ZUV4cG9ydCBv
cGVyYXRpb24sIFtoZXJlXSwKKyAgICAvLyB3ZSBkZWNpZGUgdGhlIGVudGlyZSByZXN1bHQgb2Yg
cmVzb2x2ZUV4cG9ydCBpcyAiQW1iaWd1b3VzIiwgYmVjYXVzZSB0aGVyZSBhcmUgbXVsdGlwbGUK
KyAgICAvLyAiUmVzbG92ZSIgKGluIG1vZHVsZSAoMikgYW5kICg1KSkuIEhvd2V2ZXIsIHRoaXMg
c2hvdWxkIGJlY29tZSAiRXJyb3IiIGJlY2F1c2UgKDYpIHdpbGwKKyAgICAvLyBwcm9wYWdhdGUg
IkVycm9yIiBzdGF0ZSB0byB0aGUgKDQpLCAoNCkgd2lsbCBiZWNvbWUgIkVycm9yIiBhbmQgdGhl
biwgKDEpIHdpbGwgYmVjb21lCisgICAgLy8gIkVycm9yIi4gV2Ugc2hvdWxkIGFnZ3JlZ2F0ZSB0
aGUgcmVzdWx0cyBhdCB0aGUgc3RhciBleHBvcnRzIHBvaW50ICgoNCkgYW5kICgxKSkuCisgICAg
Ly8KKyAgICAvLyBVc3VhbGx5LCBib3RoICJFcnJvciIgYW5kICJBbWJpZ3VvdXMiIHN0YXRlcyB3
aWxsIHRocm93IHRoZSBzeW50YXggZXJyb3IuIFNvIGV4Y2VwdCBmb3IgdGhlIGNvbnRlbnQgb2Yg
dGhlCisgICAgLy8gZXJyb3IgbWVzc2FnZSwgdGhlcmUgYXJlIG5vIGRpZmZlcmVuY2UuIChBbmQg
aWYgd2UgZml4IHRoZSAoNikgdGhhdCByYWlzZXMgIkVycm9yIiwgbmV4dCwgaXQgd2lsbCBwcm9k
dWNlCisgICAgLy8gdGhlICJBbWJpZ3VvdXMiIGVycm9yIGR1ZSB0byAoNSkuIEFueXdheSwgdXNl
ciBuZWVkIHRvIGZpeCB0aGUgYm90aC4gU28gd2hpY2ggZXJyb3Igc2hvdWxkIGJlIHJhaXNlZCBh
dCBmaXJzdAorICAgIC8vIGRvZXNuJ3QgbWF0dGVyIHNvIG11Y2guCisgICAgLy8KKyAgICAvLyBI
b3dldmVyLCB0aGlzIG1heSBiZWNvbWUgdGhlIHByb2JsZW0gdW5kZXIgdGhlIG1vZHVsZSBuYW1l
c3BhY2UgY3JlYXRpb24uCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3Jn
L2VjbWEtMjYyLzYuMC8jc2VjLWdldG1vZHVsZW5hbWVzcGFjZQorICAgIC8vIHNlY3Rpb24gMTUu
Mi4xLjE4LCBzdGVwIDMtZC1paQorICAgIC8vIEhlcmUsIHdlIGRpc3Rpbmd1aXNoICJBbWJpZ3Vv
dXMiIGFuZCAiRXJyb3IiLiBXaGVuICJFcnJvciIgc3RhdGUgaXMgcHJvZHVjZWQsIHdlIG5lZWQg
dG8gdGhyb3cgdGhlIHByb3BhZ2F0ZWQgZXJyb3IuCisgICAgLy8gQnV0IGlmICJBbWJpZ3VvdXMi
IHN0YXRlIGNvbWVzLCB3ZSBqdXN0IGlnbm9yZSB0aGUgcmVzdWx0LgorICAgIC8vIFRvIGZvbGxv
dyB0aGUgcmVxdWlyZW1lbnQgc3RyaWN0bHksIGluIHRoaXMgaW1wbGVtZW50YXRpb24sIHdlIGtl
ZXAgdGhlIGxvY2FsIHJlc29sdXRpb24gcmVzdWx0IHRvIHByb2R1Y2UgdGhlCisgICAgLy8gY29y
cmVjdCByZXN1bHQgdW5kZXIgdGhlIGFib3ZlIGNvbXBsZXggY2FzZXMuCisKKyAgICB1c2luZyBS
ZXNvbHV0aW9uID0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb247CisgICAgdHlwZWRlZiBXVEY6
Okhhc2hTZXQ8UmVzb2x2ZVF1ZXJ5LCBSZXNvbHZlUXVlcnlIYXNoLCBXVEY6OkN1c3RvbUhhc2hU
cmFpdHM8UmVzb2x2ZVF1ZXJ5Pj4gUmVzb2x2ZVNldDsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBR
dWVyeSwgSW5kaXJlY3RGYWxsYmFjaywgR2F0aGVyU3RhcnMgfTsKKyAgICBzdHJ1Y3QgVGFzayB7
CisgICAgICAgIFJlc29sdmVRdWVyeSBxdWVyeTsKKyAgICAgICAgVHlwZSB0eXBlOworICAgIH07
CisKKyAgICBWZWN0b3I8VGFzaywgOD4gcGVuZGluZ1Rhc2tzOworICAgIFJlc29sdmVTZXQgcmVz
b2x2ZVNldDsKKyAgICBIYXNoU2V0PEpTTW9kdWxlUmVjb3JkKj4gc3RhclNldDsKKyAgICBWZWN0
b3I8UmVzb2x1dGlvbiwgOD4gZnJhbWVzOworCisgICAgZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9u
Ojpub3RGb3VuZCgpKTsKKworICAgIC8vIENhbGwgd2hlbiB0aGUgcXVlcnkgaXMgbm90IHJlc29s
dmVkIGluIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAgICAvLyBJdCB3aWxsIGVucXVldWUgdGhlIHN0
YXIgcmVzb2x1dGlvbiByZXF1ZXN0cy4gUmV0dXJuICJmYWxzZSIgaWYgdGhlIGVycm9yIG9jY3Vy
cy4KKyAgICBhdXRvIHJlc29sdmVOb25Mb2NhbCA9IFsmXShjb25zdCBSZXNvbHZlUXVlcnkmIHF1
ZXJ5KSAtPiBib29sIHsKKyAgICAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLXJlc29sdmVleHBvcnQKKyAgICAgICAgLy8gc2VjdGlvbiAx
NS4yLjEuMTYuMywgc3RlcCA2CisgICAgICAgIC8vIElmIHRoZSAiZGVmYXVsdCIgbmFtZSBpcyBu
b3QgcmVzb2x2ZWQgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLCB3ZSBuZWVkIHRvIHRocm93IGFuIGVy
cm9yIGFuZCBzdG9wIHJlc29sdXRpb24gaW1tZWRpYXRlbHksCisgICAgICAgIC8vIFJhdGlvbmFs
ZSB0byB0aGlzIGVycm9yOiBBIGRlZmF1bHQgZXhwb3J0IGNhbm5vdCBiZSBwcm92aWRlZCBieSBh
biBleHBvcnQgKi4KKyAgICAgICAgaWYgKHF1ZXJ5LmV4cG9ydE5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmRlZmF1bHRLZXl3b3JkLmltcGwoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAvLyBzdGVwIDcsIElmIGV4cG9ydFN0YXJTZXQgY29udGFpbnMgbW9kdWxl
LCB0aGVuIHJldHVybiBudWxsLgorICAgICAgICBpZiAoIXN0YXJTZXQuYWRkKHF1ZXJ5Lm1vZHVs
ZVJlY29yZCkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAg
IC8vIEVucXVldWUgdGhlIHRhc2sgdG8gZ2F0aGVyIHRoZSByZXN1bHRzIG9mIHRoZSBzdGFycy4K
KyAgICAgICAgLy8gQW5kIGFwcGVuZCB0aGUgbmV3IFJlc29sdXRpb24gZnJhbWUgdG8gZ2F0aGVy
IHRoZSBsb2NhbCByZXN1bHQgb2YgdGhlIHN0YXJzLgorICAgICAgICBwZW5kaW5nVGFza3MuYXBw
ZW5kKFRhc2sgeyBxdWVyeSwgVHlwZTo6R2F0aGVyU3RhcnMgfSk7CisgICAgICAgIGZyYW1lcy5h
cHBlbmQoUmVzb2x1dGlvbjo6bm90Rm91bmQoKSk7CisKKyAgICAgICAgLy8gRW5xdWV1ZSB0aGUg
dGFza3MgaW4gcmV2ZXJzZSBvcmRlci4KKyAgICAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcXVl
cnkubW9kdWxlUmVjb3JkLT5zdGFyRXhwb3J0RW50cmllcygpLnJiZWdpbigpLCBlbmQgPSBxdWVy
eS5tb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkucmVuZCgpOyBpdGVyYXRvciAhPSBl
bmQ7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIHN0YXJNb2R1bGVOYW1lID0gKml0ZXJhdG9yOworICAgICAgICAgICAgSlNNb2R1bGVS
ZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0gcXVlcnkubW9kdWxlUmVjb3JkLT5ob3N0UmVz
b2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rhck1v
ZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7
IFJlc29sdmVRdWVyeShpbXBvcnRlZE1vZHVsZVJlY29yZCwgcXVlcnkuZXhwb3J0TmFtZS5nZXQo
KSksIFR5cGU6OlF1ZXJ5IH0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH07CisKKyAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgcmVzb2x1dGlvbiB2YWx1ZSBvZiB0aGUg
dG9wIGZyYW1lLgorICAgIGF1dG8gY3VycmVudFRvcCA9IFsmXSAoKSAtPiBSZXNvbHV0aW9uJiB7
CisgICAgICAgIEFTU0VSVCghZnJhbWVzLmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiBmcmFt
ZXMubGFzdCgpOworICAgIH07CisKKyAgICAvLyBNZXJnZSB0aGUgZ2l2ZW4gcmVzb2x1dGlvbiB0
byB0aGUgY3VycmVudCByZXNvbHV0aW9uIHZhbHVlIG9mIHRoZSB0b3AgZnJhbWUuCisgICAgLy8g
SWYgdGhlcmUgaXMgYW1iaWd1aXR5LCByZXR1cm4gImZhbHNlIi4gV2hlbiB0aGUgImZhbHNlIiBp
cyByZXR1cm5lZCwgd2Ugc2hvdWxkIG1ha2UgdGhlIHJlc3VsdCAiYW1iaWd1b3VzIi4KKyAgICBh
dXRvIG1lcmdlVG9DdXJyZW50VG9wID0gWyZdIChjb25zdCBSZXNvbHV0aW9uJiByZXNvbHV0aW9u
KSAtPiBib29sIHsKKyAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0aW9uOjpU
eXBlOjpOb3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGlmIChj
dXJyZW50VG9wKCkudHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAg
ICAgICAgY3VycmVudFRvcCgpID0gcmVzb2x1dGlvbjsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGN1cnJlbnRUb3AoKS5tb2R1bGVSZWNvcmQgIT0g
cmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQgfHwgY3VycmVudFRvcCgpLmxvY2FsTmFtZSAhPSByZXNv
bHV0aW9uLmxvY2FsTmFtZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgcm9v
dCwgVHlwZTo6UXVlcnkgfSk7CisgICAgd2hpbGUgKCFwZW5kaW5nVGFza3MuaXNFbXB0eSgpKSB7
CisgICAgICAgIGNvbnN0IFRhc2sgdGFzayA9IHBlbmRpbmdUYXNrcy50YWtlTGFzdCgpOworICAg
ICAgICBjb25zdCBSZXNvbHZlUXVlcnkmIHF1ZXJ5ID0gdGFzay5xdWVyeTsKKworICAgICAgICBz
d2l0Y2ggKHRhc2sudHlwZSkgeworICAgICAgICBjYXNlIFR5cGU6OlF1ZXJ5OiB7CisgICAgICAg
ICAgICBpZiAoIXJlc29sdmVTZXQuYWRkKHRhc2sucXVlcnkpLmlzTmV3RW50cnkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVS
ZWNvcmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAgICBjb25zdCBPcHRpb25hbDxK
U01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk+IG9wdGlvbmFsRXhwb3J0RW50cnkgPSBtb2R1bGVS
ZWNvcmQtPnRyeUdldEV4cG9ydEVudHJ5KHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpOworICAgICAg
ICAgICAgaWYgKCFvcHRpb25hbEV4cG9ydEVudHJ5KSB7CisgICAgICAgICAgICAgICAgLy8gSWYg
dGhlcmUgaXMgbm8gbWF0Y2hlZCBleHBvcnRlZCBiaW5kaW5nIGluIHRoZSBjdXJyZW50IG1vZHVs
ZSwKKyAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3RhcnMuCisg
ICAgICAgICAgICAgICAgaWYgKCFyZXNvbHZlTm9uTG9jYWwodGFzay5xdWVyeSkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjplcnJvcigpOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBKU01vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnkmIGV4cG9ydEVudHJ5ID0gKm9wdGlvbmFsRXhwb3J0RW50cnk7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
SlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGNh
c2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAg
ICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRvcChSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6
VHlwZTo6UmVzb2x2ZWQsIG1vZHVsZVJlY29yZCwgZXhwb3J0RW50cnkubG9jYWxOYW1lIH0pKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6YW1iaWd1b3VzKCk7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6
OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDogeworICAgICAgICAgICAgICAgIEpTTW9kdWxl
UmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IG1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJ
bXBvcnRlZE1vZHVsZShleGVjLCBleHBvcnRFbnRyeS5tb2R1bGVOYW1lKTsKKworICAgICAgICAg
ICAgICAgIC8vIFdoZW4gdGhlIGltcG9ydGVkIG1vZHVsZSBkb2VzIG5vdCBwcm9kdWNlIGFueSBy
ZXNvbHZlZCBiaW5kaW5nLCB3ZSBuZWVkIHRvIGxvb2sgaW50byB0aGUgc3RhcnMgaW4gdGhlICpj
dXJyZW50KgorICAgICAgICAgICAgICAgIC8vIG1vZHVsZS4gVG8gZG8gdGhpcywgd2UgYXBwZW5k
IHRoZSBgSW5kaXJlY3RGYWxsYmFja2AgdGFzayB0byB0aGUgdGFzayBxdWV1ZS4KKyAgICAgICAg
ICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBxdWVyeSwgVHlwZTo6SW5kaXJlY3RG
YWxsYmFjayB9KTsKKyAgICAgICAgICAgICAgICAvLyBBbmQgYXBwZW5kIHRoZSBuZXcgUmVzb2x1
dGlvbiBmcmFtZSB0byBjaGVjayB0aGUgaW5kaXJlY3QgZXhwb3J0IHdpbGwgYmUgcmVzb2x2ZWQg
b3Igbm90LgorICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoUmVzb2x1dGlvbjo6bm90Rm91
bmQoKSk7CisgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVzb2x2
ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBleHBvcnRFbnRyeS5pbXBvcnROYW1lKSwgVHlw
ZTo6UXVlcnkgfSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgVHlwZTo6SW5kaXJlY3RGYWxsYmFjazogeworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQ6
OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGZyYW1lcy50YWtlTGFzdCgpOworCisgICAgICAgICAg
ICBpZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7Cisg
ICAgICAgICAgICAgICAgLy8gSW5kaXJlY3QgZXhwb3J0IGVudHJ5IGRvZXMgbm90IHByb2R1Y2Ug
YW55IHJlc29sdmVkIGJpbmRpbmcuCisgICAgICAgICAgICAgICAgLy8gU28gd2Ugd2lsbCBpbnZl
c3RpZ2F0ZSB0aGUgc3RhcnMuCisgICAgICAgICAgICAgICAgaWYgKCFyZXNvbHZlTm9uTG9jYWwo
dGFzay5xdWVyeSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjplcnJv
cigpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBJZiBpbmRpcmVjdCBleHBvcnQgZW50cnkgcHJvZHVjZXMgUmVzb2x2ZWQsIHdlIHNo
b3VsZCBtZXJnZSBpdCB0byB0aGUgdXBwZXIgZnJhbWUuCisgICAgICAgICAgICAvLyBBbmQgZG8g
bm90IGludmVzdGlnYXRlIHRoZSBzdGFycyBvZiB0aGUgY3VycmVudCBtb2R1bGUuCisgICAgICAg
ICAgICBpZiAoIW1lcmdlVG9DdXJyZW50VG9wKHJlc29sdXRpb24pKQorICAgICAgICAgICAgICAg
IHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgY2FzZSBUeXBlOjpHYXRoZXJTdGFyczogeworICAgICAgICAgICAg
Ly8gTWVyZ2UgdGhlIHN0YXIgcmVzb2x1dGlvbiB0byB0aGUgdXBwZXIgZnJhbWUuCisgICAgICAg
ICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiBzdGFyUmVzb2x1dGlvbiA9IGZyYW1lcy50
YWtlTGFzdCgpOworICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRvcChzdGFyUmVzb2x1
dGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmFtYmlndW91cygpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFT
U0VSVChmcmFtZXMuc2l6ZSgpID09IDEpOworICAgIHJldHVybiBmcmFtZXNbMF07Cit9CisKK2F1
dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBleHBvcnROYW1lKSAtPiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIHJlc29s
dmVFeHBvcnRMb29wKGV4ZWMsIFJlc29sdmVRdWVyeSh0aGlzLCBleHBvcnROYW1lLmltcGwoKSkp
OworfQorCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpjcmVhdGUoZXhlYywgc291cmNlQ29kZSgpKTsKQEAgLTEwMSwxMSArNDI5LDEyMCBA
QCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNldChleGVjLT52bSgp
LCB0aGlzLCBleGVjdXRhYmxlKTsKKyAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVjLCBl
eGVjdXRhYmxlKTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3Rh
dGUqKQordm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0
YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUpCiB7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5z
dGFudGlhdGlvbgorCisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUtPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKTsKKyAgICBKU01vZHVs
ZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNy
ZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CisKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlv
bgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQgc3RlcCA5LgorICAgIC8vIEVuc3VyZSBhbGwg
dGhlIGluZGlyZWN0IGV4cG9ydHMgYXJlIGNvcnJlY3RseSByZXNvbHZlZCB0byB1bmlxdWUgYmlu
ZGluZ3MuCisgICAgLy8gRXZlbiBpZiB3ZSBhdm9pZGVkIGR1cGxpY2F0ZSBleHBvcnRzIGluIHRo
ZSBwYXJzZXIsIHN0aWxsIGFtYmlndW91cyBleHBvcnRzIG9jY3VyIGR1ZSB0byB0aGUgc3RhciBl
eHBvcnQgKGBleHBvcnQgKiBmcm9tICJtb2QiYCkuCisgICAgLy8gV2hlbiB3ZSBzZWUgdGhpcyB0
eXBlIG9mIGFtYmlndWl0eSBmb3IgdGhlIGluZGlyZWN0IGV4cG9ydHMgaGVyZSwgdGhyb3cgYSBz
eW50YXggZXJyb3IuCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVz
KSB7CisgICAgICAgIGNvbnN0IEV4cG9ydEVudHJ5JiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7
CisgICAgICAgIGlmIChleHBvcnRFbnRyeS50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRF
bnRyeTo6VHlwZTo6SW5kaXJlY3QpIHsKKyAgICAgICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlv
biA9IHJlc29sdmVFeHBvcnQoZXhlYywgZXhwb3J0RW50cnkuZXhwb3J0TmFtZSk7CisgICAgICAg
ICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4
ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJp
bmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpU
eXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBt
YWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4
cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0
byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAg
ICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhw
b3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBl
eHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9u
aW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQgc3RlcCAxMi4KKyAgICAv
LyBJbnN0YW50aWF0ZSBuYW1lc3BhY2Ugb2JqZWN0cyBhbmQgaW5pdGlhbGl6ZSB0aGUgYmluZGlu
Z3Mgd2l0aCB0aGVtIGlmIHJlcXVpcmVkLgorICAgIC8vIEFuZCBlbnN1cmUgdGhhdCBhbGwgdGhl
IGltcG9ydHMgY29ycmVjdGx5IHJlc29sdmVkIHRvIHVuaXF1ZSBiaW5kaW5ncy4KKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgSW1w
b3J0RW50cnkmIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgSlNNb2R1bGVSZWNv
cmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBv
cnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNw
YWNlKHZtKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IE1vZHVsZU5hbWVzcGFjZU9iamVjdCB3
aWxsIGJlIGltcGxlbWVudGVkLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0ODcwNQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhl
YywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRp
b24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoK
KyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9y
dGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwo
KSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5h
bWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBi
ZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkg
c3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xh
cmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQgc3RlcCAxNC4K
KyAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgY29udGFpbnMgdGhlIGhlYXAgYWxsb2NhdGVkICJ2
YXIiLCAiZnVuY3Rpb24iLCAibGV0IiwgImNvbnN0IiwgYW5kICJjbGFzcyIuCisgICAgLy8gV2hl
biBjcmVhdGluZyB0aGUgZW52aXJvbm1lbnQsIHdlIGluaXRpYWxpemVkIGFsbCB0aGUgc2xvdHMg
d2l0aCBlbXB0eSwgaXQncyBvayBmb3IgbGV4aWNhbCB2YWx1ZXMuCisgICAgLy8gQnV0IGZvciAi
dmFyIiBhbmQgImZ1bmN0aW9uIiwgd2Ugc2hvdWxkIGluaXRpYWxpemUgaXQgd2l0aCB1bmRlZmlu
ZWQuIFRoZXkgYXJlIGNvbnRhaW5lZCBpbiB0aGUgZGVjbGFyZWQgdmFyaWFibGVzLgorICAgIGZv
ciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBtX2RlY2xhcmVkVmFyaWFibGVzKSB7CisgICAgICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5n
ZXQoKSk7CisgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKKyAg
ICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKQorICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQo
bW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFi
bGUua2V5LmdldCgpKSwganNVbmRlZmluZWQoKSwgZmFsc2UpOworICAgIH0KKworICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVk
ZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAg
MTYtYS1pdi4KKyAgICAvLyBJbml0aWFsaXplIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xh
cmF0aW9ucy4KKyAgICAvLyBUaGV5IGNhbiBiZSBjYWxsZWQgYmVmb3JlIHRoZSBib2R5IG9mIHRo
ZSBtb2R1bGUgaXMgZXhlY3V0ZWQgdW5kZXIgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorICAgIFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDAsIG51bWJlck9mRnVuY3Rpb25zID0gdW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpOyBpIDwgbnVtYmVyT2ZGdW5jdGlvbnM7ICsraSkgewor
ICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOworICAgICAgICBTeW1i
b2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh1bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS0+bmFtZSgpLmltcGwoKSk7CisgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRy
eS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIXVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaXNFbXB0eSgp
KTsKKyAgICAgICAgICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSB8fCB2bS5jb250cm9sRmxvd1By
b2ZpbGVyKCkpIHsKKyAgICAgICAgICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUo
KS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3VyY2VJ
RCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZS0+c291cmNlKCkpLCBtb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgICAgICBzeW1i
b2xUYWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24sIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KHZtLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7Cit9
CisKK0pTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGlmICghbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVj
dXRlKG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCksIGV4ZWMsIG1fbW9kdWxlRW52aXJv
bm1lbnQuZ2V0KCkpOworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY2xlYXIoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlkKQpAQCAtMTI5LDIzICs1NjYsMjUgQEAgdm9p
ZCBKU01vZHVsZVJlY29yZDo6ZHVtcCgpCiAgICAgICAgIGRhdGFMb2coIiAgICAgIG1vZHVsZSgi
LCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxuIik7CiAKICAgICBkYXRhTG9nKCIgICAg
SW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwotICAgIGZv
ciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygi
ICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBvcnROYW1lKSwgIiks
IGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxl
KCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOworICAg
IGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmllcykgeworICAgICAgICBjb25z
dCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBkYXRhTG9n
KCIgICAgICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5pbXBvcnROYW1lKSwg
IiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoaW1wb3J0RW50cnkubG9jYWxOYW1lKSwgIiksIG1v
ZHVsZSgiLCBwcmludGFibGVOYW1lKGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7
CisgICAgfQogCiAgICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNp
emUoKSwgIiBlbnRyaWVzXG4iKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9y
dEVudHJpZXMpIHsKLSAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1
ZTsKLSAgICAgICAgc3dpdGNoIChlbnRyeS50eXBlKSB7CisgICAgICAgIGNvbnN0IEV4cG9ydEVu
dHJ5JiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50
cnkudHlwZSkgewogICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKLSAgICAg
ICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2NhbF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1l
KGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5sb2Nh
bE5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJl
eHBvcnQoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2Fs
KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkubG9jYWxOYW1lKSwgIilcbiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNl
OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgiLCBw
cmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5h
bWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAg
IFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5leHBv
cnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5Lm1vZHVsZU5h
bWUpLCAiKVxuIik7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEV4cG9ydEVu
dHJ5OjpUeXBlOjpJbmRpcmVjdDoKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVj
dF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1w
b3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50
cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5p
bXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5Lm1vZHVs
ZU5hbWUpLCAiKVxuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDgx
ZGEzOTY2ZThjNWE4ZGE5MzA0ZDI4MmY0ZmJjYTk0ZjI0ZWFlNDguLjA4NTIxYjRjY2QzYjA0YWFl
ZTAzYjNiNDQxYTIxYzFmNmQ0MTk2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlZhcmlh
YmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNzgsOCArNzksOCBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgfTsKIAogICAgIHR5cGVkZWYgV1RGOjpMaXN0SGFz
aFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gT3JkZXJl
ZElkZW50aWZpZXJTZXQ7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhh
c2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydE1hcDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50cnksIElkZW50
aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBv
cnRFbnRyaWVzOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydEVudHJpZXM7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCkBAIC0xMDAsMjUgKzEwMSw0OSBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBv
cnRFbnRyeSYpOwogICAgIHZvaWQgYWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmKTsK
IAotICAgIGNvbnN0IEltcG9ydEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEltcG9ydEVudHJ5
PiB0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogbG9jYWxOYW1lKTsKKyAgICBP
cHRpb25hbDxFeHBvcnRFbnRyeT4gdHJ5R2V0RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwq
IGV4cG9ydE5hbWUpOwogCiAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlQ29kZTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlS2V5OyB9CiAgICAgY29uc3QgT3JkZXJlZElkZW50
aWZpZXJTZXQmIHJlcXVlc3RlZE1vZHVsZXMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlZE1v
ZHVsZXM7IH0KLSAgICBjb25zdCBFeHBvcnRNYXAmIGV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJl
dHVybiBtX2V4cG9ydEVudHJpZXM7IH0KLSAgICBjb25zdCBJbXBvcnRNYXAmIGltcG9ydEVudHJp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBFeHBvcnRF
bnRyaWVzJiBleHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9
CisgICAgY29uc3QgSW1wb3J0RW50cmllcyYgaW1wb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJu
IG1faW1wb3J0RW50cmllczsgfQorICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiBzdGFy
RXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhckV4cG9ydEVudHJpZXM7IH0KIAog
ICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWNsYXJlZFZhcmlhYmxlczsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmIGxleGljYWxWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxWYXJpYWJs
ZXM7IH0KIAogICAgIHZvaWQgZHVtcCgpOwogCisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9k
dWxlRW52aXJvbm1lbnQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kdWxlRW52aXJvbm1l
bnQpOworICAgICAgICByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsKKyAgICB9CiAK
ICAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKik7CiAgICAgSlNWYWx1ZSBleGVjdXRlKEV4ZWNTdGF0
ZSopOwogCiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5nZXQoKTsgfQog
CisgICAgc3RydWN0IFJlc29sdXRpb24geworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBSZXNv
bHZlZCwgTm90Rm91bmQsIEFtYmlndW91cywgRXJyb3IgfTsKKworICAgICAgICBzdGF0aWMgUmVz
b2x1dGlvbiBub3RGb3VuZCgpOworICAgICAgICBzdGF0aWMgUmVzb2x1dGlvbiBlcnJvcigpOwor
ICAgICAgICBzdGF0aWMgUmVzb2x1dGlvbiBhbWJpZ3VvdXMoKTsKKworICAgICAgICBUeXBlIHR5
cGU7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQ7CisgICAgICAgIElkZW50
aWZpZXIgbG9jYWxOYW1lOworICAgIH07CisKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnQo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSk7CisgICAgUmVzb2x1dGlv
biByZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSk7
CisKKyAgICBKU01vZHVsZVJlY29yZCogaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKwogcHJpdmF0ZToKICAgICBKU01v
ZHVsZVJlY29yZChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVy
JiBtb2R1bGVLZXksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
JiBsZXhpY2FsVmFyaWFibGVzKQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKQEAgLTEz
NCw3ICsxNTksNyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJs
ZU9iamVjdCB7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBKU01vZHVs
ZVJlY29yZCogaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBtb2R1bGVOYW1lKTsKKyAgICB2b2lkIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4
ZWNTdGF0ZSosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKik7CiAKICAgICAvLyBUaGUgbG9hZGVy
IHJlc29sdmVzIHRoZSBnaXZlbiBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1v
ZHVsZSBrZXkgaXMgdGhlIHVuaXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCiAg
ICAgSWRlbnRpZmllciBtX21vZHVsZUtleTsKQEAgLTE0NCw0NiArMTY5LDM3IEBAIGNsYXNzIEpT
TW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBWYXJpYWJs
ZUVudmlyb25tZW50IG1fZGVjbGFyZWRWYXJpYWJsZXM7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVu
dCBtX2xleGljYWxWYXJpYWJsZXM7CiAKKyAgICAvLyBDdXJyZW50bHksIHdlIGRvbid0IGtlZXAg
dGhlIG9jY3VycmVuY2Ugb3JkZXIgb2YgdGhlIGltcG9ydCAvIGV4cG9ydCBlbnRyaWVzLgorICAg
IC8vIFNvLCB3ZSBkb2VzIG5vdCBndWFyYW50ZWUgdGhlIG9yZGVyIG9mIHRoZSBlcnJvcnMuCisg
ICAgLy8gZS5nLiBUaGUgaW1wb3J0IGRlY2xhcmF0aW9uIHRoYXQgb2NjdXJyIGxhdGVyIHRoYW4g
dGhlIGFub3RoZXIgaW1wb3J0IGRlY2xhcmF0aW9uIG1heQorICAgIC8vICAgICAgdGhyb3cgdGhl
IGVycm9yIGV2ZW4gaWYgdGhlIGZvcm1lciBpbXBvcnQgZGVjbGFyYXRpb24gYWxzbyBoYXMgdGhl
IGludmFsaWQgY29udGVudC4KKyAgICAvLworICAgIC8vICAgICAgaW1wb3J0IC4uLiAvLyAoMSkg
dGhpcyBoYXMgc29tZSBpbnZhbGlkIGNvbnRlbnQuCisgICAgLy8gICAgICBpbXBvcnQgLi4uIC8v
ICgyKSB0aGlzIGFsc28gaGFzIHNvbWUgaW52YWxpZCBjb250ZW50LgorICAgIC8vCisgICAgLy8g
ICAgICBJbiB0aGUgYWJvdmUgY2FzZSwgKDIpIG1heSB0aHJvdyB0aGUgZXJyb3IgZWFybGllciB0
aGFuICgxKQorICAgIC8vCisgICAgLy8gQnV0LCBpbiB0aGUgYWxsIGNhc2VzLCB3ZSB3aWxsIHRo
cm93IHRoZSBzeW50YXggZXJyb3IuIFNvIGV4Y2VwdCBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIHN5
bnRheCBlcnJvciwKKyAgICAvLyB0aGVyZSBhcmUgbm8gZGlmZmVyZW5jZS4KKwogICAgIC8vIE1h
cCBsb2NhbE5hbWUgLT4gSW1wb3J0RW50cnkuCi0gICAgSW1wb3J0TWFwIG1faW1wb3J0RW50cmll
czsKKyAgICBJbXBvcnRFbnRyaWVzIG1faW1wb3J0RW50cmllczsKIAogICAgIC8vIE1hcCBleHBv
cnROYW1lIC0+IEV4cG9ydEVudHJ5LgotICAgIEV4cG9ydE1hcCBtX2V4cG9ydEVudHJpZXM7Cisg
ICAgRXhwb3J0RW50cmllcyBtX2V4cG9ydEVudHJpZXM7CiAKLSAgICBJZGVudGlmaWVyU2V0IG1f
c3RhckV4cG9ydEVudHJpZXM7CisgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5j
ZSByZXNvbHZlRXhwb3J0IHJlcXVpcmVzIGl0LgorICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1f
c3RhckV4cG9ydEVudHJpZXM7CiAKICAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNp
bmNlIHRoZSBtb2R1bGUgbG9hZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMg
b3JkZXIuCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KICAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3Jl
cXVlc3RlZE1vZHVsZXM7CiAKLSAgICBXcml0ZUJhcnJpZXI8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU+IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBt
X2RlcGVuZGVuY2llc01hcDsKLX07CiAKLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBl
bmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBt
X3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIHZv
aWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRy
eSkKLXsKLSAgICBtX2ltcG9ydEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVu
dHJ5KTsKLX0KLQotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNv
bnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkKLXsKLSAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5
LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTTW9kdWxlUmVj
b3JkOjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKLXsK
LSAgICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlu
bGluZSBhdXRvIEpTTW9kdWxlUmVjb3JkOjpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpIC0+IGNvbnN0IEltcG9ydEVudHJ5Jgotewot
ICAgIHJldHVybiAoKm1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOwotfQor
ICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4gbV9tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVFbnZpcm9ubWVudD4gbV9tb2R1
bGVFbnZpcm9ubWVudDsKK307CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IGJiMmVmZGQwNjMxY2QxOGVhOTc1NDI2
NzRhMmNlNzE4MTUwNzJjOGYuLjFkY2FmNzdhNTVmZTA0ODk4ZDExNjVjNDA0NjViZDcxZTFhNGJi
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0yOCw2
ICsyOCw4IEBACiAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTGV4
aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAKQEAgLTY1LDYgKzY3LDE5IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBhYnN0cmFjdEFjY2VzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJ
ZGVudGlmCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAgIGlm
IChKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzRHluYW1pY0Nhc3Q8
SlNNb2R1bGVFbnZpcm9ubWVudCo+KHNjb3BlKSkgeworICAgICAgICAgICAgSlNNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZCA9IG1vZHVsZUVudmlyb25tZW50LT5tb2R1bGVSZWNvcmQoKTsKKyAg
ICAgICAgICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBtb2R1bGVS
ZWNvcmQtPnJlc29sdmVJbXBvcnQoZXhlYywgaWRlbnQpOworICAgICAgICAgICAgaWYgKHJlc29s
dXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQp
IHsKKyAgICAgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNv
bHV0aW9uLm1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50
KiBpbXBvcnRlZEVudmlyb25tZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50
KCk7CisgICAgICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGltcG9ydGVkRW52
aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChyZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkp
OworICAgICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAg
ICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKE1vZHVsZVZhciwgbmVlZHNWYXJJbmplY3Rpb25D
aGVja3MpLCBkZXB0aCwgMCwgaW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hwb2ludFNl
dCgpLCBlbnRyeS5zY29wZU9mZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2FsTmFtZS5p
bXBsKCkpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKICAgICAgICAgaWYgKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+
dXNlc05vblN0cmljdEV2YWwoKSkKICAgICAgICAgICAgIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMyLDYgKzI0Nyw3IEBAIGNvbnN0
IGNoYXIqIHJlc29sdmVUeXBlTmFtZShSZXNvbHZlVHlwZSB0eXBlKQogICAgICAgICAiR2xvYmFs
VmFyIiwKICAgICAgICAgIkNsb3N1cmVWYXIiLAogICAgICAgICAiTG9jYWxDbG9zdXJlVmFyIiwK
KyAgICAgICAgIk1vZHVsZVZhciIsCiAgICAgICAgICJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MiLAogICAgICAgICAiR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIs
CiAgICAgICAgICJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXggYTY1MzE2NzQ5MGY2ODIyM2Y1MTFkZDI4
OTA4OTI5ZmM0NmExOTczYy4uMDI2YTI3MTRkYzhkOTIyYTk4Mjg4NWU1NDZiNTc4YmE5NjM0ODBh
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtNDUsNiArNDUs
NyBAQCBlbnVtIFJlc29sdmVUeXBlIHsKICAgICBHbG9iYWxWYXIsCiAgICAgQ2xvc3VyZVZhciwK
ICAgICBMb2NhbENsb3N1cmVWYXIsCisgICAgTW9kdWxlVmFyLAogCiAgICAgLy8gRGl0dG8sIGJ1
dCBhdCBsZWFzdCBvbmUgaW50ZXJ2ZW5pbmcgc2NvcGUgdXNlZCBub24tc3RyaWN0IGV2YWwsIHdo
aWNoCiAgICAgLy8gY2FuIGluamVjdCBhbiBpbnRlcmNlcHRpbmcgdmFyIGRlbGNhcmF0aW9uIGF0
IHJ1bnRpbWUuCkBAIC03Miw2ICs3Myw3IEBAIGlubGluZSBSZXNvbHZlVHlwZSBtYWtlVHlwZShS
ZXNvbHZlVHlwZSB0eXBlLCBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgIGNhc2Ug
Q2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgcmV0dXJuIENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAg
IGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIENsb3N1cmVWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzOgpAQCAtOTAsNiArOTIsNyBAQCBpbmxpbmUgYm9vbCBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogICAgIGNhc2UgR2xvYmFsVmFyOgogICAg
IGNhc2UgQ2xvc3VyZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKKyAgICBjYXNlIE1v
ZHVsZVZhcjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrczoKQEAgLTEwMywxMyArMTA2LDE0IEBAIGlubGluZSBib29sIG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiB9CiAKIHN0cnVjdCBSZXNvbHZlT3AgewotICAg
IFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVwdGgsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50LCBXYXRjaHBv
aW50U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFuZCkKKyAgICBSZXNvbHZlT3Ao
UmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNM
ZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0
Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBvcnRl
ZE5hbWUgPSBudWxscHRyKQogICAgICAgICA6IHR5cGUodHlwZSkKICAgICAgICAgLCBkZXB0aChk
ZXB0aCkKICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICAgICAsIGxleGljYWxF
bnZpcm9ubWVudChsZXhpY2FsRW52aXJvbm1lbnQpCiAgICAgICAgICwgd2F0Y2hwb2ludFNldCh3
YXRjaHBvaW50U2V0KQogICAgICAgICAsIG9wZXJhbmQob3BlcmFuZCkKKyAgICAgICAgLCBpbXBv
cnRlZE5hbWUoaW1wb3J0ZWROYW1lKQogICAgIHsKICAgICB9CiAKQEAgLTExOSw2ICsxMjMsNyBA
QCBzdHJ1Y3QgUmVzb2x2ZU9wIHsKICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVu
dmlyb25tZW50OwogICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQ7CiAgICAgdWludHB0
cl90IG9wZXJhbmQ7CisgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBvcnRlZE5hbWU7
CiB9OwogCiBjbGFzcyBSZXNvbHZlTW9kZUFuZFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggMjhlMGJhZGFh
NzJhZjMwY2M3NzE5MTk2MDRhNjEyZDZjZGI3M2UwNy4uNmU2ZjlmOWE2ZGE2MTgxMmUzYzIxYWQ0
MzY2ZmQ4N2I3Y2QxNDdkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
SlNJbnRlcm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260506</attachid>
            <date>2015-09-03 11:55:35 -0700</date>
            <delta_ts>2015-09-03 13:21:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150903115534.patch</filename>
            <type>text/plain</type>
            <size>107015</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi5kN2M4Y2ZlNGRkZDNhMTZl
NWIwZDA5ZDRmYzcwOTY3YTlmNWMxZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDkgQEAKKzIwMTUtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF90b19zY29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9f
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6Cisg
ICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAgIChK
U0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
LmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgICogcnVudGlt
ZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjptb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxl
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKToKKyAg
ICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oLgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmly
b25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpvZmZzZXRP
Zk1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9j
YXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVj
b3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVjb3JkU2xv
dCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1l
bnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlND
OjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
UmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJl
Y29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6
OmFkZEltcG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9y
dEVudHJ5KToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkpOgorICAg
ICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChKU0M6OlJl
c29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnlI
YXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwpOgorICAg
ICAgICAoSlNDOjpyZXNvbHZlRXhwb3J0TG9vcCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVj
bGFyYXRpb25zKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZHVtcCk6CisgICAgICAgICogcnVudGltZS9KU01v
ZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhwb3J0RW50cmll
cyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbXBvcnRFbnRyaWVzKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnN0YXJFeHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNjZXNzKToK
KyAgICAgICAgKEpTQzo6cmVzb2x2ZVR5cGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0pTU2Nv
cGUuaDoKKyAgICAgICAgKEpTQzo6bWFrZVR5cGUpOgorICAgICAgICAoSlNDOjpuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyk6CisgICAgICAgIChKU0M6OlJlc29sdmVPcDo6UmVzb2x2ZU9wKToKKyAg
ICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisKIDIwMTUtMDktMDEgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJv
dG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBub3QgYWxsb3cgbm9uLWJvb2xlYW4gdmFsdWVzIGZvciAi
b3B0aW9uYWwiIGtleQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDY4MDYw
YTY5OWZiNDg5NzAwNmU0ZmE5OTMyMDEyNzBjNGQyZWMzZDkuLmVmYTU3MGEyMTI2MjI0NjM4ZTU1
NTg1OGNkY2VmZGJhZmUwMjkyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTUzNyw2ICs1MzcsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAg
ICAgcnVudGltZS9KU0xvY2suY3BwCiAgICAgcnVudGltZS9KU01hcC5jcHAKICAgICBydW50aW1l
L0pTTWFwSXRlcmF0b3IuY3BwCisgICAgcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAog
ICAgIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU05hdGl2ZVN0ZEZ1
bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDM5OTYzYjQxMDExY2U5ZTUwM2UzNjg5YTA2NzU0
NWE2YjQwYjQwYjEuLjhhMTI2ZTU1NDUzZDM4YzA0ZTljMmFjMmMyNDc4MjNiMTU0MDQyMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzg2LDYgKzc4Niw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNw
cCIgLz4KQEAgLTE2NDAsNiArMTY0MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTG9jay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U01hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJh
dG9yLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52
aXJvbm1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1
bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U05vdEFuT2JqZWN0LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKaW5kZXggMmJmNzE4MDQwYjM0ZDRmYzAwODNmMjFhNTNjZTQ4MjdlMWZj
MDI4Ni4uNjhlNGM3ZTQ0ZjljODgyZTEzNGNjZjdlM2E1MDYwYTZjNGM4Yzc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNzI2LDYg
KzcyNiw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAiPgor
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTM1MDUsNiArMzUw
OCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiPgogICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuaCI+CisgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuaCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjIyZTcxNmY1MzExMDdmZTU5ODFjNWE2ZDE2ZDNhNDU0MWU2MTlmNS4uYmIxNjMw
MmQxMDFkNDA3ZTlkMjYwNDdkMjc1NzAxMDdkZjc4NzI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE3MjYsNiArMTcyNiw4IEBACiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENF
NSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAgKi87IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9Owog
CQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0
RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAq
LzsgfTsKKwkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0Yy
NkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0Ig
LyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1
NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0z
NTg3LDYgKzM1ODksOCBAQAogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFs
eXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0
MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYg
LyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ3NzcsNiArNDc4MSw4IEBACiAJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8q
IEpTTWFwLmggKi8sCiAJCQkJQTc0REVGOEYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0
b3IuY3BwICovLAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9y
LmggKi8sCisJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwICovLAorCQkJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmly
b25tZW50LmggKi8sCiAJCQkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVj
b3JkLmNwcCAqLywKIAkJCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNv
cmQuaCAqLywKIAkJCQlFMzNFOEQxQTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5j
dGlvbi5jcHAgKi8sCkBAIC02MTM5LDYgKzYxNDUsNyBAQAogCQkJCTBGMkI5Q0U5MTlEMEJBN0Qw
MEIxRDFCNSAvKiBERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0Q5QTI5ODE3QTBCQzc0MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0Q4OUNGQzE3QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNp
c1BoYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMEYxOUIxNkI3MjlG
QTAwNURGOTVCIC8qIERGR0xvbmdMaXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlG
Qjg2ODFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtNzM4Niw2ICs3MzkzLDcgQEAKIAkJCQkwRjZDNzM1MDFBQzlG
OTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZCNTgyNjkxNEQyNzk3MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY4Rjk0M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDIx
NjY3NjMzNTAwRDYxOTcxIC8qIENvZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0Yz
OUMxMTA3RUMzNzYwMDQyN0E0OCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjlDNUU1RTE4RTM1RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggYzRjNjZkM2I3OTc2Zjk3NzViZDEzNGQxZWE5ODljMTRhNDVkYWFkNy4uMTVl
MWFlODhmMjMxYjc2NGY5OGJmNjI3NDhiYjc0YzhiNTI2MDU3YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
TGV4aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0xNzY3LDYgKzE3NjgsNyBAQCBDb2Rl
QmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lzdGVyc1tyZWdp
c3RlckluZGV4XS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QtPmpz
Q2VsbEZvckxpbmtUaW1lQ29uc3RhbnQodHlwZSkpOwogICAgIH0KIAorICAgIC8vIE5PVEU6IFRo
aXMgaW52b2x2ZXMgY2xvbmluZyB0aGUgc3ltYm9sIHRhYmxlIGZvciB0aGUgbW9kdWxlIGVudmly
b25tZW50LgogICAgIEhhc2hTZXQ8aW50LCBXVEY6OkludEhhc2g8aW50PiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+PiBjbG9uZWRDb25zdGFudFN5bWJvbFRhYmxlczsK
ICAgICB7CiAgICAgICAgIEhhc2hTZXQ8U3ltYm9sVGFibGUqPiBjbG9uZWRTeW1ib2xUYWJsZXM7
CkBAIC0xODYzLDYgKzE4NjUsOSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
Y291bnQoKTsKICAgICBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtOjpSZWFkZXIgaW5zdHJ1Y3Rp
b25SZWFkZXIodW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpKTsKIAorICAgIC8vIEJv
b2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCisgICAg
SGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52
aXJvbm1lbnRzOworCiAgICAgVmVjdG9yPEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVy
Zmxvdz4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewpAQCAtMTk3Miw5ICsxOTc3
LDE1IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3Ag
PSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwg
bG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgdHlwZSk7CiAgICAgICAgICAgICBp
bnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IG9wLnR5cGU7CiAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIDVdLnUub3BlcmFuZCA9IG9wLmRlcHRoOwotICAgICAgICAgICAgaWYgKG9w
LmxleGljYWxFbnZpcm9ubWVudCkKLSAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZd
LnUuc3ltYm9sVGFibGUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZp
cm9ubWVudC0+c3ltYm9sVGFibGUoKSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBp
ZiAob3AubGV4aWNhbEVudmlyb25tZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUg
PT0gTW9kdWxlVmFyKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEtlZXAgdGhlIGxpbmtlZCBt
b2R1bGUgZW52aXJvbm1lbnQgc3Ryb25nbHkgcmVmZXJlbmNlZC4KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50cy5hZGQoanNDYXN0PEpT
TW9kdWxlRW52aXJvbm1lbnQqPihvcC5sZXhpY2FsRW52aXJvbm1lbnQpKS5pc05ld0VudHJ5KQor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RhbnQob3AubGV4aWNhbEVudmlyb25tZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LmpzQ2VsbC5zZXQo
KnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50KTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51
LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJv
bm1lbnQtPnN5bWJvbFRhYmxlKCkpOworICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnBvaW50ZXIgPSBudWxscHRyOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTE5OTksNyArMjAxMCwxMiBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbgogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVy
KHBjWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjph
YnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURl
cHRoLCBzY29wZSwgaWRlbnQsIEdldCwgbW9kZUFuZFR5cGUudHlwZSgpKTsKIAotICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9k
ZUFuZFR5cGUubW9kZSgpLCBvcC50eXBlKS5vcGVyYW5kKCk7CisgICAgICAgICAgICAvLyBNb2R1
bGVWYXIgY2FuIGdldCB0aGUgdmFyaWFibGUgYXMgdGhlIHNhbWUgdG8gQ2xvc3VyZVZhci4KKyAg
ICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikKKyAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IFJlc29sdmVNb2RlQW5kVHlwZShtb2RlQW5kVHlw
ZS5tb2RlKCksIENsb3N1cmVWYXIpLm9wZXJhbmQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IFJlc29sdmVNb2RlQW5k
VHlwZShtb2RlQW5kVHlwZS5tb2RlKCksIG9wLnR5cGUpLm9wZXJhbmQoKTsKKwogICAgICAgICAg
ICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUu
d2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAgICBlbHNlIGlmIChv
cC5zdHJ1Y3R1cmUpCkBAIC0yMDY3LDE3ICsyMDgzLDE4IEBAIENvZGVCbG9jazo6Q29kZUJsb2Nr
KFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGluCiAgICAgICAgICAgICAgICAgLy8gd2UncmUgYWJzdHJhY3RseSAicmVhZCJpbmcgZnJvbSBh
IEpTU2NvcGUuCiAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJh
Y3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwg
c2NvcGUsIGlkZW50LCBHZXQsIHR5cGUpOwogCi0gICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUg
PT0gQ2xvc3VyZVZhcikKKyAgICAgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFy
IHx8IG9wLnR5cGUgPT0gTW9kdWxlVmFyKQogICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJs
ZSA9IG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChvcC50eXBlID09IEdsb2JhbFZhcikKICAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5nZXQoKS0+c3ltYm9sVGFibGUoKTsKLSAgICAgICAg
ICAgICAgICAKKworICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsID0gKG9w
LnR5cGUgPT0gTW9kdWxlVmFyKSA/IG9wLmltcG9ydGVkTmFtZS5nZXQoKSA6IGlkZW50LmltcGwo
KTsKICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIElmIG91ciBwYXJlbnQgc2NvcGUgd2FzIGNyZWF0ZWQgd2hpbGUg
cHJvZmlsaW5nIHdhcyBkaXNhYmxlZCwgaXQgd2lsbCBub3QgaGF2ZSBwcmVwYXJlZCBmb3IgcHJv
ZmlsaW5nIHlldC4KICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JU
eXBlUHJvZmlsaW5nKGxvY2tlcik7Ci0gICAgICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxl
SUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwo
KSwgKnZtKCkpOwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFi
bGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZtKCkp
OworICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVu
aXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpbXBsLCAqdm0oKSk7CisgICAgICAgICAgICAgICAg
ICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xUYWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxl
KGxvY2tlciwgaW1wbCwgKnZtKCkpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGJk
ZGQwMzY3ZjNiZTM3Mjc2OWFkZmZiY2ZhNTk4NDMxOGIyM2M3ODguLjM4MjNiYzc1NWM4NGE2Zjhl
YmFiZGMwNTA5MGZiZWEzYmExZjBmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKQEAgLTgyLDYgKzgyLDcgQEAgY2xhc3MgRXhlY1N0YXRlOwogY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKIGNsYXNzIFR5cGVM
b2NhdGlvbjsKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiAKIGVudW0gUmVvcHRpbWl6YXRp
b25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKaW5kZXggMmZlMWJiODdmZjI3NjRjNmVhZTJiMzZmNDJhMTY3OGIyODY3MjZkNi4u
YzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYyYTY4ZWU4ZmE4YjU3NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0y
OTcsNyArMjk3LDYgQEAgdm9pZCBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmkKICAgICBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZSk7CiB9CiAKIFVubGlua2VkQ29kZUJsb2NrOjp+VW5saW5rZWRDb2RlQmxv
Y2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCA0MDk1YTkwOWQ4NTZjNzhkNDVlMDhkMTFjYzk1ZWY2Mjg3MzA5MTU4Li5k
ZjUxOGQyMTQxYzljNzg5ZTM1MjkyNzg1ODQ3MDEwMzE2MzhlZWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzgsNyAr
MzgsNiBAQAogI2luY2x1ZGUgIlBhcnNlck1vZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAj
aW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIKLSNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgogI2lu
Y2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVF
bnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtNTUsNyArNTQs
NiBAQCBjbGFzcyBQYXJzZXJFcnJvcjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBT
b3VyY2VDb2RlOwogY2xhc3MgU291cmNlUHJvdmlkZXI7Ci1jbGFzcyBTeW1ib2xUYWJsZTsKIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsK
IGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwpAQCAtNTI3LDI5ICs1MjUsMzUgQEAg
Y2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlu
a2VkR2xvYmFsQ29kZUJsb2NrIHsKIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIC8vIFRoaXMgc3ltYm9sIHRhYmxlIHJlcHJlc2Vu
dHMgdGhlIGxheW91dCBvZiB0aGUgbW9kdWxlIGVudmlyb25tZW50LiBUaGlzIHN5bWJvbCB0YWJs
ZSB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBieXRlCi0gICAgLy8gY29kZSBnZW5lcmF0b3Igc2lu
Y2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpbmNsdWRlcyB0aGUgdG9wLW1vc3QgbGV4aWNhbCBj
YXB0dXJlZCB2YXJpYWJsZXMgaW5zaWRlIHRoZSBtb2R1bGUgY29kZS4KLSAgICAvLyBUaGlzIG1l
YW5zIHRoYXQsIG9uY2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpcyBhbGxvY2F0ZWQgYW5kIGlu
c3RhbnRpYXRlZCBmcm9tIHRoaXMgc3ltYm9sIHRhYmxlLCBpdCBpcyB0aXRlbHkKLSAgICAvLyBj
b3VwbGVkIHdpdGggdGhlIHNwZWNpZmljIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxv
Y2sgYW5kIHRoZSBzeW1ib2wgdGFibGUuIFNvIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZQot
ICAgIC8vIGNvZGUsIHdlIHNob3VsZCBub3QgY2xlYXIgdGhlIHVubGlua2VkIG1vZHVsZSBwcm9n
cmFtIGNvZGUgYmxvY2sgaW4gdGhlIG1vZHVsZSBleGVjdXRhYmxlLiBUaGlzIHJlcXVpcmVtZW50
IGlzIG1ldAotICAgIC8vIGJlY2F1c2UgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIG9ubHkgY2xlYXJz
IHVubGlua2VkIGNvZGUgaW4gKDEpIHVubWFya2VkIGV4ZWN1dGFibGVzIGFuZCAoMikgZnVuY3Rp
b24gZXhlY3V0YWJsZXMuCisgICAgLy8gVGhpcyBvZmZzZXQgcmVwcmVzZW50cyB0aGUgY29uc3Rh
bnQgcmVnaXN0ZXIgb2Zmc2V0IHRvIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxlIHRoYXQgcmVwcmVz
ZW50cyB0aGUgbGF5b3V0IG9mIHRoZQorICAgIC8vIG1vZHVsZSBlbnZpcm9ubWVudC4gVGhpcyBz
eW1ib2wgdGFibGUgaXMgY3JlYXRlZCBieSB0aGUgYnl0ZSBjb2RlIGdlbmVyYXRvciBzaW5jZSB0
aGUgbW9kdWxlIGVudmlyb25tZW50IGluY2x1ZGVzCisgICAgLy8gdGhlIHRvcC1tb3N0IGxleGlj
YWwgY2FwdHVyZWQgdmFyaWFibGVzIGluc2lkZSB0aGUgbW9kdWxlIGNvZGUuIFRoaXMgbWVhbnMg
dGhhdCwgb25jZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IGlzCisgICAgLy8gYWxsb2NhdGVkIGFu
ZCBpbnN0YW50aWF0ZWQgZnJvbSB0aGlzIHN5bWJvbCB0YWJsZSwgaXQgaXMgdGl0ZWx5IGNvdXBs
ZWQgd2l0aCB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0KKyAgICAvLyBjb2Rl
IGJsb2NrIGFuZCB0aGUgc3RvcmVkIHN5bWJvbCB0YWJsZS4gU28gYmVmb3JlIGV4ZWN1dGluZyB0
aGUgbW9kdWxlIGNvZGUsIHdlIHNob3VsZCBub3QgY2xlYXIgdGhlIHVubGlua2VkIG1vZHVsZQor
ICAgIC8vIHByb2dyYW0gY29kZSBibG9jayBpbiB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuIFRoaXMg
cmVxdWlyZW1lbnQgaXMgbWV0IGJlY2F1c2UgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIG9ubHkgY2xl
YXJzCisgICAgLy8gdW5saW5rZWQgY29kZSBpbiAoMSkgdW5tYXJrZWQgZXhlY3V0YWJsZXMgYW5k
ICgyKSBmdW5jdGlvbiBleGVjdXRhYmxlcy4KICAgICAvLwogICAgIC8vIFNpbmNlIHRoZSBmdW5j
dGlvbiBjb2RlIG1heSBiZSBleGVjdXRlZCByZXBlYXRlZGx5IGFuZCB0aGUgZW52aXJvbm1lbnQg
b2YgZWFjaCBmdW5jdGlvbiBleGVjdXRpb24gaXMgZGlmZmVyZW50LAogICAgIC8vIHRoZSBmdW5j
dGlvbiBjb2RlIG5lZWQgdG8gYWxsb2NhdGUgYW5kIGluc3RhbnRpYXRlIHRoZSBlbnZpcm9ubWVu
dCBpbiB0aGUgcHJvbG9ndWUgb2YgdGhlIGZ1bmN0aW9uIGNvZGUuIE9uIHRoZQogICAgIC8vIG90
aGVyIGhhbmQsIHRoZSBtb2R1bGUgY29kZSBpcyBleGVjdXRlZCBvbmx5IG9uY2UuIFNvIHdlIGNh
biBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IG91dHNpZGUgdGhlIG1vZHVsZQot
ICAgIC8vIGNvZGUuIEF0IHRoYXQgdGltZSwgd2UgY29uc3RydWN0IHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgYnkgdXNpbmcgdGhpcyBzeW1ib2wgdGFibGUgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9k
dWxlIGNvZGUuCi0gICAgLy8gSW5zdGFudGlhdGluZyB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJl
Zm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2RlIGlzIHJlcXVpcmVkIHRvIGxpbmsgdGhlIGlt
cG9ydGVkIGJpbmRpbmdzCi0gICAgLy8gYmV0d2VlbiB0aGUgbW9kdWxlcy4KKyAgICAvLyBjb2Rl
LiBBdCB0aGF0IHRpbWUsIHdlIGNvbnN0cnVjdCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJ5IHVz
aW5nIHRoZSBzeW1ib2wgdGFibGUgdGhhdCB3aWxsIGJlIGNsb25lZCBpbiB0aGUgbGlua2VkCisg
ICAgLy8gQ29kZUJsb2NrIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2RlLiBJbnN0YW50
aWF0aW5nIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxl
IGNvZGUgaXMKKyAgICAvLyByZXF1aXJlZCB0byBsaW5rIHRoZSBpbXBvcnRlZCBiaW5kaW5ncyBi
ZXR3ZWVuIHRoZSBtb2R1bGVzLgogICAgIC8vCi0gICAgLy8gVGhlIHVubGlua2VkIG1vZHVsZSBw
cm9ncmFtIGNvZGUgYmxvY2sgb25seSBob2xkcyB0aGUgc3ltYm9sIHRhYmxlLiBJdCBkb2VzIG5v
dCBob2xkIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlCi0gICAgLy8gdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudCByZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dy
YW0gY29kZSBibG9jaywgdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrCi0gICAgLy8gY2Fu
IGJlIHVzZWQgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhp
cyB1bmxpbmtlZCBjb2RlIGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbgotICAg
IC8vIHRoZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudHMuIFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBj
YWNoZWQuCisgICAgLy8gVGhlIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgb25s
eSBob2xkcyB0aGUgcHJlLWNsb25lZCBzeW1ib2wgdGFibGUgaW4gaXRzIGNvbnN0YW50IHJlZ2lz
dGVyIHBvb2wuIEl0IGRvZXMKKyAgICAvLyBub3QgaG9sZCB0aGUgaW5zdGFudGlhdGVkIG1vZHVs
ZSBlbnZpcm9ubWVudC4gU28gd2hpbGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCByZXF1aXJlcyB0
aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlCisgICAgLy8gcHJvZ3JhbSBjb2RlIGJsb2NrLCB0
aGUgdW5saW5rZWQgbW9kdWxlIGNvZGUgYmxvY2sgY2FuIGJlIHVzZWQgZm9yIHRoZSBtb2R1bGUg
ZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcworICAgIC8vIHVubGlua2VkIGNvZGUg
YmxvY2suIFRoZXJlIGlzIDE6TiByZWxhdGlvbiBiZXR3ZWVuIHRoZSB1bmxpbmtlZCBtb2R1bGUg
Y29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMuIFNvIHRoZQorICAgIC8vIHVu
bGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZC4KICAgICAvLwog
ICAgIC8vIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sgZm9yIHRoZSBt
b2R1bGUgZW52aXJvbm1lbnQgaW5jbHVkZXMgdGhlIHJlc29sdmVkIHJlZmVyZW5jZXMgdG8gdGhl
IGltcG9ydGVkCiAgICAgLy8gYmluZGluZ3MuIFRoZSBpbXBvcnRlZCBiaW5kaW5nIHJlZmVyZW5j
ZXMgdGhlIG90aGVyIG1vZHVsZSBlbnZpcm9ubWVudCwgc28gdGhlIGxpbmtlZCBjb2RlIGJsb2Nr
IGlzIHRpdGx5IGNvdXBsZWQKICAgICAvLyB3aXRoIHRoZSBzcGVjaWZpYyBzZXQgb2YgdGhlIG1v
ZHVsZSBlbnZpcm9ubWVudHMuIFRodXMsIHRoZSBsaW5rZWQgY29kZSBibG9jayBzaG91bGQgbm90
IGJlIGNhY2hlZC4KLSAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJs
ZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQorICAg
IGludCBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCgp
IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJP
ZmZzZXQ7IH0KKyAgICB2b2lkIHNldE1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFu
dFJlZ2lzdGVyT2Zmc2V0KGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX21vZHVsZUVudmly
b25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0ID0gb2Zmc2V0OworICAgIH0K
IAogcHJpdmF0ZToKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCkBAIC01NTcs
MTMgKzU2MSw3IEBAIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6
IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwotICAgICAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuc2V0KHZt
LCB0aGlzLCBTeW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJy
aWVyPFN5bWJvbFRhYmxlPiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGU7CisgICAgaW50
IG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgeyAw
IH07CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAppbmRleCA3ODNiMjE1N2ExZjFlMTNjMmVjYzFhZmZmNWU3ZmRjNDlmZTllM2Q3Li44
N2MwZGI1YThlZGMxOWEwMzE0MDRiYWZlYTI5OTA2ZTgzODBiYzQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cApAQCAtNTI0LDkgKzUyNCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgaWYgKG1f
aXNCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxz
ZTsKIAotICAgIC8vIFVzZSB0aGUgc3ltYm9sIHRhYmxlIGFsbG9jYXRlZCBpbiB0aGUgdW5saW5r
ZWQgY29kZSBibG9jay4gVGhpcyBzeW1ib2wgdGFibGUKLSAgICAvLyB3aWxsIGJlIHVzZWQgdG8g
YWxsb2NhdGUgYW5kIGluc3RhbnRpYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCi0gICAgU3lt
Ym9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPm1vZHVs
ZUVudmlyb25tZW50U3ltYm9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoKm1fdm0pOwogICAgIG1vZHVs
ZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0
cmljdEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFNjb3BlVHlw
ZShTeW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwogCkBAIC01ODAsNiArNTc4
LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxl
UHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICBWYXJpYWJsZUVudmlyb25tZW50JiBs
ZXhpY2FsVmFyaWFibGVzID0gbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKTsK
ICAgICBpbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcywgbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZSwgU2NvcGVSZWdpc3RlclR5cGU6OkJsb2NrLCBsb29rVXBW
YXJLaW5kKTsKIAorICAgIC8vIFdlIGtlZXAgdGhlIHN5bWJvbCB0YWJsZSBpbiBjb25zdGFudCBy
ZWdpc3RlciBwb29sLgogICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGUgPSBudWxs
cHRyOwogICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSkKICAgICAgICAgY29uc3RhbnRTeW1ib2xU
YWJsZSA9IGFkZENvbnN0YW50VmFsdWUobW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7CkBA
IC02NDQsNiArNjQzLDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgICAgICAgICBt
X2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIE5v
cm1hbEZ1bmN0aW9uVmFyaWFibGUpKTsKICAgICAgICAgfQogICAgIH0KKworICAgIC8vIFJlbWVt
YmVyIHRoZSBjb25zdGFudCByZWdpc3RlciBvZmZzZXQgdG8gdGhlIHRvcC1tb3N0IHN5bWJvbCB0
YWJsZS4gVGhpcyBzeW1ib2wgdGFibGUgd2lsbCBiZQorICAgIC8vIGNsb25lZCBpbiB0aGUgY29k
ZSBibG9jayBsaW5raW5nLiBBZnRlciB0aGF0LCB0byBjcmVhdGUgdGhlIG1vZHVsZSBlbnZpcm9u
bWVudCwgd2UgcmV0cmlldmUKKyAgICAvLyB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmcm9tIHRo
ZSBsaW5rZWQgY29kZSBibG9jayBieSB1c2luZyB0aGlzIG9mZnNldC4KKyAgICBjb2RlQmxvY2st
PnNldE1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0KGNv
bnN0YW50U3ltYm9sVGFibGUtPmluZGV4KCkpOwogfQogCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5
dGVjb2RlR2VuZXJhdG9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggN2Y2NTA1MmRhOGYyZjFmOTc0MzRjOGNiN2E2YTIwZmM0MjI2
ZTUwNy4uOTc5YzhlNjgwZDZkOGQwNjhlNmRmZjQ1YjVkNWFlMDhkYTE2OWY1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQyLDYg
KzQyLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1l
bnQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5
SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgpAQCAtMzgzMyw2ICszODM0
LDE0IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcyB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzKQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldERpcmVj
dChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBNb2R1bGVWYXI6IHsKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGUg
dmFsdWUgb2YgdGhlICJzY29wZSIgdmlydHVhbCByZWdpc3RlciBpcyBub3QgdXNlZCBpbiBMTElu
dCAvIGJhc2VsaW5lIG9wX3Jlc29sdmVfc2NvcGUgd2l0aCBNb2R1bGVWYXIsCisgICAgICAgICAg
ICAgICAgLy8gd2UgbmVlZCBub3QgdG8ga2VlcCBpdCBhbGl2ZSBieSB0aGUgUGhhbnRvbSBub2Rl
LgorICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50
ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5q
c0NlbGwuZ2V0KCkpOworICAgICAgICAgICAgICAgIC8vIE1vZHVsZSBlbnZpcm9ubWVudCBpcyBh
bHJlYWR5IHN0cm9uZ2x5IHJlZmVyZW5jZWQgYnkgdGhlIENvZGVCbG9jay4KKyAgICAgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KG1vZHVsZUVudmly
b25tZW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcjoK
ICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKQEAg
LTQwMDIsNiArNDAxMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0Q2xvc3VyZVZhciwg
T3BJbmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiksIHNjb3BlTm9kZSkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBNb2R1bGVW
YXI6CiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQwODYsNiAr
NDA5NiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0
KQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICAgICAgICAgIC8vIE5lZWQg
bm90IHRvIGtlZXAgInNjb3BlIiBhbmQgInZhbHVlIiByZWdpc3RlciB2YWx1ZXMgaGVyZSBieSBQ
aGFudG9tIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBub3QgdXNlZCBpbiBM
TEludCAvIGJhc2VsaW5lIG9wX3B1dF90b19zY29wZSB3aXRoIE1vZHVsZVZhci4KKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisKICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZmE2MmVh
NmYzNzZkODhjZWZmNGU5ODI3NTQzMjY2ZTBkOTNhNDQ5Yy4uNWE3YTJhZTVkZDBlNmQwMDQ5MWMw
NzdiYzU0OGRiZGQxNzE2NmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNC
b3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4
aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMTk0LDYgKzExOTUsNTQgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTVmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCitKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCit7Cisg
ICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdTY29w
ZSh0aGlzKTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsK
KyAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgICAgIHJldHVybiBq
c051bGwoKTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFs
T2JqZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworCisg
ICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRp
b24oY2FsbEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwpOworICAgIGlmIChVTkxJ
S0VMWSghIWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxG
cmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAg
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9j
aygpOworCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRG
aXJlKGNhbGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisKKyAgICAvLyBUaGUgfHRo
aXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgorICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJv
bm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jk
cy1nZXR0aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29w
ZS0+Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisKKyAgICBpZiAo
TGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAg
IHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgp
LCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisK
KyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHsKKyAg
ICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgp
KTsKKyAgICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVj
dXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5UHJvZmls
ZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT5k
aWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUt
PmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIHJldHVybiBj
aGVja2VkUmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVy
OjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQpCiB7
CiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCktPmRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCmluZGV4IDAzOGJjYTVjZmM3NWI5YjI0NTc2MmQ2ZTY0ZjY4ZjJlNzhlYzYy
NTEuLjRmZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0MDk1YWY0NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw2ICs1
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQXJyb3dGdW5jdGlvbjsKICAgICBj
bGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIEpT
TW9kdWxlRW52aXJvbm1lbnQ7CiAgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwpAQCAt
MjE1LDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVD
YWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxE
YXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmpl
Y3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25z
dHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUg
bmV3VGFyZ2V0KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgQ2Fs
bEZyYW1lKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKyAgICAgICAgSlNWYWx1ZSBl
eGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNNb2R1bGVFbnZp
cm9ubWVudCopOwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBK
U0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBh
cmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDhjZGYxMWZkMzZmYWZkOTZiZjJiYjY3MWY1
NWMzMWQ0NTdlNjQ0OS4uNDlmZTkzZmExNDg5MWEzYTIxNTFiMGI3NGU4N2VmOTJjNDhmNzg3NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJT
Y29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgorI2lu
Y2x1ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogCiAKQEAgLTcwMyw2ICs3MDQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNj
b3BlLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBE
eW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAg
LTcxNiwxMiArNzIxLDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93CiAgICAgaW50IGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzRdLnUu
b3BlcmFuZCk7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVz
b2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCisgICAg
aWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2Jh
bFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVs
ZVZhcikKICAgICAgICAgcmV0dXJuOwogCisKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAg
aW50MzJfdCBzY29wZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgaW50
MzJfdCBpZGVudGlmaWVySW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwor
ICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSByZWdpc3RlciB2YWx1ZSBh
bGl2ZSBpbiBERkcuCisgICAgQVNTRVJUKHJlc29sdmVUeXBlICE9IE1vZHVsZVZhcik7CiAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlU2NvcGUsIGRzdCwgc2NvcGUsIGlkZW50aWZp
ZXJJbmRleCk7CiB9CiAKQEAgLTc3OCw2ICs3ODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
ZnJvbV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgRHlu
YW1pYzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODUyLDYgKzg2MSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3Mo
cmVzb2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVyYW5k
U2xvdCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNocG9pbnRTZXQpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIER5bmFtaWM6CiAgICAg
ICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODczLDcgKzg4Mywx
NSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUg
KGxpbmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworCisgICAgaWYg
KHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmlj
dF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBNb2R1bGVWYXIgZG9lcyBub3Qg
a2VlcCB0aGUgc2NvcGUgcmVnaXN0ZXIgdmFsdWUgYWxpdmUgaW4gREZHLgorICAgICAgICBBU1NF
UlQocmVzb2x2ZVR5cGUgIT0gTW9kdWxlVmFyKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIH0KIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAppbmRleCA4MTJkMWI5OWU2M2MwMTI0ZWFkNjk4NTA0MWU3ZWE4NGI0OWZm
YWZmLi5lNjNiZDU5MjM5MTk0Njg3OGY4YzdiYzBjNjQ1ZGU4OTZiZDQ5M2UzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
QEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAi
UmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlNsb3dQ
YXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAKQEAgLTcz
NSw2ICs3MzYsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpLCByZWdUMSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50SW5zdHJ1
Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRTdG9yZShkc3Qs
IHJlZ1QxLCByZWdUMCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRHluYW1pYzoKICAgICAg
ICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CkBAIC03NDgsNyArNzU0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3cKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19j
YXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAotICAg
IGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9i
YWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICBpZiAocmVzb2x2ZVR5cGUg
PT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVU
eXBlID09IENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CkBAIC04MTEsNiArODE3LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJl
VmFyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTg4
Niw2ICs4OTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGVtaXRQdXRDbG9zdXJl
VmFyKHNjb3BlLCAqb3BlcmFuZFNsb3QsIHZhbHVlLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53
YXRjaHBvaW50U2V0KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAg
Y2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVh
azsKQEAgLTkwNSw3ICs5MTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29w
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAg
cmV0dXJuOwogICAgIHdoaWxlIChsaW5rQ291bnQtLSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3Ry
dWN0aW9uKTsKKworICAgIGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7
CisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmlu
ZGV4IDc3N2NmZGUwOTNhMmQxM2RmNWZlNWMzNjZjOTgyMmY0YWUwODRmYWUuLjE1NjkyMWUzYWNl
YmJlZmExMzY4MmM2OGMxOWQ0NTYxNWZkMWZlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCkBAIC0xNDcsMTAgKzE0NywxMSBAQCB2b2lkIERhdGE6OnBlcmZv
cm1Bc3NlcnRpb25zKFZNJiB2bSkKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhciA9PSAxLCAi
TExJbnQgYXNzdW1lcyBHbG9iYWxWYXIgUmVzdWx0VHlwZSBpcyA9PSAxIik7CiAgICAgc3RhdGlj
X2Fzc2VydChDbG9zdXJlVmFyID09IDIsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXIgUmVzdWx0
VHlwZSBpcyA9PSAyIik7CiAgICAgc3RhdGljX2Fzc2VydChMb2NhbENsb3N1cmVWYXIgPT0gMywg
IkxMSW50IGFzc3VtZXMgTG9jYWxDbG9zdXJlVmFyIFJlc3VsdFR5cGUgaXMgPT0gMyIpOwotICAg
IHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDQs
ICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1
bHRUeXBlIGlzID09IDQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MgPT0gNSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNiIpOwotICAgIHN0YXRpY19h
c3NlcnQoRHluYW1pYyA9PSA3LCAiTExJbnQgYXNzdW1lcyBEeW5hbWljIFJlc3VsdFR5cGUgaXMg
PT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoTW9kdWxlVmFyID09IDQsICJMTEludCBhc3N1bWVz
IE1vZHVsZVZhciBSZXN1bHRUeXBlIGlzID09IDQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA1LCAiTExJbnQgYXNzdW1lcyBHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA1Iik7Cisg
ICAgc3RhdGljX2Fzc2VydChHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJM
TEludCBhc3N1bWVzIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBp
cyA9PSA2Iik7CisgICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcyA9PSA3LCAiTExJbnQgYXNzdW1lcyBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyBSZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KER5bmFtaWMgPT0gOCwg
IkxMSW50IGFzc3VtZXMgRHluYW1pYyBSZXN1bHRUeXBlIGlzID09IDgiKTsKICAgICAKICAgICBB
U1NFUlQoUmVzb2x2ZU1vZGVBbmRUeXBlOjptYXNrID09IDB4ZmZmZik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDI3Y2JjYzVkOTky
OGI2MzQ0MWE0ZDA3ZGI1NzA1MGUwZjhkYTQwYjYuLmUyZDkyOGYzMTA2Yzg5ODNmY2VlMjE3MmVi
YmJlZWVlM2RmYjcyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtMTM2MSw2ICsxMzYxLDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3Jlc29sdmVfc2NvcGUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKKyAgICBSZXNvbHZlVHlw
ZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihwY1s0XS51Lm9wZXJhbmQp
OworICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSByZWdpc3RlciB2YWx1
ZSBhbGl2ZSBpbiBERkcuCisgICAgQVNTRVJUX1VOVVNFRChyZXNvbHZlVHlwZSwgcmVzb2x2ZVR5
cGUgIT0gTW9kdWxlVmFyKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKICAgICBKU1Njb3BlKiBz
Y29wZSA9IExMSU5UX09QKDIpLlJlZ2lzdGVyOjpzY29wZSgpOwogICAgIExMSU5UX1JFVFVSTihK
U1Njb3BlOjpyZXNvbHZlKGV4ZWMsIHNjb3BlLCBpZGVudCkpOwpAQCAtMTM3NCw2ICsxMzc4LDgg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKQogICAgIEpT
T2JqZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7
CiAgICAgUmVzb2x2ZU1vZGVBbmRUeXBlIG1vZGVBbmRUeXBlKHBjWzRdLnUub3BlcmFuZCk7CiAK
KyAgICBBU1NFUlQobW9kZUFuZFR5cGUudHlwZSgpICE9IE1vZHVsZVZhcik7CisKICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChzY29wZSk7CiAgICAgaWYgKCFzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGlkZW50LCBzbG90KSkgewogICAgICAgICBpZiAobW9kZUFuZFR5cGUubW9kZSgpID09IFRo
cm93SWZOb3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQppbmRleCA3NWM5MWY4Njg2ZTRhNWUwODUwMTNiYjExOTIyNWVk
Yzk3YTQ0NWU0Li5hNzMxOGYzM2FhYTNhMTliODFiNjhjZDE3NWRlZDFhOWI1MmNkNWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCkBAIC0xOTIsMTAgKzE5MiwxMSBAQCBjb25zdCBHbG9iYWxQcm9wZXJ0eSA9IDAKIGNvbnN0
IEdsb2JhbFZhciA9IDEKIGNvbnN0IENsb3N1cmVWYXIgPSAyCiBjb25zdCBMb2NhbENsb3N1cmVW
YXIgPSAzCi1jb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA0Ci1j
b25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQotY29uc3QgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Ci1jb25zdCBEeW5hbWljID0gNworY29uc3QgTW9k
dWxlVmFyID0gNAorY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0g
NQorY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDYKK2NvbnN0IENsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNworY29uc3QgRHluYW1pYyA9IDgKIAogY29u
c3QgUmVzb2x2ZU1vZGVNYXNrID0gMHhmZmZmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggN2VmNmI4
N2MxNzBhZDA4M2IxZjUyOWRhODgzNmMwMGNkYTY0YjQ3OC4uNWQ1MTBjZDhkZGVjMzA4NmNlZWM2
M2VjNjA5MmI0Njg0ZTk4OGEzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIwNDUsNiArMjA0NSwx
MyBAQCBtYWNybyBnZXRHbG9iYWxPYmplY3QoZHN0KQogICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQogZW5kCiAKK21hY3JvIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoZHN0
KQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbihkc3QsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KK2VuZAorCiBtYWNybyB2
YXJJbmplY3Rpb25DaGVjayhzbG93UGF0aCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
ICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKQEAgLTIwODcsMTAg
KzIwOTQsMTUgQEAgX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAog
LnJDbG9zdXJlVmFyOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuckdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVs
ZVZhcgogICAgIHJlc29sdmVTY29wZSgpCiAgICAgZGlzcGF0Y2goNykKIAorLnJNb2R1bGVWYXI6
CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MKKyAgICBnZXRJbXBvcnRlZE1vZHVsZVNjb3BlKDEpCisgICAgZGlzcGF0Y2goNykK
KwogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAs
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQpAQCAtMjI4
MSwxMyArMjI5MywxOCBAQCBfbGxpbnRfb3BfcHV0X3RvX3Njb3BlOgogICAgIGRpc3BhdGNoKDcp
CiAKIC5wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6Ci0gICAgYmluZXEgdDAsIENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucER5bmFtaWMKKyAgICBiaW5lcSB0MCwg
Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wTW9kdWxlVmFyCiAgICAgd3JpdGVC
YXJyaWVyT25PcGVyYW5kcygxLCAzKQogICAgIHZhckluamVjdGlvbkNoZWNrKC5wRHluYW1pYykK
ICAgICBsb2FkVmFyaWFibGUoMSwgdDIsIHQxLCB0MCkKICAgICBwdXRDbG9zdXJlVmFyKCkKICAg
ICBkaXNwYXRjaCg3KQogCisucE1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAu
cER5bmFtaWMKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9y
ZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKKyAgICBkaXNwYXRjaCg3KQorCiAucER5bmFt
aWM6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3RvX3Njb3BlKQogICAg
IGRpc3BhdGNoKDcpCkBAIC0yMzgxLDQgKzIzOTgsNCBAQCBfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1
bmN0aW9uX3RoaXM6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3Jl
aSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKKyAgICBkaXNwYXRjaCgyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkMjE1MmEyZjI3N2FkZTU4Nzk3
NmExYzNmMTIwMjM3MjliMzhhNTlhLi41YzAwZTY0NmY2MDEwZTZiYTY4NjFlMzRjZTljZjc3NGE1
YThjNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTkxOCw2ICsxOTE4LDEyIEBAIG1hY3JvIGdldEdsb2Jh
bE9iamVjdChkc3QpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KIGVuZAogCittYWNybyBn
ZXRJbXBvcnRlZE1vZHVsZVNjb3BlKGRzdCkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0
MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oZHN0LCB0MSkKKyAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQxLCA4XQorZW5kCisKIG1hY3JvIHZhckluamVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxP
YmplY3RbdDBdLCB0MApAQCAtMTk1NywxMCArMTk2MywxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9z
Y29wZToKICAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENs
b3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmlu
ZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBk
aXNwYXRjaCg3KQogCisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxl
U2NvcGUoMSkKKyAgICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rp
b25DaGVjayguckR5bmFtaWMpCkBAIC0yMTQ0LDEzICsyMTU1LDE4IEBAIF9sbGludF9vcF9wdXRf
dG9fc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrczoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Ms
IC5wRHluYW1pYworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cywgLnBNb2R1bGVWYXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFy
SW5qZWN0aW9uQ2hlY2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKICAgICBw
dXRDbG9zdXJlVmFyKCkKICAgICBkaXNwYXRjaCg3KQogCisucE1vZHVsZVZhcjoKKyAgICBiaW5l
cSB0MCwgTW9kdWxlVmFyLCAucER5bmFtaWMKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90
aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKKyAgICBkaXNw
YXRjaCg3KQorCiAucER5bmFtaWM6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
cHV0X3RvX3Njb3BlKQogICAgIGRpc3BhdGNoKDcpCkBAIC0yMjMzLDQgKzIyNDksNCBAQCBfbGxp
bnRfb3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9u
OjptX2JvdW5kVGhpc1t0MF0sIHQwCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQog
ICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCisgICAgZGlzcGF0Y2goMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggZjYyMzhmYjk2ODAyYmU1MzdlOTFh
ZGMyNmI4MmQ4OTBiOTU0MDMyZC4uYzFhM2NjMmIxZjA2ODFlMDU5OTJkNWNkNGU2MjZiZTg4MGQ0
Yjk3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFs
eXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXpl
ci5jcHAKQEAgLTgyLDcgKzgyLDkgQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFi
bGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNv
cmQoKS0+bG9va1VwSW1wb3J0RW50cnkobG9jYWxOYW1lKTsKKyAgICBPcHRpb25hbDxKU01vZHVs
ZVJlY29yZDo6SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQo
KS0+dHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmdldCgpKTsKKyAgICBBU1NFUlQob3B0aW9u
YWxJbXBvcnRFbnRyeSk7CisgICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5JiBp
bXBvcnRFbnRyeSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OwogICAgIGlmICh2YXJpYWJsZS5pc0lt
cG9ydGVkTmFtZXNwYWNlKCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRp
bmcuCiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3
NTgwODMzMmU0ZGQ0MDg0NDJhMDM0MzdkNTVjMTA1YWNjMjk1YWIxLi4zNWI2Mjk3OTIwN2VmYWM4
NzQ1NmQ3NzI2NGI0YjBmYWZmZTg2MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTI3MCw2ICsyNzAsMTIgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3Rkel9lcnJvcikKICAgICBUSFJPVyhjcmVhdGVURFpF
cnJvcihleGVjKSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3Rf
bW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKK3sKKyAgICBCRUdJTigpOworICAg
IFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bm90KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDA2N2RmMGMzOGU5MTIwYmY3MDdjZmRlNDFjM2VmYmYy
YTY4NzJlZTMuLjMwMDk4NTVmZjZiYTJkMTUyODNkYjhmODVmM2NlNDU3ZGRiMjg2NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0x
ODksNiArMTg5LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lbnRlcik7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9jYWxsZWUpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF90b190aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfdGhyb3dfdGR6X2Vycm9yKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ub3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9lcSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lcSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggMDAyODVhNjc1NzczNDc0Nzli
ZDlhOWI3YjkzOTU1YzI2NDM0NjU3Yy4uMWI5M2U4ZmQxMjU3ZDBkNzhhYTc5MzY4ODExMjRjYWY2
OTk0NGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMjE5
LDYgKzIxOSwxMCBAQCBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJyb3IiKSkpOwogfQogCitKU09iamVj
dCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCBtZXNzYWdlKSk7Cit9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5oCmluZGV4IGVjMzBhM2RjNDY2ZTFlYjQ0OWIzZTU4NWFhODA0OTJl
ZjE5ODQ2NDcuLmY0NmZlMzc2ZmI4NmM2NTJlNGFlYzg0OTAxM2NlYTJkZjNjODAxYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtNzQsNiArNzQsNyBAQCBKU09iamVj
dCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNv
bnN0IFNvdXJjZUNvZGUmKQogLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJv
dyBhbiBleGNlcHRpb24gd2l0aCBhIGRlZmF1bHQgbWVzc2FnZS4KIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpOwogaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRl
KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgp
LnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3Nh
Z2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5j
b2RlZEpTVmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCmluZGV4IGIxZDAwNTVlY2YwMjQzNDI5ZmFmMTllZGFmZjhmZTA2NTM5YjZkNzUuLjQxNzA0
NzRiMzcwYWYyMjI1ZWI1ODJhMWRjODVkNDU3ZGFjYjJlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC01OTYsNiArNTk2LDExIEBAIHZvaWQg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCiAgICAgQmFzZTo6Y2xlYXJDb2Rl
KCk7CiB9CiAKK1N5bWJvbFRhYmxlKiBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6bW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZSgpCit7CisgICAgcmV0dXJuIGpzQ2FzdDxTeW1ib2xUYWJsZSo+
KG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay0+Z2V0Q29uc3RhbnQobV91bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2stPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lz
dGVyT2Zmc2V0KCkpKTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewog
ICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKaW5kZXggY2RjZWIzMDQyNjVmOTc2ZDAwNzdhZWZkNjU3YjViN2Jh
YmJmMmExNi4uY2NkMzkxMmRhMDQzMjNiMzc5OTQ3MjE1ZjhhZTg4NTIyNzIwMDA2MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTcsNiArNTcsOSBA
QCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsK
IGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBXZWJBc3NlbWJseUNvZGVCbG9jazsKK2NsYXNzIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKK2NsYXNzIEpTU2NvcGU7
CiAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0Nv
bXBpbGF0aW9uIH07CiAKQEAgLTU4OSw2ICs1OTIsOSBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIAorICAgIC8vIFJldHVybiB0
aGUgc3ltYm9sIHRhYmxlIGluIHRoZSBsaW5rZWQgY29kZSBibG9jay4KKyAgICBTeW1ib2xUYWJs
ZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpOworCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNGUwOTRmZDY3OWI5ZDViY2Y0Yjg4NmYz
NjAyYzZjMWIwZmIyMDkxYS4uNWE4YTczNTE3MTY1ZmNkMmE3NWY4Y2NkZDUzNDRjNDM2NzFiMTE4
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtODQsNiArODQsNyBAQAogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpT
TWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTTmF0
aXZlU3RkRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCkBAIC0zMTIsNiArMzEz
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV90eXBlZEFycmF5
c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRGF0YVZp
ZXc6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVE
YXRhVmlldyldLnByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogICAgIG1fbGV4aWNhbEVudmlyb25t
ZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcykpOworICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMp
KTsKICAgICBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3Ry
aWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsK
ICAgICBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuc2V0KG1fdm0sIHRoaXMsIERlYnVnZ2VyU2Nv
cGU6OmNyZWF0ZVN0cnVjdHVyZShtX3ZtLCB0aGlzKSk7CiAgICAgbV93aXRoU2NvcGVTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBq
c051bGwoKSkpOwpAQCAtNzkxLDYgKzc5Myw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1
bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3Bl
ZEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
b3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDFjYTMxYjdiMTI2ZmIyZWZkM2I3MTkwZWFm
NzY0ZjVjZGEwOTkxZmUuLmUzMzQwMGVhZTJkOWJmZGE3N2RiMWJhNjQ0YjFiZTk2ZjZjZTg2NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMjMyLDYgKzIzMiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNj
b3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9sZXhpY2Fs
RW52aXJvbm1lbnRTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1
bGVFbnZpcm9ubWVudFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Rp
cmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Nj
b3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX291
dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZTsKQEAgLTQ0OSw2ICs0NTAsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1
Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSog
bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmly
b25tZW50U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBkaXJlY3RBcmd1bWVudHNT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IG91dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZCYW5k
QXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAppbmRleCA5NTE2MzE4ZDcwMTY5ZTNk
ZDhjMmJlZjc4MzMxMjU2NzVjNWUyMThiLi40NDhlYTQzMWI3YjdjOTgyNjJkNDEwYmYwMWY4NDkz
NzFkOGFiNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBj
bGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNzIEpTTGV4aWNhbEVudmlyb25tZW50IDogcHVibGlj
IEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBKU0xleGlj
YWxFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSopOwog
ICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzAxNzMxMmM2NmQ2MjUzNzY5NzI0
MDEwOWUwN2JkMDAyNzY0NjY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKQEAgLTAsMCArMSwxMzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKworI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBKU01vZHVsZUVudmlyb25tZW50OjpzX2luZm8gPSB7ICJKU01vZHVsZUVudmly
b25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU01vZHVsZUVu
dmlyb25tZW50KSB9OworCitKU01vZHVsZUVudmlyb25tZW50KiBKU01vZHVsZUVudmlyb25tZW50
OjpjcmVhdGUoCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3Vy
cmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVl
LCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIC8vIEpTTGV4aWNhbEVudmly
b25tZW50IChwcmVjaXNlbHksIEpTRW52aXJvbm1lbnRSZWNvcmQpIGhhcyB0aGUgc3RvcmFnZSB0
byBzdG9yZSB0aGUgdmFyaWFibGUgc2xvdHMgYWZ0ZXIgdGhlIGl0cyBjbGFzcyBzdG9yYWdlLgor
ICAgIC8vIEJlY2F1c2UgdGhlIG9mZnNldCBvZiB0aGUgdmFyaWFibGUgc2xvdHMgYXJlIGZpeGVk
IGluIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkLCBpbmhlcml0dGluZyB0aGVzZSBjbGFzcyBhbmQg
YWRkaW5nIG5ldyBtZW1iZXIgZmllbGQgaXMgbm90IGFsbG93ZWQsCisgICAgLy8gdGhlIG5ldyBt
ZW1iZXIgd2lsbCBvdmVybGFwIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLyBUbyBrZWVwIHRo
ZSBKU01vZHVsZUVudmlyb25tZW50IGNvbXBhdGlibGUgdG8gdGhlIEpTTGV4aWNhbEVudmlyb25t
ZW50IGJ1dCBhZGQgdGhlIG5ldyBtZW1iZXIgdG8gc3RvcmUgdGhlIEpTTW9kdWxlUmVjb3JkLCB3
ZSBhZGRpdGlvbmFsbHkgYWxsb2NhdGUKKyAgICAvLyB0aGUgc3RvcmFnZSBhZnRlciB0aGUgdmFy
aWFibGUgc2xvdHMuCisgICAgLy8KKyAgICAvLyBKU0xleGljYWxFbnZpcm9ubWVudDoKKyAgICAv
LyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJpYWJsZSBzbG90cyBdCisgICAgLy8K
KyAgICAvLyBKU01vZHVsZUVudmlyb25tZW50OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmly
b25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF1bIGFkZGl0aW9uYWwgc2xvdHMgZm9yIEpTTW9kdWxl
RW52aXJvbm1lbnQgXQorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHJlc3VsdCA9CisgICAgICAg
IG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEpT
TW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9jYXRp
b25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQodm0sIHN0
cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7CisgICAgcmVzdWx0LT5maW5pc2hD
cmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlKTsKKyAgICB0aGlzLT5t
b2R1bGVSZWNvcmRTbG90KCkuc2V0KHZtLCB0aGlzLCBtb2R1bGVSZWNvcmQpOworfQorCit2b2lk
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNP
YmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5zY29wZVNpemUo
KSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1vZHVsZVJlY29yZFNsb3QoKSk7
Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICBKU01vZHVsZVJlY29y
ZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJl
c29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUu
dWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNv
bHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAgICAvLyBXaGVuIHJlc29sdmVJbXBvcnQg
cmVzb2x2ZXMgdGhlIHJlc29sdXRpb24sIHRoZSBpbXBvcnRlZCBtb2R1bGUgZW52aXJvbm1lbnQg
bXVzdCBoYXZlIHRoZSBiaW5kaW5nLgorICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBv
cnRlZE1vZHVsZUVudmlyb25tZW50ID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQtPm1vZHVsZUVu
dmlyb25tZW50KCk7CisgICAgICAgIFByb3BlcnR5U2xvdCByZWRpcmVjdFNsb3QoaW1wb3J0ZWRN
b2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gaW1wb3J0ZWRNb2R1bGVF
bnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdChp
bXBvcnRlZE1vZHVsZUVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgcmVk
aXJlY3RTbG90KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAg
ICAgIEFTU0VSVChyZWRpcmVjdFNsb3QuaXNWYWx1ZSgpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IHJlZGlyZWN0U2xvdC5nZXRWYWx1ZShleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSk7Cisg
ICAgICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworICAgICAgICBzbG90LnNldFZh
bHVlKHRoaXNPYmplY3QsIHJlZGlyZWN0U2xvdC5hdHRyaWJ1dGVzKCksIHZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKwordm9pZCBKU01v
ZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXNBcnJh
eSwgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgaWYgKHBy
b3BlcnR5TmFtZXNBcnJheS5pbmNsdWRlU3RyaW5nUHJvcGVydGllcygpKSB7CisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgcGFpciA6IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5pbXBvcnRF
bnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRy
eSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgaWYgKCFpbXBvcnRFbnRy
eS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVz
QXJyYXkuYWRkKGltcG9ydEVudHJ5LmxvY2FsTmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1l
bnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpT
TW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVu
dCo+KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgor
ICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5t
b2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4
ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdy
aXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworfQorCitib29s
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwp
OworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgorICAgIEpTTW9k
dWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNv
cmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3Bl
cnR5TmFtZS51aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNv
cmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZWZhNjI2
M2IyYjI3NDlmNzg4YzBhN2YwNzNmNzY3N2EwMDliMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmgKQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBKU01vZHVsZUVudmlyb25tZW50X2gKKyNkZWZpbmUgSlNNb2R1bGVFbnZpcm9ubWVu
dF9oCisKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9k
dWxlUmVjb3JkLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBSZWdpc3RlcjsKKworY2xh
c3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xleGljYWxFbnZpcm9ubWVudCB7Cisg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworcHVibGljOgorICAgIHR5cGVkZWYgSlNMZXhpY2FsRW52aXJvbm1lbnQgQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5
TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpT
TW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNj
b3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01v
ZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCk7CisgICAg
ICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJs
ZSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5G
TzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCksIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mTW9kdWxlUmVjb3JkKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAg
ICAgIHNpemVfdCBvZmZzZXQgPSBCYXNlOjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSk7Cisg
ICAgICAgIEFTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmll
cjxKU01vZHVsZVJlY29yZD4pPihvZmZzZXQpID09IG9mZnNldCk7CisgICAgICAgIHJldHVybiBv
ZmZzZXQ7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZNb2R1bGVS
ZWNvcmQoc3ltYm9sVGFibGUpICsgc2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4p
OworICAgIH0KKworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1vZHVsZVJlY29yZFNsb3QoKS5nZXQoKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworCitw
cml2YXRlOgorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3Bl
KiwgU3ltYm9sVGFibGUqKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1ZhbHVl
IGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIFdyaXRlQmFycmllckJhc2U8
SlNNb2R1bGVSZWNvcmQ+JiBtb2R1bGVSZWNvcmRTbG90KCkKKyAgICB7CisgICAgICAgIHJldHVy
biAqYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+Kj4oYml0d2lz
ZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKCkp
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7Cit9OworCitpbmxpbmUgSlNNb2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZp
cm9ubWVudChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2Nv
cGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwg
Y3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBKU01vZHVsZUVudmlyb25tZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCA3YjYwNjM3NGE2MDYwYjc3MDIw
YzRlZjQ1MTJlOTI0NWUwM2YzZmM1Li5lMzkyNWVmMDBkNGFjNTUwYTRkMDk4NDViOTM1MGQ2Mjg1
OWRmOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNs
dWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCkBAIC02MCwxMCArNjEsNDkgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewogICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVF
bnZpcm9ubWVudCk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlcGVu
ZGVuY2llc01hcCk7CiB9CiAKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1v
ZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fcmVxdWVzdGVkTW9k
dWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjph
ZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBt
X3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK3ZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKK3sK
KyAgICBib29sIGlzTmV3RW50cnkgPSBtX2ltcG9ydEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFt
ZS5pbXBsKCksIGVudHJ5KS5pc05ld0VudHJ5OworICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRy
eSwgaXNOZXdFbnRyeSk7IC8vIFRoaXMgaXMgZ3VhcmFudGVlZCBieSB0aGUgcGFyc2VyLgorfQor
Cit2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYg
ZW50cnkpCit7CisgICAgYm9vbCBpc05ld0VudHJ5ID0gbV9leHBvcnRFbnRyaWVzLmFkZChlbnRy
eS5leHBvcnROYW1lLmltcGwoKSwgZW50cnkpLmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VOVVNF
RChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsgLy8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBw
YXJzZXIuCit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnRyeUdldEltcG9ydEVudHJ5KFVuaXF1
ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpIC0+IE9wdGlvbmFsPEltcG9ydEVudHJ5PgoreworICAg
IGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpOwor
ICAgIGlmIChpdGVyYXRvciA9PSBtX2ltcG9ydEVudHJpZXMuZW5kKCkpCisgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgIHJldHVybiBPcHRpb25hbDxJbXBvcnRFbnRyeT4oaXRlcmF0b3ItPnZh
bHVlKTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5R2V0RXhwb3J0RW50cnkoVW5pcXVl
ZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+IE9wdGlvbmFsPEV4cG9ydEVudHJ5PgoreworICAg
IGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4cG9ydEVudHJpZXMuZmluZChleHBvcnROYW1lKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9leHBvcnRFbnRyaWVzLmVuZCgpKQorICAgICAgICByZXR1
cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gT3B0aW9uYWw8RXhwb3J0RW50cnk+KGl0ZXJhdG9yLT52
YWx1ZSk7Cit9CisKIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2Nh
bChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5h
bWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVu
dHJ5CiB7CiAgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TG9jYWwsIGV4cG9ydE5hbWUs
IElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBsb2NhbE5hbWUsIHZhcmlhYmxlIH07CkBAIC03
OSw2ICsxMTksMjEgQEAgYXV0byBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUlu
ZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGMKICAgICByZXR1cm4gRXhwb3J0
RW50cnkgeyBUeXBlOjpJbmRpcmVjdCwgZXhwb3J0TmFtZSwgbW9kdWxlTmFtZSwgaW1wb3J0TmFt
ZSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OwogfQogCithdXRv
IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpub3RGb3VuZCgpIC0+IFJlc29sdXRpb24KK3sK
KyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6Ok5vdEZvdW5kLCBudWxscHRyLCBJZGVudGlm
aWVyKCkgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6ZXJyb3IoKSAt
PiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIFJlc29sdXRpb24geyBUeXBlOjpFcnJvciwgbnVs
bHB0ciwgSWRlbnRpZmllcigpIH07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRp
b246OmFtYmlndW91cygpIC0+IFJlc29sdXRpb24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7
IFR5cGU6OkFtYmlndW91cywgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07Cit9CisKIHN0YXRpYyBK
U1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQogewogICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sKCkpCkBAIC05
Myw2ICsxNDgsMjc5IEBAIEpTTW9kdWxlUmVjb3JkKiBKU01vZHVsZVJlY29yZDo6aG9zdFJlc29s
dmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0CiAgICAgcmV0dXJuIGpzQ2Fz
dDxKU01vZHVsZVJlY29yZCo+KHBhaXIuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywgInZhbHVlIikpKTsKIH0KIAorYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9y
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkgLT4gUmVzb2x1
dGlvbgoreworICAgIE9wdGlvbmFsPEltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0g
dHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmltcGwoKSk7CisgICAgaWYgKCFvcHRpb25hbElt
cG9ydEVudHJ5KQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6bm90Rm91bmQoKTsKKworICAg
IGNvbnN0IEltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9ICpvcHRpb25hbEltcG9ydEVudHJ5Owor
ICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkKKyAgICAgICAgcmV0
dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CisKKyAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0
ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1v
ZHVsZVJlcXVlc3QpOworICAgIHJldHVybiBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChl
eGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKK30KKworc3RydWN0IFJlc29sdmVRdWVyeSB7
CisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQsIFVuaXF1ZWRT
dHJpbmdJbXBsKiBleHBvcnROYW1lKQorICAgICAgICA6IG1vZHVsZVJlY29yZChtb2R1bGVSZWNv
cmQpCisgICAgICAgICwgZXhwb3J0TmFtZShleHBvcnROYW1lKQorICAgIHsKKyAgICB9CisKKyAg
ICBSZXNvbHZlUXVlcnkoSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCwgY29uc3QgSWRlbnRp
ZmllciYgZXhwb3J0TmFtZSkKKyAgICAgICAgOiBSZXNvbHZlUXVlcnkobW9kdWxlUmVjb3JkLCBl
eHBvcnROYW1lLmltcGwoKSkKKyAgICB7CisgICAgfQorCisgICAgZW51bSBFbXB0eVZhbHVlVGFn
IHsgRW1wdHlWYWx1ZSB9OworICAgIFJlc29sdmVRdWVyeShFbXB0eVZhbHVlVGFnKQorICAgIHsK
KyAgICB9CisKKyAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9OworICAg
IFJlc29sdmVRdWVyeShEZWxldGVkVmFsdWVUYWcpCisgICAgICAgIDogbW9kdWxlUmVjb3JkKG51
bGxwdHIpCisgICAgICAgICwgZXhwb3J0TmFtZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkK
KyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICFleHBvcnROYW1lOworICAgIH0KKworICAgIGJvb2wgaXNEZWxldGVkVmFs
dWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4cG9ydE5hbWUuaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICAvLyBUaGUgbW9kdWxlIHJlY29yZCBpcyBub3Qg
bWFya2VkIGZyb20gdGhlIEdDLiBCdXQgdGhlc2UgcmVjb3JkcyBhcmUgcmVhY2hhYmxlIGZyb20g
dGhlIEpTR2xvYmFsT2JqZWN0LgorICAgIC8vIFNvIHdlIGRvbid0IGNhcmUgdGhlIHJlYWNoYWJp
bGl0eSB0byB0aGlzIHJlY29yZC4KKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOwor
ICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gZXhwb3J0TmFtZTsKK307CisKK3N0cnVjdCBS
ZXNvbHZlUXVlcnlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZXNvbHZl
UXVlcnkmKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvbHZlUXVlcnkmLCBjb25z
dCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCitpbmxpbmUgdW5zaWduZWQgUmVzb2x2ZVF1ZXJ5
SGFzaDo6aGFzaChjb25zdCBSZXNvbHZlUXVlcnkmIHF1ZXJ5KQoreworICAgIHJldHVybiBXVEY6
OlB0ckhhc2g8SlNNb2R1bGVSZWNvcmQqPjo6aGFzaChxdWVyeS5tb2R1bGVSZWNvcmQpICsgSWRl
bnRpZmllclJlcEhhc2g6Omhhc2gocXVlcnkuZXhwb3J0TmFtZSk7Cit9CisKK2lubGluZSBib29s
IFJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKGNvbnN0IFJlc29sdmVRdWVyeSYgbGhzLCBjb25zdCBS
ZXNvbHZlUXVlcnkmIHJocykKK3sKKyAgICByZXR1cm4gbGhzLm1vZHVsZVJlY29yZCA9PSByaHMu
bW9kdWxlUmVjb3JkICYmIGxocy5leHBvcnROYW1lID09IHJocy5leHBvcnROYW1lOworfQorCitz
dGF0aWMgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x2ZUV4cG9ydExvb3AoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJvb3QpCit7CisgICAgLy8gaHR0cDovL3d3
dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXJlc29sdmVleHBvcnQK
KyAgICAvLyBUaGlzIGZ1bmN0aW9uIGF2b2lkcyBDKysgcmVjdXJzaW9uIG9mIHRoZSBuYWl2ZSBS
ZXNvbHZlRXhwb3J0IGltcGxlbWVudGF0aW9uLgorICAgIC8vIEZsYXR0ZW4gdGhlIHJlY3Vyc2lv
biB0byB0aGUgbG9vcCB3aXRoIHRoZSB0YXNrIHF1ZXVlIGFuZCBmcmFtZXMuCisgICAgLy8KKyAg
ICAvLyAxLiBwZW5kaW5nVGFza3MKKyAgICAvLyAgICAgV2UgZW5xdWV1ZSB0aGUgcmVjdXJzaXZl
IHJlc29sdmVFeHBvcnQgY2FsbCB0byB0aGlzIHF1ZXVlIHRvIGF2b2lkIHJlY3Vyc2l2ZSBjYWxs
cyBpbiBDKysuCisgICAgLy8gICAgIFRoZSB0YXNrIGhhcyAzIHR5cGVzLiAoMSkgUXVlcnksICgy
KSBJbmRpcmVjdEZhbGxiYWNrIGFuZCAoMykgR2F0aGVyU3RhcnMuCisgICAgLy8gICAgICgxKSBR
dWVyeQorICAgIC8vICAgICAgICAgUXVlcnlpbmcgdGhlIHJlc29sdXRpb24gdG8gdGhlIGN1cnJl
bnQgbW9kdWxlLgorICAgIC8vICAgICAoMikgSW5kaXJlY3RGYWxsYmFjaworICAgIC8vICAgICAg
ICAgRXhhbWluZSB0aGUgcmVzdWx0IG9mIHRoZSBpbmRpcmVjdCBleHBvcnQgcmVzb2x1dGlvbi4g
T25seSB3aGVuIHRoZSBpbmRpcmVjdCBleHBvcnQgcmVzb2x1dGlvbiBmYWlscywKKyAgICAvLyAg
ICAgICAgIHdlIGxvb2sgaW50byB0aGUgc3RhciBleHBvcnRzLiAoc3RlcCA1LWEtdmkpLgorICAg
IC8vICAgICAoMykgR2F0aGVyU3RhcnMKKyAgICAvLyAgICAgICAgIEV4YW1pbmUgdGhlIHJlc3Vs
dCBvZiB0aGUgc3RhciBleHBvcnQgcmVzb2x1dGlvbnMuCisgICAgLy8KKyAgICAvLyAyLiBmcmFt
ZXMKKyAgICAvLyAgICAgV2hlbiB0aGUgc3BlYyBjYWxscyB0aGUgcmVzb2x2ZUV4cG9ydCByZWN1
cnNpdmVseSwgaW5zdGVhZCB3ZSBhcHBlbmQgdGhlIGZyYW1lCisgICAgLy8gICAgICh0aGF0IGhv
bGRzIHRoZSByZXN1bHQgcmVzb2x1dGlvbikgdG8gdGhlIGZyYW1lcyBhbmQgZW5xdWV1ZSB0aGUg
dGFzayB0byB0aGUgcGVuZGluZ1Rhc2tzLgorICAgIC8vICAgICBUaGUgZW50cnkgaW4gdGhlIGZy
YW1lcyBtZWFucyB0aGUgKmxvY2FsKiByZXNvbHV0aW9uIHJlc3VsdCBvZiB0aGUgc3BlY2lmaWMg
cmVjdXJzaXZlIHJlc29sdmVFeHBvcnQuCisgICAgLy8KKyAgICAvLyBXZSBzaG91bGQgbWFpbnRh
aW4gdGhlIGxvY2FsIHJlc29sdXRpb24gcmVzdWx0IGluc3RlYWQgb2YgaG9sZGluZyB0aGUgZ2xv
YmFsIHJlc29sdXRpb24gcmVzdWx0IG9ubHkuCisgICAgLy8gRm9yIGV4YW1wbGUsCisgICAgLy8K
KyAgICAvLyAgICAgc3RhcgorICAgIC8vICgxKSAtLS0+ICgyKSAiUmVzb2x2ZSIKKyAgICAvLyAg
ICAgIHwKKyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgICstPiAoMykgIk5vdEZvdW5kIgorICAg
IC8vICAgICAgfAorICAgIC8vICAgICAgfCAgICAgICBzdGFyCisgICAgLy8gICAgICArLT4gKDQp
IC0tLT4gKDUpICJSZXNvbHZlIiBbaGVyZV0KKyAgICAvLyAgICAgICAgICAgICAgIHwKKyAgICAv
LyAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICstPiAoNikgIkVycm9yIgor
ICAgIC8vCisgICAgLy8gQ29uc2lkZXIgdGhlIGFib3ZlIGdyYXBoLiBUaGUgbnVtYmVycyByZXBy
ZXNlbnRzIHRoZSBtb2R1bGVzLiBOb3cgd2UgYXJlIFtoZXJlXS4KKyAgICAvLyBJZiB3ZSBvbmx5
IGhvbGQgdGhlIGdsb2JhbCByZXNvbHV0aW9uIHJlc3VsdCBkdXJpbmcgdGhlIHJlc29sdmVFeHBv
cnQgb3BlcmF0aW9uLCBbaGVyZV0sCisgICAgLy8gd2UgZGVjaWRlIHRoZSBlbnRpcmUgcmVzdWx0
IG9mIHJlc29sdmVFeHBvcnQgaXMgIkFtYmlndW91cyIsIGJlY2F1c2UgdGhlcmUgYXJlIG11bHRp
cGxlCisgICAgLy8gIlJlc2xvdmUiIChpbiBtb2R1bGUgKDIpIGFuZCAoNSkpLiBIb3dldmVyLCB0
aGlzIHNob3VsZCBiZWNvbWUgIkVycm9yIiBiZWNhdXNlICg2KSB3aWxsCisgICAgLy8gcHJvcGFn
YXRlICJFcnJvciIgc3RhdGUgdG8gdGhlICg0KSwgKDQpIHdpbGwgYmVjb21lICJFcnJvciIgYW5k
IHRoZW4sICgxKSB3aWxsIGJlY29tZQorICAgIC8vICJFcnJvciIuIFdlIHNob3VsZCBhZ2dyZWdh
dGUgdGhlIHJlc3VsdHMgYXQgdGhlIHN0YXIgZXhwb3J0cyBwb2ludCAoKDQpIGFuZCAoMSkpLgor
ICAgIC8vCisgICAgLy8gVXN1YWxseSwgYm90aCAiRXJyb3IiIGFuZCAiQW1iaWd1b3VzIiBzdGF0
ZXMgd2lsbCB0aHJvdyB0aGUgc3ludGF4IGVycm9yLiBTbyBleGNlcHQgZm9yIHRoZSBjb250ZW50
IG9mIHRoZQorICAgIC8vIGVycm9yIG1lc3NhZ2UsIHRoZXJlIGFyZSBubyBkaWZmZXJlbmNlLiAo
QW5kIGlmIHdlIGZpeCB0aGUgKDYpIHRoYXQgcmFpc2VzICJFcnJvciIsIG5leHQsIGl0IHdpbGwg
cHJvZHVjZQorICAgIC8vIHRoZSAiQW1iaWd1b3VzIiBlcnJvciBkdWUgdG8gKDUpLiBBbnl3YXks
IHVzZXIgbmVlZCB0byBmaXggdGhlIGJvdGguIFNvIHdoaWNoIGVycm9yIHNob3VsZCBiZSByYWlz
ZWQgYXQgZmlyc3QKKyAgICAvLyBkb2Vzbid0IG1hdHRlciBzbyBtdWNoLgorICAgIC8vCisgICAg
Ly8gSG93ZXZlciwgdGhpcyBtYXkgYmVjb21lIHRoZSBwcm9ibGVtIHVuZGVyIHRoZSBtb2R1bGUg
bmFtZXNwYWNlIGNyZWF0aW9uLgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZXRtb2R1bGVuYW1lc3BhY2UKKyAgICAvLyBzZWN0aW9u
IDE1LjIuMS4xOCwgc3RlcCAzLWQtaWkKKyAgICAvLyBIZXJlLCB3ZSBkaXN0aW5ndWlzaCAiQW1i
aWd1b3VzIiBhbmQgIkVycm9yIi4gV2hlbiAiRXJyb3IiIHN0YXRlIGlzIHByb2R1Y2VkLCB3ZSBu
ZWVkIHRvIHRocm93IHRoZSBwcm9wYWdhdGVkIGVycm9yLgorICAgIC8vIEJ1dCBpZiAiQW1iaWd1
b3VzIiBzdGF0ZSBjb21lcywgd2UganVzdCBpZ25vcmUgdGhlIHJlc3VsdC4KKyAgICAvLyBUbyBm
b2xsb3cgdGhlIHJlcXVpcmVtZW50IHN0cmljdGx5LCBpbiB0aGlzIGltcGxlbWVudGF0aW9uLCB3
ZSBrZWVwIHRoZSBsb2NhbCByZXNvbHV0aW9uIHJlc3VsdCB0byBwcm9kdWNlIHRoZQorICAgIC8v
IGNvcnJlY3QgcmVzdWx0IHVuZGVyIHRoZSBhYm92ZSBjb21wbGV4IGNhc2VzLgorCisgICAgdXNp
bmcgUmVzb2x1dGlvbiA9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOworICAgIHR5cGVkZWYg
V1RGOjpIYXNoU2V0PFJlc29sdmVRdWVyeSwgUmVzb2x2ZVF1ZXJ5SGFzaCwgV1RGOjpDdXN0b21I
YXNoVHJhaXRzPFJlc29sdmVRdWVyeT4+IFJlc29sdmVTZXQ7CisgICAgZW51bSBjbGFzcyBUeXBl
IHsgUXVlcnksIEluZGlyZWN0RmFsbGJhY2ssIEdhdGhlclN0YXJzIH07CisgICAgc3RydWN0IFRh
c2sgeworICAgICAgICBSZXNvbHZlUXVlcnkgcXVlcnk7CisgICAgICAgIFR5cGUgdHlwZTsKKyAg
ICB9OworCisgICAgVmVjdG9yPFRhc2ssIDg+IHBlbmRpbmdUYXNrczsKKyAgICBSZXNvbHZlU2V0
IHJlc29sdmVTZXQ7CisgICAgSGFzaFNldDxKU01vZHVsZVJlY29yZCo+IHN0YXJTZXQ7CisgICAg
VmVjdG9yPFJlc29sdXRpb24sIDg+IGZyYW1lczsKKworICAgIGZyYW1lcy5hcHBlbmQoUmVzb2x1
dGlvbjo6bm90Rm91bmQoKSk7CisKKyAgICAvLyBDYWxsIHdoZW4gdGhlIHF1ZXJ5IGlzIG5vdCBy
ZXNvbHZlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUuCisgICAgLy8gSXQgd2lsbCBlbnF1ZXVlIHRo
ZSBzdGFyIHJlc29sdXRpb24gcmVxdWVzdHMuIFJldHVybiAiZmFsc2UiIGlmIHRoZSBlcnJvciBv
Y2N1cnMuCisgICAgYXV0byByZXNvbHZlTm9uTG9jYWwgPSBbJl0oY29uc3QgUmVzb2x2ZVF1ZXJ5
JiBxdWVyeSkgLT4gYm9vbCB7CisgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZXNvbHZlZXhwb3J0CisgICAgICAgIC8vIHNlY3Rp
b24gMTUuMi4xLjE2LjMsIHN0ZXAgNgorICAgICAgICAvLyBJZiB0aGUgImRlZmF1bHQiIG5hbWUg
aXMgbm90IHJlc29sdmVkIGluIHRoZSBjdXJyZW50IG1vZHVsZSwgd2UgbmVlZCB0byB0aHJvdyBh
biBlcnJvciBhbmQgc3RvcCByZXNvbHV0aW9uIGltbWVkaWF0ZWx5LAorICAgICAgICAvLyBSYXRp
b25hbGUgdG8gdGhpcyBlcnJvcjogQSBkZWZhdWx0IGV4cG9ydCBjYW5ub3QgYmUgcHJvdmlkZWQg
YnkgYW4gZXhwb3J0ICouCisgICAgICAgIGlmIChxdWVyeS5leHBvcnROYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5kZWZhdWx0S2V5d29yZC5pbXBsKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgLy8gc3RlcCA3LCBJZiBleHBvcnRTdGFyU2V0IGNvbnRhaW5zIG1v
ZHVsZSwgdGhlbiByZXR1cm4gbnVsbC4KKyAgICAgICAgaWYgKCFzdGFyU2V0LmFkZChxdWVyeS5t
b2R1bGVSZWNvcmQpLmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
ICAgICAvLyBFbnF1ZXVlIHRoZSB0YXNrIHRvIGdhdGhlciB0aGUgcmVzdWx0cyBvZiB0aGUgc3Rh
cnMuCisgICAgICAgIC8vIEFuZCBhcHBlbmQgdGhlIG5ldyBSZXNvbHV0aW9uIGZyYW1lIHRvIGdh
dGhlciB0aGUgbG9jYWwgcmVzdWx0IG9mIHRoZSBzdGFycy4KKyAgICAgICAgcGVuZGluZ1Rhc2tz
LmFwcGVuZChUYXNrIHsgcXVlcnksIFR5cGU6OkdhdGhlclN0YXJzIH0pOworICAgICAgICBmcmFt
ZXMuYXBwZW5kKFJlc29sdXRpb246Om5vdEZvdW5kKCkpOworCisgICAgICAgIC8vIEVucXVldWUg
dGhlIHRhc2tzIGluIHJldmVyc2Ugb3JkZXIuCisgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9
IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJpZXMoKS5yYmVnaW4oKSwgZW5kID0g
cXVlcnkubW9kdWxlUmVjb3JkLT5zdGFyRXhwb3J0RW50cmllcygpLnJlbmQoKTsgaXRlcmF0b3Ig
IT0gZW5kOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBzdGFyTW9kdWxlTmFtZSA9ICppdGVyYXRvcjsKKyAgICAgICAgICAgIEpTTW9k
dWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+aG9z
dFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHN0
YXJNb2R1bGVOYW1lLmdldCgpKSk7CisgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRh
c2sgeyBSZXNvbHZlUXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNvcmQsIHF1ZXJ5LmV4cG9ydE5hbWUu
Z2V0KCkpLCBUeXBlOjpRdWVyeSB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9OworCisgICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IHJlc29sdXRpb24gdmFsdWUgb2Yg
dGhlIHRvcCBmcmFtZS4KKyAgICBhdXRvIGN1cnJlbnRUb3AgPSBbJl0gKCkgLT4gUmVzb2x1dGlv
biYgeworICAgICAgICBBU1NFUlQoIWZyYW1lcy5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4g
ZnJhbWVzLmxhc3QoKTsKKyAgICB9OworCisgICAgLy8gTWVyZ2UgdGhlIGdpdmVuIHJlc29sdXRp
b24gdG8gdGhlIGN1cnJlbnQgcmVzb2x1dGlvbiB2YWx1ZSBvZiB0aGUgdG9wIGZyYW1lLgorICAg
IC8vIElmIHRoZXJlIGlzIGFtYmlndWl0eSwgcmV0dXJuICJmYWxzZSIuIFdoZW4gdGhlICJmYWxz
ZSIgaXMgcmV0dXJuZWQsIHdlIHNob3VsZCBtYWtlIHRoZSByZXN1bHQgImFtYmlndW91cyIuCisg
ICAgYXV0byBtZXJnZVRvQ3VycmVudFRvcCA9IFsmXSAoY29uc3QgUmVzb2x1dGlvbiYgcmVzb2x1
dGlvbikgLT4gYm9vbCB7CisgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlv
bjo6VHlwZTo6Tm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBp
ZiAoY3VycmVudFRvcCgpLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAg
ICAgICAgICAgIGN1cnJlbnRUb3AoKSA9IHJlc29sdXRpb247CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjdXJyZW50VG9wKCkubW9kdWxlUmVjb3Jk
ICE9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkIHx8IGN1cnJlbnRUb3AoKS5sb2NhbE5hbWUgIT0g
cmVzb2x1dGlvbi5sb2NhbE5hbWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7
IHJvb3QsIFR5cGU6OlF1ZXJ5IH0pOworICAgIHdoaWxlICghcGVuZGluZ1Rhc2tzLmlzRW1wdHko
KSkgeworICAgICAgICBjb25zdCBUYXNrIHRhc2sgPSBwZW5kaW5nVGFza3MudGFrZUxhc3QoKTsK
KyAgICAgICAgY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSA9IHRhc2sucXVlcnk7CisKKyAgICAg
ICAgc3dpdGNoICh0YXNrLnR5cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlOjpRdWVyeTogeworICAg
ICAgICAgICAgaWYgKCFyZXNvbHZlU2V0LmFkZCh0YXNrLnF1ZXJ5KS5pc05ld0VudHJ5KQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9k
dWxlUmVjb3JkID0gcXVlcnkubW9kdWxlUmVjb3JkOworICAgICAgICAgICAgY29uc3QgT3B0aW9u
YWw8SlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5PiBvcHRpb25hbEV4cG9ydEVudHJ5ID0gbW9k
dWxlUmVjb3JkLT50cnlHZXRFeHBvcnRFbnRyeShxdWVyeS5leHBvcnROYW1lLmdldCgpKTsKKyAg
ICAgICAgICAgIGlmICghb3B0aW9uYWxFeHBvcnRFbnRyeSkgeworICAgICAgICAgICAgICAgIC8v
IElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgZXhwb3J0ZWQgYmluZGluZyBpbiB0aGUgY3VycmVudCBt
b2R1bGUsCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBsb29rIGludG8gdGhlIHN0YXJz
LgorICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZU5vbkxvY2FsKHRhc2sucXVlcnkpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6ZXJyb3IoKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3QgSlNNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5JiBleHBvcnRFbnRyeSA9ICpvcHRpb25hbEV4cG9ydEVudHJ5
OworICAgICAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgICAgICBj
YXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAg
ICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAg
ICAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3AoUmVzb2x1dGlvbiB7IFJlc29sdXRp
b246OlR5cGU6OlJlc29sdmVkLCBtb2R1bGVSZWNvcmQsIGV4cG9ydEVudHJ5LmxvY2FsTmFtZSB9
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmFtYmlndW91cygpOwor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVj
b3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6IHsKKyAgICAgICAgICAgICAgICBKU01v
ZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBtb2R1bGVSZWNvcmQtPmhvc3RSZXNv
bHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgZXhwb3J0RW50cnkubW9kdWxlTmFtZSk7CisKKyAgICAg
ICAgICAgICAgICAvLyBXaGVuIHRoZSBpbXBvcnRlZCBtb2R1bGUgZG9lcyBub3QgcHJvZHVjZSBh
bnkgcmVzb2x2ZWQgYmluZGluZywgd2UgbmVlZCB0byBsb29rIGludG8gdGhlIHN0YXJzIGluIHRo
ZSAqY3VycmVudCoKKyAgICAgICAgICAgICAgICAvLyBtb2R1bGUuIFRvIGRvIHRoaXMsIHdlIGFw
cGVuZCB0aGUgYEluZGlyZWN0RmFsbGJhY2tgIHRhc2sgdG8gdGhlIHRhc2sgcXVldWUuCisgICAg
ICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgcXVlcnksIFR5cGU6OkluZGly
ZWN0RmFsbGJhY2sgfSk7CisgICAgICAgICAgICAgICAgLy8gQW5kIGFwcGVuZCB0aGUgbmV3IFJl
c29sdXRpb24gZnJhbWUgdG8gY2hlY2sgdGhlIGluZGlyZWN0IGV4cG9ydCB3aWxsIGJlIHJlc29s
dmVkIG9yIG5vdC4KKyAgICAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKFJlc29sdXRpb246Om5v
dEZvdW5kKCkpOworICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IFJl
c29sdmVRdWVyeShpbXBvcnRlZE1vZHVsZVJlY29yZCwgZXhwb3J0RW50cnkuaW1wb3J0TmFtZSks
IFR5cGU6OlF1ZXJ5IH0pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIFR5cGU6OkluZGlyZWN0RmFsbGJhY2s6IHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVj
b3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBmcmFtZXMudGFrZUxhc3QoKTsKKworICAgICAg
ICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkg
eworICAgICAgICAgICAgICAgIC8vIEluZGlyZWN0IGV4cG9ydCBlbnRyeSBkb2VzIG5vdCBwcm9k
dWNlIGFueSByZXNvbHZlZCBiaW5kaW5nLgorICAgICAgICAgICAgICAgIC8vIFNvIHdlIHdpbGwg
aW52ZXN0aWdhdGUgdGhlIHN0YXJzLgorICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZU5vbkxv
Y2FsKHRhc2sucXVlcnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6
ZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gSWYgaW5kaXJlY3QgZXhwb3J0IGVudHJ5IHByb2R1Y2VzIFJlc29sdmVkLCB3
ZSBzaG91bGQgbWVyZ2UgaXQgdG8gdGhlIHVwcGVyIGZyYW1lLgorICAgICAgICAgICAgLy8gQW5k
IGRvIG5vdCBpbnZlc3RpZ2F0ZSB0aGUgc3RhcnMgb2YgdGhlIGN1cnJlbnQgbW9kdWxlLgorICAg
ICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRvcChyZXNvbHV0aW9uKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUmVzb2x1dGlvbjo6YW1iaWd1b3VzKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVHlwZTo6R2F0aGVyU3RhcnM6IHsKKyAgICAgICAg
ICAgIC8vIE1lcmdlIHRoZSBzdGFyIHJlc29sdXRpb24gdG8gdGhlIHVwcGVyIGZyYW1lLgorICAg
ICAgICAgICAgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gc3RhclJlc29sdXRpb24gPSBmcmFt
ZXMudGFrZUxhc3QoKTsKKyAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3Aoc3RhclJl
c29sdXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBBU1NFUlQoZnJhbWVzLnNpemUoKSA9PSAxKTsKKyAgICByZXR1cm4gZnJhbWVzWzBdOworfQor
CithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBy
ZXNvbHZlRXhwb3J0TG9vcChleGVjLCBSZXNvbHZlUXVlcnkodGhpcywgZXhwb3J0TmFtZS5pbXBs
KCkpKTsKK30KKwogdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSk7CkBAIC0xMDEsMTEgKzQyOSwx
MjAgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+
dm0oKSwgdGhpcywgZXhlY3V0YWJsZSk7CisgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhl
YywgZXhlY3V0YWJsZSk7CiB9CiAKLUpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhl
Y1N0YXRlKikKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4
ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKQogewotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlv
bmluc3RhbnRpYXRpb24KKworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLT5tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCk7CisgICAgSlNN
b2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBKU01vZHVsZUVudmlyb25tZW50
OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN5bWJvbFRhYmxlLCBqc1REWlZhbHVlKCksIHRoaXMpOwor
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRp
YXRpb24KKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgOS4KKyAgICAvLyBFbnN1cmUg
YWxsIHRoZSBpbmRpcmVjdCBleHBvcnRzIGFyZSBjb3JyZWN0bHkgcmVzb2x2ZWQgdG8gdW5pcXVl
IGJpbmRpbmdzLgorICAgIC8vIEV2ZW4gaWYgd2UgYXZvaWRlZCBkdXBsaWNhdGUgZXhwb3J0cyBp
biB0aGUgcGFyc2VyLCBzdGlsbCBhbWJpZ3VvdXMgZXhwb3J0cyBvY2N1ciBkdWUgdG8gdGhlIHN0
YXIgZXhwb3J0IChgZXhwb3J0ICogZnJvbSAibW9kImApLgorICAgIC8vIFdoZW4gd2Ugc2VlIHRo
aXMgdHlwZSBvZiBhbWJpZ3VpdHkgZm9yIHRoZSBpbmRpcmVjdCBleHBvcnRzIGhlcmUsIHRocm93
IGEgc3ludGF4IGVycm9yLgorICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50
cmllcykgeworICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZXhwb3J0RW50cnkgPSBwYWlyLnZh
bHVlOworICAgICAgICBpZiAoZXhwb3J0RW50cnkudHlwZSA9PSBKU01vZHVsZVJlY29yZDo6RXhw
b3J0RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7CisgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29s
dXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpOworICAg
ICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVz
b2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJv
cihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwg
U3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlv
bjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhl
YywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmlu
ZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBk
dWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAg
ICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5
IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0
YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJh
dGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTIuCisg
ICAgLy8gSW5zdGFudGlhdGUgbmFtZXNwYWNlIG9iamVjdHMgYW5kIGluaXRpYWxpemUgdGhlIGJp
bmRpbmdzIHdpdGggdGhlbSBpZiByZXF1aXJlZC4KKyAgICAvLyBBbmQgZW5zdXJlIHRoYXQgYWxs
IHRoZSBpbXBvcnRzIGNvcnJlY3RseSByZXNvbHZlZCB0byB1bmlxdWUgYmluZGluZ3MuCisgICAg
Zm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0
IEltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIEpTTW9kdWxl
UmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywg
aW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAgICAgIGlmIChpbXBvcnRFbnRyeS5pc05h
bWVzcGFjZSh2bSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Qgd2lsbCBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3MDUKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0
KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNv
bHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91
bmQ6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJ
bXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5p
bXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAg
ICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGlu
ZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5u
b3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5
cGU6OkVycm9yOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0
cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVk
IGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVk
ZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAg
MTQuCisgICAgLy8gTW9kdWxlIGVudmlyb25tZW50IGNvbnRhaW5zIHRoZSBoZWFwIGFsbG9jYXRl
ZCAidmFyIiwgImZ1bmN0aW9uIiwgImxldCIsICJjb25zdCIsIGFuZCAiY2xhc3MiLgorICAgIC8v
IFdoZW4gY3JlYXRpbmcgdGhlIGVudmlyb25tZW50LCB3ZSBpbml0aWFsaXplZCBhbGwgdGhlIHNs
b3RzIHdpdGggZW1wdHksIGl0J3Mgb2sgZm9yIGxleGljYWwgdmFsdWVzLgorICAgIC8vIEJ1dCBm
b3IgInZhciIgYW5kICJmdW5jdGlvbiIsIHdlIHNob3VsZCBpbml0aWFsaXplIGl0IHdpdGggdW5k
ZWZpbmVkLiBUaGV5IGFyZSBjb250YWluZWQgaW4gdGhlIGRlY2xhcmVkIHZhcmlhYmxlcy4KKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogbV9kZWNsYXJlZFZhcmlhYmxlcykgeworICAg
ICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5r
ZXkuZ2V0KCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7
CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkKKyAgICAgICAgICAgIHN5bWJvbFRhYmxl
UHV0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZh
cmlhYmxlLmtleS5nZXQoKSksIGpzVW5kZWZpbmVkKCksIGZhbHNlKTsKKyAgICB9CisKKyAgICAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9k
dWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBz
dGVwIDE2LWEtaXYuCisgICAgLy8gSW5pdGlhbGl6ZSBoZWFwIGFsbG9jYXRlZCBmdW5jdGlvbiBk
ZWNsYXJhdGlvbnMuCisgICAgLy8gVGhleSBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0aGUgYm9keSBv
ZiB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIHVuZGVyIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBudW1iZXJPZkZ1bmN0aW9ucyA9IHVubGlua2VkQ29kZUJs
b2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsgaSA8IG51bWJlck9mRnVuY3Rpb25zOyArK2kp
IHsKKyAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKKyAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUtPm5hbWUoKS5pbXBsKCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0g
ZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAg
ICAgICAgICAgQVNTRVJUKCF1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmlzRW1w
dHkoKSk7CisgICAgICAgICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZs
b3dQcm9maWxlcigpKSB7CisgICAgICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291
cmNlSUQoKSwKKyAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUt
PnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUtPnNvdXJjZSgpKSwgbW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICAgICAg
c3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQp
OworfQorCitKU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBpZiAoIW1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+
ZXhlY3V0ZShtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpLCBleGVjLCBtX21vZHVsZUVu
dmlyb25tZW50LmdldCgpKTsKKyAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKQEAgLTEyOSwyMyArNTY2LDI1IEBA
IHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1bXAoKQogICAgICAgICBkYXRhTG9nKCIgICAgICBtb2R1
bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVOYW1lKSwgIilcbiIpOwogCiAgICAgZGF0YUxvZygi
ICAgIEltcG9ydDogIiwgbV9pbXBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpCi0gICAgICAgIGRhdGFM
b2coIiAgICAgIGltcG9ydCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUuaW1wb3J0TmFtZSks
ICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubG9jYWxOYW1lKSwgIiksIG1v
ZHVsZSgiLCBwcmludGFibGVOYW1lKHBhaXIudmFsdWUubW9kdWxlUmVxdWVzdCksICIpXG4iKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAg
Y29uc3QgSW1wb3J0RW50cnkmIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgZGF0
YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoaW1wb3J0RW50cnkuaW1wb3J0TmFt
ZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGltcG9ydEVudHJ5LmxvY2FsTmFtZSksICIp
LCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSwgIilc
biIpOworICAgIH0KIAogICAgIGRhdGFMb2coIiAgICBFeHBvcnQ6ICIsIG1fZXhwb3J0RW50cmll
cy5zaXplKCksICIgZW50cmllc1xuIik7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9l
eHBvcnRFbnRyaWVzKSB7Ci0gICAgICAgIGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSA9IHBhaXIu
dmFsdWU7Ci0gICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSkgeworICAgICAgICBjb25zdCBFeHBv
cnRFbnRyeSYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBzd2l0Y2ggKGV4cG9y
dEVudHJ5LnR5cGUpIHsKICAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6Ci0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxl
TmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50cnku
bG9jYWxOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAi
LCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuZXhwb3J0TmFtZSksICIpLCBs
b2NhbCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVz
cGFjZToKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQo
IiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFi
bGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnku
ZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5tb2R1
bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBFeHBv
cnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5k
aXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiks
IGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIs
IHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGRh
dGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9y
dEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50
cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5t
b2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRl
eCA4MWRhMzk2NmU4YzVhOGRhOTMwNGQyODJmNGZiY2E5NGYyNGVhZTQ4Li4wODUyMWI0Y2NkM2Iw
NGFhZWUwM2IzYjQ0MWEyMWMxZjZkNDE5NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJW
YXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTc4LDggKzc5LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6TGlz
dEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9y
ZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNo
LCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRNYXA7CisgICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJ
ZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4g
SW1wb3J0RW50cmllczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRFbnRyaWVzOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIApAQCAtMTAwLDI1ICsxMDEsNDkgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3Qg
SW1wb3J0RW50cnkmKTsKICAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5
Jik7CiAKLSAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKKyAgICBPcHRpb25hbDxJbXBvcnRF
bnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSk7Cisg
ICAgT3B0aW9uYWw8RXhwb3J0RW50cnk+IHRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJ
bXBsKiBleHBvcnROYW1lKTsKIAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUtleTsgfQogICAgIGNvbnN0IE9yZGVyZWRJ
ZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
ZWRNb2R1bGVzOyB9Ci0gICAgY29uc3QgRXhwb3J0TWFwJiBleHBvcnRFbnRyaWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9Ci0gICAgY29uc3QgSW1wb3J0TWFwJiBpbXBvcnRF
bnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgRXhw
b3J0RW50cmllcyYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50cmll
czsgfQorICAgIGNvbnN0IEltcG9ydEVudHJpZXMmIGltcG9ydEVudHJpZXMoKSBjb25zdCB7IHJl
dHVybiBtX2ltcG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYg
c3RhckV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXJFeHBvcnRFbnRyaWVzOyB9
CiAKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KICAgICBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsVmFy
aWFibGVzOyB9CiAKICAgICB2b2lkIGR1bXAoKTsKIAorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQq
IG1vZHVsZUVudmlyb25tZW50KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX21vZHVsZUVudmly
b25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7CisgICAg
fQogCiAgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSopOwogICAgIEpTVmFsdWUgZXhlY3V0ZShFeGVj
U3RhdGUqKTsKIAogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCk7
IH0KIAorICAgIHN0cnVjdCBSZXNvbHV0aW9uIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsg
UmVzb2x2ZWQsIE5vdEZvdW5kLCBBbWJpZ3VvdXMsIEVycm9yIH07CisKKyAgICAgICAgc3RhdGlj
IFJlc29sdXRpb24gbm90Rm91bmQoKTsKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gZXJyb3Io
KTsKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gYW1iaWd1b3VzKCk7CisKKyAgICAgICAgVHlw
ZSB0eXBlOworICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAgICAgICBJ
ZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICB9OworCisgICAgUmVzb2x1dGlvbiByZXNvbHZlRXhw
b3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpOworICAgIFJlc29s
dXRpb24gcmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5h
bWUpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisKIHByaXZhdGU6CiAgICAg
SlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCkBA
IC0xMzQsNyArMTU5LDcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVj
dGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgSlNN
b2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisgICAgdm9pZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9u
cyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSopOwogCiAgICAgLy8gVGhlIGxv
YWRlciByZXNvbHZlcyB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBrZXkuIFRo
ZSBtb2R1bGUga2V5IGlzIHRoZSB1bmlxdWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoaXMgbW9kdWxl
LgogICAgIElkZW50aWZpZXIgbV9tb2R1bGVLZXk7CkBAIC0xNDQsNDYgKzE2OSwzNyBAQCBjbGFz
cyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgVmFy
aWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFyaWFibGVzOwogICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOwogCisgICAgLy8gQ3VycmVudGx5LCB3ZSBkb24ndCBr
ZWVwIHRoZSBvY2N1cnJlbmNlIG9yZGVyIG9mIHRoZSBpbXBvcnQgLyBleHBvcnQgZW50cmllcy4K
KyAgICAvLyBTbywgd2UgZG9lcyBub3QgZ3VhcmFudGVlIHRoZSBvcmRlciBvZiB0aGUgZXJyb3Jz
LgorICAgIC8vIGUuZy4gVGhlIGltcG9ydCBkZWNsYXJhdGlvbiB0aGF0IG9jY3VyciBsYXRlciB0
aGFuIHRoZSBhbm90aGVyIGltcG9ydCBkZWNsYXJhdGlvbiBtYXkKKyAgICAvLyAgICAgIHRocm93
IHRoZSBlcnJvciBldmVuIGlmIHRoZSBmb3JtZXIgaW1wb3J0IGRlY2xhcmF0aW9uIGFsc28gaGFz
IHRoZSBpbnZhbGlkIGNvbnRlbnQuCisgICAgLy8KKyAgICAvLyAgICAgIGltcG9ydCAuLi4gLy8g
KDEpIHRoaXMgaGFzIHNvbWUgaW52YWxpZCBjb250ZW50LgorICAgIC8vICAgICAgaW1wb3J0IC4u
LiAvLyAoMikgdGhpcyBhbHNvIGhhcyBzb21lIGludmFsaWQgY29udGVudC4KKyAgICAvLworICAg
IC8vICAgICAgSW4gdGhlIGFib3ZlIGNhc2UsICgyKSBtYXkgdGhyb3cgdGhlIGVycm9yIGVhcmxp
ZXIgdGhhbiAoMSkKKyAgICAvLworICAgIC8vIEJ1dCwgaW4gdGhlIGFsbCBjYXNlcywgd2Ugd2ls
bCB0aHJvdyB0aGUgc3ludGF4IGVycm9yLiBTbyBleGNlcHQgZm9yIHRoZSBjb250ZW50IG9mIHRo
ZSBzeW50YXggZXJyb3IsCisgICAgLy8gdGhlcmUgYXJlIG5vIGRpZmZlcmVuY2UuCisKICAgICAv
LyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgotICAgIEltcG9ydE1hcCBtX2ltcG9ydEVu
dHJpZXM7CisgICAgSW1wb3J0RW50cmllcyBtX2ltcG9ydEVudHJpZXM7CiAKICAgICAvLyBNYXAg
ZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KLSAgICBFeHBvcnRNYXAgbV9leHBvcnRFbnRyaWVz
OworICAgIEV4cG9ydEVudHJpZXMgbV9leHBvcnRFbnRyaWVzOwogCi0gICAgSWRlbnRpZmllclNl
dCBtX3N0YXJFeHBvcnRFbnRyaWVzOworICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIg
c2luY2UgcmVzb2x2ZUV4cG9ydCByZXF1aXJlcyBpdC4KKyAgICBPcmRlcmVkSWRlbnRpZmllclNl
dCBtX3N0YXJFeHBvcnRFbnRyaWVzOwogCiAgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRl
ciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0
aGlzIG9yZGVyLgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQg
bV9yZXF1ZXN0ZWRNb2R1bGVzOwogCi0gICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlPiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU01h
cD4gbV9kZXBlbmRlbmNpZXNNYXA7Ci19OwogCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6
YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0g
ICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGlu
ZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYg
ZW50cnkpCi17Ci0gICAgbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgp
LCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRy
eShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9leHBvcnRFbnRyaWVzLmFkZChl
bnRyeS5leHBvcnROYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01vZHVs
ZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUp
Ci17Ci0gICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQot
Ci1pbmxpbmUgYXV0byBKU01vZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRyeSYK
LXsKLSAgICByZXR1cm4gKCptX2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsK
LX0KKyAgICBXcml0ZUJhcnJpZXI8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+IG1f
bW9kdWxlRW52aXJvbm1lbnQ7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCBiYjJlZmRkMDYzMWNkMThlYTk3
NTQyNjc0YTJjZTcxODE1MDcyYzhmLi4xZGNhZjc3YTU1ZmUwNDg5OGQxMTY1YzQwNDY1YmQ3MWUx
YTRiYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAt
MjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
U0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIK
KyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCkBAIC02NSw2ICs2NywxOSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgY29u
c3QgSWRlbnRpZgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAg
ICBpZiAoSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQgPSBqc0R5bmFtaWND
YXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihzY29wZSkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1bGVFbnZpcm9ubWVudC0+bW9kdWxlUmVjb3JkKCk7
CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gbW9k
dWxlUmVjb3JkLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIGlkZW50KTsKKyAgICAgICAgICAgIGlmIChy
ZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29s
dmVkKSB7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkUmVjb3JkID0g
cmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9u
bWVudCogaW1wb3J0ZWRFbnZpcm9ubWVudCA9IGltcG9ydGVkUmVjb3JkLT5tb2R1bGVFbnZpcm9u
bWVudCgpOworICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBpbXBvcnRl
ZEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQocmVzb2x1dGlvbi5sb2NhbE5hbWUuaW1w
bCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICAgICAg
ICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShNb2R1bGVWYXIsIG5lZWRzVmFySW5qZWN0
aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIGltcG9ydGVkRW52aXJvbm1lbnQsIGVudHJ5LndhdGNocG9p
bnRTZXQoKSwgZW50cnkuc2NvcGVPZmZzZXQoKS5vZmZzZXQoKSwgcmVzb2x1dGlvbi5sb2NhbE5h
bWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCiAgICAgICAgIGlmIChsZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxl
KCktPnVzZXNOb25TdHJpY3RFdmFsKCkpCiAgICAgICAgICAgICBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyA9IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMiw2ICsyNDcsNyBAQCBj
b25zdCBjaGFyKiByZXNvbHZlVHlwZU5hbWUoUmVzb2x2ZVR5cGUgdHlwZSkKICAgICAgICAgIkds
b2JhbFZhciIsCiAgICAgICAgICJDbG9zdXJlVmFyIiwKICAgICAgICAgIkxvY2FsQ2xvc3VyZVZh
ciIsCisgICAgICAgICJNb2R1bGVWYXIiLAogICAgICAgICAiR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAgIkdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MiLAogICAgICAgICAiQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4IGE2NTMxNjc0OTBmNjgyMjNmNTEx
ZGQyODkwODkyOWZjNDZhMTk3M2MuLjAyNmEyNzE0ZGM4ZDkyMmE5ODI4ODVlNTQ2YjU3OGJhOTYz
NDgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgZW51bSBSZXNvbHZlVHlwZSB7CiAgICAgR2xvYmFsVmFyLAogICAgIENsb3N1cmVW
YXIsCiAgICAgTG9jYWxDbG9zdXJlVmFyLAorICAgIE1vZHVsZVZhciwKIAogICAgIC8vIERpdHRv
LCBidXQgYXQgbGVhc3Qgb25lIGludGVydmVuaW5nIHNjb3BlIHVzZWQgbm9uLXN0cmljdCBldmFs
LCB3aGljaAogICAgIC8vIGNhbiBpbmplY3QgYW4gaW50ZXJjZXB0aW5nIHZhciBkZWxjYXJhdGlv
biBhdCBydW50aW1lLgpAQCAtNzIsNiArNzMsNyBAQCBpbmxpbmUgUmVzb2x2ZVR5cGUgbWFrZVR5
cGUoUmVzb2x2ZVR5cGUgdHlwZSwgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKICAgICBj
YXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIHJldHVy
biBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsKKyAgICBjYXNlIE1vZHVsZVZhcjoK
ICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNl
IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTkwLDYgKzkyLDcgQEAgaW5saW5lIGJvb2wgbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5cGUgdHlwZSkKICAgICBjYXNlIEdsb2JhbFZhcjoK
ICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CisgICAgY2Fz
ZSBNb2R1bGVWYXI6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIEdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6CkBAIC0xMDMsMTMgKzEwNiwxNCBAQCBpbmxpbmUgYm9vbCBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogfQogCiBzdHJ1Y3QgUmVzb2x2ZU9wIHsK
LSAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0
Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQpCisgICAgUmVzb2x2
ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQsIFdhdGNocG9pbnRTZXQq
IHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1w
b3J0ZWROYW1lID0gbnVsbHB0cikKICAgICAgICAgOiB0eXBlKHR5cGUpCiAgICAgICAgICwgZGVw
dGgoZGVwdGgpCiAgICAgICAgICwgc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAgICAgLCBsZXhp
Y2FsRW52aXJvbm1lbnQobGV4aWNhbEVudmlyb25tZW50KQogICAgICAgICAsIHdhdGNocG9pbnRT
ZXQod2F0Y2hwb2ludFNldCkKICAgICAgICAgLCBvcGVyYW5kKG9wZXJhbmQpCisgICAgICAgICwg
aW1wb3J0ZWROYW1lKGltcG9ydGVkTmFtZSkKICAgICB7CiAgICAgfQogCkBAIC0xMTksNiArMTIz
LDcgQEAgc3RydWN0IFJlc29sdmVPcCB7CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGlj
YWxFbnZpcm9ubWVudDsKICAgICBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0OwogICAgIHVp
bnRwdHJfdCBvcGVyYW5kOworICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gaW1wb3J0ZWRO
YW1lOwogfTsKIAogY2xhc3MgUmVzb2x2ZU1vZGVBbmRUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDI4ZTBi
YWRhYTcyYWYzMGNjNzcxOTE5NjA0YTYxMmQ2Y2RiNzNlMDcuLjZlNmY5ZjlhNmRhNjE4MTJlM2My
MWFkNDM2NmZkODdiN2NkMTQ3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6
ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260514</attachid>
            <date>2015-09-03 13:21:39 -0700</date>
            <delta_ts>2015-09-03 14:34:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150903132138.patch</filename>
            <type>text/plain</type>
            <size>109268</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
Mjg2ZjUzMWUyNGEzZjkxMzg2ZDIxMDc2MTI2ZjhiOWY1MzMyOTYxLi43YjJlMWJkNmE2NzE1YTYy
YTNhNmVjNWFlNzk3OGZiMmMzMjhjN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTUtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1
dF90b19zY29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9f
c2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6Cisg
ICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OnBlcmZvcm1Bc3NlcnRpb25zKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFseXplci5jcHA6CisgICAgICAgIChK
U0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZSk6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0Vycm9y
LmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgICogcnVudGlt
ZS9FcnJvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6Ok1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6Ok1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojptb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25t
ZW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRP
d25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25t
ZW50OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQcm9w
ZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50Lmgu
CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlRW52aXJvbm1lbnQ6Om9mZnNldE9mTW9kdWxlUmVjb3JkKToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmQpOgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUVudmlyb25tZW50Ojptb2R1bGVSZWNvcmRTbG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVF
bnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcnVudGltZS9KU01v
ZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVs
ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkpOgorICAgICAgICAo
SlNDOjpKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkpOgorICAgICAgICAoSlNDOjpSZXNv
bHZlUXVlcnk6OlJlc29sdmVRdWVyeSk6CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeTo6aXNF
bXB0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5Ojppc0RlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChKU0M6OlJlc29sdmVRdWVyeUhhc2g6Omhhc2gpOgorICAgICAgICAoSlNDOjpS
ZXNvbHZlUXVlcnlIYXNoOjplcXVhbCk6CisgICAgICAgIChKU0M6OnJlc29sdmVFeHBvcnRMb29w
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMpOgorICAgICAgICAoSlNDOjpK
U01vZHVsZVJlY29yZDo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjpk
dW1wKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6
OkpTTW9kdWxlUmVjb3JkOjpleHBvcnRFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OmltcG9ydEVudHJpZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6c3Rh
ckV4cG9ydEVudHJpZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bW9kdWxlRW52
aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVk
TW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9y
dEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9y
dEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJF
eHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAg
ICAgICAgKEpTQzo6YWJzdHJhY3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpyZXNvbHZlVHlwZU5h
bWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5oOgorICAgICAgICAoSlNDOjptYWtlVHlw
ZSk6CisgICAgICAgIChKU0M6Om5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKToKKyAgICAgICAgKEpT
Qzo6UmVzb2x2ZU9wOjpSZXNvbHZlT3ApOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVy
T2JqZWN0LmNwcDoKKwogMjAxNS0wOS0wMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBwcm90b2NvbCBnZW5lcmF0b3Igc2hvdWxkIG5vdCBh
bGxvdyBub24tYm9vbGVhbiB2YWx1ZXMgZm9yICJvcHRpb25hbCIga2V5CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNjgwNjBhNjk5ZmI0ODk3MDA2ZTRmYTk5MzIwMTI3MGM0
ZDJlYzNkOS4uZWZhNTcwYTIxMjYyMjQ2MzhlNTU1ODU4Y2RjZWZkYmFmZTAyOTI1YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTM3LDYgKzUzNyw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTTG9jay5jcHAKICAgICBy
dW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAKKyAgICBydW50
aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCiAgICAgcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAKICAgICBydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU05v
dEFuT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXgg
Mzk5NjNiNDEwMTFjZTllNTAzZTM2ODlhMDY3NTQ1YTZiNDBiNDBiMS4uOGExMjZlNTU0NTNkMzhj
MDRlOWMyYWMyYzI0NzgyM2IxNTQwNDIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCkBAIC03ODYsNiArNzg2LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNMb2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNNYXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01h
cEl0ZXJhdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPgpAQCAtMTY0MCw2ICsxNjQxLDcgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMb2NrLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTWFwSXRlcmF0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuaCIgLz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAyYmY3MTgw
NDBiMzRkNGZjMDA4M2YyMWE1M2NlNDgyN2UxZmMwMjg2Li42OGU0YzdlNDRmOWM4ODJlMTM0Y2Nm
N2UzYTUwNjBhNmM0YzhjNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzCkBAIC03MjYsNiArNzI2LDkgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU01vZHVsZUVudmlyb25tZW50LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNb2R1bGVSZWNvcmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtMzUwNSw2ICszNTA4LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
b2R1bGVFbnZpcm9ubWVudC5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAg
IDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVs
ZVJlY29yZC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMjJlNzE2ZjUzMTEwN2ZlNTk4
MWM1YTZkMTZkM2E0NTQxZTYxOWY1Li5iYjE2MzAyZDEwMWQ0MDdlOWQyNjA0N2QyNzU3MDEwN2Rm
Nzg3MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTcyNiw2ICsxNzI2LDgg
QEAKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFC
NzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKIAkJRTM5REE0
QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNEMjM5Qzgx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OworCQlFM0QyMzlDOTFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VG
ODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi87IH07
CiAJCUUzRUY4ODc1MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0VGODg3MzFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OURDMTZCMTJFRjI5M0UwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OURDMTU1MTJFRjI3NzIwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlLmNwcCAqLzsgfTsKQEAgLTM1ODcsNiArMzU4OSw4IEBACiAJCUUzOTYzQ0VD
MUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4
ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0Ig
LyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRl
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc3Nyw2ICs0NzgxLDggQEAKIAkJ
CQlBNzAwODc0MDE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCAqLywKIAkJCQlBNzRERUY4RjE4
MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTc0REVGOTAxODJE
OTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLywKKwkJCQlFM0QyMzlDNjFCODI5QzFD
MDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJRTNEMjM5QzcxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLywKIAkJCQlFMzlEQTRBNDFC
N0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUzOURBNEE1MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUUzM0U4RDFBMUI5MDEz
QzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLywKQEAgLTYxMzksNiArNjE0
NSw3IEBACiAJCQkJMEYyQjlDRTkxOUQwQkE3RDAwQjFEMUI1IC8qIERGR09iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDlBMjk4MTdBMEJDNzQwMEVFMjYx
OCAvKiBERkdMSUNNUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDg5Q0ZDMTdBMEI4Q0Mw
MDc3M0FEOCAvKiBERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkYwRjE5QjE2QjcyOUZBMDA1REY5NUIgLyogREZHTG9uZ0xpdmVkU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUZCODY4MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dl
YWtTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzg2LDYg
KzczOTMsNyBAQAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRl
RmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMz
MDYgLyogQ29kZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2
MzEzMDBENjE5NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5QzExMDdFQzM3NjAwNDI3QTQ4IC8qIENvbW1v
bklkZW50aWZpZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0
MzFDMyAvKiBGVExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBjNGM2NmQzYjc5NzZmOTc3
NWJkMTM0ZDFlYTk4OWMxNGE0NWRhYWQ3Li40OTk3YzhlODczNDdhOTVjNmE4ZjZjZDc4YmE5NDhj
N2FkNDRmYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKKyNpbmNs
dWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50Lmgi
CiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKQEAgLTE3ODUsNiArMTc4NiwxOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAg
ICB9CiAgICAgfQogCisgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBjbG9uZWQgc3ltYm9sIHRh
YmxlIGZvciB0aGUgbW9kdWxlIGVudmlyb25tZW50IHNpbmNlIHdlIGFscmVhZHkgaGFkIHRvIGlu
c3RhbnRpYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzLgorICAgIC8vIFNvLCB3ZSByZXBsYWNl
IHRoZSBhYm92ZSBvbmUgd2l0aCB0aGUgdXNlZCBvbmUuCisgICAgaWYgKFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrID0ganNEeW5h
bWljQ2FzdDxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih1bmxpbmtlZENvZGVCbG9j
aykpIHsKKyAgICAgICAgU3ltYm9sVGFibGUqIGNsb25lZFN5bWJvbFRhYmxlID0ganNDYXN0PE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKS0+bW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZSgpOworICAgICAgICAvLyBFbmFibGUgdHlwZSBwcm9maWxlciBmb3IgdGhl
IExvY2FsQ2xvc3VyZVZhciBjYXNlLgorICAgICAgICBpZiAobV92bS0+dHlwZVByb2ZpbGVyKCkp
IHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNsb25lZFN5bWJvbFRh
YmxlLT5tX2xvY2spOworICAgICAgICAgICAgY2xvbmVkU3ltYm9sVGFibGUtPnByZXBhcmVGb3JU
eXBlUHJvZmlsaW5nKGxvY2tlcik7CisgICAgICAgIH0KKyAgICAgICAgbV9jb25zdGFudFJlZ2lz
dGVyc1t1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2stPm1vZHVsZUVudmlyb25tZW50U3lt
Ym9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0KCkgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleF0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIGNsb25lZFN5bWJvbFRhYmxlKTsKKyAg
ICB9CisKICAgICBtX2Z1bmN0aW9uRGVjbHMucmVzaXplVG9GaXQodW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25EZWNscygpKTsKICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlu
a2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKSwgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1
dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKGkpOwpAQCAtMTg2Myw2ICsx
ODc2LDkgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICB1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmNvdW50KCk7CiAgICAg
VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbTo6UmVhZGVyIGluc3RydWN0aW9uUmVhZGVyKHVubGlu
a2VkQ29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSk7CiAKKyAgICAvLyBCb29ra2VlcCB0aGUgc3Ry
b25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgorICAgIEhhc2hTZXQ8SlNNb2R1
bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKKwog
ICAgIFZlY3RvcjxJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGluc3RydWN0
aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0
cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKQEAgLTE5NzIsOSArMTk4OCwxNSBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJz
dHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0
aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA0XS51Lm9wZXJhbmQgPSBvcC50eXBlOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1
XS51Lm9wZXJhbmQgPSBvcC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJv
bm1lbnQpCi0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxl
LnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJv
bFRhYmxlKCkpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKG9wLmxleGljYWxF
bnZpcm9ubWVudCkgeworICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZhcikg
eworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHRoZSBsaW5rZWQgbW9kdWxlIGVudmlyb25t
ZW50IHN0cm9uZ2x5IHJlZmVyZW5jZWQuCisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJvbmds
eVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHMuYWRkKGpzQ2FzdDxKU01vZHVsZUVudmlyb25t
ZW50Kj4ob3AubGV4aWNhbEVudmlyb25tZW50KSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZENvbnN0YW50KG9wLmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5qc0NlbGwuc2V0KCp2bSgpLCBvd25lckV4
ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5zeW1ib2xUYWJsZS5z
ZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xU
YWJsZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgNl0udS5wb2ludGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0xOTk5LDcgKzIwMjEsMTIgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZl
KG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlk
ZW50LCBHZXQsIG1vZGVBbmRUeXBlLnR5cGUoKSk7CiAKLSAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgNF0udS5vcGVyYW5kID0gUmVzb2x2ZU1vZGVBbmRUeXBlKG1vZGVBbmRUeXBlLm1vZGUo
KSwgb3AudHlwZSkub3BlcmFuZCgpOworICAgICAgICAgICAgLy8gTW9kdWxlVmFyIGNhbiBnZXQg
dGhlIHZhcmlhYmxlIGFzIHRoZSBzYW1lIHRvIENsb3N1cmVWYXIuCisgICAgICAgICAgICBpZiAo
b3AudHlwZSA9PSBNb2R1bGVWYXIpCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0
XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5cGUubW9kZSgpLCBDbG9z
dXJlVmFyKS5vcGVyYW5kKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBSZXNvbHZlTW9kZUFuZFR5cGUobW9kZUFuZFR5
cGUubW9kZSgpLCBvcC50eXBlKS5vcGVyYW5kKCk7CisKICAgICAgICAgICAgIGlmIChvcC50eXBl
ID09IEdsb2JhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MpCiAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LndhdGNocG9pbnRTZXQg
PSBvcC53YXRjaHBvaW50U2V0OwogICAgICAgICAgICAgZWxzZSBpZiAob3Auc3RydWN0dXJlKQpA
QCAtMjA2NywxNyArMjA5NCwxOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAg
ICAgICAgIC8vIHdlJ3JlIGFic3RyYWN0bHkgInJlYWQiaW5nIGZyb20gYSBKU1Njb3BlLgogICAg
ICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2ds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwg
R2V0LCB0eXBlKTsKIAotICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIp
CisgICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09
IE1vZHVsZVZhcikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2Fs
RW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3Au
dHlwZSA9PSBHbG9iYWxWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gbV9n
bG9iYWxPYmplY3QuZ2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0gICAgICAgICAgICAgICAgCisKKyAg
ICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA9IChvcC50eXBlID09IE1vZHVs
ZVZhcikgPyBvcC5pbXBvcnRlZE5hbWUuZ2V0KCkgOiBpZGVudC5pbXBsKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICAgICAgICAgICAg
ICAvLyBJZiBvdXIgcGFyZW50IHNjb3BlIHdhcyBjcmVhdGVkIHdoaWxlIHByb2ZpbGluZyB3YXMg
ZGlzYWJsZWQsIGl0IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQgZm9yIHByb2ZpbGluZyB5ZXQuCiAg
ICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhs
b2NrZXIpOwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFi
bGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBl
U2V0Rm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlh
YmxlKGxvY2tlciwgaW1wbCwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9iYWxUeXBl
U2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGltcGws
ICp2bSgpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsVmFyaWFibGVJRCA9IFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiZGRkMDM2N2YzYmUzNzI3
NjlhZGZmYmNmYTU5ODQzMThiMjNjNzg4Li4zODIzYmM3NTVjODRhNmY4ZWJhYmRjMDUwOTBmYmVh
M2JhMWYwZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CkBAIC04Miw2ICs4Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRpb247CitjbGFz
cyBKU01vZHVsZUVudmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRD
b3VudFJlb3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4
IDJmZTFiYjg3ZmYyNzY0YzZlYWUyYjM2ZjQyYTE2NzhiMjg2NzI2ZDYuLmMxMTRiOWI1N2QxNDRk
MTY1ZWE0MWRhZDhmMmE2OGVlOGZhOGI1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjk3LDcgKzI5Nyw2IEBA
IHZvaWQgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiB0aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+
KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUp
OwogfQogCiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXgg
NDA5NWE5MDlkODU2Yzc4ZDQ1ZTA4ZDExY2M5NWVmNjI4NzMwOTE1OC4uZWRjNDMzZjQ3YzczZGI5
NGM5YTY1NGJkMDVhYjhlMTY3NGYxODlkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNs
dWRlICJQYXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlNwZWNp
YWxQb2ludGVyLmgiCi0jaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKICNpbmNsdWRlICJVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTU1LDcgKzU0LDYgQEAgY2xhc3MgUGFy
c2VyRXJyb3I7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlQ29kZTsKIGNs
YXNzIFNvdXJjZVByb3ZpZGVyOwotY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTsKQEAgLTUyNywyOSArNTI1LDM1IEBAIGNsYXNzIFVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVC
bG9jayB7CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKLSAgICAvLyBUaGlzIHN5bWJvbCB0YWJsZSByZXByZXNlbnRzIHRoZSBsYXlvdXQg
b2YgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4gVGhpcyBzeW1ib2wgdGFibGUgd2lsbCBiZSBtb2Rp
ZmllZCBieSB0aGUgYnl0ZQotICAgIC8vIGNvZGUgZ2VuZXJhdG9yIHNpbmNlIHRoZSBtb2R1bGUg
ZW52aXJvbm1lbnQgaW5jbHVkZXMgdGhlIHRvcC1tb3N0IGxleGljYWwgY2FwdHVyZWQgdmFyaWFi
bGVzIGluc2lkZSB0aGUgbW9kdWxlIGNvZGUuCi0gICAgLy8gVGhpcyBtZWFucyB0aGF0LCBvbmNl
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgYWxsb2NhdGVkIGFuZCBpbnN0YW50aWF0ZWQgZnJv
bSB0aGlzIHN5bWJvbCB0YWJsZSwgaXQgaXMgdGl0ZWx5Ci0gICAgLy8gY291cGxlZCB3aXRoIHRo
ZSBzcGVjaWZpYyB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGFuZCB0aGUgc3lt
Ym9sIHRhYmxlLiBTbyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUKLSAgICAvLyBjb2RlLCB3
ZSBzaG91bGQgbm90IGNsZWFyIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2Nr
IGluIHRoZSBtb2R1bGUgZXhlY3V0YWJsZS4gVGhpcyByZXF1aXJlbWVudCBpcyBtZXQKLSAgICAv
LyBiZWNhdXNlIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBvbmx5IGNsZWFycyB1bmxpbmtlZCBjb2Rl
IGluICgxKSB1bm1hcmtlZCBleGVjdXRhYmxlcyBhbmQgKDIpIGZ1bmN0aW9uIGV4ZWN1dGFibGVz
LgorICAgIC8vIFRoaXMgb2Zmc2V0IHJlcHJlc2VudHMgdGhlIGNvbnN0YW50IHJlZ2lzdGVyIG9m
ZnNldCB0byB0aGUgc3RvcmVkIHN5bWJvbCB0YWJsZSB0aGF0IHJlcHJlc2VudHMgdGhlIGxheW91
dCBvZiB0aGUKKyAgICAvLyBtb2R1bGUgZW52aXJvbm1lbnQuIFRoaXMgc3ltYm9sIHRhYmxlIGlz
IGNyZWF0ZWQgYnkgdGhlIGJ5dGUgY29kZSBnZW5lcmF0b3Igc2luY2UgdGhlIG1vZHVsZSBlbnZp
cm9ubWVudCBpbmNsdWRlcworICAgIC8vIHRoZSB0b3AtbW9zdCBsZXhpY2FsIGNhcHR1cmVkIHZh
cmlhYmxlcyBpbnNpZGUgdGhlIG1vZHVsZSBjb2RlLiBUaGlzIG1lYW5zIHRoYXQsIG9uY2UgdGhl
IG1vZHVsZSBlbnZpcm9ubWVudCBpcworICAgIC8vIGFsbG9jYXRlZCBhbmQgaW5zdGFudGlhdGVk
IGZyb20gdGhpcyBzeW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseSBjb3VwbGVkIHdpdGggdGhlIHNw
ZWNpZmljIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtCisgICAgLy8gY29kZSBibG9jayBhbmQgdGhl
IHN0b3JlZCBzeW1ib2wgdGFibGUuIFNvIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2Rl
LCB3ZSBzaG91bGQgbm90IGNsZWFyIHRoZSB1bmxpbmtlZCBtb2R1bGUKKyAgICAvLyBwcm9ncmFt
IGNvZGUgYmxvY2sgaW4gdGhlIG1vZHVsZSBleGVjdXRhYmxlLiBUaGlzIHJlcXVpcmVtZW50IGlz
IG1ldCBiZWNhdXNlIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBvbmx5IGNsZWFycworICAgIC8vIHVu
bGlua2VkIGNvZGUgaW4gKDEpIHVubWFya2VkIGV4ZWN1dGFibGVzIGFuZCAoMikgZnVuY3Rpb24g
ZXhlY3V0YWJsZXMuCiAgICAgLy8KICAgICAvLyBTaW5jZSB0aGUgZnVuY3Rpb24gY29kZSBtYXkg
YmUgZXhlY3V0ZWQgcmVwZWF0ZWRseSBhbmQgdGhlIGVudmlyb25tZW50IG9mIGVhY2ggZnVuY3Rp
b24gZXhlY3V0aW9uIGlzIGRpZmZlcmVudCwKICAgICAvLyB0aGUgZnVuY3Rpb24gY29kZSBuZWVk
IHRvIGFsbG9jYXRlIGFuZCBpbnN0YW50aWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4gdGhlIHByb2xv
Z3VlIG9mIHRoZSBmdW5jdGlvbiBjb2RlLiBPbiB0aGUKICAgICAvLyBvdGhlciBoYW5kLCB0aGUg
bW9kdWxlIGNvZGUgaXMgZXhlY3V0ZWQgb25seSBvbmNlLiBTbyB3ZSBjYW4gaW5zdGFudGlhdGUg
dGhlIG1vZHVsZSBlbnZpcm9ubWVudCBvdXRzaWRlIHRoZSBtb2R1bGUKLSAgICAvLyBjb2RlLiBB
dCB0aGF0IHRpbWUsIHdlIGNvbnN0cnVjdCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJ5IHVzaW5n
IHRoaXMgc3ltYm9sIHRhYmxlIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2RlLgotICAg
IC8vIEluc3RhbnRpYXRpbmcgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0aW5n
IHRoZSBtb2R1bGUgY29kZSBpcyByZXF1aXJlZCB0byBsaW5rIHRoZSBpbXBvcnRlZCBiaW5kaW5n
cwotICAgIC8vIGJldHdlZW4gdGhlIG1vZHVsZXMuCisgICAgLy8gY29kZS4gQXQgdGhhdCB0aW1l
LCB3ZSBjb25zdHJ1Y3QgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBieSB1c2luZyB0aGUgc3ltYm9s
IHRhYmxlIHRoYXQgaXMgaGVsZCBieSB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuCisgICAgLy8gVGhl
IHN5bWJvbCB0YWJsZSBoZWxkIGJ5IHRoZSBleGVjdXRhYmxlIGlzIHRoZSBjbG9uZWQgb25lIGZy
b20gb25lIGluIHRoZSB1bmxpbmtlZCBjb2RlIGJsb2NrLiBJbnN0YW50aWF0aW5nIHRoZSBtb2R1
bGUKKyAgICAvLyBlbnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0aW5nIGFuZCBsaW5raW5nIHRoZSBt
b2R1bGUgY29kZSBpcyByZXF1aXJlZCB0byBsaW5rIHRoZSBpbXBvcnRlZCBiaW5kaW5ncyBiZXR3
ZWVuIHRoZSBtb2R1bGVzLgogICAgIC8vCi0gICAgLy8gVGhlIHVubGlua2VkIG1vZHVsZSBwcm9n
cmFtIGNvZGUgYmxvY2sgb25seSBob2xkcyB0aGUgc3ltYm9sIHRhYmxlLiBJdCBkb2VzIG5vdCBo
b2xkIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlCi0gICAgLy8gdGhlIG1vZHVsZSBl
bnZpcm9ubWVudCByZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0g
Y29kZSBibG9jaywgdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrCi0gICAgLy8gY2FuIGJl
IHVzZWQgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyB1
bmxpbmtlZCBjb2RlIGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbgotICAgIC8v
IHRoZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVu
dHMuIFNvIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBjYWNo
ZWQuCisgICAgLy8gVGhlIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgb25seSBo
b2xkcyB0aGUgcHJlLWNsb25lZCBzeW1ib2wgdGFibGUgaW4gaXRzIGNvbnN0YW50IHJlZ2lzdGVy
IHBvb2wuIEl0IGRvZXMKKyAgICAvLyBub3QgaG9sZCB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSBl
bnZpcm9ubWVudC4gU28gd2hpbGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCByZXF1aXJlcyB0aGUg
c3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlCisgICAgLy8gcHJvZ3JhbSBjb2RlIGJsb2NrLCB0aGUg
dW5saW5rZWQgbW9kdWxlIGNvZGUgYmxvY2sgY2FuIGJlIHVzZWQgZm9yIHRoZSBtb2R1bGUgZW52
aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcworICAgIC8vIHVubGlua2VkIGNvZGUgYmxv
Y2suIFRoZXJlIGlzIDE6TiByZWxhdGlvbiBiZXR3ZWVuIHRoZSB1bmxpbmtlZCBtb2R1bGUgY29k
ZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMuIFNvIHRoZQorICAgIC8vIHVubGlu
a2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZC4KICAgICAvLwogICAg
IC8vIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sgZm9yIHRoZSBtb2R1
bGUgZW52aXJvbm1lbnQgaW5jbHVkZXMgdGhlIHJlc29sdmVkIHJlZmVyZW5jZXMgdG8gdGhlIGlt
cG9ydGVkCiAgICAgLy8gYmluZGluZ3MuIFRoZSBpbXBvcnRlZCBiaW5kaW5nIHJlZmVyZW5jZXMg
dGhlIG90aGVyIG1vZHVsZSBlbnZpcm9ubWVudCwgc28gdGhlIGxpbmtlZCBjb2RlIGJsb2NrIGlz
IHRpdGx5IGNvdXBsZWQKICAgICAvLyB3aXRoIHRoZSBzcGVjaWZpYyBzZXQgb2YgdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudHMuIFRodXMsIHRoZSBsaW5rZWQgY29kZSBibG9jayBzaG91bGQgbm90IGJl
IGNhY2hlZC4KLSAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgp
IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQorICAgIGlu
dCBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCgpIHsg
cmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZz
ZXQ7IH0KKyAgICB2b2lkIHNldE1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJl
Z2lzdGVyT2Zmc2V0KGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX21vZHVsZUVudmlyb25t
ZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KIAog
cHJpdmF0ZToKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCkBAIC01NTcsMTMg
KzU2MSw3IEBAIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1
YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgICAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuc2V0KHZtLCB0
aGlzLCBTeW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVy
PFN5bWJvbFRhYmxlPiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGU7CisgICAgaW50IG1f
bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgeyAwIH07
CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCA3ODNiMjE1N2ExZjFlMTNjMmVjYzFhZmZmNWU3ZmRjNDlmZTllM2Q3Li44N2Mw
ZGI1YThlZGMxOWEwMzE0MDRiYWZlYTI5OTA2ZTgzODBiYzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtNTI0LDkgKzUyNCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgaWYgKG1faXNC
dWlsdGluRnVuY3Rpb24pCiAgICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsK
IAotICAgIC8vIFVzZSB0aGUgc3ltYm9sIHRhYmxlIGFsbG9jYXRlZCBpbiB0aGUgdW5saW5rZWQg
Y29kZSBibG9jay4gVGhpcyBzeW1ib2wgdGFibGUKLSAgICAvLyB3aWxsIGJlIHVzZWQgdG8gYWxs
b2NhdGUgYW5kIGluc3RhbnRpYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCi0gICAgU3ltYm9s
VGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPm1vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoKm1fdm0pOwogICAgIG1vZHVsZUVu
dmlyb25tZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmlj
dEV2YWwpOwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFNjb3BlVHlwZShT
eW1ib2xUYWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwogCkBAIC01ODAsNiArNTc4LDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJv
Z3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhp
Y2FsVmFyaWFibGVzID0gbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKTsKICAg
ICBpbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcywgbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZSwgU2NvcGVSZWdpc3RlclR5cGU6OkJsb2NrLCBsb29rVXBWYXJL
aW5kKTsKIAorICAgIC8vIFdlIGtlZXAgdGhlIHN5bWJvbCB0YWJsZSBpbiBjb25zdGFudCByZWdp
c3RlciBwb29sLgogICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGUgPSBudWxscHRy
OwogICAgIGlmICh2bS50eXBlUHJvZmlsZXIoKSkKICAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJs
ZSA9IGFkZENvbnN0YW50VmFsdWUobW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7CkBAIC02
NDQsNiArNjQzLDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgICAgICAgICBtX2Z1
bmN0aW9uc1RvSW5pdGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIE5vcm1h
bEZ1bmN0aW9uVmFyaWFibGUpKTsKICAgICAgICAgfQogICAgIH0KKworICAgIC8vIFJlbWVtYmVy
IHRoZSBjb25zdGFudCByZWdpc3RlciBvZmZzZXQgdG8gdGhlIHRvcC1tb3N0IHN5bWJvbCB0YWJs
ZS4gVGhpcyBzeW1ib2wgdGFibGUgd2lsbCBiZQorICAgIC8vIGNsb25lZCBpbiB0aGUgY29kZSBi
bG9jayBsaW5raW5nLiBBZnRlciB0aGF0LCB0byBjcmVhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVu
dCwgd2UgcmV0cmlldmUKKyAgICAvLyB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmcm9tIHRoZSBs
aW5rZWQgY29kZSBibG9jayBieSB1c2luZyB0aGlzIG9mZnNldC4KKyAgICBjb2RlQmxvY2stPnNl
dE1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0KGNvbnN0
YW50U3ltYm9sVGFibGUtPmluZGV4KCkpOwogfQogCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5dGVj
b2RlR2VuZXJhdG9yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggN2Y2NTA1MmRhOGYyZjFmOTc0MzRjOGNiN2E2YTIwZmM0MjI2ZTUw
Ny4uOTc5YzhlNjgwZDZkOGQwNjhlNmRmZjQ1YjVkNWFlMDhkYTE2OWY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQyLDYgKzQy
LDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRT
dGF0dXMuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgpAQCAtMzgzMyw2ICszODM0LDE0
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcyB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldERpcmVjdCht
X2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBNb2R1bGVWYXI6IHsKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgdmFs
dWUgb2YgdGhlICJzY29wZSIgdmlydHVhbCByZWdpc3RlciBpcyBub3QgdXNlZCBpbiBMTEludCAv
IGJhc2VsaW5lIG9wX3Jlc29sdmVfc2NvcGUgd2l0aCBNb2R1bGVWYXIsCisgICAgICAgICAgICAg
ICAgLy8gd2UgbmVlZCBub3QgdG8ga2VlcCBpdCBhbGl2ZSBieSB0aGUgUGhhbnRvbSBub2RlLgor
ICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0g
anNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0Nl
bGwuZ2V0KCkpOworICAgICAgICAgICAgICAgIC8vIE1vZHVsZSBlbnZpcm9ubWVudCBpcyBhbHJl
YWR5IHN0cm9uZ2x5IHJlZmVyZW5jZWQgYnkgdGhlIENvZGVCbG9jay4KKyAgICAgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRzdCksIHdlYWtKU0NvbnN0YW50KG1vZHVsZUVudmlyb25t
ZW50KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAg
ICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKQEAgLTQw
MDIsNiArNDAxMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0Q2xvc3VyZVZhciwgT3BJ
bmZvKG9wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbiksIHNjb3BlTm9kZSkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6
CiAgICAgICAgICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQwODYsNiArNDA5
NiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICAgICAgICAgIC8vIE5lZWQgbm90
IHRvIGtlZXAgInNjb3BlIiBhbmQgInZhbHVlIiByZWdpc3RlciB2YWx1ZXMgaGVyZSBieSBQaGFu
dG9tIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBub3QgdXNlZCBpbiBMTElu
dCAvIGJhc2VsaW5lIG9wX3B1dF90b19zY29wZSB3aXRoIE1vZHVsZVZhci4KKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggZmE2MmVhNmYz
NzZkODhjZWZmNGU5ODI3NTQzMjY2ZTBkOTNhNDQ5Yy4uNWE3YTJhZTVkZDBlNmQwMDQ5MWMwNzdi
YzU0OGRiZGQxNzE2NmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4aWNh
bEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMTk0LDYgKzExOTUsNTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpT
VmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCitKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCit7CisgICAg
Vk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdTY29wZSh0
aGlzKTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKKyAg
ICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVz
eSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9j
aygpKTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgICAgIHJldHVybiBqc051
bGwoKTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2Jq
ZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJldHVybiBj
aGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworCisgICAg
SlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24o
Y2FsbEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwpOworICAgIGlmIChVTkxJS0VM
WSghIWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFt
ZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgIE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygp
OworCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJl
KGNhbGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisKKyAgICAvLyBUaGUgfHRoaXN8
IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgorICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1l
bnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1n
ZXR0aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHBy
b3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+
Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisKKyAgICBpZiAoTGVn
YWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHBy
b2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBl
eGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAg
ICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHsKKyAgICAg
ICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsK
KyAgICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRl
KCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5UHJvZmlsZXIq
IHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT5kaWRF
eGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZp
cnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpk
ZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQpCiB7CiAg
ICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkt
PmRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCmluZGV4IDAzOGJjYTVjZmM3NWI5YjI0NTc2MmQ2ZTY0ZjY4ZjJlNzhlYzYyNTEu
LjRmZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0MDk1YWY0NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw2ICs1NCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQXJyb3dGdW5jdGlvbjsKICAgICBjbGFz
cyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIEpTTW9k
dWxlRW52aXJvbm1lbnQ7CiAgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwpAQCAtMjE1
LDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxs
KENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRh
JiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmplY3Qq
IGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1
Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3
VGFyZ2V0KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgQ2FsbEZy
YW1lKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKyAgICAgICAgSlNWYWx1ZSBleGVj
dXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNNb2R1bGVFbnZpcm9u
bWVudCopOwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1
bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2
LCBpbnQmIGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggNDhjZGYxMWZkMzZmYWZkOTZiZjJiYjY3MWY1NWMz
MWQ0NTdlNjQ0OS4uNDlmZTkzZmExNDg5MWEzYTIxNTFiMGI3NGU4N2VmOTJjNDhmNzg3NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIKICNpbmNsdWRlICJTY29w
ZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHNUYWJsZS5oIgorI2luY2x1
ZGUgIlNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgog
CiAKQEAgLTcwMyw2ICs3MDQsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3Bl
LCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihj
dXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEeW5h
bWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKQEAgLTcx
NiwxMiArNzIxLDE1IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yZXNvbHZlX3Njb3BlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93CiAgICAgaW50IGRzdCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5
cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4oY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCk7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2
ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCisgICAgaWYg
KHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZh
ciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09IE1vZHVsZVZh
cikKICAgICAgICAgcmV0dXJuOwogCisKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgaW50
MzJfdCBzY29wZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgaW50MzJf
dCBpZGVudGlmaWVySW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAg
IC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSByZWdpc3RlciB2YWx1ZSBhbGl2
ZSBpbiBERkcuCisgICAgQVNTRVJUKHJlc29sdmVUeXBlICE9IE1vZHVsZVZhcik7CiAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlU2NvcGUsIGRzdCwgc2NvcGUsIGlkZW50aWZpZXJJ
bmRleCk7CiB9CiAKQEAgLTc3OCw2ICs3ODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJv
bV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1p
YzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODUyLDYgKzg2MSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVz
b2x2ZVR5cGUpKTsKICAgICAgICAgZW1pdFB1dENsb3N1cmVWYXIoc2NvcGUsICpvcGVyYW5kU2xv
dCwgdmFsdWUsIGN1cnJlbnRJbnN0cnVjdGlvbls1XS51LndhdGNocG9pbnRTZXQpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAg
IGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODczLDcgKzg4MywxNSBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxp
bmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworCisgICAgaWYgKHJl
c29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAgICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Rocm93X3N0cmljdF9t
b2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKTsKKyAgICAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBNb2R1bGVWYXIgZG9lcyBub3Qga2Vl
cCB0aGUgc2NvcGUgcmVnaXN0ZXIgdmFsdWUgYWxpdmUgaW4gREZHLgorICAgICAgICBBU1NFUlQo
cmVzb2x2ZVR5cGUgIT0gTW9kdWxlVmFyKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgIH0KIH0KIAogdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAppbmRleCA4MTJkMWI5OWU2M2MwMTI0ZWFkNjk4NTA0MWU3ZWE4NGI0OWZmYWZm
Li5lNjNiZDU5MjM5MTk0Njg3OGY4YzdiYzBjNjQ1ZGU4OTZiZDQ5M2UzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVz
dWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgorI2luY2x1ZGUgIlNsb3dQYXRo
Q2FsbC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiAKQEAgLTczNSw2
ICs3MzYsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpLCByZWdUMSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50SW5zdHJ1Y3Rp
b25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRTdG9yZShkc3QsIHJl
Z1QxLCByZWdUMCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAg
YWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CkBAIC03NDgsNyArNzU0LDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3cKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAotICAgIGlm
IChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxW
YXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0g
R2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBl
ID09IENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKQogICAgICAgICByZXR1
cm47CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CkBAIC04MTEsNiArODE3LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgTG9jYWxDbG9zdXJlVmFy
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAgLTg4Niw2
ICs4OTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGVtaXRQdXRDbG9zdXJlVmFy
KHNjb3BlLCAqb3BlcmFuZFNsb3QsIHZhbHVlLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53YXRj
aHBvaW50U2V0KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2Fz
ZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsK
QEAgLTkwNSw3ICs5MTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgcmV0
dXJuOwogICAgIHdoaWxlIChsaW5rQ291bnQtLSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0
aW9uKTsKKworICAgIGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7Cisg
ICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4
IDc3N2NmZGUwOTNhMmQxM2RmNWZlNWMzNjZjOTgyMmY0YWUwODRmYWUuLjE1NjkyMWUzYWNlYmJl
ZmExMzY4MmM2OGMxOWQ0NTYxNWZkMWZlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCkBAIC0xNDcsMTAgKzE0NywxMSBAQCB2b2lkIERhdGE6OnBlcmZvcm1B
c3NlcnRpb25zKFZNJiB2bSkKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhciA9PSAxLCAiTExJ
bnQgYXNzdW1lcyBHbG9iYWxWYXIgUmVzdWx0VHlwZSBpcyA9PSAxIik7CiAgICAgc3RhdGljX2Fz
c2VydChDbG9zdXJlVmFyID09IDIsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXIgUmVzdWx0VHlw
ZSBpcyA9PSAyIik7CiAgICAgc3RhdGljX2Fzc2VydChMb2NhbENsb3N1cmVWYXIgPT0gMywgIkxM
SW50IGFzc3VtZXMgTG9jYWxDbG9zdXJlVmFyIFJlc3VsdFR5cGUgaXMgPT0gMyIpOwotICAgIHN0
YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDQsICJM
TEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRU
eXBlIGlzID09IDQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPT0gNSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJMTEludCBhc3N1bWVzIENsb3N1cmVWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoRHluYW1pYyA9PSA3LCAiTExJbnQgYXNzdW1lcyBEeW5hbWljIFJlc3VsdFR5cGUgaXMgPT0g
NyIpOworICAgIHN0YXRpY19hc3NlcnQoTW9kdWxlVmFyID09IDQsICJMTEludCBhc3N1bWVzIE1v
ZHVsZVZhciBSZXN1bHRUeXBlIGlzID09IDQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA1LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA1Iik7CisgICAg
c3RhdGljX2Fzc2VydChHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJMTElu
dCBhc3N1bWVzIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9
PSA2Iik7CisgICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyA9PSA3LCAiTExJbnQgYXNzdW1lcyBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBS
ZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KER5bmFtaWMgPT0gOCwgIkxM
SW50IGFzc3VtZXMgRHluYW1pYyBSZXN1bHRUeXBlIGlzID09IDgiKTsKICAgICAKICAgICBBU1NF
UlQoUmVzb2x2ZU1vZGVBbmRUeXBlOjptYXNrID09IDB4ZmZmZik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDI3Y2JjYzVkOTkyOGI2
MzQ0MWE0ZDA3ZGI1NzA1MGUwZjhkYTQwYjYuLmUyZDkyOGYzMTA2Yzg5ODNmY2VlMjE3MmViYmJl
ZWVlM2RmYjcyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtMTM2MSw2ICsxMzYxLDEwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3Jlc29sdmVfc2NvcGUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKKyAgICBSZXNvbHZlVHlwZSBy
ZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihwY1s0XS51Lm9wZXJhbmQpOwor
ICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSByZWdpc3RlciB2YWx1ZSBh
bGl2ZSBpbiBERkcuCisgICAgQVNTRVJUX1VOVVNFRChyZXNvbHZlVHlwZSwgcmVzb2x2ZVR5cGUg
IT0gTW9kdWxlVmFyKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKICAgICBKU1Njb3BlKiBzY29w
ZSA9IExMSU5UX09QKDIpLlJlZ2lzdGVyOjpzY29wZSgpOwogICAgIExMSU5UX1JFVFVSTihKU1Nj
b3BlOjpyZXNvbHZlKGV4ZWMsIHNjb3BlLCBpZGVudCkpOwpAQCAtMTM3NCw2ICsxMzc4LDggQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKQogICAgIEpTT2Jq
ZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CiAg
ICAgUmVzb2x2ZU1vZGVBbmRUeXBlIG1vZGVBbmRUeXBlKHBjWzRdLnUub3BlcmFuZCk7CiAKKyAg
ICBBU1NFUlQobW9kZUFuZFR5cGUudHlwZSgpICE9IE1vZHVsZVZhcik7CisKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChzY29wZSk7CiAgICAgaWYgKCFzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMs
IGlkZW50LCBzbG90KSkgewogICAgICAgICBpZiAobW9kZUFuZFR5cGUubW9kZSgpID09IFRocm93
SWZOb3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCA3NWM5MWY4Njg2ZTRhNWUwODUwMTNiYjExOTIyNWVkYzk3
YTQ0NWU0Li5hNzMxOGYzM2FhYTNhMTliODFiNjhjZDE3NWRlZDFhOWI1MmNkNWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0xOTIsMTAgKzE5MiwxMSBAQCBjb25zdCBHbG9iYWxQcm9wZXJ0eSA9IDAKIGNvbnN0IEds
b2JhbFZhciA9IDEKIGNvbnN0IENsb3N1cmVWYXIgPSAyCiBjb25zdCBMb2NhbENsb3N1cmVWYXIg
PSAzCi1jb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA0Ci1jb25z
dCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQotY29uc3QgQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Ci1jb25zdCBEeW5hbWljID0gNworY29uc3QgTW9kdWxl
VmFyID0gNAorY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQor
Y29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDYKK2NvbnN0IENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNworY29uc3QgRHluYW1pYyA9IDgKIAogY29uc3Qg
UmVzb2x2ZU1vZGVNYXNrID0gMHhmZmZmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggN2VmNmI4N2Mx
NzBhZDA4M2IxZjUyOWRhODgzNmMwMGNkYTY0YjQ3OC4uNWQ1MTBjZDhkZGVjMzA4NmNlZWM2M2Vj
NjA5MmI0Njg0ZTk4OGEzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIwNDUsNiArMjA0NSwxMyBA
QCBtYWNybyBnZXRHbG9iYWxPYmplY3QoZHN0KQogICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQogZW5kCiAKK21hY3JvIGdldEltcG9ydGVkTW9kdWxlU2NvcGUoZHN0KQor
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bihkc3QsIHQxKQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KK2VuZAorCiBtYWNybyB2YXJJ
bmplY3Rpb25DaGVjayhzbG93UGF0aCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKQEAgLTIwODcsMTAgKzIw
OTQsMTUgQEAgX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnJD
bG9zdXJlVmFyOgotICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrcworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZh
cgogICAgIHJlc29sdmVTY29wZSgpCiAgICAgZGlzcGF0Y2goNykKIAorLnJNb2R1bGVWYXI6Cisg
ICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MKKyAgICBnZXRJbXBvcnRlZE1vZHVsZVNjb3BlKDEpCisgICAgZGlzcGF0Y2goNykKKwog
LnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQpAQCAtMjI4MSwx
MyArMjI5MywxOCBAQCBfbGxpbnRfb3BfcHV0X3RvX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAK
IC5wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6Ci0gICAgYmluZXEgdDAsIENsb3N1
cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucER5bmFtaWMKKyAgICBiaW5lcSB0MCwgQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wTW9kdWxlVmFyCiAgICAgd3JpdGVCYXJy
aWVyT25PcGVyYW5kcygxLCAzKQogICAgIHZhckluamVjdGlvbkNoZWNrKC5wRHluYW1pYykKICAg
ICBsb2FkVmFyaWFibGUoMSwgdDIsIHQxLCB0MCkKICAgICBwdXRDbG9zdXJlVmFyKCkKICAgICBk
aXNwYXRjaCg3KQogCisucE1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAucER5
bmFtaWMKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFk
b25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKKyAgICBkaXNwYXRjaCg3KQorCiAucER5bmFtaWM6
CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X3RvX3Njb3BlKQogICAgIGRp
c3BhdGNoKDcpCkBAIC0yMzgxLDQgKzIzOTgsNCBAQCBfbGxpbnRfb3BfbG9hZF9hcnJvd2Z1bmN0
aW9uX3RoaXM6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3JlaSBD
ZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KLSAgICBkaXNwYXRjaCgyKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKKyAgICBkaXNwYXRjaCgyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBkMjE1MmEyZjI3N2FkZTU4Nzk3NmEx
YzNmMTIwMjM3MjliMzhhNTlhLi41YzAwZTY0NmY2MDEwZTZiYTY4NjFlMzRjZTljZjc3NGE1YThj
NDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMTkxOCw2ICsxOTE4LDEyIEBAIG1hY3JvIGdldEdsb2JhbE9i
amVjdChkc3QpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KIGVuZAogCittYWNybyBnZXRJ
bXBvcnRlZE1vZHVsZVNjb3BlKGRzdCkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MCkK
KyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oZHN0LCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIs
IHQxLCA4XQorZW5kCisKIG1hY3JvIHZhckluamVjdGlvbkNoZWNrKHNsb3dQYXRoKQogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MApAQCAtMTk1NywxMCArMTk2MywxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29w
ZToKICAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1
cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEg
dDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNw
YXRjaCg3KQogCisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldEltcG9ydGVkTW9kdWxlU2Nv
cGUoMSkKKyAgICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMpCkBAIC0yMTQ0LDEzICsyMTU1LDE4IEBAIF9sbGludF9vcF9wdXRfdG9f
c2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5w
RHluYW1pYworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywg
LnBNb2R1bGVWYXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5q
ZWN0aW9uQ2hlY2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKICAgICBwdXRD
bG9zdXJlVmFyKCkKICAgICBkaXNwYXRjaCg3KQogCisucE1vZHVsZVZhcjoKKyAgICBiaW5lcSB0
MCwgTW9kdWxlVmFyLCAucER5bmFtaWMKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90aHJv
d19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKKyAgICBkaXNwYXRj
aCg3KQorCiAucER5bmFtaWM6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0
X3RvX3Njb3BlKQogICAgIGRpc3BhdGNoKDcpCkBAIC0yMjMzLDQgKzIyNDksNCBAQCBfbGxpbnRf
b3BfbG9hZF9hcnJvd2Z1bmN0aW9uX3RoaXM6CiAgICAgbG9hZHAgSlNBcnJvd0Z1bmN0aW9uOjpt
X2JvdW5kVGhpc1t0MF0sIHQwCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAg
IHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCi0gICAgZGlzcGF0Y2goMikKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCisgICAgZGlzcGF0Y2goMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKaW5kZXggZjYyMzhmYjk2ODAyYmU1MzdlOTFhZGMy
NmI4MmQ4OTBiOTU0MDMyZC4uYzFhM2NjMmIxZjA2ODFlMDU5OTJkNWNkNGU2MjZiZTg4MGQ0Yjk3
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXpl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5j
cHAKQEAgLTgyLDcgKzgyLDkgQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQo
KS0+bG9va1VwSW1wb3J0RW50cnkobG9jYWxOYW1lKTsKKyAgICBPcHRpb25hbDxKU01vZHVsZVJl
Y29yZDo6SW1wb3J0RW50cnk+IG9wdGlvbmFsSW1wb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQoKS0+
dHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmdldCgpKTsKKyAgICBBU1NFUlQob3B0aW9uYWxJ
bXBvcnRFbnRyeSk7CisgICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5JiBpbXBv
cnRFbnRyeSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OwogICAgIGlmICh2YXJpYWJsZS5pc0ltcG9y
dGVkTmFtZXNwYWNlKCkpIHsKICAgICAgICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcu
CiAgICAgICAgIC8vIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9tICJtb2QiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3NTgw
ODMzMmU0ZGQ0MDg0NDJhMDM0MzdkNTVjMTA1YWNjMjk1YWIxLi4zNWI2Mjk3OTIwN2VmYWM4NzQ1
NmQ3NzI2NGI0YjBmYWZmZTg2MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTI3MCw2ICsyNzAsMTIgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3Rocm93X3Rkel9lcnJvcikKICAgICBUSFJPVyhjcmVhdGVURFpFcnJv
cihleGVjKSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9k
ZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKK3sKKyAgICBCRUdJTigpOworICAgIFRI
Uk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90
KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCmluZGV4IDA2N2RmMGMzOGU5MTIwYmY3MDdjZmRlNDFjM2VmYmYyYTY4
NzJlZTMuLjMwMDk4NTVmZjZiYTJkMTUyODNkYjhmODVmM2NlNDU3ZGRiMjg2NjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0xODks
NiArMTg5LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lbnRlcik7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9jYWxsZWUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90b190aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfdGhyb3dfdGR6X2Vycm9yKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhy
b3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9ub3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9lcSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lcSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggMDAyODVhNjc1NzczNDc0NzliZDlh
OWI3YjkzOTU1YzI2NDM0NjU3Yy4uMWI5M2U4ZmQxMjU3ZDBkNzhhYTc5MzY4ODExMjRjYWY2OTk0
NGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMjE5LDYg
KzIxOSwxMCBAQCBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJyb3IiKSkpOwogfQogCitKU09iamVjdCog
dGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50
YXhFcnJvcihleGVjLCBtZXNzYWdlKSk7Cit9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5oCmluZGV4IGVjMzBhM2RjNDY2ZTFlYjQ0OWIzZTU4NWFhODA0OTJlZjE5
ODQ2NDcuLmY0NmZlMzc2ZmI4NmM2NTJlNGFlYzg0OTAxM2NlYTJkZjNjODAxYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtNzQsNiArNzQsNyBAQCBKU09iamVjdCog
YWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0
IFNvdXJjZUNvZGUmKQogLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBh
biBleGNlcHRpb24gd2l0aCBhIGRlZmF1bHQgbWVzc2FnZS4KIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwogaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBz
dGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgpLnRo
cm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2Up
KTsgfQogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2Rl
ZEpTVmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CmluZGV4IGIxZDAwNTVlY2YwMjQzNDI5ZmFmMTllZGFmZjhmZTA2NTM5YjZkNzUuLmYyOTUxNTg0
YzI2MDlmY2IyZmMwOWQ3YzUwNWFiZDFiODUwOWEzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC00MzksNiArNDM5LDkgQEAgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBleGVjdXRhYmxlLT5t
X3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5zZXQoZXhlYy0+dm0oKSwgZXhlY3V0YWJs
ZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZSk7CiAKKyAgICAvLyBDbG9uZSB0aGUgbW9kdWxl
IGVudmlyb25tZW50IHN5bWJvbCB0YWJsZSBmb3IgdGhpcyBleGVjdXRhYmxlIChhbmQgdGhlIGNv
ZGUgYmxvY2sgbGlua2VkIGFuZCBpbnN0YW50aWF0ZWQgbGF0ZXIpLgorICAgIGV4ZWN1dGFibGUt
Pm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5zZXQoZXhlYy0+dm0oKSwgZXhlY3V0YWJs
ZSwganNDYXN0PFN5bWJvbFRhYmxlKj4odW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZS0+Y29uc3Rh
bnRSZWdpc3Rlcih1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlLT5tb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCgpKS5nZXQoKSktPmNsb25lU2NvcGVQYXJ0
KGV4ZWMtPnZtKCkpKTsKKwogICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCkBAIC01ODUsNiAr
NTg4LDcgQEAgdm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jaykKICAgICAgICAgdGhpc09iamVj
dC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0K
QEAgLTU5Myw2ICs1OTcsNyBAQCB2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNv
ZGUoKQogewogICAgIG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgbV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suY2xlYXIoKTsKKyAgICBtX21vZHVsZUVudmly
b25tZW50U3ltYm9sVGFibGUuY2xlYXIoKTsKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGNkY2ViMzA0
MjY1Zjk3NmQwMDc3YWVmZDY1N2I1YjdiYWJiZjJhMTYuLmM0ODc3ODhmNWZjZjI3NTliNjcyMDll
NzZiYThhOWNiZmU3YWFlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgKQEAgLTU3LDYgKzU3LDkgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNz
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBKU1Njb3BlOwogY2xhc3MgV2ViQXNzZW1i
bHlDb2RlQmxvY2s7CitjbGFzcyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgSlNNb2R1
bGVSZWNvcmQ7CitjbGFzcyBKU1Njb3BlOwogCiBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0
Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCkBAIC01ODksNiArNTkyLDkg
QEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhl
Y3V0YWJsZSB7CiAgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0K
ICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdl
dCgpOyB9CiAKKyAgICAvLyBSZXR1cm4gdGhlIHN5bWJvbCB0YWJsZSBpbiB0aGUgbGlua2VkIGNv
ZGUgYmxvY2suCisgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUo
KSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2NyaXB0RXhlY3V0YWJsZTsKIApAQCAtNTk3LDYgKzYw
Myw3IEBAIGNsYXNzIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlw
dEV4ZWN1dGFibGUgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworICAgIFdyaXRlQmFycmll
cjxTeW1ib2xUYWJsZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlOwogICAgIFJlZlB0
cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggNGUwOTRmZDY3OWI5ZDViY2Y0Yjg4NmYzNjAyYzZjMWIwZmIyMDkxYS4uNWE4YTczNTE3
MTY1ZmNkMmE3NWY4Y2NkZDUzNDRjNDM2NzFiMTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODQsNiArODQsNyBAQAogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01v
ZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU09OT2JqZWN0LmgiCkBAIC0zMTIsNiArMzEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTRGF0YVZpZXc6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnByb3RvdHlwZS5nZXQoKSkp
OwogICAgIAogICAgIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOworICAgIG1f
bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZUVudmlyb25t
ZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICBtX3N0cmljdEV2YWxBY3RpdmF0
aW9uU3RydWN0dXJlLnNldCh2bSwgdGhpcywgU3RyaWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1
cmUuc2V0KG1fdm0sIHRoaXMsIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZShtX3ZtLCB0
aGlzKSk7CiAgICAgbV93aXRoU2NvcGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dpdGhTY29w
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwpAQCAtNzkxLDYgKzc5Myw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRo
U2NvcGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDFjYTMxYjdiMTI2ZmIyZWZkM2I3MTkwZWFmNzY0ZjVjZGEwOTkxZmUuLmUzMzQwMGVhZTJk
OWJmZGE3N2RiMWJhNjQ0YjFiZTk2ZjZjZTg2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjMyLDYgKzIzMiw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CisgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZTsK
QEAgLTQ0OSw2ICs0NTAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFjdGl2
YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVj
dHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiBkaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2NvcGVk
QXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZWRBcmd1bWVudHNTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG91dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZp
cm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuaAppbmRleCA5NTE2MzE4ZDcwMTY5ZTNkZDhjMmJlZjc4MzMxMjU2NzVjNWUyMThiLi40
NDhlYTQzMWI3YjdjOTgyNjJkNDEwYmYwMWY4NDkzNzFkOGFiNTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNz
IEpTTGV4aWNhbEVudmlyb25tZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHJp
dmF0ZToKK3Byb3RlY3RlZDoKICAgICBKU0xleGljYWxFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVy
ZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSopOwogICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNzAxNzMxMmM2NmQ2MjUzNzY5NzI0MDEwOWUwN2JkMDAyNzY0NjY3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxl
RW52aXJvbm1lbnQuaCIKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZUVudmlyb25t
ZW50OjpzX2luZm8gPSB7ICJKU01vZHVsZUVudmlyb25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU01vZHVsZUVudmlyb25tZW50KSB9OworCitKU01vZHVsZUVu
dmlyb25tZW50KiBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUoCisgICAgVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3lt
Ym9sVGFibGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVj
b3JkKQoreworICAgIC8vIEpTTGV4aWNhbEVudmlyb25tZW50IChwcmVjaXNlbHksIEpTRW52aXJv
bm1lbnRSZWNvcmQpIGhhcyB0aGUgc3RvcmFnZSB0byBzdG9yZSB0aGUgdmFyaWFibGUgc2xvdHMg
YWZ0ZXIgdGhlIGl0cyBjbGFzcyBzdG9yYWdlLgorICAgIC8vIEJlY2F1c2UgdGhlIG9mZnNldCBv
ZiB0aGUgdmFyaWFibGUgc2xvdHMgYXJlIGZpeGVkIGluIHRoZSBKU0Vudmlyb25tZW50UmVjb3Jk
LCBpbmhlcml0dGluZyB0aGVzZSBjbGFzcyBhbmQgYWRkaW5nIG5ldyBtZW1iZXIgZmllbGQgaXMg
bm90IGFsbG93ZWQsCisgICAgLy8gdGhlIG5ldyBtZW1iZXIgd2lsbCBvdmVybGFwIHRoZSB2YXJp
YWJsZSBzbG90cy4KKyAgICAvLyBUbyBrZWVwIHRoZSBKU01vZHVsZUVudmlyb25tZW50IGNvbXBh
dGlibGUgdG8gdGhlIEpTTGV4aWNhbEVudmlyb25tZW50IGJ1dCBhZGQgdGhlIG5ldyBtZW1iZXIg
dG8gc3RvcmUgdGhlIEpTTW9kdWxlUmVjb3JkLCB3ZSBhZGRpdGlvbmFsbHkgYWxsb2NhdGUKKyAg
ICAvLyB0aGUgc3RvcmFnZSBhZnRlciB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8KKyAgICAv
LyBKU0xleGljYWxFbnZpcm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVu
dCBdWyB2YXJpYWJsZSBzbG90cyBdCisgICAgLy8KKyAgICAvLyBKU01vZHVsZUVudmlyb25tZW50
OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF1b
IGFkZGl0aW9uYWwgc2xvdHMgZm9yIEpTTW9kdWxlRW52aXJvbm1lbnQgXQorICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxs
LAorICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAs
IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAg
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1i
b2xUYWJsZSk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBt
b2R1bGVSZWNvcmQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZp
cm9ubWVudDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgaW5pdGlhbFZhbHVlKTsKKyAgICB0aGlzLT5tb2R1bGVSZWNvcmRTbG90KCkuc2V0KHZtLCB0
aGlzLCBtb2R1bGVSZWNvcmQpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01v
ZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PihjZWxsKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwor
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2Jq
ZWN0LT5zeW1ib2xUYWJsZSgpLT5zY29wZVNpemUoKSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1vZHVsZVJlY29yZFNsb3QoKSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9u
bWVudDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBK
U01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1l
bnQqPihjZWxsKTsKKyAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0g
dGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlv
bi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgewor
ICAgICAgICAvLyBXaGVuIHJlc29sdmVJbXBvcnQgcmVzb2x2ZXMgdGhlIHJlc29sdXRpb24sIHRo
ZSBpbXBvcnRlZCBtb2R1bGUgZW52aXJvbm1lbnQgbXVzdCBoYXZlIHRoZSBiaW5kaW5nLgorICAg
ICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50ID0gcmVz
b2x1dGlvbi5tb2R1bGVSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgIFByb3Bl
cnR5U2xvdCByZWRpcmVjdFNsb3QoaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAg
IGJvb2wgcmVzdWx0ID0gaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdChpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50LCBl
eGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgcmVkaXJlY3RTbG90KTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIEFTU0VSVChyZWRpcmVjdFNsb3QuaXNW
YWx1ZSgpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHJlZGlyZWN0U2xvdC5nZXRWYWx1ZShl
eGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSk7CisgICAgICAgIEFTU0VSVCghZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpOworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHJlZGlyZWN0U2xv
dC5hdHRyaWJ1dGVzKCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXNBcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7
CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVu
dmlyb25tZW50Kj4oY2VsbCk7CisgICAgaWYgKHByb3BlcnR5TmFtZXNBcnJheS5pbmNsdWRlU3Ry
aW5nUHJvcGVydGllcygpKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHRoaXNP
YmplY3QtPm1vZHVsZVJlY29yZCgpLT5pbXBvcnRFbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGNv
bnN0IEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVl
OworICAgICAgICAgICAgaWYgKCFpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkK
KyAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzQXJyYXkuYWRkKGltcG9ydEVudHJ5LmxvY2Fs
TmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEJhc2U6OmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUp
OworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIC8vIEFsbCBpbXBv
cnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgorICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0
aW9uIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9y
dChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOwor
ICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5
cGU6OlJlc29sdmVkKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpOworfQorCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5k
aW5ncyBhcmUgaW1tdXRhYmxlLgorICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29s
dXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChy
ZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29s
dmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVF
bnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZp
cm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3ZWZhNjI2M2IyYjI3NDlmNzg4YzBhN2YwNzNmNzY3N2Ew
MDliMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZUVudmlyb25tZW50
X2gKKyNkZWZpbmUgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisKKyNpbmNsdWRlICJKU0xleGljYWxF
bnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBSZWdpc3RlcjsKKworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1
YmxpYyBKU0xleGljYWxFbnZpcm9ubWVudCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHR5cGVkZWYg
SlNMZXhpY2FsRW52aXJvbm1lbnQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1
bGVFbnZpcm9ubWVudCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRh
YmxlKiwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0
aWMgSlNNb2R1bGVFbnZpcm9ubWVudCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQor
ICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm1vZHVs
ZUVudmlyb25tZW50U3RydWN0dXJlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVj
dHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNv
cmQpOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
anNOdWxsKCksIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTW9kdWxlUmVjb3JkKFN5bWJvbFRh
YmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBCYXNlOjph
bGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSk7CisgICAgICAgIEFTU0VSVChXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4pPihvZmZzZXQp
ID09IG9mZnNldCk7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgewor
ICAgICAgICByZXR1cm4gb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFibGUpICsgc2l6ZW9m
KFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4pOworICAgIH0KKworICAgIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1vZHVsZVJlY29yZFNs
b3QoKS5nZXQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAg
IHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMg
dm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworCitwcml2YXRlOgorICAgIEpTTW9kdWxlRW52aXJv
bm1lbnQoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNv
cmQqKTsKKworICAgIFdyaXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+JiBtb2R1bGVSZWNv
cmRTbG90KCkKKyAgICB7CisgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFdyaXRlQmFycmll
ckJhc2U8SlNNb2R1bGVSZWNvcmQ+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNl
dE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKCkpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9OworCitpbmxpbmUgSlNN
b2R1bGVFbnZpcm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZUVudmlyb25t
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmNwcAppbmRleCA3YjYwNjM3NGE2MDYwYjc3MDIwYzRlZjQ1MTJlOTI0NWUwM2YzZmM1Li5lMzky
NWVmMDBkNGFjNTUwYTRkMDk4NDViOTM1MGQ2Mjg1OWRmOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgogCkBAIC02MCwxMCArNjEsNDkgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTW9k
dWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CiAg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudCk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7CiB9CiAKK3ZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVOYW1lKQoreworICAgIG1fcmVxdWVzdGVkTW9kdWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkp
OworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRl
bnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1
bGVOYW1lLmltcGwoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5
KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBib29sIGlzTmV3RW50cnkgPSBtX2lt
cG9ydEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KS5pc05ld0VudHJ5
OworICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7IC8vIFRoaXMgaXMg
Z3VhcmFudGVlZCBieSB0aGUgcGFyc2VyLgorfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRF
eHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkpCit7CisgICAgYm9vbCBpc05ld0Vu
dHJ5ID0gbV9leHBvcnRFbnRyaWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwoKSwgZW50cnkp
LmlzTmV3RW50cnk7CisgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsg
Ly8gVGhpcyBpcyBndWFyYW50ZWVkIGJ5IHRoZSBwYXJzZXIuCit9CisKK2F1dG8gSlNNb2R1bGVS
ZWNvcmQ6OnRyeUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpIC0+
IE9wdGlvbmFsPEltcG9ydEVudHJ5PgoreworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2lt
cG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2ltcG9y
dEVudHJpZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBPcHRp
b25hbDxJbXBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKK30KKworYXV0byBKU01vZHVsZVJl
Y29yZDo6dHJ5R2V0RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+
IE9wdGlvbmFsPEV4cG9ydEVudHJ5PgoreworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4
cG9ydEVudHJpZXMuZmluZChleHBvcnROYW1lKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9leHBv
cnRFbnRyaWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gT3B0
aW9uYWw8RXhwb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7Cit9CisKIGF1dG8gSlNNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnRO
YW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5CiB7CiAgICAgcmV0dXJuIEV4cG9ydEVu
dHJ5IHsgVHlwZTo6TG9jYWwsIGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigp
LCBsb2NhbE5hbWUsIHZhcmlhYmxlIH07CkBAIC03OSw2ICsxMTksMjEgQEAgYXV0byBKU01vZHVs
ZVJlY29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4
cG9ydE5hbWUsIGMKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpJbmRpcmVjdCwgZXhw
b3J0TmFtZSwgbW9kdWxlTmFtZSwgaW1wb3J0TmFtZSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVu
dmlyb25tZW50RW50cnkoKSB9OwogfQogCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9u
Ojpub3RGb3VuZCgpIC0+IFJlc29sdXRpb24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5
cGU6Ok5vdEZvdW5kLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30KKworYXV0byBKU01vZHVs
ZVJlY29yZDo6UmVzb2x1dGlvbjo6ZXJyb3IoKSAtPiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJu
IFJlc29sdXRpb24geyBUeXBlOjpFcnJvciwgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07Cit9CisK
K2F1dG8gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OmFtYmlndW91cygpIC0+IFJlc29sdXRp
b24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6OkFtYmlndW91cywgbnVsbHB0ciwg
SWRlbnRpZmllcigpIH07Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIGlm
IChpZGVudGlmaWVyLmlzU3ltYm9sKCkpCkBAIC05Myw2ICsxNDgsMjc5IEBAIEpTTW9kdWxlUmVj
b3JkKiBKU01vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0CiAgICAgcmV0dXJuIGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KHBhaXIuZ2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIikpKTsKIH0KIAorYXV0
byBKU01vZHVsZVJlY29yZDo6cmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIGxvY2FsTmFtZSkgLT4gUmVzb2x1dGlvbgoreworICAgIE9wdGlvbmFsPEltcG9y
dEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gdHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1l
LmltcGwoKSk7CisgICAgaWYgKCFvcHRpb25hbEltcG9ydEVudHJ5KQorICAgICAgICByZXR1cm4g
UmVzb2x1dGlvbjo6bm90Rm91bmQoKTsKKworICAgIGNvbnN0IEltcG9ydEVudHJ5JiBpbXBvcnRF
bnRyeSA9ICpvcHRpb25hbEltcG9ydEVudHJ5OworICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVz
cGFjZShleGVjLT52bSgpKSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7
CisKKyAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9y
dGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgIHJldHVybiBp
bXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1l
KTsKK30KKworc3RydWN0IFJlc29sdmVRdWVyeSB7CisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKQorICAg
ICAgICA6IG1vZHVsZVJlY29yZChtb2R1bGVSZWNvcmQpCisgICAgICAgICwgZXhwb3J0TmFtZShl
eHBvcnROYW1lKQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvbHZlUXVlcnkoSlNNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZCwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkKKyAgICAgICAg
OiBSZXNvbHZlUXVlcnkobW9kdWxlUmVjb3JkLCBleHBvcnROYW1lLmltcGwoKSkKKyAgICB7Cisg
ICAgfQorCisgICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIFJlc29s
dmVRdWVyeShFbXB0eVZhbHVlVGFnKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIERlbGV0ZWRW
YWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9OworICAgIFJlc29sdmVRdWVyeShEZWxldGVkVmFsdWVU
YWcpCisgICAgICAgIDogbW9kdWxlUmVjb3JkKG51bGxwdHIpCisgICAgICAgICwgZXhwb3J0TmFt
ZShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBp
c0VtcHR5VmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFleHBvcnROYW1lOwor
ICAgIH0KKworICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGV4cG9ydE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAg
ICAvLyBUaGUgbW9kdWxlIHJlY29yZCBpcyBub3QgbWFya2VkIGZyb20gdGhlIEdDLiBCdXQgdGhl
c2UgcmVjb3JkcyBhcmUgcmVhY2hhYmxlIGZyb20gdGhlIEpTR2xvYmFsT2JqZWN0LgorICAgIC8v
IFNvIHdlIGRvbid0IGNhcmUgdGhlIHJlYWNoYWJpbGl0eSB0byB0aGlzIHJlY29yZC4KKyAgICBK
U01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4gZXhwb3J0TmFtZTsKK307CisKK3N0cnVjdCBSZXNvbHZlUXVlcnlIYXNoIHsKKyAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBSZXNvbHZlUXVlcnkmLCBjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9Owor
CitpbmxpbmUgdW5zaWduZWQgUmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaChjb25zdCBSZXNvbHZlUXVl
cnkmIHF1ZXJ5KQoreworICAgIHJldHVybiBXVEY6OlB0ckhhc2g8SlNNb2R1bGVSZWNvcmQqPjo6
aGFzaChxdWVyeS5tb2R1bGVSZWNvcmQpICsgSWRlbnRpZmllclJlcEhhc2g6Omhhc2gocXVlcnku
ZXhwb3J0TmFtZSk7Cit9CisKK2lubGluZSBib29sIFJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKGNv
bnN0IFJlc29sdmVRdWVyeSYgbGhzLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJocykKK3sKKyAgICBy
ZXR1cm4gbGhzLm1vZHVsZVJlY29yZCA9PSByaHMubW9kdWxlUmVjb3JkICYmIGxocy5leHBvcnRO
YW1lID09IHJocy5leHBvcnROYW1lOworfQorCitzdGF0aWMgSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb24gcmVzb2x2ZUV4cG9ydExvb3AoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBSZXNvbHZlUXVl
cnkmIHJvb3QpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLXJlc29sdmVleHBvcnQKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGF2b2lk
cyBDKysgcmVjdXJzaW9uIG9mIHRoZSBuYWl2ZSBSZXNvbHZlRXhwb3J0IGltcGxlbWVudGF0aW9u
LgorICAgIC8vIEZsYXR0ZW4gdGhlIHJlY3Vyc2lvbiB0byB0aGUgbG9vcCB3aXRoIHRoZSB0YXNr
IHF1ZXVlIGFuZCBmcmFtZXMuCisgICAgLy8KKyAgICAvLyAxLiBwZW5kaW5nVGFza3MKKyAgICAv
LyAgICAgV2UgZW5xdWV1ZSB0aGUgcmVjdXJzaXZlIHJlc29sdmVFeHBvcnQgY2FsbCB0byB0aGlz
IHF1ZXVlIHRvIGF2b2lkIHJlY3Vyc2l2ZSBjYWxscyBpbiBDKysuCisgICAgLy8gICAgIFRoZSB0
YXNrIGhhcyAzIHR5cGVzLiAoMSkgUXVlcnksICgyKSBJbmRpcmVjdEZhbGxiYWNrIGFuZCAoMykg
R2F0aGVyU3RhcnMuCisgICAgLy8gICAgICgxKSBRdWVyeQorICAgIC8vICAgICAgICAgUXVlcnlp
bmcgdGhlIHJlc29sdXRpb24gdG8gdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgIC8vICAgICAoMikg
SW5kaXJlY3RGYWxsYmFjaworICAgIC8vICAgICAgICAgRXhhbWluZSB0aGUgcmVzdWx0IG9mIHRo
ZSBpbmRpcmVjdCBleHBvcnQgcmVzb2x1dGlvbi4gT25seSB3aGVuIHRoZSBpbmRpcmVjdCBleHBv
cnQgcmVzb2x1dGlvbiBmYWlscywKKyAgICAvLyAgICAgICAgIHdlIGxvb2sgaW50byB0aGUgc3Rh
ciBleHBvcnRzLiAoc3RlcCA1LWEtdmkpLgorICAgIC8vICAgICAoMykgR2F0aGVyU3RhcnMKKyAg
ICAvLyAgICAgICAgIEV4YW1pbmUgdGhlIHJlc3VsdCBvZiB0aGUgc3RhciBleHBvcnQgcmVzb2x1
dGlvbnMuCisgICAgLy8KKyAgICAvLyAyLiBmcmFtZXMKKyAgICAvLyAgICAgV2hlbiB0aGUgc3Bl
YyBjYWxscyB0aGUgcmVzb2x2ZUV4cG9ydCByZWN1cnNpdmVseSwgaW5zdGVhZCB3ZSBhcHBlbmQg
dGhlIGZyYW1lCisgICAgLy8gICAgICh0aGF0IGhvbGRzIHRoZSByZXN1bHQgcmVzb2x1dGlvbikg
dG8gdGhlIGZyYW1lcyBhbmQgZW5xdWV1ZSB0aGUgdGFzayB0byB0aGUgcGVuZGluZ1Rhc2tzLgor
ICAgIC8vICAgICBUaGUgZW50cnkgaW4gdGhlIGZyYW1lcyBtZWFucyB0aGUgKmxvY2FsKiByZXNv
bHV0aW9uIHJlc3VsdCBvZiB0aGUgc3BlY2lmaWMgcmVjdXJzaXZlIHJlc29sdmVFeHBvcnQuCisg
ICAgLy8KKyAgICAvLyBXZSBzaG91bGQgbWFpbnRhaW4gdGhlIGxvY2FsIHJlc29sdXRpb24gcmVz
dWx0IGluc3RlYWQgb2YgaG9sZGluZyB0aGUgZ2xvYmFsIHJlc29sdXRpb24gcmVzdWx0IG9ubHku
CisgICAgLy8gRm9yIGV4YW1wbGUsCisgICAgLy8KKyAgICAvLyAgICAgc3RhcgorICAgIC8vICgx
KSAtLS0+ICgyKSAiUmVzb2x2ZSIKKyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgIHwKKyAgICAv
LyAgICAgICstPiAoMykgIk5vdEZvdW5kIgorICAgIC8vICAgICAgfAorICAgIC8vICAgICAgfCAg
ICAgICBzdGFyCisgICAgLy8gICAgICArLT4gKDQpIC0tLT4gKDUpICJSZXNvbHZlIiBbaGVyZV0K
KyAgICAvLyAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgIHwKKyAgICAvLyAg
ICAgICAgICAgICAgICstPiAoNikgIkVycm9yIgorICAgIC8vCisgICAgLy8gQ29uc2lkZXIgdGhl
IGFib3ZlIGdyYXBoLiBUaGUgbnVtYmVycyByZXByZXNlbnRzIHRoZSBtb2R1bGVzLiBOb3cgd2Ug
YXJlIFtoZXJlXS4KKyAgICAvLyBJZiB3ZSBvbmx5IGhvbGQgdGhlIGdsb2JhbCByZXNvbHV0aW9u
IHJlc3VsdCBkdXJpbmcgdGhlIHJlc29sdmVFeHBvcnQgb3BlcmF0aW9uLCBbaGVyZV0sCisgICAg
Ly8gd2UgZGVjaWRlIHRoZSBlbnRpcmUgcmVzdWx0IG9mIHJlc29sdmVFeHBvcnQgaXMgIkFtYmln
dW91cyIsIGJlY2F1c2UgdGhlcmUgYXJlIG11bHRpcGxlCisgICAgLy8gIlJlc2xvdmUiIChpbiBt
b2R1bGUgKDIpIGFuZCAoNSkpLiBIb3dldmVyLCB0aGlzIHNob3VsZCBiZWNvbWUgIkVycm9yIiBi
ZWNhdXNlICg2KSB3aWxsCisgICAgLy8gcHJvcGFnYXRlICJFcnJvciIgc3RhdGUgdG8gdGhlICg0
KSwgKDQpIHdpbGwgYmVjb21lICJFcnJvciIgYW5kIHRoZW4sICgxKSB3aWxsIGJlY29tZQorICAg
IC8vICJFcnJvciIuIFdlIHNob3VsZCBhZ2dyZWdhdGUgdGhlIHJlc3VsdHMgYXQgdGhlIHN0YXIg
ZXhwb3J0cyBwb2ludCAoKDQpIGFuZCAoMSkpLgorICAgIC8vCisgICAgLy8gVXN1YWxseSwgYm90
aCAiRXJyb3IiIGFuZCAiQW1iaWd1b3VzIiBzdGF0ZXMgd2lsbCB0aHJvdyB0aGUgc3ludGF4IGVy
cm9yLiBTbyBleGNlcHQgZm9yIHRoZSBjb250ZW50IG9mIHRoZQorICAgIC8vIGVycm9yIG1lc3Nh
Z2UsIHRoZXJlIGFyZSBubyBkaWZmZXJlbmNlLiAoQW5kIGlmIHdlIGZpeCB0aGUgKDYpIHRoYXQg
cmFpc2VzICJFcnJvciIsIG5leHQsIGl0IHdpbGwgcHJvZHVjZQorICAgIC8vIHRoZSAiQW1iaWd1
b3VzIiBlcnJvciBkdWUgdG8gKDUpLiBBbnl3YXksIHVzZXIgbmVlZCB0byBmaXggdGhlIGJvdGgu
IFNvIHdoaWNoIGVycm9yIHNob3VsZCBiZSByYWlzZWQgYXQgZmlyc3QKKyAgICAvLyBkb2Vzbid0
IG1hdHRlciBzbyBtdWNoLgorICAgIC8vCisgICAgLy8gSG93ZXZlciwgdGhpcyBtYXkgYmVjb21l
IHRoZSBwcm9ibGVtIHVuZGVyIHRoZSBtb2R1bGUgbmFtZXNwYWNlIGNyZWF0aW9uLgorICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZXRt
b2R1bGVuYW1lc3BhY2UKKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xOCwgc3RlcCAzLWQtaWkKKyAg
ICAvLyBIZXJlLCB3ZSBkaXN0aW5ndWlzaCAiQW1iaWd1b3VzIiBhbmQgIkVycm9yIi4gV2hlbiAi
RXJyb3IiIHN0YXRlIGlzIHByb2R1Y2VkLCB3ZSBuZWVkIHRvIHRocm93IHRoZSBwcm9wYWdhdGVk
IGVycm9yLgorICAgIC8vIEJ1dCBpZiAiQW1iaWd1b3VzIiBzdGF0ZSBjb21lcywgd2UganVzdCBp
Z25vcmUgdGhlIHJlc3VsdC4KKyAgICAvLyBUbyBmb2xsb3cgdGhlIHJlcXVpcmVtZW50IHN0cmlj
dGx5LCBpbiB0aGlzIGltcGxlbWVudGF0aW9uLCB3ZSBrZWVwIHRoZSBsb2NhbCByZXNvbHV0aW9u
IHJlc3VsdCB0byBwcm9kdWNlIHRoZQorICAgIC8vIGNvcnJlY3QgcmVzdWx0IHVuZGVyIHRoZSBh
Ym92ZSBjb21wbGV4IGNhc2VzLgorCisgICAgdXNpbmcgUmVzb2x1dGlvbiA9IEpTTW9kdWxlUmVj
b3JkOjpSZXNvbHV0aW9uOworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlc29sdmVRdWVyeSwg
UmVzb2x2ZVF1ZXJ5SGFzaCwgV1RGOjpDdXN0b21IYXNoVHJhaXRzPFJlc29sdmVRdWVyeT4+IFJl
c29sdmVTZXQ7CisgICAgZW51bSBjbGFzcyBUeXBlIHsgUXVlcnksIEluZGlyZWN0RmFsbGJhY2ss
IEdhdGhlclN0YXJzIH07CisgICAgc3RydWN0IFRhc2sgeworICAgICAgICBSZXNvbHZlUXVlcnkg
cXVlcnk7CisgICAgICAgIFR5cGUgdHlwZTsKKyAgICB9OworCisgICAgVmVjdG9yPFRhc2ssIDg+
IHBlbmRpbmdUYXNrczsKKyAgICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgSGFzaFNldDxK
U01vZHVsZVJlY29yZCo+IHN0YXJTZXQ7CisgICAgVmVjdG9yPFJlc29sdXRpb24sIDg+IGZyYW1l
czsKKworICAgIGZyYW1lcy5hcHBlbmQoUmVzb2x1dGlvbjo6bm90Rm91bmQoKSk7CisKKyAgICAv
LyBDYWxsIHdoZW4gdGhlIHF1ZXJ5IGlzIG5vdCByZXNvbHZlZCBpbiB0aGUgY3VycmVudCBtb2R1
bGUuCisgICAgLy8gSXQgd2lsbCBlbnF1ZXVlIHRoZSBzdGFyIHJlc29sdXRpb24gcmVxdWVzdHMu
IFJldHVybiAiZmFsc2UiIGlmIHRoZSBlcnJvciBvY2N1cnMuCisgICAgYXV0byByZXNvbHZlTm9u
TG9jYWwgPSBbJl0oY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSkgLT4gYm9vbCB7CisgICAgICAg
IC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1y
ZXNvbHZlZXhwb3J0CisgICAgICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjMsIHN0ZXAgNgorICAg
ICAgICAvLyBJZiB0aGUgImRlZmF1bHQiIG5hbWUgaXMgbm90IHJlc29sdmVkIGluIHRoZSBjdXJy
ZW50IG1vZHVsZSwgd2UgbmVlZCB0byB0aHJvdyBhbiBlcnJvciBhbmQgc3RvcCByZXNvbHV0aW9u
IGltbWVkaWF0ZWx5LAorICAgICAgICAvLyBSYXRpb25hbGUgdG8gdGhpcyBlcnJvcjogQSBkZWZh
dWx0IGV4cG9ydCBjYW5ub3QgYmUgcHJvdmlkZWQgYnkgYW4gZXhwb3J0ICouCisgICAgICAgIGlm
IChxdWVyeS5leHBvcnROYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZhdWx0S2V5d29y
ZC5pbXBsKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gc3RlcCA3
LCBJZiBleHBvcnRTdGFyU2V0IGNvbnRhaW5zIG1vZHVsZSwgdGhlbiByZXR1cm4gbnVsbC4KKyAg
ICAgICAgaWYgKCFzdGFyU2V0LmFkZChxdWVyeS5tb2R1bGVSZWNvcmQpLmlzTmV3RW50cnkpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBFbnF1ZXVlIHRoZSB0YXNrIHRv
IGdhdGhlciB0aGUgcmVzdWx0cyBvZiB0aGUgc3RhcnMuCisgICAgICAgIC8vIEFuZCBhcHBlbmQg
dGhlIG5ldyBSZXNvbHV0aW9uIGZyYW1lIHRvIGdhdGhlciB0aGUgbG9jYWwgcmVzdWx0IG9mIHRo
ZSBzdGFycy4KKyAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgcXVlcnksIFR5cGU6
OkdhdGhlclN0YXJzIH0pOworICAgICAgICBmcmFtZXMuYXBwZW5kKFJlc29sdXRpb246Om5vdEZv
dW5kKCkpOworCisgICAgICAgIC8vIEVucXVldWUgdGhlIHRhc2tzIGluIHJldmVyc2Ugb3JkZXIu
CisgICAgICAgIGZvciAoYXV0byBpdGVyYXRvciA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+c3RhckV4
cG9ydEVudHJpZXMoKS5yYmVnaW4oKSwgZW5kID0gcXVlcnkubW9kdWxlUmVjb3JkLT5zdGFyRXhw
b3J0RW50cmllcygpLnJlbmQoKTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBzdGFyTW9kdWxlTmFtZSA9
ICppdGVyYXRvcjsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJl
Y29yZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVj
LCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7CisgICAg
ICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBSZXNvbHZlUXVlcnkoaW1wb3J0ZWRN
b2R1bGVSZWNvcmQsIHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpLCBUeXBlOjpRdWVyeSB9KTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLy8gUmV0dXJuIHRo
ZSBjdXJyZW50IHJlc29sdXRpb24gdmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4KKyAgICBhdXRvIGN1
cnJlbnRUb3AgPSBbJl0gKCkgLT4gUmVzb2x1dGlvbiYgeworICAgICAgICBBU1NFUlQoIWZyYW1l
cy5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gZnJhbWVzLmxhc3QoKTsKKyAgICB9OworCisg
ICAgLy8gTWVyZ2UgdGhlIGdpdmVuIHJlc29sdXRpb24gdG8gdGhlIGN1cnJlbnQgcmVzb2x1dGlv
biB2YWx1ZSBvZiB0aGUgdG9wIGZyYW1lLgorICAgIC8vIElmIHRoZXJlIGlzIGFtYmlndWl0eSwg
cmV0dXJuICJmYWxzZSIuIFdoZW4gdGhlICJmYWxzZSIgaXMgcmV0dXJuZWQsIHdlIHNob3VsZCBt
YWtlIHRoZSByZXN1bHQgImFtYmlndW91cyIuCisgICAgYXV0byBtZXJnZVRvQ3VycmVudFRvcCA9
IFsmXSAoY29uc3QgUmVzb2x1dGlvbiYgcmVzb2x1dGlvbikgLT4gYm9vbCB7CisgICAgICAgIGlm
IChyZXNvbHV0aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBpZiAoY3VycmVudFRvcCgpLnR5cGUgPT0gUmVz
b2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAgICAgICAgICAgIGN1cnJlbnRUb3AoKSA9IHJl
c29sdXRpb247CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChjdXJyZW50VG9wKCkubW9kdWxlUmVjb3JkICE9IHJlc29sdXRpb24ubW9kdWxlUmVjb3Jk
IHx8IGN1cnJlbnRUb3AoKS5sb2NhbE5hbWUgIT0gcmVzb2x1dGlvbi5sb2NhbE5hbWUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKwor
ICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IHJvb3QsIFR5cGU6OlF1ZXJ5IH0pOworICAg
IHdoaWxlICghcGVuZGluZ1Rhc2tzLmlzRW1wdHkoKSkgeworICAgICAgICBjb25zdCBUYXNrIHRh
c2sgPSBwZW5kaW5nVGFza3MudGFrZUxhc3QoKTsKKyAgICAgICAgY29uc3QgUmVzb2x2ZVF1ZXJ5
JiBxdWVyeSA9IHRhc2sucXVlcnk7CisKKyAgICAgICAgc3dpdGNoICh0YXNrLnR5cGUpIHsKKyAg
ICAgICAgY2FzZSBUeXBlOjpRdWVyeTogeworICAgICAgICAgICAgaWYgKCFyZXNvbHZlU2V0LmFk
ZCh0YXNrLnF1ZXJ5KS5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gcXVlcnkubW9kdWxlUmVj
b3JkOworICAgICAgICAgICAgY29uc3QgT3B0aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVu
dHJ5PiBvcHRpb25hbEV4cG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkLT50cnlHZXRFeHBvcnRFbnRy
eShxdWVyeS5leHBvcnROYW1lLmdldCgpKTsKKyAgICAgICAgICAgIGlmICghb3B0aW9uYWxFeHBv
cnRFbnRyeSkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgZXhw
b3J0ZWQgYmluZGluZyBpbiB0aGUgY3VycmVudCBtb2R1bGUsCisgICAgICAgICAgICAgICAgLy8g
d2UgbmVlZCB0byBsb29rIGludG8gdGhlIHN0YXJzLgorICAgICAgICAgICAgICAgIGlmICghcmVz
b2x2ZU5vbkxvY2FsKHRhc2sucXVlcnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVz
b2x1dGlvbjo6ZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5JiBleHBv
cnRFbnRyeSA9ICpvcHRpb25hbEV4cG9ydEVudHJ5OworICAgICAgICAgICAgc3dpdGNoIChleHBv
cnRFbnRyeS50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRF
bnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBv
cnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1
cnJlbnRUb3AoUmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkLCBtb2R1bGVS
ZWNvcmQsIGV4cG9ydEVudHJ5LmxvY2FsTmFtZSB9KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFJlc29sdXRpb246OmFtYmlndW91cygpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5k
aXJlY3Q6IHsKKyAgICAgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVS
ZWNvcmQgPSBtb2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgZXhw
b3J0RW50cnkubW9kdWxlTmFtZSk7CisKKyAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBpbXBv
cnRlZCBtb2R1bGUgZG9lcyBub3QgcHJvZHVjZSBhbnkgcmVzb2x2ZWQgYmluZGluZywgd2UgbmVl
ZCB0byBsb29rIGludG8gdGhlIHN0YXJzIGluIHRoZSAqY3VycmVudCoKKyAgICAgICAgICAgICAg
ICAvLyBtb2R1bGUuIFRvIGRvIHRoaXMsIHdlIGFwcGVuZCB0aGUgYEluZGlyZWN0RmFsbGJhY2tg
IHRhc2sgdG8gdGhlIHRhc2sgcXVldWUuCisgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFw
cGVuZChUYXNrIHsgcXVlcnksIFR5cGU6OkluZGlyZWN0RmFsbGJhY2sgfSk7CisgICAgICAgICAg
ICAgICAgLy8gQW5kIGFwcGVuZCB0aGUgbmV3IFJlc29sdXRpb24gZnJhbWUgdG8gY2hlY2sgdGhl
IGluZGlyZWN0IGV4cG9ydCB3aWxsIGJlIHJlc29sdmVkIG9yIG5vdC4KKyAgICAgICAgICAgICAg
ICBmcmFtZXMuYXBwZW5kKFJlc29sdXRpb246Om5vdEZvdW5kKCkpOworICAgICAgICAgICAgICAg
IHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IFJlc29sdmVRdWVyeShpbXBvcnRlZE1vZHVsZVJl
Y29yZCwgZXhwb3J0RW50cnkuaW1wb3J0TmFtZSksIFR5cGU6OlF1ZXJ5IH0pOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFR5cGU6OkluZGlyZWN0RmFsbGJh
Y2s6IHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24g
PSBmcmFtZXMudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9
PSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAgICAgIC8vIEluZGly
ZWN0IGV4cG9ydCBlbnRyeSBkb2VzIG5vdCBwcm9kdWNlIGFueSByZXNvbHZlZCBiaW5kaW5nLgor
ICAgICAgICAgICAgICAgIC8vIFNvIHdlIHdpbGwgaW52ZXN0aWdhdGUgdGhlIHN0YXJzLgorICAg
ICAgICAgICAgICAgIGlmICghcmVzb2x2ZU5vbkxvY2FsKHRhc2sucXVlcnkpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6ZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgaW5kaXJlY3QgZXhw
b3J0IGVudHJ5IHByb2R1Y2VzIFJlc29sdmVkLCB3ZSBzaG91bGQgbWVyZ2UgaXQgdG8gdGhlIHVw
cGVyIGZyYW1lLgorICAgICAgICAgICAgLy8gQW5kIGRvIG5vdCBpbnZlc3RpZ2F0ZSB0aGUgc3Rh
cnMgb2YgdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVu
dFRvcChyZXNvbHV0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6YW1i
aWd1b3VzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
VHlwZTo6R2F0aGVyU3RhcnM6IHsKKyAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBzdGFyIHJlc29s
dXRpb24gdG8gdGhlIHVwcGVyIGZyYW1lLgorICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdXRpb24gc3RhclJlc29sdXRpb24gPSBmcmFtZXMudGFrZUxhc3QoKTsKKyAgICAgICAgICAg
IGlmICghbWVyZ2VUb0N1cnJlbnRUb3Aoc3RhclJlc29sdXRpb24pKQorICAgICAgICAgICAgICAg
IHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQoZnJhbWVzLnNpemUoKSA9PSAx
KTsKKyAgICByZXR1cm4gZnJhbWVzWzBdOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNv
bHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkg
LT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9vcChleGVjLCBSZXNv
bHZlUXVlcnkodGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKK30KKwogdm9pZCBKU01vZHVsZVJl
Y29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNv
dXJjZUNvZGUoKSk7CkBAIC0xMDEsMTEgKzQyOSwxMjAgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6
bGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9tb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlY3V0YWJsZSk7Cisg
ICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSk7CiB9CiAKLUpTVmFs
dWUgSlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKikKK3ZvaWQgSlNNb2R1bGVSZWNv
cmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQogewotICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKworICAgIFN5bWJv
bFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5tb2R1bGVFbnZp
cm9ubWVudFN5bWJvbFRhYmxlKCk7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52
aXJvbm1lbnQgPSBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN5bWJv
bFRhYmxlLCBqc1REWlZhbHVlKCksIHRoaXMpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0aW9uIDE1LjIu
MS4xNi40IHN0ZXAgOS4KKyAgICAvLyBFbnN1cmUgYWxsIHRoZSBpbmRpcmVjdCBleHBvcnRzIGFy
ZSBjb3JyZWN0bHkgcmVzb2x2ZWQgdG8gdW5pcXVlIGJpbmRpbmdzLgorICAgIC8vIEV2ZW4gaWYg
d2UgYXZvaWRlZCBkdXBsaWNhdGUgZXhwb3J0cyBpbiB0aGUgcGFyc2VyLCBzdGlsbCBhbWJpZ3Vv
dXMgZXhwb3J0cyBvY2N1ciBkdWUgdG8gdGhlIHN0YXIgZXhwb3J0IChgZXhwb3J0ICogZnJvbSAi
bW9kImApLgorICAgIC8vIFdoZW4gd2Ugc2VlIHRoaXMgdHlwZSBvZiBhbWJpZ3VpdHkgZm9yIHRo
ZSBpbmRpcmVjdCBleHBvcnRzIGhlcmUsIHRocm93IGEgc3ludGF4IGVycm9yLgorICAgIGZvciAo
Y29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBFeHBv
cnRFbnRyeSYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBpZiAoZXhwb3J0RW50
cnkudHlwZSA9PSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7
CisgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMs
IGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9u
LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6Cisg
ICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVj
dGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5h
bWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAg
ICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBl
eHBvcnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmlt
cGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJp
bmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2Ug
UmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJv
cihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVm
YXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBl
OjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBz
ZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTIuCisgICAgLy8gSW5zdGFudGlhdGUgbmFtZXNwYWNl
IG9iamVjdHMgYW5kIGluaXRpYWxpemUgdGhlIGJpbmRpbmdzIHdpdGggdGhlbSBpZiByZXF1aXJl
ZC4KKyAgICAvLyBBbmQgZW5zdXJlIHRoYXQgYWxsIHRoZSBpbXBvcnRzIGNvcnJlY3RseSByZXNv
bHZlZCB0byB1bmlxdWUgYmluZGluZ3MuCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9p
bXBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IEltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9
IHBhaXIudmFsdWU7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhv
c3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7
CisgICAgICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSkpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBNb2R1bGVOYW1lc3BhY2VPYmplY3Qgd2lsbCBiZSBpbXBsZW1lbnRlZC4KKyAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3
MDUKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9
IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5h
bWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBT
dHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9u
OjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVj
LCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50
cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmln
dW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgICAg
IHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFt
ZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9u
OjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAg
ICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTQuCisgICAgLy8gTW9kdWxlIGVudmlyb25t
ZW50IGNvbnRhaW5zIHRoZSBoZWFwIGFsbG9jYXRlZCAidmFyIiwgImZ1bmN0aW9uIiwgImxldCIs
ICJjb25zdCIsIGFuZCAiY2xhc3MiLgorICAgIC8vIFdoZW4gY3JlYXRpbmcgdGhlIGVudmlyb25t
ZW50LCB3ZSBpbml0aWFsaXplZCBhbGwgdGhlIHNsb3RzIHdpdGggZW1wdHksIGl0J3Mgb2sgZm9y
IGxleGljYWwgdmFsdWVzLgorICAgIC8vIEJ1dCBmb3IgInZhciIgYW5kICJmdW5jdGlvbiIsIHdl
IHNob3VsZCBpbml0aWFsaXplIGl0IHdpdGggdW5kZWZpbmVkLiBUaGV5IGFyZSBjb250YWluZWQg
aW4gdGhlIGRlY2xhcmVkIHZhcmlhYmxlcy4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxl
IDogbV9kZWNsYXJlZFZhcmlhYmxlcykgeworICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gc3ltYm9sVGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOworICAgICAgICBWYXJPZmZz
ZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3Rh
Y2soKSkKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVudmlyb25tZW50LCBleGVj
LCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5nZXQoKSksIGpzVW5kZWZp
bmVkKCksIGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9u
CisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDE2LWEtaXYuCisgICAgLy8gSW5pdGlh
bGl6ZSBoZWFwIGFsbG9jYXRlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgICAgLy8gVGhleSBj
YW4gYmUgY2FsbGVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIHVu
ZGVyIGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBudW1i
ZXJPZkZ1bmN0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMo
KTsgaSA8IG51bWJlck9mRnVuY3Rpb25zOyArK2kpIHsKKyAgICAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxv
Y2stPmZ1bmN0aW9uRGVjbChpKTsKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKS5pbXBsKCkp
OworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAg
IGlmICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAgICAgICAgICAgQVNTRVJUKCF1bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBpZiAodm0u
dHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9maWxlcigpKSB7CisgICAgICAgICAg
ICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5n
ZShtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlSUQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgp
LAorICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVBy
b2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNvdXJjZSgpKSwgbW9k
dWxlRW52aXJvbm1lbnQpOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJv
bm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9u
LCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX21vZHVsZUVudmlyb25tZW50LnNl
dCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOworfQorCitKU1ZhbHVlIEpTTW9kdWxlUmVj
b3JkOjpleGVjdXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIW1fbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShtX21vZHVsZVByb2dyYW1FeGVj
dXRhYmxlLmdldCgpLCBleGVjLCBtX21vZHVsZUVudmlyb25tZW50LmdldCgpKTsKKyAgICBtX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
c3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIHVpZCkKQEAgLTEyOSwyMyArNTY2LDI1IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1bXAo
KQogICAgICAgICBkYXRhTG9nKCIgICAgICBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1bGVO
YW1lKSwgIilcbiIpOwogCiAgICAgZGF0YUxvZygiICAgIEltcG9ydDogIiwgbV9pbXBvcnRFbnRy
aWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBt
X2ltcG9ydEVudHJpZXMpCi0gICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmludGFi
bGVOYW1lKHBhaXIudmFsdWUuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1l
KHBhaXIudmFsdWUubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKHBhaXIu
dmFsdWUubW9kdWxlUmVxdWVzdCksICIpXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgSW1wb3J0RW50cnkmIGltcG9ydEVu
dHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50
YWJsZU5hbWUoaW1wb3J0RW50cnkuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVO
YW1lKGltcG9ydEVudHJ5LmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShp
bXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOworICAgIH0KIAogICAgIGRhdGFMb2co
IiAgICBFeHBvcnQ6ICIsIG1fZXhwb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7Ci0gICAgICAgIGNv
bnN0IEV4cG9ydEVudHJ5JiBlbnRyeSA9IHBhaXIudmFsdWU7Ci0gICAgICAgIHN3aXRjaCAoZW50
cnkudHlwZSkgeworICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZXhwb3J0RW50cnkgPSBwYWly
LnZhbHVlOworICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKICAgICAgICAgY2Fz
ZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBb
TG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiks
IGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50cnkubG9jYWxOYW1lKSwgIilcbiIpOworICAgICAg
ICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUo
ZXhwb3J0RW50cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGV4cG9y
dEVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKLSAgICAgICAgICAgIGRhdGFMb2co
IiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBv
cnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUpLCAi
KVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0
KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwg
cHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6Ci0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRh
YmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGVu
dHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxl
TmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwg
ImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1w
b3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUo
IiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCA4MWRhMzk2NmU4YzVhOGRhOTMwNGQyODJm
NGZiY2E5NGYyNGVhZTQ4Li4wODUyMWI0Y2NkM2IwNGFhZWUwM2IzYjQ0MWEyMWMxZjZkNDE5NjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc4LDggKzc5LDgg
QEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qgewog
ICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwotICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IElt
cG9ydE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwg
RXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4+PiBFeHBvcnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0
czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0RW50cmllczsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZp
ZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRF
bnRyaWVzOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApAQCAtMTAwLDI1ICsxMDEsNDkg
QEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qgewog
ICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKICAgICB2b2lkIGFk
ZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7CiAKLSAgICBjb25zdCBJbXBvcnRFbnRy
eSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9j
YWxOYW1lKTsKKyAgICBPcHRpb25hbDxJbXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50cnkoVW5p
cXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8RXhwb3J0RW50cnk+IHRy
eUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKTsKIAogICAgIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7
IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkoKSBjb25zdCB7IHJldHVybiBtX21v
ZHVsZUtleTsgfQogICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRNb2R1
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9Ci0gICAgY29uc3QgRXhw
b3J0TWFwJiBleHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9
Ci0gICAgY29uc3QgSW1wb3J0TWFwJiBpbXBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9p
bXBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgRXhwb3J0RW50cmllcyYgZXhwb3J0RW50cmllcygp
IGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50cmllczsgfQorICAgIGNvbnN0IEltcG9ydEVudHJp
ZXMmIGltcG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydEVudHJpZXM7IH0KKyAg
ICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgc3RhckV4cG9ydEVudHJpZXMoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJFeHBvcnRFbnRyaWVzOyB9CiAKICAgICBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJp
YWJsZXM7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVz
KCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzOyB9CiAKICAgICB2b2lkIGR1bXAo
KTsKIAorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50KCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX21vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1f
bW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7CisgICAgfQogCiAgICAgdm9pZCBsaW5rKEV4ZWNTdGF0
ZSopOwogICAgIEpTVmFsdWUgZXhlY3V0ZShFeGVjU3RhdGUqKTsKIAogICAgIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCk7IH0KIAorICAgIHN0cnVjdCBSZXNvbHV0aW9u
IHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgUmVzb2x2ZWQsIE5vdEZvdW5kLCBBbWJpZ3Vv
dXMsIEVycm9yIH07CisKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gbm90Rm91bmQoKTsKKyAg
ICAgICAgc3RhdGljIFJlc29sdXRpb24gZXJyb3IoKTsKKyAgICAgICAgc3RhdGljIFJlc29sdXRp
b24gYW1iaWd1b3VzKCk7CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBKU01vZHVsZVJl
Y29yZCogbW9kdWxlUmVjb3JkOworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICB9
OworCisgICAgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUpOworICAgIFJlc29sdXRpb24gcmVzb2x2ZUltcG9ydChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpOworCisgICAgSlNNb2R1bGVSZWNvcmQq
IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlTmFtZSk7CisKIHByaXZhdGU6CiAgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZh
cmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKICAg
ICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCkBAIC0xMzQsNyArMTU5LDcgQEAgY2xhc3MgSlNN
b2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZlSW1w
b3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7Cisg
ICAgdm9pZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSopOwogCiAgICAgLy8gVGhlIGxvYWRlciByZXNvbHZlcyB0aGUgZ2l2ZW4gbW9k
dWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBrZXkuIFRoZSBtb2R1bGUga2V5IGlzIHRoZSB1bmlxdWUg
dmFsdWUgdG8gcmVwcmVzZW50IHRoaXMgbW9kdWxlLgogICAgIElkZW50aWZpZXIgbV9tb2R1bGVL
ZXk7CkBAIC0xNDQsNDYgKzE2OSwzNyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVk
VmFyaWFibGVzOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVzOwog
CisgICAgLy8gQ3VycmVudGx5LCB3ZSBkb24ndCBrZWVwIHRoZSBvY2N1cnJlbmNlIG9yZGVyIG9m
IHRoZSBpbXBvcnQgLyBleHBvcnQgZW50cmllcy4KKyAgICAvLyBTbywgd2UgZG9lcyBub3QgZ3Vh
cmFudGVlIHRoZSBvcmRlciBvZiB0aGUgZXJyb3JzLgorICAgIC8vIGUuZy4gVGhlIGltcG9ydCBk
ZWNsYXJhdGlvbiB0aGF0IG9jY3VyciBsYXRlciB0aGFuIHRoZSBhbm90aGVyIGltcG9ydCBkZWNs
YXJhdGlvbiBtYXkKKyAgICAvLyAgICAgIHRocm93IHRoZSBlcnJvciBldmVuIGlmIHRoZSBmb3Jt
ZXIgaW1wb3J0IGRlY2xhcmF0aW9uIGFsc28gaGFzIHRoZSBpbnZhbGlkIGNvbnRlbnQuCisgICAg
Ly8KKyAgICAvLyAgICAgIGltcG9ydCAuLi4gLy8gKDEpIHRoaXMgaGFzIHNvbWUgaW52YWxpZCBj
b250ZW50LgorICAgIC8vICAgICAgaW1wb3J0IC4uLiAvLyAoMikgdGhpcyBhbHNvIGhhcyBzb21l
IGludmFsaWQgY29udGVudC4KKyAgICAvLworICAgIC8vICAgICAgSW4gdGhlIGFib3ZlIGNhc2Us
ICgyKSBtYXkgdGhyb3cgdGhlIGVycm9yIGVhcmxpZXIgdGhhbiAoMSkKKyAgICAvLworICAgIC8v
IEJ1dCwgaW4gdGhlIGFsbCBjYXNlcywgd2Ugd2lsbCB0aHJvdyB0aGUgc3ludGF4IGVycm9yLiBT
byBleGNlcHQgZm9yIHRoZSBjb250ZW50IG9mIHRoZSBzeW50YXggZXJyb3IsCisgICAgLy8gdGhl
cmUgYXJlIG5vIGRpZmZlcmVuY2UuCisKICAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVu
dHJ5LgotICAgIEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7CisgICAgSW1wb3J0RW50cmllcyBt
X2ltcG9ydEVudHJpZXM7CiAKICAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4K
LSAgICBFeHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOworICAgIEV4cG9ydEVudHJpZXMgbV9leHBv
cnRFbnRyaWVzOwogCi0gICAgSWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOworICAg
IC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgcmVzb2x2ZUV4cG9ydCByZXF1aXJl
cyBpdC4KKyAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOwogCiAg
ICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRlciBs
b2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9yZGVyLgogICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0
aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwogCi0gICAg
V3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9kZXBlbmRlbmNpZXNNYXA7Ci19Owog
Ci1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0
IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZCht
b2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRJ
bXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9pbXBvcnRFbnRy
aWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lk
IEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkp
Ci17Ci0gICAgbV9leHBvcnRFbnRyaWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwoKSwgZW50
cnkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5
KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9zdGFyRXhwb3J0RW50cmll
cy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgYXV0byBKU01vZHVsZVJlY29y
ZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9j
YWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRyeSYKLXsKLSAgICByZXR1cm4gKCptX2ltcG9ydEVu
dHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsKLX0KKyAgICBXcml0ZUJhcnJpZXI8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CisgICAgV3JpdGVC
YXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+IG1fbW9kdWxlRW52aXJvbm1lbnQ7Cit9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcAppbmRleCBiYjJlZmRkMDYzMWNkMThlYTk3NTQyNjc0YTJjZTcxODE1MDcyYzhmLi4xZGNh
Zjc3YTU1ZmUwNDg5OGQxMTY1YzQwNDY1YmQ3MWUxYTRiYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2lu
Y2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5o
IgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCkBA
IC02NSw2ICs2NywxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgY29uc3QgSWRlbnRpZgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoSlNNb2R1bGVFbnZpcm9ubWVudCog
bW9kdWxlRW52aXJvbm1lbnQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihz
Y29wZSkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1
bGVFbnZpcm9ubWVudC0+bW9kdWxlUmVjb3JkKCk7CisgICAgICAgICAgICBKU01vZHVsZVJlY29y
ZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlSW1wb3J0KGV4
ZWMsIGlkZW50KTsKKyAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgICAgICAgICAgSlNN
b2R1bGVSZWNvcmQqIGltcG9ydGVkUmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7Cisg
ICAgICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZpcm9ubWVudCA9
IGltcG9ydGVkUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgICAgICAgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkgZW50cnkgPSBpbXBvcnRlZEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgp
LT5nZXQocmVzb2x1dGlvbi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtl
VHlwZShNb2R1bGVWYXIsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIGltcG9y
dGVkRW52aXJvbm1lbnQsIGVudHJ5LndhdGNocG9pbnRTZXQoKSwgZW50cnkuc2NvcGVPZmZzZXQo
KS5vZmZzZXQoKSwgcmVzb2x1dGlvbi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChs
ZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPnVzZXNOb25TdHJpY3RFdmFsKCkpCiAg
ICAgICAgICAgICBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyA9IHRydWU7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTIzMiw2ICsyNDcsNyBAQCBjb25zdCBjaGFyKiByZXNvbHZlVHlwZU5hbWUo
UmVzb2x2ZVR5cGUgdHlwZSkKICAgICAgICAgIkdsb2JhbFZhciIsCiAgICAgICAgICJDbG9zdXJl
VmFyIiwKICAgICAgICAgIkxvY2FsQ2xvc3VyZVZhciIsCisgICAgICAgICJNb2R1bGVWYXIiLAog
ICAgICAgICAiR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAg
Ikdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiLAogICAgICAgICAiQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MiLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5oCmluZGV4IGE2NTMxNjc0OTBmNjgyMjNmNTExZGQyODkwODkyOWZjNDZhMTk3M2MuLjAyNmEy
NzE0ZGM4ZDkyMmE5ODI4ODVlNTQ2YjU3OGJhOTYzNDgwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgZW51bSBSZXNvbHZlVHlwZSB7
CiAgICAgR2xvYmFsVmFyLAogICAgIENsb3N1cmVWYXIsCiAgICAgTG9jYWxDbG9zdXJlVmFyLAor
ICAgIE1vZHVsZVZhciwKIAogICAgIC8vIERpdHRvLCBidXQgYXQgbGVhc3Qgb25lIGludGVydmVu
aW5nIHNjb3BlIHVzZWQgbm9uLXN0cmljdCBldmFsLCB3aGljaAogICAgIC8vIGNhbiBpbmplY3Qg
YW4gaW50ZXJjZXB0aW5nIHZhciBkZWxjYXJhdGlvbiBhdCBydW50aW1lLgpAQCAtNzIsNiArNzMs
NyBAQCBpbmxpbmUgUmVzb2x2ZVR5cGUgbWFrZVR5cGUoUmVzb2x2ZVR5cGUgdHlwZSwgYm9vbCBu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcykKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBM
b2NhbENsb3N1cmVWYXI6CiAgICAgICAgIHJldHVybiBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrczsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M6CiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTkw
LDYgKzkyLDcgQEAgaW5saW5lIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5
cGUgdHlwZSkKICAgICBjYXNlIEdsb2JhbFZhcjoKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAg
Y2FzZSBMb2NhbENsb3N1cmVWYXI6CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoK
ICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC0xMDMsMTMgKzEw
NiwxNCBAQCBpbmxpbmUgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0
eXBlKQogfQogCiBzdHJ1Y3QgUmVzb2x2ZU9wIHsKLSAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUg
dHlwZSwgc2l6ZV90IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJv
bm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwg
dWludHB0cl90IG9wZXJhbmQpCisgICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVf
dCBkZXB0aCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhp
Y2FsRW52aXJvbm1lbnQsIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBv
cGVyYW5kLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wb3J0ZWROYW1lID0gbnVsbHB0cikKICAgICAg
ICAgOiB0eXBlKHR5cGUpCiAgICAgICAgICwgZGVwdGgoZGVwdGgpCiAgICAgICAgICwgc3RydWN0
dXJlKHN0cnVjdHVyZSkKICAgICAgICAgLCBsZXhpY2FsRW52aXJvbm1lbnQobGV4aWNhbEVudmly
b25tZW50KQogICAgICAgICAsIHdhdGNocG9pbnRTZXQod2F0Y2hwb2ludFNldCkKICAgICAgICAg
LCBvcGVyYW5kKG9wZXJhbmQpCisgICAgICAgICwgaW1wb3J0ZWROYW1lKGltcG9ydGVkTmFtZSkK
ICAgICB7CiAgICAgfQogCkBAIC0xMTksNiArMTIzLDcgQEAgc3RydWN0IFJlc29sdmVPcCB7CiAg
ICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudDsKICAgICBXYXRjaHBv
aW50U2V0KiB3YXRjaHBvaW50U2V0OwogICAgIHVpbnRwdHJfdCBvcGVyYW5kOworICAgIFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4gaW1wb3J0ZWROYW1lOwogfTsKIAogY2xhc3MgUmVzb2x2ZU1v
ZGVBbmRUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDI4ZTBiYWRhYTcyYWYzMGNjNzcxOTE5NjA0YTYxMmQ2
Y2RiNzNlMDcuLjZlNmY5ZjlhNmRhNjE4MTJlM2MyMWFkNDM2NmZkODdiN2NkMTQ3ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAj
aW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWFwLmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVj
b3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260525</attachid>
            <date>2015-09-03 14:34:11 -0700</date>
            <delta_ts>2015-09-03 14:51:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150903143410.patch</filename>
            <type>text/plain</type>
            <size>110011</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NmM4NDdhN2IwMjhjNWJlMjgzYjE5ZjQ5ZDE3MjY3NTcwMTY0MjlkLi41ZWIzZDhiNWIxOWJkNmU3
YjgxODU3OTIzODNlZmE3ZjJjMjQxNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTIgQEAKKzIwMTUtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29s
dmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZXhw
b3J0VmFyaWFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93U3ludGF4RXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xl
YXJDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0dldFB1dEluZm8uaDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZVR5cGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6bWFrZVR5cGUpOgorICAgICAgICAoSlNDOjpuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OlJlc29sdmVPcDo6UmVzb2x2ZU9wKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oLgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpv
ZmZzZXRPZk1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9k
dWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVj
b3JkU2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52
aXJvbm1lbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OmFkZEltcG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFk
ZEV4cG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkp
OgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpSZXNvbHZl
UXVlcnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwp
OgorICAgICAgICAoSlNDOjpyZXNvbHZlRXhwb3J0TG9vcCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRp
YXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZHVtcCk6CisgICAgICAgICogcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhwb3J0
RW50cmllcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbXBvcnRFbnRyaWVzKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnN0YXJFeHBvcnRFbnRyaWVzKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNj
ZXNzKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisKIDIwMTUt
MDktMDMgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvY2sg
c2NvcGVkIHZhcmlhYmxlcyBzaG91bGQgYmUgdmlzaWJsZSBhY3Jvc3Mgc2NyaXB0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDJkMzBiYjkxNzU1NzI0NDM0NjM0ZGExN2Yz
MmQ5NmE4NmUwZGNlNzQuLjQ3ZTA4MzM2ODkzM2U2NjMzYzJmY2FjOTM1ZmE0NTY2NzU1ZjJhN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUzOCw2ICs1MzgsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0xvY2suY3Bw
CiAgICAgcnVudGltZS9KU01hcC5jcHAKICAgICBydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCisg
ICAgcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CmluZGV4IDQyY2M1ZjVhODkyZDM1ODAxMTY5NzRkMmJjMWI1ZmUzYjVmMTMxN2MuLjEwNDVmYjA5
MTI4NTk3MjVlYjVkZTkwN2E0ZDA4NDRmZjYxZGI5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagpAQCAtNzg3LDYgKzc4Nyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTWFwLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNNYXBJdGVyYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KQEAgLTE2NDMsNiArMTY0
NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRpdmVTdGRGdW5jdGlvbi5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
NWRhNGZlMzQ5MzQ3MzliYjA2YWUwNzQ4ZTNmOTgyYzU5YzI2NGU5Ny4uY2Y5YzRkYTZiM2IyOGMx
OTFjZGNlYzZmNzg2M2Y2MmJiMzVlNDUzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNzI5LDYgKzcyOSw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTM1MTQsNiArMzUxNyw5IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNb2R1bGVSZWNvcmQuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjFmZDNiNWI5ZmNm
MmFkODY5MTUxMThjNDk4ZWQ0N2Y3NjUxNmI0NS4uNDI1NzJkYmNiMDQ1Mzc1MTI5OWE0OTAyN2U2
NTg2Nzk5NzFmODBhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MjksNiAr
MTcyOSw4IEBACiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJ
CUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
RDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKKwkJRTNEMjM5QzkxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
ICovOyB9OwogCQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNF
Rjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYy
OTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyog
U291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0zNTkzLDYgKzM1OTUsOCBAQAogCQlF
Mzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1
MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjM5QzcxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAw
M0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJD
YWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3ODYsNiArNDc5MCw4
IEBACiAJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8sCiAJCQkJQTc0
REVGOEYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwICovLAogCQkJCUE3NERF
RjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCisJCQkJRTNEMjM5QzYx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAorCQkJCUUzRDIz
OUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCiAJCQkJRTM5
REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlFMzlE
QTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQlFMzNFOEQx
QTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgKi8sCkBAIC02MTUw
LDYgKzYxNTYsNyBAQAogCQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RN
YXRlcmlhbGl6YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0
MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3
QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdM
aXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkg
LyogSlNXZWFrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5
NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAt
NzM5OCw2ICs3NDA1LDcgQEAKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFi
bGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3
MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0
M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENv
ZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAv
KiBDb21tb25JZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlDNUU1RTE4RTM1
RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZjEyMDQ2Y2E3
YTAyZjQ3N2EzNjU1YzA0OTNjOTI2ZWEwZjJmOTBkYy4uMjQ0YWU4OWY5MmExNmViMTUwOGZkOTQ4
N2U5MGNmYWM1MjU2Yzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50Lmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlw
b2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCkBAIC0xNzg2LDYgKzE3ODcsMTcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4K
ICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUgY2xvbmVkIHN5
bWJvbCB0YWJsZSBmb3IgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBzaW5jZSB3ZSBuZWVkIHRvIGlu
c3RhbnRpYXRlCisgICAgLy8gdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMgYmVmb3JlIGxpbmtpbmcg
dGhlIGNvZGUgYmxvY2suIFdlIHJlcGxhY2UgdGhlIHN0b3JlZCBzeW1ib2wgdGFibGUgd2l0aCB0
aGUgYWxyZWFhZHkgY2xvbmVkIG9uZS4KKyAgICBpZiAoVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBqc0R5bmFtaWNDYXN0PFVu
bGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHVubGlua2VkQ29kZUJsb2NrKSkgeworICAg
ICAgICBTeW1ib2xUYWJsZSogY2xvbmVkU3ltYm9sVGFibGUgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUpLT5tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRh
YmxlKCk7CisgICAgICAgIGlmIChtX3ZtLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAgICAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY2xvbmVkU3ltYm9sVGFibGUtPm1fbG9jayk7Cisg
ICAgICAgICAgICBjbG9uZWRTeW1ib2xUYWJsZS0+cHJlcGFyZUZvclR5cGVQcm9maWxpbmcobG9j
a2VyKTsKKyAgICAgICAgfQorICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50
UmVnaXN0ZXJPZmZzZXQoKSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5zZXQoKm1fdm0s
IG93bmVyRXhlY3V0YWJsZSwgY2xvbmVkU3ltYm9sVGFibGUpOworICAgIH0KKwogICAgIG1fZnVu
Y3Rpb25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51
bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2Vk
Q29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CkBAIC0xODY0LDYgKzE4NzYsOSBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbgogICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSB1bmxpbmtl
ZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuY291bnQoKTsKICAgICBVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtOjpSZWFkZXIgaW5zdHJ1Y3Rpb25SZWFkZXIodW5saW5rZWRDb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpKTsKIAorICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2Vk
IG1vZHVsZSBlbnZpcm9ubWVudHMuCisgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4g
c3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOworCiAgICAgVmVjdG9yPEluc3Ry
dWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9u
Q291bnQpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0
RW5kKCk7ICkgewpAQCAtMTk3Myw5ICsxOTg4LDE1IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
CiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9n
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRlbnQs
IEdldCwgdHlwZSwgTm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
W2kgKyA0XS51Lm9wZXJhbmQgPSBvcC50eXBlOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA1XS51Lm9wZXJhbmQgPSBvcC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52
aXJvbm1lbnQpCi0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRh
YmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5
bWJvbFRhYmxlKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoSlNTY29wZSogY29uc3RhbnRTY29w
ZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2sob3AudHlwZSwgdGhpcykpCisg
ICAgICAgICAgICBpZiAob3AubGV4aWNhbEVudmlyb25tZW50KSB7CisgICAgICAgICAgICAgICAg
aWYgKG9wLnR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEtlZXAg
dGhlIGxpbmtlZCBtb2R1bGUgZW52aXJvbm1lbnQgc3Ryb25nbHkgcmVmZXJlbmNlZC4KKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50cy5h
ZGQoanNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihvcC5sZXhpY2FsRW52aXJvbm1lbnQpKS5p
c05ld0VudHJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RhbnQob3AubGV4aWNh
bEVudmlyb25tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51
LmpzQ2VsbC5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmlyb25tZW50
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5s
ZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChKU1Njb3BlKiBjb25zdGFudFNjb3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVC
bG9jayhvcC50eXBlLCB0aGlzKSkKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZd
LnUuanNDZWxsLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBjb25zdGFudFNjb3BlKTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUucG9p
bnRlciA9IG51bGxwdHI7CkBAIC0yMDA0LDYgKzIwMjUsOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1
bmxpbgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZl
KG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlk
ZW50LCBHZXQsIGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgTm90SW5pdGlhbGl6YXRpb24pOwog
CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IEdldFB1dEluZm8o
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBnZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpKS5vcGVyYW5kKCk7CisgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBNb2R1bGVW
YXIpCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBHZXRQ
dXRJbmZvKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xvc3VyZVZhciwgZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSkub3BlcmFuZCgpOwogICAgICAgICAgICAgaWYgKG9wLnR5cGUg
PT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDVdLnUud2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAgICAgICAg
ICBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC0yMDcxLDE3ICsyMDk0LDE4IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICAgICAgLy8gd2UncmUgYWJzdHJhY3RseSAicmVh
ZCJpbmcgZnJvbSBhIEpTU2NvcGUuCiAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNT
Y29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2Fs
U2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUsIE5vdEluaXRpYWxpemF0aW9uKTsK
IAotICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIpCisgICAgICAgICAg
ICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVsZVZhcikK
ICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJvbm1lbnQt
PnN5bWJvbFRhYmxlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9PSBHbG9i
YWxWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gbV9nbG9iYWxPYmplY3Qu
Z2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA9IChvcC50eXBlID09IE1vZHVsZVZhcikgPyBvcC5p
bXBvcnRlZE5hbWUuZ2V0KCkgOiBpZGVudC5pbXBsKCk7CiAgICAgICAgICAgICAgICAgaWYgKHN5
bWJvbFRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICAgICAgICAgICAgICAvLyBJZiBvdXIg
cGFyZW50IHNjb3BlIHdhcyBjcmVhdGVkIHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJsZWQsIGl0
IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQgZm9yIHByb2ZpbGluZyB5ZXQuCiAgICAgICAgICAgICAg
ICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIpOwotICAg
ICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlE
Rm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9yVmFyaWFi
bGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxvY2tlciwg
aW1wbCwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9s
VGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgpKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFyaWFibGVJ
RCA9IFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBlZWFmZDUwYTFlZmJkNGJkZTdmYmNkZDBiYjVl
ODEyNjVlNTQ1M2EwLi45MWU1NDhjOTNmYTIwYjJkYTU2NzZjOGIzN2Q5Y2U5MTRlMjliMGRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04Miw2ICs4
Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNs
YXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRpb247CitjbGFzcyBKU01vZHVsZUVu
dmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1p
emF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDJmZTFiYjg3ZmYy
NzY0YzZlYWUyYjM2ZjQyYTE2NzhiMjg2NzI2ZDYuLmMxMTRiOWI1N2QxNDRkMTY1ZWE0MWRhZDhm
MmE2OGVlOGZhOGI1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjk3LDcgKzI5Nyw2IEBAIHZvaWQgVW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOwogfQogCiBVbmxp
bmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZjc0OWJiMDljYjk5
NDQ5NjIxZTY4Yzk4ZWI1YzUyMmJmNmU4YzcwZC4uZmE1MTRjMTU2YTdjYjdjZWY3NGE5ZjEwMDAx
NjViODYxZjBmODNjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJQYXJzZXJN
b2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlNwZWNpYWxQb2ludGVyLmgi
Ci0jaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJW
aXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTU1LDcgKzU0LDYgQEAgY2xhc3MgUGFyc2VyRXJyb3I7CiBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJjZVBy
b3ZpZGVyOwotY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNs
YXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKQEAgLTUzMSwyOSArNTI5LDM1IEBAIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7CiAKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAg
ICAvLyBUaGlzIHN5bWJvbCB0YWJsZSByZXByZXNlbnRzIHRoZSBsYXlvdXQgb2YgdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudC4gVGhpcyBzeW1ib2wgdGFibGUgd2lsbCBiZSBtb2RpZmllZCBieSB0aGUg
Ynl0ZQotICAgIC8vIGNvZGUgZ2VuZXJhdG9yIHNpbmNlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQg
aW5jbHVkZXMgdGhlIHRvcC1tb3N0IGxleGljYWwgY2FwdHVyZWQgdmFyaWFibGVzIGluc2lkZSB0
aGUgbW9kdWxlIGNvZGUuCi0gICAgLy8gVGhpcyBtZWFucyB0aGF0LCBvbmNlIHRoZSBtb2R1bGUg
ZW52aXJvbm1lbnQgaXMgYWxsb2NhdGVkIGFuZCBpbnN0YW50aWF0ZWQgZnJvbSB0aGlzIHN5bWJv
bCB0YWJsZSwgaXQgaXMgdGl0ZWx5Ci0gICAgLy8gY291cGxlZCB3aXRoIHRoZSBzcGVjaWZpYyB1
bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGFuZCB0aGUgc3ltYm9sIHRhYmxlLiBT
byBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUKLSAgICAvLyBjb2RlLCB3ZSBzaG91bGQgbm90
IGNsZWFyIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGluIHRoZSBtb2R1
bGUgZXhlY3V0YWJsZS4gVGhpcyByZXF1aXJlbWVudCBpcyBtZXQKLSAgICAvLyBiZWNhdXNlIHRo
ZSBnYXJiYWdlIGNvbGxlY3RvciBvbmx5IGNsZWFycyB1bmxpbmtlZCBjb2RlIGluICgxKSB1bm1h
cmtlZCBleGVjdXRhYmxlcyBhbmQgKDIpIGZ1bmN0aW9uIGV4ZWN1dGFibGVzLgorICAgIC8vIFRo
aXMgb2Zmc2V0IHJlcHJlc2VudHMgdGhlIGNvbnN0YW50IHJlZ2lzdGVyIG9mZnNldCB0byB0aGUg
c3RvcmVkIHN5bWJvbCB0YWJsZSB0aGF0IHJlcHJlc2VudHMgdGhlIGxheW91dCBvZiB0aGUKKyAg
ICAvLyBtb2R1bGUgZW52aXJvbm1lbnQuIFRoaXMgc3ltYm9sIHRhYmxlIGlzIGNyZWF0ZWQgYnkg
dGhlIGJ5dGUgY29kZSBnZW5lcmF0b3Igc2luY2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpbmNs
dWRlcworICAgIC8vIHRoZSB0b3AtbW9zdCBsZXhpY2FsIGNhcHR1cmVkIHZhcmlhYmxlcyBpbnNp
ZGUgdGhlIG1vZHVsZSBjb2RlLiBUaGlzIG1lYW5zIHRoYXQsIG9uY2UgdGhlIG1vZHVsZSBlbnZp
cm9ubWVudCBpcworICAgIC8vIGFsbG9jYXRlZCBhbmQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyBz
eW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseSBjb3VwbGVkIHdpdGggdGhlIHNwZWNpZmljIHVubGlu
a2VkIG1vZHVsZSBwcm9ncmFtCisgICAgLy8gY29kZSBibG9jayBhbmQgdGhlIHN0b3JlZCBzeW1i
b2wgdGFibGUuIFNvIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2RlLCB3ZSBzaG91bGQg
bm90IGNsZWFyIHRoZSB1bmxpbmtlZCBtb2R1bGUKKyAgICAvLyBwcm9ncmFtIGNvZGUgYmxvY2sg
aW4gdGhlIG1vZHVsZSBleGVjdXRhYmxlLiBUaGlzIHJlcXVpcmVtZW50IGlzIG1ldCBiZWNhdXNl
IHRoZSBnYXJiYWdlIGNvbGxlY3RvciBvbmx5IGNsZWFycworICAgIC8vIHVubGlua2VkIGNvZGUg
aW4gKDEpIHVubWFya2VkIGV4ZWN1dGFibGVzIGFuZCAoMikgZnVuY3Rpb24gZXhlY3V0YWJsZXMu
CiAgICAgLy8KICAgICAvLyBTaW5jZSB0aGUgZnVuY3Rpb24gY29kZSBtYXkgYmUgZXhlY3V0ZWQg
cmVwZWF0ZWRseSBhbmQgdGhlIGVudmlyb25tZW50IG9mIGVhY2ggZnVuY3Rpb24gZXhlY3V0aW9u
IGlzIGRpZmZlcmVudCwKICAgICAvLyB0aGUgZnVuY3Rpb24gY29kZSBuZWVkIHRvIGFsbG9jYXRl
IGFuZCBpbnN0YW50aWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4gdGhlIHByb2xvZ3VlIG9mIHRoZSBm
dW5jdGlvbiBjb2RlLiBPbiB0aGUKICAgICAvLyBvdGhlciBoYW5kLCB0aGUgbW9kdWxlIGNvZGUg
aXMgZXhlY3V0ZWQgb25seSBvbmNlLiBTbyB3ZSBjYW4gaW5zdGFudGlhdGUgdGhlIG1vZHVsZSBl
bnZpcm9ubWVudCBvdXRzaWRlIHRoZSBtb2R1bGUKLSAgICAvLyBjb2RlLiBBdCB0aGF0IHRpbWUs
IHdlIGNvbnN0cnVjdCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoaXMgc3ltYm9s
IHRhYmxlIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2RlLgotICAgIC8vIEluc3RhbnRp
YXRpbmcgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUg
Y29kZSBpcyByZXF1aXJlZCB0byBsaW5rIHRoZSBpbXBvcnRlZCBiaW5kaW5ncwotICAgIC8vIGJl
dHdlZW4gdGhlIG1vZHVsZXMuCisgICAgLy8gY29kZS4gQXQgdGhhdCB0aW1lLCB3ZSBjb25zdHJ1
Y3QgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBieSB1c2luZyB0aGUgc3ltYm9sIHRhYmxlIHRoYXQg
aXMgaGVsZCBieSB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuCisgICAgLy8gVGhlIHN5bWJvbCB0YWJs
ZSBoZWxkIGJ5IHRoZSBleGVjdXRhYmxlIGlzIHRoZSBjbG9uZWQgb25lIGZyb20gb25lIGluIHRo
ZSB1bmxpbmtlZCBjb2RlIGJsb2NrLiBJbnN0YW50aWF0aW5nIHRoZSBtb2R1bGUKKyAgICAvLyBl
bnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0aW5nIGFuZCBsaW5raW5nIHRoZSBtb2R1bGUgY29kZSBp
cyByZXF1aXJlZCB0byBsaW5rIHRoZSBpbXBvcnRlZCBiaW5kaW5ncyBiZXR3ZWVuIHRoZSBtb2R1
bGVzLgogICAgIC8vCi0gICAgLy8gVGhlIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxv
Y2sgb25seSBob2xkcyB0aGUgc3ltYm9sIHRhYmxlLiBJdCBkb2VzIG5vdCBob2xkIHRoZSBtb2R1
bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlCi0gICAgLy8gdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBy
ZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jaywg
dGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrCi0gICAgLy8gY2FuIGJlIHVzZWQgZm9yIHRo
ZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyB1bmxpbmtlZCBjb2Rl
IGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbgotICAgIC8vIHRoZSB1bmxpbmtl
ZCBtb2R1bGUgY29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMuIFNvIHRoZSB1
bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBjYWNoZWQuCisgICAgLy8g
VGhlIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgb25seSBob2xkcyB0aGUgcHJl
LWNsb25lZCBzeW1ib2wgdGFibGUgaW4gaXRzIGNvbnN0YW50IHJlZ2lzdGVyIHBvb2wuIEl0IGRv
ZXMKKyAgICAvLyBub3QgaG9sZCB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSBlbnZpcm9ubWVudC4g
U28gd2hpbGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCByZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5s
aW5rZWQgbW9kdWxlCisgICAgLy8gcHJvZ3JhbSBjb2RlIGJsb2NrLCB0aGUgdW5saW5rZWQgbW9k
dWxlIGNvZGUgYmxvY2sgY2FuIGJlIHVzZWQgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5z
dGFudGlhdGVkIGZyb20gdGhpcworICAgIC8vIHVubGlua2VkIGNvZGUgYmxvY2suIFRoZXJlIGlz
IDE6TiByZWxhdGlvbiBiZXR3ZWVuIHRoZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBhbmQg
dGhlIG1vZHVsZSBlbnZpcm9ubWVudHMuIFNvIHRoZQorICAgIC8vIHVubGlua2VkIG1vZHVsZSBw
cm9ncmFtIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZC4KICAgICAvLwogICAgIC8vIE9uIHRoZSBv
dGhlciBoYW5kLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1l
bnQgaW5jbHVkZXMgdGhlIHJlc29sdmVkIHJlZmVyZW5jZXMgdG8gdGhlIGltcG9ydGVkCiAgICAg
Ly8gYmluZGluZ3MuIFRoZSBpbXBvcnRlZCBiaW5kaW5nIHJlZmVyZW5jZXMgdGhlIG90aGVyIG1v
ZHVsZSBlbnZpcm9ubWVudCwgc28gdGhlIGxpbmtlZCBjb2RlIGJsb2NrIGlzIHRpdGx5IGNvdXBs
ZWQKICAgICAvLyB3aXRoIHRoZSBzcGVjaWZpYyBzZXQgb2YgdGhlIG1vZHVsZSBlbnZpcm9ubWVu
dHMuIFRodXMsIHRoZSBsaW5rZWQgY29kZSBibG9jayBzaG91bGQgbm90IGJlIGNhY2hlZC4KLSAg
ICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1f
bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQorICAgIGludCBtb2R1bGVFbnZp
cm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCgpIHsgcmV0dXJuIG1fbW9k
dWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQ7IH0KKyAgICB2
b2lkIHNldE1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0
KGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFi
bGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KIAogcHJpdmF0ZToKICAg
ICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCkBAIC01NjEsMTMgKzU2NSw3IEBAIGNs
YXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtl
ZEdsb2JhbENvZGVCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQotICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
ICAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBTeW1ib2xU
YWJsZTo6Y3JlYXRlKHZtKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxl
PiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGU7CisgICAgaW50IG1fbW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgeyAwIH07CiAKIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA1
MDg5ZjU2NjE0NmI5Mzc1YmRjZDA5N2FlMGRhNzZhZWI2NDIzNmIzLi45ZTI1YmUxZGZlYmM4ODJh
ZDJhMDI0ZjMxMTRkMDJmMmEzN2UwYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNTM2LDkgKzUz
Niw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVs
ZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgaWYgKG1faXNCdWlsdGluRnVuY3Rp
b24pCiAgICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKIAotICAgIC8vIFVz
ZSB0aGUgc3ltYm9sIHRhYmxlIGFsbG9jYXRlZCBpbiB0aGUgdW5saW5rZWQgY29kZSBibG9jay4g
VGhpcyBzeW1ib2wgdGFibGUKLSAgICAvLyB3aWxsIGJlIHVzZWQgdG8gYWxsb2NhdGUgYW5kIGlu
c3RhbnRpYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCi0gICAgU3ltYm9sVGFibGUqIG1vZHVs
ZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPm1vZHVsZUVudmlyb25tZW50U3lt
Ym9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJs
ZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoKm1fdm0pOwogICAgIG1vZHVsZUVudmlyb25tZW50U3lt
Ym9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwpOwogICAg
IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFNjb3BlVHlwZShTeW1ib2xUYWJsZTo6
U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwogCkBAIC01OTIsNiArNTkwLDcgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1v
ZHVsZVByb2dyYW1Ob2QKICAgICBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVz
ID0gbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKTsKICAgICBpbnN0YW50aWF0
ZUxleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcywgbW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZSwgU2NvcGVSZWdpc3RlclR5cGU6OkJsb2NrLCBsb29rVXBWYXJLaW5kKTsKIAorICAg
IC8vIFdlIGtlZXAgdGhlIHN5bWJvbCB0YWJsZSBpbiB0aGUgY29uc3RhbnQgcG9vbC4KICAgICBS
ZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlID0gbnVsbHB0cjsKICAgICBpZiAodm0udHlw
ZVByb2ZpbGVyKCkpCiAgICAgICAgIGNvbnN0YW50U3ltYm9sVGFibGUgPSBhZGRDb25zdGFudFZh
bHVlKG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOwpAQCAtNjU2LDYgKzY1NSwxMSBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFt
Tm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICAgICAgICAgbV9mdW5jdGlvbnNUb0luaXRpYWxp
emUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9uLCBOb3JtYWxGdW5jdGlvblZhcmlhYmxl
KSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBSZW1lbWJlciB0aGUgY29uc3RhbnQgcmVn
aXN0ZXIgb2Zmc2V0IHRvIHRoZSB0b3AtbW9zdCBzeW1ib2wgdGFibGUuIFRoaXMgc3ltYm9sIHRh
YmxlIHdpbGwgYmUKKyAgICAvLyBjbG9uZWQgaW4gdGhlIGNvZGUgYmxvY2sgbGlua2luZy4gQWZ0
ZXIgdGhhdCwgdG8gY3JlYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQsIHdlIHJldHJpZXZlCisg
ICAgLy8gdGhlIGNsb25lZCBzeW1ib2wgdGFibGUgZnJvbSB0aGUgbGlua2VkIGNvZGUgYmxvY2sg
YnkgdXNpbmcgdGhpcyBvZmZzZXQuCisgICAgY29kZUJsb2NrLT5zZXRNb2R1bGVFbnZpcm9ubWVu
dFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldChjb25zdGFudFN5bWJvbFRhYmxlLT5p
bmRleCgpKTsKIH0KIAogQnl0ZWNvZGVHZW5lcmF0b3I6On5CeXRlY29kZUdlbmVyYXRvcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IDJiODllM2FiMDA4N2Y3MjExNTA0ZTkxMmNiZmUxMTU2OGM5YWYzNzEuLjc4NmI5MjE2YzA1ZGZi
MTM3N2U5NDA4NGJkM2JmOTRmNmIyZDQ5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAi
SGVhcC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJQ
cmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiU3RhY2tBbGlnbm1lbnQuaCIKQEAgLTM4MzksNiArMzg0MCwxNCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOiB7
CisgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlIHZhbHVlIG9mIHRoZSAic2NvcGUiIHZpcnR1
YWwgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4gTExJbnQgLyBiYXNlbGluZSBvcF9yZXNvbHZlX3Nj
b3BlIHdpdGggTW9kdWxlVmFyLAorICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgbm90IHRvIGtl
ZXAgaXQgYWxpdmUgYnkgdGhlIFBoYW50b20gbm9kZS4KKyAgICAgICAgICAgICAgICBKU01vZHVs
ZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25t
ZW50Kj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgaXMgYWxyZWFkeSBzdHJvbmdseSByZWZlcmVuY2Vk
IGJ5IHRoZSBDb2RlQmxvY2suCisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihk
c3QpLCB3ZWFrSlNDb25zdGFudChtb2R1bGVFbnZpcm9ubWVudCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6
CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CkBAIC00MDM0LDYgKzQwNDMsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8o
bV9jb25zdGFudFVuZGVmaW5lZCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgogICAgICAgICAgICAgY2FzZSBEeW5h
bWljOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC00MTI4LDYgKzQxMzgsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FzZSBVbnJl
c29sdmVkUHJvcGVydHk6CiAgICAgICAgICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NS
RXhpdCk7CkBAIC00MTM1LDYgKzQxNDYsMTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20s
IHNjb3BlTm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICAgICAgICAgIC8vIE5lZWQgbm90IHRv
IGtlZXAgInNjb3BlIiBhbmQgInZhbHVlIiByZWdpc3RlciB2YWx1ZXMgaGVyZSBieSBQaGFudG9t
IGJlY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBub3QgdXNlZCBpbiBMTEludCAv
IGJhc2VsaW5lIG9wX3B1dF90b19zY29wZSB3aXRoIE1vZHVsZVZhci4KKyAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKICAg
ICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMWY5OWUyYzcyZTAw
MDU3OGNmZDFkODExNGY3Y2U4NGRhNGQ2M2Y3ZC4uNGIwZjEyYzM5MmExNTdiM2YyNTU5NzM5MGNl
NDgwMjUwZjNjNzZkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNCb3VuZEZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVu
dmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUg
IkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCkBAIC0xMjE1LDYgKzEyMTYsNTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFs
dWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCitKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCit7CisgICAgVk0m
IHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdTY29wZSh0aGlz
KTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsKKyAgICBB
U1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygp
KTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgICAgIHJldHVybiBqc051bGwo
KTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworCisgICAgSlNP
YmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24oY2Fs
bEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwpOworICAgIGlmIChVTkxJS0VMWSgh
IWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+
dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9jaygpOwor
CisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRGaXJlKGNh
bGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkg
PT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisKKyAgICAvLyBUaGUgfHRoaXN8IG9m
IHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgorICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQt
cmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1nZXR0
aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHByb3Rv
Q2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29wZS0+Z2xv
YmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisKKyAgICBpZiAoTGVnYWN5
UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2Zp
bGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgpLCBleGVj
dXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisKKyAgICAv
LyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHsKKyAgICAgICAg
U2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgpKTsKKyAg
ICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2
bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHBy
b2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVj
dXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUtPmZpcnN0
TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1
ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQpCiB7CiAgICAg
RGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmRl
YnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCmluZGV4IDAzOGJjYTVjZmM3NWI5YjI0NTc2MmQ2ZTY0ZjY4ZjJlNzhlYzYyNTEuLjRm
ZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0MDk1YWY0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw2ICs1NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQXJyb3dGdW5jdGlvbjsKICAgICBjbGFzcyBK
U0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIEpTTW9kdWxl
RW52aXJvbm1lbnQ7CiAgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwpAQCAtMjE1LDYg
KzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKENh
bGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmplY3QqIGV4
ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25zdHJ1Y3RU
eXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFy
Z2V0KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgQ2FsbEZyYW1l
KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRl
KE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNNb2R1bGVFbnZpcm9ubWVu
dCopOwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBKU0Z1bmN0
aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBhcmd2LCBp
bnQmIGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDZkNTAxZTZlMjg2NDlmZGMwMjk5YmVkYmRiMTUzNTRkYTZhZTMyNzQu
LjE1OTYwZjJmYWUwNzZmNjU4YzE1ODdiZGNkMGIyMzNmNGIyZTQ4NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTkzOSw2ICsxOTM5LDkgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRGcm9tU2NvcGUoRXhlY1N0
YXRlKiBleGVjLCBJbnN0cnVjdGlvbioKICAgICBKU09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNP
YmplY3QqPihleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgpKTsKICAg
ICBHZXRQdXRJbmZvIGdldFB1dEluZm8ocGNbNF0udS5vcGVyYW5kKTsKIAorICAgIC8vIE1vZHVs
ZVZhciBpcyBhbHdheXMgY29udmVydGVkIHRvIENsb3N1cmVWYXIgZm9yIGdldF9mcm9tX3Njb3Bl
LgorICAgIEFTU0VSVChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9kdWxlVmFyKTsKKwog
ICAgIFByb3BlcnR5U2xvdCBzbG90KHNjb3BlKTsKICAgICBpZiAoIXNjb3BlLT5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgIGlmIChnZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQpAQCAtMTk3NCw2ICsxOTc3LDEwIEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1
Y3Rpb24qIGJ5dGVjb2RlUEMpCiAgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0
Kj4oZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGV4ZWMtPnIocGNbM10udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CiAgICAgR2V0
UHV0SW5mbyBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhwY1s0XS51Lm9wZXJhbmQpOworCisgICAg
Ly8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVlIGFsaXZl
IGluIERGRy4KKyAgICBBU1NFUlQoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpICE9IE1vZHVsZVZh
cik7CisKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IExvY2FsQ2xvc3VyZVZh
cikgewogICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogZW52aXJvbm1lbnQgPSBqc0Nhc3Q8
SlNMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7CiAgICAgICAgIGVudmlyb25tZW50LT52YXJp
YWJsZUF0KFNjb3BlT2Zmc2V0KHBjWzZdLnUub3BlcmFuZCkpLnNldCh2bSwgZW52aXJvbm1lbnQs
IHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKaW5kZXggNDI5YTBhYTk5Y2E5MDRhMDVlOWUxNTY2YmI5NjllMzk5NjA5MWU2ZC4uYzg1
N2ZjZGFjMGNkMzNhZTJlYjA2YzRjNTY0NTY2NTExNGJhNDUyOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTcxMCw2ICs3MTAsMTAg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAg
ICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1
bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0u
dS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
ZHN0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CiAgICAg
Y2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2Ug
RHluYW1pYzoKQEAgLTcyMyw5ICs3MjcsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVtaXRTbG93
X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBSZXNvbHZlVHlwZSByZXNv
bHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kKTsKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVz
b2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIgfHwgcmVz
b2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xv
YmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09
IENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCByZXNvbHZl
VHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAorCiAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKQEAgLTc5MCw2ICs3OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29w
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1pYzoKICAg
ICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1
bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODgzLDYgKzg4OSw3IEBAIHZvaWQgSklUOjplbWl0
X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKICAgICBjYXNlIFVucmVzb2x2
ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CisgICAgY2FzZSBNb2R1bGVWYXI6CiAg
ICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBi
cmVhazsKQEAgLTkwOSw3ICs5MTYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19z
Y29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAg
ICAgcmV0dXJuOwogICAgIHdoaWxlIChsaW5rQ291bnQtLSkKICAgICAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudElu
c3RydWN0aW9uKTsKKworICAgIGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAg
ICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24s
IHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJv
cik7CisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCAwZGQwODUzM2Y2NzM3Y2RiMmE5MGQ2NzJlYjdj
ZTI0ZmYyZjY4ZDE3Li5iNzlhMjA5YjQzOGU0NjlkMmY5ZDcxMWI4ODJmM2UxNTVkOWYxMzJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKQEAgLTc0Miw2ICs3NDIsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3Qs
IHNjb3BlLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdUMSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAg
IGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
VW5yZXNvbHZlZFByb3BlcnR5OgogICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrczoKICAgICBjYXNlIER5bmFtaWM6CkBAIC03NTYsNyArNzYxLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3cKIHsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0
YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsK
IAotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9
PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9
PSBHbG9iYWxMZXhpY2FsVmFyKQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0
eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZh
ciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IHJlc29sdmVUeXBlID09IE1v
ZHVsZVZhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwpAQCAt
ODI0LDYgKzgyOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRT
bG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAg
ICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CkBAIC05MTMsNiArOTE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3Rv
X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVtaXRWYXJJ
bmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOwogICAg
ICAgICBlbWl0UHV0Q2xvc3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90LCB2YWx1ZSwgY3VycmVu
dEluc3RydWN0aW9uWzVdLnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTW9kdWxlVmFyOgogICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgogICAgIGNhc2UgVW5y
ZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIER5bmFtaWM6
CkBAIC05MzgsNyArOTQ1LDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAgICAgIHJl
dHVybjsKICAgICB3aGlsZSAobGlua0NvdW50LS0pCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVj
dGlvbik7CisKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAgICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwor
ICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIH0gZWxzZQorICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAppbmRl
eCBmMWYzZWEyOTE2YTMzMWE0Mjc3YTk4NTViZjdhOTMyMjJiNjcwOWIwLi44ZTczZWRmY2M4NGY2
YzA1NzlhYTFmMDM0ZDJhMmYzNWJmZGYwYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcApAQCAtMTQ4LDEwICsxNDgsMTEgQEAgdm9pZCBEYXRhOjpwZXJmb3Jt
QXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxMZXhpY2FsVmFyID09
IDIsICJMTEludCBhc3N1bWVzIEdsb2JhbExleGljYWxWYXIgUmVzdWx0VHlwZSBpcyA9PSAyIik7
CiAgICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyID09IDMsICJMTEludCBhc3N1bWVzIENsb3N1
cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAzIik7CiAgICAgc3RhdGljX2Fzc2VydChMb2NhbENsb3N1
cmVWYXIgPT0gNCwgIkxMSW50IGFzc3VtZXMgTG9jYWxDbG9zdXJlVmFyIFJlc3VsdFR5cGUgaXMg
PT0gNCIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDYiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDcsICJMTEludCBh
c3N1bWVzIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUg
aXMgPT0gNyIpOwotICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MgPT0gOCwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MgUmVzdWx0VHlwZSBpcyA9PSA4Iik7CisgICAgc3RhdGljX2Fzc2VydChNb2R1bGVWYXIgPT0g
NSwgIkxMSW50IGFzc3VtZXMgTW9kdWxlVmFyIFJlc3VsdFR5cGUgaXMgPT0gNSIpOworICAgIHN0
YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDYsICJM
TEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRU
eXBlIGlzID09IDYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgPT0gNywgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcyBSZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbExleGlj
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDgsICJMTEludCBhc3N1bWVzIEdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gOCIpOworICAg
IHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gOSwgIkxM
SW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBp
cyA9PSA5Iik7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEluaXRpYWxpemF0aW9uTW9kZTo6SW5pdGlh
bGl6YXRpb24gPT0gMCwgIkxMSW50IGFzc3VtZXMgdGhhdCBJbml0aWFsaXphdGlvbk1vZGU6Oklu
aXRpYWxpemF0aW9uIGlzIDAiKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDdlZGEyYmE4YWY0Y2IzNGZiNTZiY2Y2NjY2ZGM1
OTlhNDg4YzhhYmEuLjNmYjQ4NWQwZWZhMWVkZjEwZDgzYmUwMTk3ZmVlNmVmZTdlZDNjYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAt
MTM2Niw2ICsxMzY2LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9mcm9t
X3Njb3BlKQogICAgIEpTT2JqZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09Q
KDIpLmpzVmFsdWUoKSk7CiAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvKHBjWzRdLnUub3BlcmFu
ZCk7CiAKKyAgICAvLyBNb2R1bGVWYXIgaXMgYWx3YXlzIGNvbnZlcnRlZCB0byBDbG9zdXJlVmFy
IGZvciBnZXRfZnJvbV9zY29wZS4KKyAgICBBU1NFUlQoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgp
ICE9IE1vZHVsZVZhcik7CisKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSk7CiAgICAgaWYg
KCFzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgewogICAgICAgICBp
ZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCA0NTViNjA3MjZjYTVmYjExNmU0NDY5NzhlMzA1YmRjYzBhMTJjMjVmLi4yZDUxZDFlNzA1ZDIz
ZGZkYjY2NThjOGZkODk0OTcxN2UyNzg1YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xOTMsMTAgKzE5MywxMSBA
QCBjb25zdCBHbG9iYWxWYXIgPSAxCiBjb25zdCBHbG9iYWxMZXhpY2FsVmFyID0gMgogY29uc3Qg
Q2xvc3VyZVZhciA9IDMKIGNvbnN0IExvY2FsQ2xvc3VyZVZhciA9IDQKLWNvbnN0IEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDUKLWNvbnN0IEdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MgPSA2Ci1jb25zdCBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcyA9IDcKLWNvbnN0IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gOAor
Y29uc3QgTW9kdWxlVmFyID0gNQorY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzID0gNgorY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDcKK2Nv
bnN0IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gOAorY29uc3QgQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA5CiAKIGNvbnN0IFJlc29sdmVUeXBlTWFz
ayA9IDB4M2ZmCiBjb25zdCBJbml0aWFsaXphdGlvbk1vZGVNYXNrID0gMHhmZmMwMApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQppbmRleCA5MmUzZWM4NzM2ODViNWNjY2VjNzBiZTFlMDE5ZGEwMDNkNzAwMmYwLi5m
NWYyYTAzYzI3MDExNzFjMzIyNzZhMzFjZGY2NDE0MDE1ZjM5ZmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMjEwOCwxMCArMjEwOCwxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKICAgICBk
aXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5y
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEgdDAsIENsb3N1
cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNwYXRjaCg3KQog
Cisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldENvbnN0YW50U2NvcGUoMSkKKyAgICBkaXNw
YXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBi
aW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMp
CkBAIC0yMzM5LDEzICsyMzQ0LDE4IEBAIF9sbGludF9vcF9wdXRfdG9fc2NvcGU6CiAgICAgZGlz
cGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKLSAgICBiaW5l
cSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wRHluYW1pYworICAgIGJp
bmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBNb2R1bGVWYXIKICAg
ICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnBE
eW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MiwgdDEsIHQwKQogICAgIHB1dENsb3N1cmVW
YXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5wTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBNb2R1
bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93X3N0cmlj
dF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorICAgIGRpc3BhdGNoKDcpCisK
IC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfdG9fc2Nv
cGUpCiAgICAgZGlzcGF0Y2goNykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggN2YzMzhkYTM2NThiMDQ0YzE3MDU2
MjJjY2QwZWE4NTEwMzAxNTgyMS4uZWZkMGM3ZDc0MTg5ODA1YzEzYmY4MDkyNWU2ZjY3NGMxODZj
MjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE5NzYsMTAgKzE5NzYsMTUgQEAgX2xsaW50X29wX3Jlc29s
dmVfc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgotICAgIGJpbmVxIHQw
LCBDbG9zdXJlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAg
IGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29sdmVTY29wZSgpCiAg
ICAgZGlzcGF0Y2goNykKIAorLnJNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVsZVZhciwg
LnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBnZXRDb25zdGFudFNj
b3BlKDEpCisgICAgZGlzcGF0Y2goNykKKwogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9u
Q2hlY2soLnJEeW5hbWljKQpAQCAtMjIxMywxMyArMjIxOCwxOCBAQCBfbGxpbnRfb3BfcHV0X3Rv
X3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5wQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
cER5bmFtaWMKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Ms
IC5wTW9kdWxlVmFyCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQogICAgIHZhcklu
amVjdGlvbkNoZWNrKC5wRHluYW1pYykKICAgICBsb2FkVmFyaWFibGUoMSwgdDApCiAgICAgcHV0
Q2xvc3VyZVZhcigpCiAgICAgZGlzcGF0Y2goNykKIAorLnBNb2R1bGVWYXI6CisgICAgYmluZXEg
dDAsIE1vZHVsZVZhciwgLnBEeW5hbWljCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdGhy
b3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCisgICAgZGlzcGF0
Y2goNykKKwogLnBEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1
dF90b19zY29wZSkKICAgICBkaXNwYXRjaCg3KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBmNjIzOGZiOTY4MDJiZTUzN2U5MWFkYzI2
YjgyZDg5MGI5NTQwMzJkLi5jMWEzY2MyYjFmMDY4MWUwNTk5MmQ1Y2Q0ZTYyNmJlODgwZDRiOTc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNw
cApAQCAtODIsNyArODIsOSBAQCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgp
LT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEpTTW9kdWxlUmVj
b3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZCgpLT50
cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOworICAgIEFTU0VSVChvcHRpb25hbElt
cG9ydEVudHJ5KTsKKyAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkmIGltcG9y
dEVudHJ5ID0gKm9wdGlvbmFsSW1wb3J0RW50cnk7CiAgICAgaWYgKHZhcmlhYmxlLmlzSW1wb3J0
ZWROYW1lc3BhY2UoKSkgewogICAgICAgICAvLyBFeHBvcnRlZCBuYW1lc3BhY2UgYmluZGluZy4K
ICAgICAgICAgLy8gaW1wb3J0ICogYXMgbmFtZXNwYWNlIGZyb20gIm1vZCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGU4Mjlm
ODU1N2EyYWU2MDNlOGVlZDBhNGI0MDMwY2U2ZDUzYzAyZDUuLmU0ODYxYmEyY2ZjNWU0MjY0ODQx
YjcwZjEyMzFiNmNjZGI1MjdlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMjcwLDYgKzI3MCwxMiBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKQogICAgIFRIUk9XKGNyZWF0ZVREWkVycm9y
KGV4ZWMpKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2Rl
X3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQoreworICAgIEJFR0lOKCk7CisgICAgVEhS
T1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ub3Qp
CiB7CiAgICAgQkVHSU4oKTsKQEAgLTY2OCw2ICs2NzQsMTAgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3Jlc29sdmVfc2NvcGUpCiAgICAgSlNWYWx1ZSByZXNvbHZlZFNjb3BlID0gSlNTY29w
ZTo6cmVzb2x2ZShleGVjLCBzY29wZSwgaWRlbnQpOwogCiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4ocGNbNF0udS5vcGVyYW5kKTsKKworICAg
IC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSByZWdpc3RlciB2YWx1ZSBhbGl2
ZSBpbiBERkcuCisgICAgQVNTRVJUKHJlc29sdmVUeXBlICE9IE1vZHVsZVZhcik7CisKICAgICBp
ZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IFVu
cmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKICAgICAgICAgaWYgKEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0R5
bmFtaWNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4ocmVzb2x2ZWRTY29wZSkpIHsK
ICAgICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDhj
OTg2N2ZjNGRlMzM1YTFmODdlMzc4YzNlYjNiZjczNzUyNTY2YmMuLmZiZWZjZDBlMTg0YWJlYmJk
YTk4OTU1ZmYzZTg0YjhlNjkzZTZlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDEsNiArMjQxLDcgQEAgU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9lbnRlcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9jYWxsZWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b190aGlz
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKTsKK1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlf
cHJvcGVydHlfd3JpdGVfZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
b3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lcSk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25lcSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5jcHAKaW5kZXggMDAyODVhNjc1NzczNDc0NzliZDlhOWI3YjkzOTU1YzI2NDM0NjU3Yy4uMWI5
M2U4ZmQxMjU3ZDBkNzhhYTc5MzY4ODExMjRjYWY2OTk0NGI4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMjE5LDYgKzIxOSwxMCBAQCBKU09iamVjdCogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJT
eW50YXggZXJyb3IiKSkpOwogfQogCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtZXNzYWdlKSk7
Cit9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IGVj
MzBhM2RjNDY2ZTFlYjQ0OWIzZTU4NWFhODA0OTJlZjE5ODQ2NDcuLmY0NmZlMzc2ZmI4NmM2NTJl
NGFlYzg0OTAxM2NlYTJkZjNjODAxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuaApAQCAtNzQsNiArNzQsNyBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmKQogLy8gQ29udmVu
aWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRlZmF1
bHQgbWVzc2FnZS4KIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihF
eGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9y
KEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJy
b3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogaW5saW5lIEpTT2Jq
ZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgpLnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVh
dGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3
cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGIzMTcyZTZkMzdlZWNjNjAz
MDg2ZWQ1N2FhYzExMjZmNDlkMmNkZjguLmM0NzNjNDkxZjliMjY2ZTIzYjY3NzUyOTFkYjY4ODRi
Y2ExNGIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCkBAIC00MzksNiArNDM5LDkgQEAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5zZXQoZXhlYy0+dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZSk7CiAKKyAgICAvLyBDbG9uZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IHN5bWJvbCB0YWJs
ZSBmb3IgdGhpcyBleGVjdXRhYmxlIChhbmQgdGhlIGNvZGUgYmxvY2sgbGlua2VkIGFuZCBpbnN0
YW50aWF0ZWQgbGF0ZXIpLgorICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZS5zZXQoZXhlYy0+dm0oKSwgZXhlY3V0YWJsZSwganNDYXN0PFN5bWJvbFRhYmxlKj4o
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZS0+Y29uc3RhbnRSZWdpc3Rlcih1bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlLT5tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rl
ck9mZnNldCgpKS5nZXQoKSktPmNsb25lU2NvcGVQYXJ0KGV4ZWMtPnZtKCkpKTsKKwogICAgIHJl
dHVybiBleGVjdXRhYmxlOwogfQogCkBAIC02MzMsNiArNjM2LDcgQEAgdm9pZCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9kdWxlUHJv
Z3JhbUNvZGVCbG9jaykKICAgICAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KQEAgLTY0MSw2ICs2NDUsNyBAQCB2b2lk
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQogewogICAgIG1fbW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgbV91bmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suY2xlYXIoKTsKKyAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuY2xlYXIo
KTsKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGNkY2ViMzA0MjY1Zjk3NmQwMDc3YWVmZDY1N2I1Yjdi
YWJiZjJhMTYuLmM0ODc3ODhmNWZjZjI3NTliNjcyMDllNzZiYThhOWNiZmU3YWFlOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTU3LDYgKzU3LDkg
QEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7
CiBjbGFzcyBKU1Njb3BlOwogY2xhc3MgV2ViQXNzZW1ibHlDb2RlQmxvY2s7CitjbGFzcyBNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CitjbGFzcyBKU1Njb3Bl
OwogCiBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdD
b21waWxhdGlvbiB9OwogCkBAIC01ODksNiArNTkyLDkgQEAgY2xhc3MgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRXhlY3V0YWJs
ZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyhuZWVk
c0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KICAgICBVbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0dXJuIG1f
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKKyAgICAvLyBSZXR1cm4g
dGhlIHN5bWJvbCB0YWJsZSBpbiB0aGUgbGlua2VkIGNvZGUgYmxvY2suCisgICAgU3ltYm9sVGFi
bGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmly
b25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
U2NyaXB0RXhlY3V0YWJsZTsKIApAQCAtNTk3LDYgKzYwMyw3IEBAIGNsYXNzIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIFdyaXRl
QmFycmllcjxVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s+IG1fdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrOworICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9tb2R1bGVF
bnZpcm9ubWVudFN5bWJvbFRhYmxlOwogICAgIFJlZlB0cjxNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
PiBtX21vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZXRQdXRJbmZvLmgKaW5kZXggMmU3YTJlZmZlODZlMmY4YzE4NzRlODdjNWZlNGMw
ODMwY2U1NTFmOS4uZjQ5OWJjZDg5NjI0ZGQyNGFlODdkYTFlMjQ5NTRjMGIxYjNjNGJhZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaApAQCAtMjYsNiArMjYs
OCBAQAogI2lmbmRlZiBHZXRQdXRJbmZvX2gKICNkZWZpbmUgR2V0UHV0SW5mb19oCiAKKyNpbmNs
dWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgU3RydWN0dXJlOwpAQCAtNDQsNiArNDYsNyBAQCBlbnVtIFJlc29sdmVUeXBlIHsKICAg
ICBHbG9iYWxMZXhpY2FsVmFyLAogICAgIENsb3N1cmVWYXIsCiAgICAgTG9jYWxDbG9zdXJlVmFy
LAorICAgIE1vZHVsZVZhciwKIAogICAgIC8vIERpdHRvLCBidXQgYXQgbGVhc3Qgb25lIGludGVy
dmVuaW5nIHNjb3BlIHVzZWQgbm9uLXN0cmljdCBldmFsLCB3aGljaAogICAgIC8vIGNhbiBpbmpl
Y3QgYW4gaW50ZXJjZXB0aW5nIHZhciBkZWxjYXJhdGlvbiBhdCBydW50aW1lLgpAQCAtODQsNiAr
ODcsNyBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IGNoYXIqIHJlc29sdmVUeXBlTmFtZShSZXNvbHZl
VHlwZSB0eXBlKQogICAgICAgICAiR2xvYmFsTGV4aWNhbFZhciIsCiAgICAgICAgICJDbG9zdXJl
VmFyIiwKICAgICAgICAgIkxvY2FsQ2xvc3VyZVZhciIsCisgICAgICAgICJNb2R1bGVWYXIiLAog
ICAgICAgICAiR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAg
Ikdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiLAogICAgICAgICAiR2xvYmFsTGV4aWNh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MiLApAQCAtMTIyLDYgKzEyNiw3IEBAIEFMV0FZU19J
TkxJTkUgUmVzb2x2ZVR5cGUgbWFrZVR5cGUoUmVzb2x2ZVR5cGUgdHlwZSwgYm9vbCBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrCiAgICAgICAgIHJldHVybiBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrczsKICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKICAgICAgICAgcmV0dXJuIFVu
cmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgY2FzZSBNb2R1bGVW
YXI6CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAg
Y2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC0xNDMsNiArMTQ4LDcgQEAgQUxXQVlT
X0lOTElORSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiAg
ICAgY2FzZSBHbG9iYWxMZXhpY2FsVmFyOgogICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICBjYXNl
IExvY2FsQ2xvc3VyZVZhcjoKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAgICBjYXNlIFVucmVzb2x2
ZWRQcm9wZXJ0eToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAtMTU5LDEzICsxNjUsMTQgQEAgQUxXQVlTX0lO
TElORSBib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKFJlc29sdmVUeXBlIHR5cGUpCiB9CiAK
IHN0cnVjdCBSZXNvbHZlT3AgewotICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXpl
X3QgZGVwdGgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4
aWNhbEVudmlyb25tZW50LCBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qg
b3BlcmFuZCkKKyAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90IGRlcHRoLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9u
bWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9wZXJhbmQsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBpbXBvcnRlZE5hbWUgPSBudWxscHRyKQogICAgICAgICA6IHR5cGUo
dHlwZSkKICAgICAgICAgLCBkZXB0aChkZXB0aCkKICAgICAgICAgLCBzdHJ1Y3R1cmUoc3RydWN0
dXJlKQogICAgICAgICAsIGxleGljYWxFbnZpcm9ubWVudChsZXhpY2FsRW52aXJvbm1lbnQpCiAg
ICAgICAgICwgd2F0Y2hwb2ludFNldCh3YXRjaHBvaW50U2V0KQogICAgICAgICAsIG9wZXJhbmQo
b3BlcmFuZCkKKyAgICAgICAgLCBpbXBvcnRlZE5hbWUoaW1wb3J0ZWROYW1lKQogICAgIHsKICAg
ICB9CiAKQEAgLTE3NSw2ICsxODIsNyBAQCBzdHJ1Y3QgUmVzb2x2ZU9wIHsKICAgICBKU0xleGlj
YWxFbnZpcm9ubWVudCogbGV4aWNhbEVudmlyb25tZW50OwogICAgIFdhdGNocG9pbnRTZXQqIHdh
dGNocG9pbnRTZXQ7CiAgICAgdWludHB0cl90IG9wZXJhbmQ7CisgICAgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiBpbXBvcnRlZE5hbWU7CiB9OwogCiBjbGFzcyBHZXRQdXRJbmZvIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBh
ZDM3YmFlZjkyYTJhN2MyNDhjZDRiMTFhOGM4NDkzNzQyZjU3MTEyLi4wZTc3Y2QyODg5Y2ViOGJi
ZjEwNzYwZTJlYTMyNWE1ZTk0NDVhZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04NCw2ICs4NCw3IEBACiAjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01hcEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVj
b3JkLmgiCiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT05P
YmplY3QuaCIKQEAgLTMxMyw2ICszMTQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZN
JiB2bSkKICAgICBtX3R5cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0uc3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3R5
cGVkQXJyYXlzW3RvSW5kZXgoVHlwZURhdGFWaWV3KV0ucHJvdG90eXBlLmdldCgpKSk7CiAgICAg
CiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0xleGlj
YWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CisgICAgbV9tb2R1bGVF
bnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwogICAgIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBTdHJpY3RFdmFsQWN0aXZhdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5zZXQo
bV92bSwgdGhpcywgRGVidWdnZXJTY29wZTo6Y3JlYXRlU3RydWN0dXJlKG1fdm0sIHRoaXMpKTsK
ICAgICBtX3dpdGhTY29wZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV2l0aFNjb3BlOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CkBAIC03OTMsNiArNzk1LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dpdGhTY29wZVN0
cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2xl
eGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNDYx
OTU5ZDFiZDliYmM5MzEzMzY5Nzc2YjBkOWMxNTU5Njg3ODEzNi4uZWM2NmMxYTllYzNjOWM1M2Ux
OGUwNjcwYWVjY2I1ZGE5ZWFkMjIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzQsNiArMjM0LDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV93aXRoU2NvcGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZTsKKyAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlOwpAQCAtNDUw
LDYgKzQ1MSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0
cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFs
QWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYWN0aXZhdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLmdl
dCgpOyB9CisgICAgU3RydWN0dXJlKiBtb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIGRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0
QXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzY29wZWRBcmd1bWVu
dHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
CmluZGV4IDUwNzMxMmViN2I2ZWMzNjI1MGE5Mjg1YmVlOThjNGY3MmYwZTI0NzYuLmJiZTMxNjE4
MjQxYTM5NmUzNmYwNTI0ZjVjMGEyMWViZDE2NDY0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFJlZ2lzdGVyOwogICAgIAogY2xhc3MgSlNMZXhp
Y2FsRW52aXJvbm1lbnQgOiBwdWJsaWMgSlNFbnZpcm9ubWVudFJlY29yZCB7Ci1wcml2YXRlOgor
cHJvdGVjdGVkOgogICAgIEpTTGV4aWNhbEVudmlyb25tZW50KFZNJiwgU3RydWN0dXJlKiwgSlNT
Y29wZSosIFN5bWJvbFRhYmxlKik7CiAgICAgCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM3MDE3MzEyYzY2ZDYyNTM3Njk3MjQwMTA5ZTA3YmQwMDI3NjQ2NjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNw
cApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9u
bWVudC5oIgorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnNf
aW5mbyA9IHsgIkpTTW9kdWxlRW52aXJvbm1lbnQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTTW9kdWxlRW52aXJvbm1lbnQpIH07CisKK0pTTW9kdWxlRW52aXJvbm1l
bnQqIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZSgKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7
CisgICAgLy8gSlNMZXhpY2FsRW52aXJvbm1lbnQgKHByZWNpc2VseSwgSlNFbnZpcm9ubWVudFJl
Y29yZCkgaGFzIHRoZSBzdG9yYWdlIHRvIHN0b3JlIHRoZSB2YXJpYWJsZSBzbG90cyBhZnRlciB0
aGUgaXRzIGNsYXNzIHN0b3JhZ2UuCisgICAgLy8gQmVjYXVzZSB0aGUgb2Zmc2V0IG9mIHRoZSB2
YXJpYWJsZSBzbG90cyBhcmUgZml4ZWQgaW4gdGhlIEpTRW52aXJvbm1lbnRSZWNvcmQsIGluaGVy
aXR0aW5nIHRoZXNlIGNsYXNzIGFuZCBhZGRpbmcgbmV3IG1lbWJlciBmaWVsZCBpcyBub3QgYWxs
b3dlZCwKKyAgICAvLyB0aGUgbmV3IG1lbWJlciB3aWxsIG92ZXJsYXAgdGhlIHZhcmlhYmxlIHNs
b3RzLgorICAgIC8vIFRvIGtlZXAgdGhlIEpTTW9kdWxlRW52aXJvbm1lbnQgY29tcGF0aWJsZSB0
byB0aGUgSlNMZXhpY2FsRW52aXJvbm1lbnQgYnV0IGFkZCB0aGUgbmV3IG1lbWJlciB0byBzdG9y
ZSB0aGUgSlNNb2R1bGVSZWNvcmQsIHdlIGFkZGl0aW9uYWxseSBhbGxvY2F0ZQorICAgIC8vIHRo
ZSBzdG9yYWdlIGFmdGVyIHRoZSB2YXJpYWJsZSBzbG90cy4KKyAgICAvLworICAgIC8vIEpTTGV4
aWNhbEVudmlyb25tZW50OgorICAgIC8vICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZh
cmlhYmxlIHNsb3RzIF0KKyAgICAvLworICAgIC8vIEpTTW9kdWxlRW52aXJvbm1lbnQ6CisgICAg
Ly8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1lbnQgXVsgdmFyaWFibGUgc2xvdHMgXVsgYWRkaXRp
b25hbCBzbG90cyBmb3IgSlNNb2R1bGVFbnZpcm9ubWVudCBdCisgICAgSlNNb2R1bGVFbnZpcm9u
bWVudCogcmVzdWx0ID0KKyAgICAgICAgbmV3ICgKKyAgICAgICAgICAgIE5vdE51bGwsCisgICAg
ICAgICAgICBhbGxvY2F0ZUNlbGw8SlNNb2R1bGVFbnZpcm9ubWVudD4odm0uaGVhcCwgSlNNb2R1
bGVFbnZpcm9ubWVudDo6YWxsb2NhdGlvblNpemUoc3ltYm9sVGFibGUpKSkKKyAgICAgICAgSlNN
b2R1bGVFbnZpcm9ubWVudCh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxl
KTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJl
Y29yZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJl
Y29yZCogbW9kdWxlUmVjb3JkKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBpbml0
aWFsVmFsdWUpOworICAgIHRoaXMtPm1vZHVsZVJlY29yZFNsb3QoKS5zZXQodm0sIHRoaXMsIG1v
ZHVsZVJlY29yZCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwp
OworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPnN5
bWJvbFRhYmxlKCktPnNjb3BlU2l6ZSgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bW9kdWxlUmVjb3JkU2xvdCgpKTsKK30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNl
bGwpOworICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlzT2Jq
ZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9t
VWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9uLnR5cGUg
PT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAg
IC8vIFdoZW4gcmVzb2x2ZUltcG9ydCByZXNvbHZlcyB0aGUgcmVzb2x1dGlvbiwgdGhlIGltcG9y
dGVkIG1vZHVsZSBlbnZpcm9ubWVudCBtdXN0IGhhdmUgdGhlIGJpbmRpbmcuCisgICAgICAgIEpT
TW9kdWxlRW52aXJvbm1lbnQqIGltcG9ydGVkTW9kdWxlRW52aXJvbm1lbnQgPSByZXNvbHV0aW9u
Lm1vZHVsZVJlY29yZC0+bW9kdWxlRW52aXJvbm1lbnQoKTsKKyAgICAgICAgUHJvcGVydHlTbG90
IHJlZGlyZWN0U2xvdChpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgYm9vbCBy
ZXN1bHQgPSBpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0T3duUHJvcGVydHlTbG90KGltcG9ydGVkTW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIHJl
c29sdXRpb24ubG9jYWxOYW1lLCByZWRpcmVjdFNsb3QpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKKyAgICAgICAgQVNTRVJUKHJlZGlyZWN0U2xvdC5pc1ZhbHVlKCkp
OworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gcmVkaXJlY3RTbG90LmdldFZhbHVlKGV4ZWMsIHJl
c29sdXRpb24ubG9jYWxOYW1lKTsKKyAgICAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24o
KSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgcmVkaXJlY3RTbG90LmF0dHJp
YnV0ZXMoKSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93bk5vbkluZGV4UHJv
cGVydHlOYW1lcyhKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lc0FycmF5LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBK
U01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1l
bnQqPihjZWxsKTsKKyAgICBpZiAocHJvcGVydHlOYW1lc0FycmF5LmluY2x1ZGVTdHJpbmdQcm9w
ZXJ0aWVzKCkpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdGhpc09iamVjdC0+
bW9kdWxlUmVjb3JkKCktPmltcG9ydEVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgSlNN
b2R1bGVSZWNvcmQ6OkltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAg
ICAgICAgICBpZiAoIWltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4ZWMtPnZtKCkpKQorICAgICAg
ICAgICAgICAgIHByb3BlcnR5TmFtZXNBcnJheS5hZGQoaW1wb3J0RW50cnkubG9jYWxOYW1lKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQmFzZTo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNBcnJheSwgbW9kZSk7Cit9CisK
K3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8gQWxsIGltcG9ydGVkIGJp
bmRpbmdzIGFyZSBpbW11dGFibGUuCisgICAgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVz
b2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMs
IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYg
KHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2
YWx1ZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpCit7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01v
ZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CisgICAgLy8gQWxsIGltcG9ydGVkIGJpbmRpbmdzIGFy
ZSBpbW11dGFibGUuCisgICAgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9
IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZp
ZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRp
b24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25t
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjdlZmE2MjYzYjJiMjc0OWY3ODhjMGE3ZjA3M2Y3Njc3YTAwOWIwMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
RW52aXJvbm1lbnQuaApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorI2Rl
ZmluZSBKU01vZHVsZUVudmlyb25tZW50X2gKKworI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25t
ZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFJlZ2lzdGVyOworCitjbGFzcyBKU01vZHVsZUVudmlyb25tZW50IDogcHVibGljIEpT
TGV4aWNhbEVudmlyb25tZW50IHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0xleGlj
YWxFbnZpcm9ubWVudCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKworICAgIHN0YXRpYyBKU01vZHVsZUVudmly
b25tZW50KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqLCBK
U1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKworICAgIHN0YXRpYyBKU01v
ZHVsZUVudmlyb25tZW50KiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgSlNW
YWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCisgICAgewor
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+bW9kdWxlRW52aXJv
bm1lbnRTdHJ1Y3R1cmUoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZSh2bSwgc3RydWN0dXJlLCBj
dXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlLCBpbml0aWFsVmFsdWUsIG1vZHVsZVJlY29yZCk7Cisg
ICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwo
KSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlKQorICAgIHsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IEJhc2U6OmFsbG9jYXRp
b25TaXplKHN5bWJvbFRhYmxlKTsKKyAgICAgICAgQVNTRVJUKFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPEpTTW9kdWxlUmVjb3JkPik+KG9mZnNldCkgPT0gb2Zm
c2V0KTsKKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90
IGFsbG9jYXRpb25TaXplKFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBvZmZzZXRPZk1vZHVsZVJlY29yZChzeW1ib2xUYWJsZSkgKyBzaXplb2YoV3JpdGVC
YXJyaWVyPEpTTW9kdWxlUmVjb3JkPik7CisgICAgfQorCisgICAgSlNNb2R1bGVSZWNvcmQqIG1v
ZHVsZVJlY29yZCgpCisgICAgeworICAgICAgICByZXR1cm4gbW9kdWxlUmVjb3JkU2xvdCgpLmdl
dCgpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGlj
IHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOworICAgIHN0YXRpYyB2b2lkIHB1
dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYpOworICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0
ZSosIFByb3BlcnR5TmFtZSk7CisKK3ByaXZhdGU6CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudChW
TSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJsZSopOworCisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOwor
CisgICAgV3JpdGVCYXJyaWVyQmFzZTxKU01vZHVsZVJlY29yZD4mIG1vZHVsZVJlY29yZFNsb3Qo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxK
U01vZHVsZVJlY29yZD4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZNb2R1
bGVSZWNvcmQoc3ltYm9sVGFibGUoKSkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKK307CisKK2lubGluZSBKU01vZHVsZUVu
dmlyb25tZW50OjpKU01vZHVsZUVudmlyb25tZW50KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlLCBjdXJyZW50U2NvcGUsIHN5bWJvbFRhYmxlKQoreworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTTW9kdWxlRW52aXJvbm1lbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmlu
ZGV4IDdiNjA2Mzc0YTYwNjBiNzcwMjBjNGVmNDUxMmU5MjQ1ZTAzZjNmYzUuLjJjZWZiZTk0MDFj
YWQ2NDcyYzcxYzQyYTBjODcwNjUxOGVmZDI2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNp
bmNsdWRlICJKU01hcC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
CiAKQEAgLTYwLDEwICs2MSw0OSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNNb2R1bGVSZWNv
cmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50KTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZGVwZW5kZW5jaWVzTWFwKTsKIH0KIAordm9pZCBKU01vZHVsZVJl
Y29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUp
Cit7CisgICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisK
K3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVy
JiBtb2R1bGVOYW1lKQoreworICAgIG1fc3RhckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUu
aW1wbCgpKTsKK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3Qg
SW1wb3J0RW50cnkmIGVudHJ5KQoreworICAgIGJvb2wgaXNOZXdFbnRyeSA9IG1faW1wb3J0RW50
cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpLmlzTmV3RW50cnk7CisgICAg
QVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsgLy8gVGhpcyBpcyBndWFyYW50
ZWVkIGJ5IHRoZSBwYXJzZXIuCit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVu
dHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBib29sIGlzTmV3RW50cnkgPSBt
X2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpLCBlbnRyeSkuaXNOZXdF
bnRyeTsKKyAgICBBU1NFUlRfVU5VU0VEKGlzTmV3RW50cnksIGlzTmV3RW50cnkpOyAvLyBUaGlz
IGlzIGd1YXJhbnRlZWQgYnkgdGhlIHBhcnNlci4KK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6
dHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSkgLT4gT3B0aW9u
YWw8SW1wb3J0RW50cnk+Cit7CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0RW50
cmllcy5maW5kKGxvY2FsTmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50cmll
cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIE9wdGlvbmFsPElt
cG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjp0
cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkgLT4gT3B0aW9u
YWw8RXhwb3J0RW50cnk+Cit7CisgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50
cmllcy5maW5kKGV4cG9ydE5hbWUpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJp
ZXMuZW5kKCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBPcHRpb25hbDxF
eHBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKK30KKwogYXV0byBKU01vZHVsZVJlY29yZDo6
RXhwb3J0RW50cnk6OmNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
JiB2YXJpYWJsZSkgLT4gRXhwb3J0RW50cnkKIHsKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBU
eXBlOjpMb2NhbCwgZXhwb3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2Fs
TmFtZSwgdmFyaWFibGUgfTsKQEAgLTc5LDYgKzExOSwyMSBAQCBhdXRvIEpTTW9kdWxlUmVjb3Jk
OjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSwgYwogICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1l
LCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSgpIH07CiB9CiAKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246Om5vdEZv
dW5kKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6Tm90
Rm91bmQsIG51bGxwdHIsIElkZW50aWZpZXIoKSB9OworfQorCithdXRvIEpTTW9kdWxlUmVjb3Jk
OjpSZXNvbHV0aW9uOjplcnJvcigpIC0+IFJlc29sdXRpb24KK3sKKyAgICByZXR1cm4gUmVzb2x1
dGlvbiB7IFR5cGU6OkVycm9yLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30KKworYXV0byBK
U01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6YW1iaWd1b3VzKCkgLT4gUmVzb2x1dGlvbgorewor
ICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6QW1iaWd1b3VzLCBudWxscHRyLCBJZGVudGlm
aWVyKCkgfTsKK30KKwogc3RhdGljIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKGlkZW50
aWZpZXIuaXNTeW1ib2woKSkKQEAgLTkzLDYgKzE0OCwyNzkgQEAgSlNNb2R1bGVSZWNvcmQqIEpT
TW9kdWxlUmVjb3JkOjpob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QKICAgICByZXR1cm4ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOwogfQogCithdXRvIEpTTW9k
dWxlUmVjb3JkOjpyZXNvbHZlSW1wb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgbG9jYWxOYW1lKSAtPiBSZXNvbHV0aW9uCit7CisgICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+
IG9wdGlvbmFsSW1wb3J0RW50cnkgPSB0cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuaW1wbCgp
KTsKKyAgICBpZiAoIW9wdGlvbmFsSW1wb3J0RW50cnkpCisgICAgICAgIHJldHVybiBSZXNvbHV0
aW9uOjpub3RGb3VuZCgpOworCisgICAgY29uc3QgSW1wb3J0RW50cnkmIGltcG9ydEVudHJ5ID0g
Km9wdGlvbmFsSW1wb3J0RW50cnk7CisgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKGV4
ZWMtPnZtKCkpKQorICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6bm90Rm91bmQoKTsKKworICAg
IEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1
bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAgcmV0dXJuIGltcG9ydGVk
TW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOworfQor
CitzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5IHsKKyAgICBSZXNvbHZlUXVlcnkoSlNNb2R1bGVSZWNvcmQq
IG1vZHVsZVJlY29yZCwgVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpCisgICAgICAgIDog
bW9kdWxlUmVjb3JkKG1vZHVsZVJlY29yZCkKKyAgICAgICAgLCBleHBvcnROYW1lKGV4cG9ydE5h
bWUpCisgICAgeworICAgIH0KKworICAgIFJlc29sdmVRdWVyeShKU01vZHVsZVJlY29yZCogbW9k
dWxlUmVjb3JkLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKQorICAgICAgICA6IFJlc29s
dmVRdWVyeShtb2R1bGVSZWNvcmQsIGV4cG9ydE5hbWUuaW1wbCgpKQorICAgIHsKKyAgICB9CisK
KyAgICBlbnVtIEVtcHR5VmFsdWVUYWcgeyBFbXB0eVZhbHVlIH07CisgICAgUmVzb2x2ZVF1ZXJ5
KEVtcHR5VmFsdWVUYWcpCisgICAgeworICAgIH0KKworICAgIGVudW0gRGVsZXRlZFZhbHVlVGFn
IHsgRGVsZXRlZFZhbHVlIH07CisgICAgUmVzb2x2ZVF1ZXJ5KERlbGV0ZWRWYWx1ZVRhZykKKyAg
ICAgICAgOiBtb2R1bGVSZWNvcmQobnVsbHB0cikKKyAgICAgICAgLCBleHBvcnROYW1lKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRW1wdHlW
YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIWV4cG9ydE5hbWU7CisgICAgfQor
CisgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
ZXhwb3J0TmFtZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworICAgIH0KKworICAgIC8vIFRo
ZSBtb2R1bGUgcmVjb3JkIGlzIG5vdCBtYXJrZWQgZnJvbSB0aGUgR0MuIEJ1dCB0aGVzZSByZWNv
cmRzIGFyZSByZWFjaGFibGUgZnJvbSB0aGUgSlNHbG9iYWxPYmplY3QuCisgICAgLy8gU28gd2Ug
ZG9uJ3QgY2FyZSB0aGUgcmVhY2hhYmlsaXR5IHRvIHRoaXMgcmVjb3JkLgorICAgIEpTTW9kdWxl
UmVjb3JkKiBtb2R1bGVSZWNvcmQ7CisgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBleHBv
cnROYW1lOworfTsKKworc3RydWN0IFJlc29sdmVRdWVyeUhhc2ggeworICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFJlc29sdmVRdWVyeSYpOworICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFJlc29sdmVRdWVyeSYsIGNvbnN0IFJlc29sdmVRdWVyeSYpOworICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK2lubGlu
ZSB1bnNpZ25lZCBSZXNvbHZlUXVlcnlIYXNoOjpoYXNoKGNvbnN0IFJlc29sdmVRdWVyeSYgcXVl
cnkpCit7CisgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU01vZHVsZVJlY29yZCo+OjpoYXNoKHF1
ZXJ5Lm1vZHVsZVJlY29yZCkgKyBJZGVudGlmaWVyUmVwSGFzaDo6aGFzaChxdWVyeS5leHBvcnRO
YW1lKTsKK30KKworaW5saW5lIGJvb2wgUmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwoY29uc3QgUmVz
b2x2ZVF1ZXJ5JiBsaHMsIGNvbnN0IFJlc29sdmVRdWVyeSYgcmhzKQoreworICAgIHJldHVybiBs
aHMubW9kdWxlUmVjb3JkID09IHJocy5tb2R1bGVSZWNvcmQgJiYgbGhzLmV4cG9ydE5hbWUgPT0g
cmhzLmV4cG9ydE5hbWU7Cit9CisKK3N0YXRpYyBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiBy
ZXNvbHZlRXhwb3J0TG9vcChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFJlc29sdmVRdWVyeSYgcm9v
dCkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIv
Ni4wLyNzZWMtcmVzb2x2ZWV4cG9ydAorICAgIC8vIFRoaXMgZnVuY3Rpb24gYXZvaWRzIEMrKyBy
ZWN1cnNpb24gb2YgdGhlIG5haXZlIFJlc29sdmVFeHBvcnQgaW1wbGVtZW50YXRpb24uCisgICAg
Ly8gRmxhdHRlbiB0aGUgcmVjdXJzaW9uIHRvIHRoZSBsb29wIHdpdGggdGhlIHRhc2sgcXVldWUg
YW5kIGZyYW1lcy4KKyAgICAvLworICAgIC8vIDEuIHBlbmRpbmdUYXNrcworICAgIC8vICAgICBX
ZSBlbnF1ZXVlIHRoZSByZWN1cnNpdmUgcmVzb2x2ZUV4cG9ydCBjYWxsIHRvIHRoaXMgcXVldWUg
dG8gYXZvaWQgcmVjdXJzaXZlIGNhbGxzIGluIEMrKy4KKyAgICAvLyAgICAgVGhlIHRhc2sgaGFz
IDMgdHlwZXMuICgxKSBRdWVyeSwgKDIpIEluZGlyZWN0RmFsbGJhY2sgYW5kICgzKSBHYXRoZXJT
dGFycy4KKyAgICAvLyAgICAgKDEpIFF1ZXJ5CisgICAgLy8gICAgICAgICBRdWVyeWluZyB0aGUg
cmVzb2x1dGlvbiB0byB0aGUgY3VycmVudCBtb2R1bGUuCisgICAgLy8gICAgICgyKSBJbmRpcmVj
dEZhbGxiYWNrCisgICAgLy8gICAgICAgICBFeGFtaW5lIHRoZSByZXN1bHQgb2YgdGhlIGluZGly
ZWN0IGV4cG9ydCByZXNvbHV0aW9uLiBPbmx5IHdoZW4gdGhlIGluZGlyZWN0IGV4cG9ydCByZXNv
bHV0aW9uIGZhaWxzLAorICAgIC8vICAgICAgICAgd2UgbG9vayBpbnRvIHRoZSBzdGFyIGV4cG9y
dHMuIChzdGVwIDUtYS12aSkuCisgICAgLy8gICAgICgzKSBHYXRoZXJTdGFycworICAgIC8vICAg
ICAgICAgRXhhbWluZSB0aGUgcmVzdWx0IG9mIHRoZSBzdGFyIGV4cG9ydCByZXNvbHV0aW9ucy4K
KyAgICAvLworICAgIC8vIDIuIGZyYW1lcworICAgIC8vICAgICBXaGVuIHRoZSBzcGVjIGNhbGxz
IHRoZSByZXNvbHZlRXhwb3J0IHJlY3Vyc2l2ZWx5LCBpbnN0ZWFkIHdlIGFwcGVuZCB0aGUgZnJh
bWUKKyAgICAvLyAgICAgKHRoYXQgaG9sZHMgdGhlIHJlc3VsdCByZXNvbHV0aW9uKSB0byB0aGUg
ZnJhbWVzIGFuZCBlbnF1ZXVlIHRoZSB0YXNrIHRvIHRoZSBwZW5kaW5nVGFza3MuCisgICAgLy8g
ICAgIFRoZSBlbnRyeSBpbiB0aGUgZnJhbWVzIG1lYW5zIHRoZSAqbG9jYWwqIHJlc29sdXRpb24g
cmVzdWx0IG9mIHRoZSBzcGVjaWZpYyByZWN1cnNpdmUgcmVzb2x2ZUV4cG9ydC4KKyAgICAvLwor
ICAgIC8vIFdlIHNob3VsZCBtYWludGFpbiB0aGUgbG9jYWwgcmVzb2x1dGlvbiByZXN1bHQgaW5z
dGVhZCBvZiBob2xkaW5nIHRoZSBnbG9iYWwgcmVzb2x1dGlvbiByZXN1bHQgb25seS4KKyAgICAv
LyBGb3IgZXhhbXBsZSwKKyAgICAvLworICAgIC8vICAgICBzdGFyCisgICAgLy8gKDEpIC0tLT4g
KDIpICJSZXNvbHZlIgorICAgIC8vICAgICAgfAorICAgIC8vICAgICAgfAorICAgIC8vICAgICAg
Ky0+ICgzKSAiTm90Rm91bmQiCisgICAgLy8gICAgICB8CisgICAgLy8gICAgICB8ICAgICAgIHN0
YXIKKyAgICAvLyAgICAgICstPiAoNCkgLS0tPiAoNSkgIlJlc29sdmUiIFtoZXJlXQorICAgIC8v
ICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAg
ICAgICAgKy0+ICg2KSAiRXJyb3IiCisgICAgLy8KKyAgICAvLyBDb25zaWRlciB0aGUgYWJvdmUg
Z3JhcGguIFRoZSBudW1iZXJzIHJlcHJlc2VudHMgdGhlIG1vZHVsZXMuIE5vdyB3ZSBhcmUgW2hl
cmVdLgorICAgIC8vIElmIHdlIG9ubHkgaG9sZCB0aGUgZ2xvYmFsIHJlc29sdXRpb24gcmVzdWx0
IGR1cmluZyB0aGUgcmVzb2x2ZUV4cG9ydCBvcGVyYXRpb24sIFtoZXJlXSwKKyAgICAvLyB3ZSBk
ZWNpZGUgdGhlIGVudGlyZSByZXN1bHQgb2YgcmVzb2x2ZUV4cG9ydCBpcyAiQW1iaWd1b3VzIiwg
YmVjYXVzZSB0aGVyZSBhcmUgbXVsdGlwbGUKKyAgICAvLyAiUmVzbG92ZSIgKGluIG1vZHVsZSAo
MikgYW5kICg1KSkuIEhvd2V2ZXIsIHRoaXMgc2hvdWxkIGJlY29tZSAiRXJyb3IiIGJlY2F1c2Ug
KDYpIHdpbGwKKyAgICAvLyBwcm9wYWdhdGUgIkVycm9yIiBzdGF0ZSB0byB0aGUgKDQpLCAoNCkg
d2lsbCBiZWNvbWUgIkVycm9yIiBhbmQgdGhlbiwgKDEpIHdpbGwgYmVjb21lCisgICAgLy8gIkVy
cm9yIi4gV2Ugc2hvdWxkIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0cyBhdCB0aGUgc3RhciBleHBvcnRz
IHBvaW50ICgoNCkgYW5kICgxKSkuCisgICAgLy8KKyAgICAvLyBVc3VhbGx5LCBib3RoICJFcnJv
ciIgYW5kICJBbWJpZ3VvdXMiIHN0YXRlcyB3aWxsIHRocm93IHRoZSBzeW50YXggZXJyb3IuIFNv
IGV4Y2VwdCBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlCisgICAgLy8gZXJyb3IgbWVzc2FnZSwgdGhl
cmUgYXJlIG5vIGRpZmZlcmVuY2UuIChBbmQgaWYgd2UgZml4IHRoZSAoNikgdGhhdCByYWlzZXMg
IkVycm9yIiwgbmV4dCwgaXQgd2lsbCBwcm9kdWNlCisgICAgLy8gdGhlICJBbWJpZ3VvdXMiIGVy
cm9yIGR1ZSB0byAoNSkuIEFueXdheSwgdXNlciBuZWVkIHRvIGZpeCB0aGUgYm90aC4gU28gd2hp
Y2ggZXJyb3Igc2hvdWxkIGJlIHJhaXNlZCBhdCBmaXJzdAorICAgIC8vIGRvZXNuJ3QgbWF0dGVy
IHNvIG11Y2guCisgICAgLy8KKyAgICAvLyBIb3dldmVyLCB0aGlzIG1heSBiZWNvbWUgdGhlIHBy
b2JsZW0gdW5kZXIgdGhlIG1vZHVsZSBuYW1lc3BhY2UgY3JlYXRpb24uCisgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdldG1vZHVsZW5h
bWVzcGFjZQorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE4LCBzdGVwIDMtZC1paQorICAgIC8vIEhl
cmUsIHdlIGRpc3Rpbmd1aXNoICJBbWJpZ3VvdXMiIGFuZCAiRXJyb3IiLiBXaGVuICJFcnJvciIg
c3RhdGUgaXMgcHJvZHVjZWQsIHdlIG5lZWQgdG8gdGhyb3cgdGhlIHByb3BhZ2F0ZWQgZXJyb3Iu
CisgICAgLy8gQnV0IGlmICJBbWJpZ3VvdXMiIHN0YXRlIGNvbWVzLCB3ZSBqdXN0IGlnbm9yZSB0
aGUgcmVzdWx0LgorICAgIC8vIFRvIGZvbGxvdyB0aGUgcmVxdWlyZW1lbnQgc3RyaWN0bHksIGlu
IHRoaXMgaW1wbGVtZW50YXRpb24sIHdlIGtlZXAgdGhlIGxvY2FsIHJlc29sdXRpb24gcmVzdWx0
IHRvIHByb2R1Y2UgdGhlCisgICAgLy8gY29ycmVjdCByZXN1bHQgdW5kZXIgdGhlIGFib3ZlIGNv
bXBsZXggY2FzZXMuCisKKyAgICB1c2luZyBSZXNvbHV0aW9uID0gSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdXRpb247CisgICAgdHlwZWRlZiBXVEY6Okhhc2hTZXQ8UmVzb2x2ZVF1ZXJ5LCBSZXNvbHZl
UXVlcnlIYXNoLCBXVEY6OkN1c3RvbUhhc2hUcmFpdHM8UmVzb2x2ZVF1ZXJ5Pj4gUmVzb2x2ZVNl
dDsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBRdWVyeSwgSW5kaXJlY3RGYWxsYmFjaywgR2F0aGVy
U3RhcnMgfTsKKyAgICBzdHJ1Y3QgVGFzayB7CisgICAgICAgIFJlc29sdmVRdWVyeSBxdWVyeTsK
KyAgICAgICAgVHlwZSB0eXBlOworICAgIH07CisKKyAgICBWZWN0b3I8VGFzaywgOD4gcGVuZGlu
Z1Rhc2tzOworICAgIFJlc29sdmVTZXQgcmVzb2x2ZVNldDsKKyAgICBIYXNoU2V0PEpTTW9kdWxl
UmVjb3JkKj4gc3RhclNldDsKKyAgICBWZWN0b3I8UmVzb2x1dGlvbiwgOD4gZnJhbWVzOworCisg
ICAgZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9uOjpub3RGb3VuZCgpKTsKKworICAgIC8vIENhbGwg
d2hlbiB0aGUgcXVlcnkgaXMgbm90IHJlc29sdmVkIGluIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAg
ICAvLyBJdCB3aWxsIGVucXVldWUgdGhlIHN0YXIgcmVzb2x1dGlvbiByZXF1ZXN0cy4gUmV0dXJu
ICJmYWxzZSIgaWYgdGhlIGVycm9yIG9jY3Vycy4KKyAgICBhdXRvIHJlc29sdmVOb25Mb2NhbCA9
IFsmXShjb25zdCBSZXNvbHZlUXVlcnkmIHF1ZXJ5KSAtPiBib29sIHsKKyAgICAgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXJlc29sdmVl
eHBvcnQKKyAgICAgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuMywgc3RlcCA2CisgICAgICAgIC8v
IElmIHRoZSAiZGVmYXVsdCIgbmFtZSBpcyBub3QgcmVzb2x2ZWQgaW4gdGhlIGN1cnJlbnQgbW9k
dWxlLCB3ZSBuZWVkIHRvIHRocm93IGFuIGVycm9yIGFuZCBzdG9wIHJlc29sdXRpb24gaW1tZWRp
YXRlbHksCisgICAgICAgIC8vIFJhdGlvbmFsZSB0byB0aGlzIGVycm9yOiBBIGRlZmF1bHQgZXhw
b3J0IGNhbm5vdCBiZSBwcm92aWRlZCBieSBhbiBleHBvcnQgKi4KKyAgICAgICAgaWYgKHF1ZXJ5
LmV4cG9ydE5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmRlZmF1bHRLZXl3b3JkLmltcGwo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBzdGVwIDcsIElmIGV4
cG9ydFN0YXJTZXQgY29udGFpbnMgbW9kdWxlLCB0aGVuIHJldHVybiBudWxsLgorICAgICAgICBp
ZiAoIXN0YXJTZXQuYWRkKHF1ZXJ5Lm1vZHVsZVJlY29yZCkuaXNOZXdFbnRyeSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEVucXVldWUgdGhlIHRhc2sgdG8gZ2F0aGVy
IHRoZSByZXN1bHRzIG9mIHRoZSBzdGFycy4KKyAgICAgICAgLy8gQW5kIGFwcGVuZCB0aGUgbmV3
IFJlc29sdXRpb24gZnJhbWUgdG8gZ2F0aGVyIHRoZSBsb2NhbCByZXN1bHQgb2YgdGhlIHN0YXJz
LgorICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBxdWVyeSwgVHlwZTo6R2F0aGVy
U3RhcnMgfSk7CisgICAgICAgIGZyYW1lcy5hcHBlbmQoUmVzb2x1dGlvbjo6bm90Rm91bmQoKSk7
CisKKyAgICAgICAgLy8gRW5xdWV1ZSB0aGUgdGFza3MgaW4gcmV2ZXJzZSBvcmRlci4KKyAgICAg
ICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gcXVlcnkubW9kdWxlUmVjb3JkLT5zdGFyRXhwb3J0RW50
cmllcygpLnJiZWdpbigpLCBlbmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRy
aWVzKCkucmVuZCgpOyBpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpIHsKKyAgICAgICAgICAg
IGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHN0YXJNb2R1bGVOYW1lID0gKml0ZXJh
dG9yOworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVjb3JkID0g
cXVlcnkubW9kdWxlUmVjb3JkLT5ob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIElkZW50
aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rhck1vZHVsZU5hbWUuZ2V0KCkpKTsKKyAgICAgICAgICAg
IHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IFJlc29sdmVRdWVyeShpbXBvcnRlZE1vZHVsZVJl
Y29yZCwgcXVlcnkuZXhwb3J0TmFtZS5nZXQoKSksIFR5cGU6OlF1ZXJ5IH0pOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICAvLyBSZXR1cm4gdGhlIGN1cnJl
bnQgcmVzb2x1dGlvbiB2YWx1ZSBvZiB0aGUgdG9wIGZyYW1lLgorICAgIGF1dG8gY3VycmVudFRv
cCA9IFsmXSAoKSAtPiBSZXNvbHV0aW9uJiB7CisgICAgICAgIEFTU0VSVCghZnJhbWVzLmlzRW1w
dHkoKSk7CisgICAgICAgIHJldHVybiBmcmFtZXMubGFzdCgpOworICAgIH07CisKKyAgICAvLyBN
ZXJnZSB0aGUgZ2l2ZW4gcmVzb2x1dGlvbiB0byB0aGUgY3VycmVudCByZXNvbHV0aW9uIHZhbHVl
IG9mIHRoZSB0b3AgZnJhbWUuCisgICAgLy8gSWYgdGhlcmUgaXMgYW1iaWd1aXR5LCByZXR1cm4g
ImZhbHNlIi4gV2hlbiB0aGUgImZhbHNlIiBpcyByZXR1cm5lZCwgd2Ugc2hvdWxkIG1ha2UgdGhl
IHJlc3VsdCAiYW1iaWd1b3VzIi4KKyAgICBhdXRvIG1lcmdlVG9DdXJyZW50VG9wID0gWyZdIChj
b25zdCBSZXNvbHV0aW9uJiByZXNvbHV0aW9uKSAtPiBib29sIHsKKyAgICAgICAgaWYgKHJlc29s
dXRpb24udHlwZSA9PSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgICAgIGlmIChjdXJyZW50VG9wKCkudHlwZSA9PSBSZXNvbHV0aW9u
OjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAgY3VycmVudFRvcCgpID0gcmVzb2x1dGlv
bjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGN1
cnJlbnRUb3AoKS5tb2R1bGVSZWNvcmQgIT0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQgfHwgY3Vy
cmVudFRvcCgpLmxvY2FsTmFtZSAhPSByZXNvbHV0aW9uLmxvY2FsTmFtZSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgcGVu
ZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgcm9vdCwgVHlwZTo6UXVlcnkgfSk7CisgICAgd2hpbGUg
KCFwZW5kaW5nVGFza3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGNvbnN0IFRhc2sgdGFzayA9IHBl
bmRpbmdUYXNrcy50YWtlTGFzdCgpOworICAgICAgICBjb25zdCBSZXNvbHZlUXVlcnkmIHF1ZXJ5
ID0gdGFzay5xdWVyeTsKKworICAgICAgICBzd2l0Y2ggKHRhc2sudHlwZSkgeworICAgICAgICBj
YXNlIFR5cGU6OlF1ZXJ5OiB7CisgICAgICAgICAgICBpZiAoIXJlc29sdmVTZXQuYWRkKHRhc2su
cXVlcnkpLmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQ7Cisg
ICAgICAgICAgICBjb25zdCBPcHRpb25hbDxKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk+IG9w
dGlvbmFsRXhwb3J0RW50cnkgPSBtb2R1bGVSZWNvcmQtPnRyeUdldEV4cG9ydEVudHJ5KHF1ZXJ5
LmV4cG9ydE5hbWUuZ2V0KCkpOworICAgICAgICAgICAgaWYgKCFvcHRpb25hbEV4cG9ydEVudHJ5
KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbWF0Y2hlZCBleHBvcnRlZCBi
aW5kaW5nIGluIHRoZSBjdXJyZW50IG1vZHVsZSwKKyAgICAgICAgICAgICAgICAvLyB3ZSBuZWVk
IHRvIGxvb2sgaW50byB0aGUgc3RhcnMuCisgICAgICAgICAgICAgICAgaWYgKCFyZXNvbHZlTm9u
TG9jYWwodGFzay5xdWVyeSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9u
OjplcnJvcigpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnkmIGV4cG9ydEVudHJ5
ID0gKm9wdGlvbmFsRXhwb3J0RW50cnk7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5
LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpU
eXBlOjpMb2NhbDoKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5
OjpUeXBlOjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRv
cChSZXNvbHV0aW9uIHsgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQsIG1vZHVsZVJlY29yZCwg
ZXhwb3J0RW50cnkubG9jYWxOYW1lIH0pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVz
b2x1dGlvbjo6YW1iaWd1b3VzKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDog
eworICAgICAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9
IG1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBleHBvcnRFbnRy
eS5tb2R1bGVOYW1lKTsKKworICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGltcG9ydGVkIG1v
ZHVsZSBkb2VzIG5vdCBwcm9kdWNlIGFueSByZXNvbHZlZCBiaW5kaW5nLCB3ZSBuZWVkIHRvIGxv
b2sgaW50byB0aGUgc3RhcnMgaW4gdGhlICpjdXJyZW50KgorICAgICAgICAgICAgICAgIC8vIG1v
ZHVsZS4gVG8gZG8gdGhpcywgd2UgYXBwZW5kIHRoZSBgSW5kaXJlY3RGYWxsYmFja2AgdGFzayB0
byB0aGUgdGFzayBxdWV1ZS4KKyAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3MuYXBwZW5kKFRh
c2sgeyBxdWVyeSwgVHlwZTo6SW5kaXJlY3RGYWxsYmFjayB9KTsKKyAgICAgICAgICAgICAgICAv
LyBBbmQgYXBwZW5kIHRoZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0byBjaGVjayB0aGUgaW5kaXJl
Y3QgZXhwb3J0IHdpbGwgYmUgcmVzb2x2ZWQgb3Igbm90LgorICAgICAgICAgICAgICAgIGZyYW1l
cy5hcHBlbmQoUmVzb2x1dGlvbjo6bm90Rm91bmQoKSk7CisgICAgICAgICAgICAgICAgcGVuZGlu
Z1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9kdWxlUmVjb3JkLCBl
eHBvcnRFbnRyeS5pbXBvcnROYW1lKSwgVHlwZTo6UXVlcnkgfSk7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVHlwZTo6SW5kaXJlY3RGYWxsYmFjazogewor
ICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGZyYW1l
cy50YWtlTGFzdCgpOworCisgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09IFJlc29s
dXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgLy8gSW5kaXJlY3QgZXhw
b3J0IGVudHJ5IGRvZXMgbm90IHByb2R1Y2UgYW55IHJlc29sdmVkIGJpbmRpbmcuCisgICAgICAg
ICAgICAgICAgLy8gU28gd2Ugd2lsbCBpbnZlc3RpZ2F0ZSB0aGUgc3RhcnMuCisgICAgICAgICAg
ICAgICAgaWYgKCFyZXNvbHZlTm9uTG9jYWwodGFzay5xdWVyeSkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBSZXNvbHV0aW9uOjplcnJvcigpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiBpbmRpcmVjdCBleHBvcnQgZW50
cnkgcHJvZHVjZXMgUmVzb2x2ZWQsIHdlIHNob3VsZCBtZXJnZSBpdCB0byB0aGUgdXBwZXIgZnJh
bWUuCisgICAgICAgICAgICAvLyBBbmQgZG8gbm90IGludmVzdGlnYXRlIHRoZSBzdGFycyBvZiB0
aGUgY3VycmVudCBtb2R1bGUuCisgICAgICAgICAgICBpZiAoIW1lcmdlVG9DdXJyZW50VG9wKHJl
c29sdXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjphbWJpZ3VvdXMo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBUeXBlOjpH
YXRoZXJTdGFyczogeworICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIHN0YXIgcmVzb2x1dGlvbiB0
byB0aGUgdXBwZXIgZnJhbWUuCisgICAgICAgICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlv
biBzdGFyUmVzb2x1dGlvbiA9IGZyYW1lcy50YWtlTGFzdCgpOworICAgICAgICAgICAgaWYgKCFt
ZXJnZVRvQ3VycmVudFRvcChzdGFyUmVzb2x1dGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJu
IFJlc29sdXRpb246OmFtYmlndW91cygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIEFTU0VSVChmcmFtZXMuc2l6ZSgpID09IDEpOworICAg
IHJldHVybiBmcmFtZXNbMF07Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVFeHBv
cnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKSAtPiBSZXNv
bHV0aW9uCit7CisgICAgcmV0dXJuIHJlc29sdmVFeHBvcnRMb29wKGV4ZWMsIFJlc29sdmVRdWVy
eSh0aGlzLCBleHBvcnROYW1lLmltcGwoKSkpOworfQorCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjps
aW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoZXhlYywgc291cmNlQ29k
ZSgpKTsKQEAgLTEwMSwxMSArNDI5LDEyMCBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX21vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKKyAgICBpbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhleGVjLCBleGVjdXRhYmxlKTsKIH0KIAotSlNWYWx1ZSBKU01v
ZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqKQordm9pZCBKU01vZHVsZVJlY29yZDo6aW5z
dGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCiB7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorCisgICAgU3ltYm9sVGFibGUq
IHN5bWJvbFRhYmxlID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPm1vZHVsZUVudmlyb25tZW50
U3ltYm9sVGFibGUoKTsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVu
dCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUs
IGpzVERaVmFsdWUoKSwgdGhpcyk7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQg
c3RlcCA5LgorICAgIC8vIEVuc3VyZSBhbGwgdGhlIGluZGlyZWN0IGV4cG9ydHMgYXJlIGNvcnJl
Y3RseSByZXNvbHZlZCB0byB1bmlxdWUgYmluZGluZ3MuCisgICAgLy8gRXZlbiBpZiB3ZSBhdm9p
ZGVkIGR1cGxpY2F0ZSBleHBvcnRzIGluIHRoZSBwYXJzZXIsIHN0aWxsIGFtYmlndW91cyBleHBv
cnRzIG9jY3VyIGR1ZSB0byB0aGUgc3RhciBleHBvcnQgKGBleHBvcnQgKiBmcm9tICJtb2QiYCku
CisgICAgLy8gV2hlbiB3ZSBzZWUgdGhpcyB0eXBlIG9mIGFtYmlndWl0eSBmb3IgdGhlIGluZGly
ZWN0IGV4cG9ydHMgaGVyZSwgdGhyb3cgYSBzeW50YXggZXJyb3IuCisgICAgZm9yIChjb25zdCBh
dXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IEV4cG9ydEVudHJ5
JiBleHBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIGlmIChleHBvcnRFbnRyeS50eXBl
ID09IEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3QpIHsKKyAgICAg
ICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgZXhwb3J0
RW50cnkuZXhwb3J0TmFtZSk7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkg
eworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAg
ICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhw
b3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBs
KCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CisgICAgICAgICAgICAg
ICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVk
IGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwg
IicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3Mu
IikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMs
IG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBj
YW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29s
dmVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNlY3Rpb24g
MTUuMi4xLjE2LjQgc3RlcCAxMi4KKyAgICAvLyBJbnN0YW50aWF0ZSBuYW1lc3BhY2Ugb2JqZWN0
cyBhbmQgaW5pdGlhbGl6ZSB0aGUgYmluZGluZ3Mgd2l0aCB0aGVtIGlmIHJlcXVpcmVkLgorICAg
IC8vIEFuZCBlbnN1cmUgdGhhdCBhbGwgdGhlIGltcG9ydHMgY29ycmVjdGx5IHJlc29sdmVkIHRv
IHVuaXF1ZSBiaW5kaW5ncy4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2ltcG9ydEVu
dHJpZXMpIHsKKyAgICAgICAgY29uc3QgSW1wb3J0RW50cnkmIGltcG9ydEVudHJ5ID0gcGFpci52
YWx1ZTsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29s
dmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICAg
ICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZtKSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IE1vZHVsZU5hbWVzcGFjZU9iamVjdCB3aWxsIGJlIGltcGxlbWVudGVkLgorICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcwNQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0
ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgeworICAgICAgICAgICAgY2FzZSBS
ZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVy
cm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhp
bXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6
OkFtYmlndW91czoKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VT
dHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBv
cnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11
bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZh
dWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6
OlJlc29sdmVkOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgorICAgIC8vIHNl
Y3Rpb24gMTUuMi4xLjE2LjQgc3RlcCAxNC4KKyAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgY29u
dGFpbnMgdGhlIGhlYXAgYWxsb2NhdGVkICJ2YXIiLCAiZnVuY3Rpb24iLCAibGV0IiwgImNvbnN0
IiwgYW5kICJjbGFzcyIuCisgICAgLy8gV2hlbiBjcmVhdGluZyB0aGUgZW52aXJvbm1lbnQsIHdl
IGluaXRpYWxpemVkIGFsbCB0aGUgc2xvdHMgd2l0aCBlbXB0eSwgaXQncyBvayBmb3IgbGV4aWNh
bCB2YWx1ZXMuCisgICAgLy8gQnV0IGZvciAidmFyIiBhbmQgImZ1bmN0aW9uIiwgd2Ugc2hvdWxk
IGluaXRpYWxpemUgaXQgd2l0aCB1bmRlZmluZWQuIFRoZXkgYXJlIGNvbnRhaW5lZCBpbiB0aGUg
ZGVjbGFyZWQgdmFyaWFibGVzLgorICAgIGZvciAoY29uc3QgYXV0byYgdmFyaWFibGUgOiBtX2Rl
Y2xhcmVkVmFyaWFibGVzKSB7CisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1i
b2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7CisgICAgICAgIFZhck9mZnNldCBvZmZz
ZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKQor
ICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIElkZW50
aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNVbmRlZmluZWQoKSwg
ZmFsc2UsIHRydWUpOworICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24K
KyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTYtYS1pdi4KKyAgICAvLyBJbml0aWFs
aXplIGhlYXAgYWxsb2NhdGVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KKyAgICAvLyBUaGV5IGNh
biBiZSBjYWxsZWQgYmVmb3JlIHRoZSBib2R5IG9mIHRoZSBtb2R1bGUgaXMgZXhlY3V0ZWQgdW5k
ZXIgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+dW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIG51bWJl
ck9mRnVuY3Rpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygp
OyBpIDwgbnVtYmVyT2ZGdW5jdGlvbnM7ICsraSkgeworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9j
ay0+ZnVuY3Rpb25EZWNsKGkpOworICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3lt
Ym9sVGFibGUtPmdldCh1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmltcGwoKSk7
CisgICAgICAgIFZhck9mZnNldCBvZmZzZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKKyAgICAgICAg
aWYgKCFvZmZzZXQuaXNTdGFjaygpKSB7CisgICAgICAgICAgICBBU1NFUlQoIXVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIGlmICh2bS50
eXBlUHJvZmlsZXIoKSB8fCB2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpIHsKKyAgICAgICAgICAg
ICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdl
KG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3VyY2VJRCgpLAorICAgICAgICAgICAgICAgICAg
ICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCks
CisgICAgICAgICAgICAgICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLT5saW5rKHZtLCBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlKCkpLCBtb2R1
bGVFbnZpcm9ubWVudCk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9u
bWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rpb24s
IGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fbW9kdWxlRW52aXJvbm1l
bnQuc2V0KHZtLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7Cit9CisKK0pTVmFsdWUgSlNNb2R1
bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghbV9tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKG1fbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuZ2V0KCksIGV4ZWMsIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCkpOworICAg
IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY2xlYXIoKTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiYgdWlkKQpAQCAtMTI5LDIzICs1NjYsMjUgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6
ZHVtcCgpCiAgICAgICAgIGRhdGFMb2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1v
ZHVsZU5hbWUpLCAiKVxuIik7CiAKICAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2ltcG9y
dEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNcbiIpOwotICAgIGZvciAoY29uc3QgYXV0byYgcGFp
ciA6IG1faW1wb3J0RW50cmllcykKLSAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHBy
aW50YWJsZU5hbWUocGFpci52YWx1ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJs
ZU5hbWUocGFpci52YWx1ZS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUo
cGFpci52YWx1ZS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOworICAgIGZvciAoY29uc3QgYXV0byYg
cGFpciA6IG1faW1wb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBJbXBvcnRFbnRyeSYgaW1w
b3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBkYXRhTG9nKCIgICAgICBpbXBvcnQoIiwg
cHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50
YWJsZU5hbWUoaW1wb3J0RW50cnkubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVO
YW1lKGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7CisgICAgfQogCiAgICAgZGF0
YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRFbnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4i
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKLSAgICAg
ICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0gcGFpci52YWx1ZTsKLSAgICAgICAgc3dpdGNo
IChlbnRyeS50eXBlKSB7CisgICAgICAgIGNvbnN0IEV4cG9ydEVudHJ5JiBleHBvcnRFbnRyeSA9
IHBhaXIudmFsdWU7CisgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgewogICAgICAg
ICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKLSAgICAgICAgICAgIGRhdGFMb2coIiAg
ICAgIFtMb2NhbF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUp
LCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7Cisg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxl
TmFtZShleHBvcnRFbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUo
ZXhwb3J0RW50cnkubG9jYWxOYW1lKSwgIilcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgotICAgICAgICAgICAgZGF0
YUxvZygiICAgICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5
LmV4cG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFt
ZSksICIpXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJl
eHBvcnQoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVs
ZSgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CiAgICAg
ICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVj
dDoKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBw
cmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5h
bWUoZW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5t
b2R1bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0
XSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuZXhwb3J0TmFtZSksICIp
LCBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5pbXBvcnROYW1lKSwgIiksIG1v
ZHVsZSgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDgxZGEzOTY2ZThjNWE4ZGE5MzA0
ZDI4MmY0ZmJjYTk0ZjI0ZWFlNDguLjA4NTIxYjRjY2QzYjA0YWFlZTAzYjNiNDQxYTIxYzFmNmQ0
MTk2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzgsOCAr
NzksOCBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVj
dCB7CiAgICAgfTsKIAogICAgIHR5cGVkZWYgV1RGOjpMaXN0SGFzaFNldDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gT3JkZXJlZElkZW50aWZpZXJTZXQ7Ci0g
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
Pj4gSW1wb3J0TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNo
VHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJbXBvcnRFbnRyaWVzOworICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEV4
cG9ydEVudHJpZXM7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCkBAIC0xMDAsMjUgKzEw
MSw0OSBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVj
dCB7CiAgICAgdm9pZCBhZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYpOwogICAgIHZv
aWQgYWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmKTsKIAotICAgIGNvbnN0IEltcG9y
dEVudHJ5JiBsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEltcG9ydEVudHJ5PiB0cnlHZXRJbXBvcnRFbnRy
eShVbmlxdWVkU3RyaW5nSW1wbCogbG9jYWxOYW1lKTsKKyAgICBPcHRpb25hbDxFeHBvcnRFbnRy
eT4gdHJ5R2V0RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpOwogCiAg
ICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
Q29kZTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kdWxlS2V5OyB9CiAgICAgY29uc3QgT3JkZXJlZElkZW50aWZpZXJTZXQmIHJlcXVlc3Rl
ZE1vZHVsZXMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RlZE1vZHVsZXM7IH0KLSAgICBjb25z
dCBFeHBvcnRNYXAmIGV4cG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydEVudHJp
ZXM7IH0KLSAgICBjb25zdCBJbXBvcnRNYXAmIGltcG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVy
biBtX2ltcG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBFeHBvcnRFbnRyaWVzJiBleHBvcnRFbnRy
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgSW1wb3J0
RW50cmllcyYgaW1wb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1faW1wb3J0RW50cmllczsg
fQorICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiBzdGFyRXhwb3J0RW50cmllcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhckV4cG9ydEVudHJpZXM7IH0KIAogICAgIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWNsYXJl
ZFZhcmlhYmxlczsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJp
YWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxWYXJpYWJsZXM7IH0KIAogICAgIHZvaWQg
ZHVtcCgpOwogCisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICByZXR1
cm4gbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsKKyAgICB9CiAKICAgICB2b2lkIGxpbmsoRXhl
Y1N0YXRlKik7CiAgICAgSlNWYWx1ZSBleGVjdXRlKEV4ZWNTdGF0ZSopOwogCiAgICAgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5nZXQoKTsgfQogCisgICAgc3RydWN0IFJlc29s
dXRpb24geworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBSZXNvbHZlZCwgTm90Rm91bmQsIEFt
YmlndW91cywgRXJyb3IgfTsKKworICAgICAgICBzdGF0aWMgUmVzb2x1dGlvbiBub3RGb3VuZCgp
OworICAgICAgICBzdGF0aWMgUmVzb2x1dGlvbiBlcnJvcigpOworICAgICAgICBzdGF0aWMgUmVz
b2x1dGlvbiBhbWJpZ3VvdXMoKTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIEpTTW9k
dWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQ7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxOYW1lOwor
ICAgIH07CisKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgZXhwb3J0TmFtZSk7CisgICAgUmVzb2x1dGlvbiByZXNvbHZlSW1wb3J0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSk7CisKKyAgICBKU01vZHVsZVJl
Y29yZCogaG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVOYW1lKTsKKwogcHJpdmF0ZToKICAgICBKU01vZHVsZVJlY29yZChWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xh
cmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVz
KQogICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKQEAgLTEzNCw3ICsxNTksNyBAQCBjbGFz
cyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKLSAgICBKU01vZHVsZVJlY29yZCogaG9zdFJlc29s
dmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1l
KTsKKyAgICB2b2lkIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSosIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKik7CiAKICAgICAvLyBUaGUgbG9hZGVyIHJlc29sdmVzIHRoZSBnaXZl
biBtb2R1bGUgbmFtZSB0byB0aGUgbW9kdWxlIGtleS4gVGhlIG1vZHVsZSBrZXkgaXMgdGhlIHVu
aXF1ZSB2YWx1ZSB0byByZXByZXNlbnQgdGhpcyBtb2R1bGUuCiAgICAgSWRlbnRpZmllciBtX21v
ZHVsZUtleTsKQEAgLTE0NCw0NiArMTY5LDM3IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fZGVj
bGFyZWRWYXJpYWJsZXM7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJs
ZXM7CiAKKyAgICAvLyBDdXJyZW50bHksIHdlIGRvbid0IGtlZXAgdGhlIG9jY3VycmVuY2Ugb3Jk
ZXIgb2YgdGhlIGltcG9ydCAvIGV4cG9ydCBlbnRyaWVzLgorICAgIC8vIFNvLCB3ZSBkb2VzIG5v
dCBndWFyYW50ZWUgdGhlIG9yZGVyIG9mIHRoZSBlcnJvcnMuCisgICAgLy8gZS5nLiBUaGUgaW1w
b3J0IGRlY2xhcmF0aW9uIHRoYXQgb2NjdXJyIGxhdGVyIHRoYW4gdGhlIGFub3RoZXIgaW1wb3J0
IGRlY2xhcmF0aW9uIG1heQorICAgIC8vICAgICAgdGhyb3cgdGhlIGVycm9yIGV2ZW4gaWYgdGhl
IGZvcm1lciBpbXBvcnQgZGVjbGFyYXRpb24gYWxzbyBoYXMgdGhlIGludmFsaWQgY29udGVudC4K
KyAgICAvLworICAgIC8vICAgICAgaW1wb3J0IC4uLiAvLyAoMSkgdGhpcyBoYXMgc29tZSBpbnZh
bGlkIGNvbnRlbnQuCisgICAgLy8gICAgICBpbXBvcnQgLi4uIC8vICgyKSB0aGlzIGFsc28gaGFz
IHNvbWUgaW52YWxpZCBjb250ZW50LgorICAgIC8vCisgICAgLy8gICAgICBJbiB0aGUgYWJvdmUg
Y2FzZSwgKDIpIG1heSB0aHJvdyB0aGUgZXJyb3IgZWFybGllciB0aGFuICgxKQorICAgIC8vCisg
ICAgLy8gQnV0LCBpbiB0aGUgYWxsIGNhc2VzLCB3ZSB3aWxsIHRocm93IHRoZSBzeW50YXggZXJy
b3IuIFNvIGV4Y2VwdCBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIHN5bnRheCBlcnJvciwKKyAgICAv
LyB0aGVyZSBhcmUgbm8gZGlmZmVyZW5jZS4KKwogICAgIC8vIE1hcCBsb2NhbE5hbWUgLT4gSW1w
b3J0RW50cnkuCi0gICAgSW1wb3J0TWFwIG1faW1wb3J0RW50cmllczsKKyAgICBJbXBvcnRFbnRy
aWVzIG1faW1wb3J0RW50cmllczsKIAogICAgIC8vIE1hcCBleHBvcnROYW1lIC0+IEV4cG9ydEVu
dHJ5LgotICAgIEV4cG9ydE1hcCBtX2V4cG9ydEVudHJpZXM7CisgICAgRXhwb3J0RW50cmllcyBt
X2V4cG9ydEVudHJpZXM7CiAKLSAgICBJZGVudGlmaWVyU2V0IG1fc3RhckV4cG9ydEVudHJpZXM7
CisgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSByZXNvbHZlRXhwb3J0IHJl
cXVpcmVzIGl0LgorICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fc3RhckV4cG9ydEVudHJpZXM7
CiAKICAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHRoZSBtb2R1bGUgbG9h
ZGVyIGxvYWRzIGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMgb3JkZXIuCiAgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2
YWx1YXRpb24KICAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3RlZE1vZHVsZXM7CiAK
LSAgICBXcml0ZUJhcnJpZXI8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVyPEpTTWFwPiBtX2RlcGVuZGVuY2llc01hcDsK
LX07CiAKLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUo
Y29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3JlcXVlc3RlZE1vZHVsZXMu
YWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6
OmFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKLXsKLSAgICBtX2ltcG9y
dEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KTsKLX0KLQotaW5saW5l
IHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5JiBl
bnRyeSkKLXsKLSAgICBtX2V4cG9ydEVudHJpZXMuYWRkKGVudHJ5LmV4cG9ydE5hbWUuaW1wbCgp
LCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0
RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKLXsKLSAgICBtX3N0YXJFeHBvcnRF
bnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSBhdXRvIEpTTW9kdWxl
UmVjb3JkOjpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBsb2NhbE5hbWUpIC0+IGNvbnN0IEltcG9ydEVudHJ5JgotewotICAgIHJldHVybiAoKm1faW1w
b3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOwotfQorICAgIFdyaXRlQmFycmllcjxN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4gbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTsKKyAgICBX
cml0ZUJhcnJpZXI8SlNNb2R1bGVFbnZpcm9ubWVudD4gbV9tb2R1bGVFbnZpcm9ubWVudDsKK307
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCmluZGV4IDEyOGE2MDIyOTU5YzkwN2FkYTdmYzIwNzM0MjZiNzJiNzVlMTllZjIu
LjA4Nzk1M2UwMTY1ODA4Y2FjYTY0ZmE1ZjRlNDBkNTI4MTQ2Yzk1YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50Lmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVj
b3JkLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAKQEAgLTY1LDYgKzY3LDE5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhF
eGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBjb25zdCBJZGVudGlmCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChKU01vZHVsZUVudmlyb25t
ZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVu
dCo+KHNjb3BlKSkgeworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9
IG1vZHVsZUVudmlyb25tZW50LT5tb2R1bGVSZWNvcmQoKTsKKyAgICAgICAgICAgIEpTTW9kdWxl
UmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBtb2R1bGVSZWNvcmQtPnJlc29sdmVJbXBv
cnQoZXhlYywgaWRlbnQpOworICAgICAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01v
ZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAgICAgICAgICAgICAg
ICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRSZWNvcmQgPSByZXNvbHV0aW9uLm1vZHVsZVJlY29y
ZDsKKyAgICAgICAgICAgICAgICBKU01vZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZEVudmlyb25t
ZW50ID0gaW1wb3J0ZWRSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgICAgICAg
ICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGltcG9ydGVkRW52aXJvbm1lbnQtPnN5bWJvbFRh
YmxlKCktPmdldChyZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAg
IEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOworICAgICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9w
KG1ha2VUeXBlKE1vZHVsZVZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwgMCwg
aW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hwb2ludFNldCgpLCBlbnRyeS5zY29wZU9m
ZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAg
aWYgKGxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+dXNlc05vblN0cmljdEV2YWwo
KSkKICAgICAgICAgICAgIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzID0gdHJ1ZTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggMjhlMGJhZGFhNzJhZjMwY2M3NzE5MTk2MDRhNjEy
ZDZjZGI3M2UwNy4uNmU2ZjlmOWE2ZGE2MTgxMmUzYzIxYWQ0MzY2ZmQ4N2I3Y2QxNDdkOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2UuaCIK
ICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNNYXAu
aCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVS
ZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgogI2luY2x1ZGUgIk5vZGVzLmgi
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260527</attachid>
            <date>2015-09-03 14:51:28 -0700</date>
            <delta_ts>2015-09-03 16:21:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150903145127.patch</filename>
            <type>text/plain</type>
            <size>109952</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NmM4NDdhN2IwMjhjNWJlMjgzYjE5ZjQ5ZDE3MjY3NTcwMTY0MjlkLi41ZWIzZDhiNWIxOWJkNmU3
YjgxODU3OTIzODNlZmE3ZjJjMjQxNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTIgQEAKKzIwMTUtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29s
dmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZXhw
b3J0VmFyaWFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93U3ludGF4RXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xl
YXJDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0dldFB1dEluZm8uaDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZVR5cGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6bWFrZVR5cGUpOgorICAgICAgICAoSlNDOjpuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OlJlc29sdmVPcDo6UmVzb2x2ZU9wKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oLgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpv
ZmZzZXRPZk1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9k
dWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVj
b3JkU2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52
aXJvbm1lbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OmFkZEltcG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFk
ZEV4cG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkp
OgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpSZXNvbHZl
UXVlcnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwp
OgorICAgICAgICAoSlNDOjpyZXNvbHZlRXhwb3J0TG9vcCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRp
YXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZHVtcCk6CisgICAgICAgICogcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhwb3J0
RW50cmllcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbXBvcnRFbnRyaWVzKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnN0YXJFeHBvcnRFbnRyaWVzKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNj
ZXNzKToKKyAgICAgICAgKiBydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHA6CisKIDIwMTUt
MDktMDMgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQmxvY2sg
c2NvcGVkIHZhcmlhYmxlcyBzaG91bGQgYmUgdmlzaWJsZSBhY3Jvc3Mgc2NyaXB0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDJkMzBiYjkxNzU1NzI0NDM0NjM0ZGExN2Yz
MmQ5NmE4NmUwZGNlNzQuLjQ3ZTA4MzM2ODkzM2U2NjMzYzJmY2FjOTM1ZmE0NTY2NzU1ZjJhN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUzOCw2ICs1MzgsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0xvY2suY3Bw
CiAgICAgcnVudGltZS9KU01hcC5jcHAKICAgICBydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCisg
ICAgcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAogICAgIHJ1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRp
bWUvSlNOb3RBbk9iamVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CmluZGV4IDQyY2M1ZjVhODkyZDM1ODAxMTY5NzRkMmJjMWI1ZmUzYjVmMTMxN2MuLjEwNDVmYjA5
MTI4NTk3MjVlYjVkZTkwN2E0ZDA4NDRmZjYxZGI5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagpAQCAtNzg3LDYgKzc4Nyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTG9jay5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTWFwLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNNYXBJdGVyYXRvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNwcCIgLz4KQEAgLTE2NDMsNiArMTY0
NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTG9jay5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcEl0ZXJhdG9yLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRpdmVTdGRGdW5jdGlvbi5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmgiIC8+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
NWRhNGZlMzQ5MzQ3MzliYjA2YWUwNzQ4ZTNmOTgyYzU5YzI2NGU5Ny4uY2Y5YzRkYTZiM2IyOGMx
OTFjZGNlYzZmNzg2M2Y2MmJiMzVlNDUzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNzI5LDYgKzcyOSw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTM1MTQsNiArMzUxNyw5IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNb2R1bGVSZWNvcmQuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjFmZDNiNWI5ZmNm
MmFkODY5MTUxMThjNDk4ZWQ0N2Y3NjUxNmI0NS4uNDI1NzJkYmNiMDQ1Mzc1MTI5OWE0OTAyN2U2
NTg2Nzk5NzFmODBhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MjksNiAr
MTcyOSw4IEBACiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CiAJ
CUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
RDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKKwkJRTNEMjM5QzkxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
ICovOyB9OwogCQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNF
Rjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYy
OTNFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyog
U291cmNlUHJvdmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0zNTkzLDYgKzM1OTUsOCBAQAogCQlF
Mzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1
MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjM5QzcxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAw
M0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJD
YWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3ODYsNiArNDc5MCw4
IEBACiAJCQkJQTcwMDg3NDAxN0NCRThFQjAwQzNFNjQzIC8qIEpTTWFwLmggKi8sCiAJCQkJQTc0
REVGOEYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuY3BwICovLAogCQkJCUE3NERF
RjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCisJCQkJRTNEMjM5QzYx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAorCQkJCUUzRDIz
OUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCiAJCQkJRTM5
REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLywKIAkJCQlFMzlE
QTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLywKIAkJCQlFMzNFOEQx
QTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAgKi8sCkBAIC02MTUw
LDYgKzYxNTYsNyBAQAogCQkJCTBGMkI5Q0U5MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdPYmplY3RN
YXRlcmlhbGl6YXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q5QTI5ODE3QTBCQzc0
MDBFRTI2MTggLyogREZHTElDTVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUNGQzE3
QTBCOENDMDA3NzNBRDggLyogREZHTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFM0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMEYxOUIxNkI3MjlGQTAwNURGOTVCIC8qIERGR0xvbmdM
aXZlZFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDlGQjg2ODFBRTMzNUM2MDAzOUQwNjkg
LyogSlNXZWFrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5
NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLApAQCAt
NzM5OCw2ICs3NDA1LDcgQEAKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFi
bGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCNTgyNjkxNEQyNzk3
MDAwQTlDMzA2IC8qIENvZGVQcm9maWxpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0
M0MxNjY3NjMxMzAwRDYxOTcxIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4Rjk0NDIxNjY3NjMzNTAwRDYxOTcxIC8qIENv
ZGVUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUMxMTA3RUMzNzYwMDQyN0E0OCAv
KiBDb21tb25JZGVudGlmaWVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlDNUU1RTE4RTM1
RjVFMDBENDMxQzMgLyogRlRMRFdBUkZSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZjEyMDQ2Y2E3
YTAyZjQ3N2EzNjU1YzA0OTNjOTI2ZWEwZjJmOTBkYy4uNjM0NTAzZWVmOTJiYjg5ZWJjY2VmY2Uz
YjBhZDJjMDNlYzMzZmQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50Lmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlw
b2ludC5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCkBAIC0xNzg2LDYgKzE3ODcsMTcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4K
ICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUgY2xvbmVkIHN5
bWJvbCB0YWJsZSBmb3IgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBzaW5jZSB3ZSBuZWVkIHRvIGlu
c3RhbnRpYXRlCisgICAgLy8gdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMgYmVmb3JlIGxpbmtpbmcg
dGhlIGNvZGUgYmxvY2suIFdlIHJlcGxhY2UgdGhlIHN0b3JlZCBzeW1ib2wgdGFibGUgd2l0aCB0
aGUgYWxyZWFkeSBjbG9uZWQgb25lLgorICAgIGlmIChVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA9IGpzRHluYW1pY0Nhc3Q8VW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4odW5saW5rZWRDb2RlQmxvY2spKSB7CisgICAg
ICAgIFN5bWJvbFRhYmxlKiBjbG9uZWRTeW1ib2xUYWJsZSA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSktPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFi
bGUoKTsKKyAgICAgICAgaWYgKG1fdm0tPnR5cGVQcm9maWxlcigpKSB7CisgICAgICAgICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjbG9uZWRTeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAg
ICAgICAgICAgIGNsb25lZFN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2Nr
ZXIpOworICAgICAgICB9CisgICAgICAgIG1fY29uc3RhbnRSZWdpc3RlcnNbdW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrLT5tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRS
ZWdpc3Rlck9mZnNldCgpIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLnNldCgqbV92bSwg
b3duZXJFeGVjdXRhYmxlLCBjbG9uZWRTeW1ib2xUYWJsZSk7CisgICAgfQorCiAgICAgbV9mdW5j
dGlvbkRlY2xzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKSk7CiAgICAgZm9yIChzaXplX3QgY291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVt
YmVyT2ZGdW5jdGlvbkRlY2xzKCksIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gdW5saW5rZWRD
b2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKQEAgLTE4NjQsNiArMTg3Niw5IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGluCiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IHVubGlua2Vk
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5jb3VudCgpOwogICAgIFVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW06OlJlYWRlciBpbnN0cnVjdGlvblJlYWRlcih1bmxpbmtlZENvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkpOwogCisgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQg
bW9kdWxlIGVudmlyb25tZW50cy4KKyAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBz
dHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CisKICAgICBWZWN0b3I8SW5zdHJ1
Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25D
b3VudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRF
bmQoKTsgKSB7CkBAIC0xOTczLDkgKzE5ODgsMTUgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4K
ICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2ds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBsb2NhbFNjb3BlRGVwdGgsIHNjb3BlLCBpZGVudCwg
R2V0LCB0eXBlLCBOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNb
aSArIDRdLnUub3BlcmFuZCA9IG9wLnR5cGU7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IDVdLnUub3BlcmFuZCA9IG9wLmRlcHRoOwotICAgICAgICAgICAgaWYgKG9wLmxleGljYWxFbnZp
cm9ubWVudCkKLSAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUuc3ltYm9sVGFi
bGUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3lt
Ym9sVGFibGUoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChKU1Njb3BlKiBjb25zdGFudFNjb3Bl
ID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhvcC50eXBlLCB0aGlzKSkKKyAg
ICAgICAgICAgIGlmIChvcC5sZXhpY2FsRW52aXJvbm1lbnQpIHsKKyAgICAgICAgICAgICAgICBp
ZiAob3AudHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gS2VlcCB0
aGUgbGlua2VkIG1vZHVsZSBlbnZpcm9ubWVudCBzdHJvbmdseSByZWZlcmVuY2VkLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzLmFk
ZChqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KG9wLmxleGljYWxFbnZpcm9ubWVudCkpLmlz
TmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb25zdGFudChvcC5sZXhpY2Fs
RW52aXJvbm1lbnQpOworICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZdLnUu
anNDZWxsLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1lbnQp
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDZdLnUuc3ltYm9sVGFibGUuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIG9wLmxl
eGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBKU1Njb3BlOjpjb25zdGFudFNjb3BlRm9yQ29kZUJs
b2NrKG9wLnR5cGUsIHRoaXMpKQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0u
dS5qc0NlbGwuc2V0KCp2bSgpLCBvd25lckV4ZWN1dGFibGUsIGNvbnN0YW50U2NvcGUpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNl0udS5wb2lu
dGVyID0gbnVsbHB0cjsKQEAgLTIwMDQsNiArMjAyNSw4IEBAIENvZGVCbG9jazo6Q29kZUJsb2Nr
KFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGluCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUo
bV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwgaWRl
bnQsIEdldCwgZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBOb3RJbml0aWFsaXphdGlvbik7CiAK
ICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNF0udS5vcGVyYW5kID0gR2V0UHV0SW5mbyhn
ZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG9wLnR5cGUsIGdldFB1dEluZm8uaW5pdGlhbGl6YXRp
b25Nb2RlKCkpLm9wZXJhbmQoKTsKKyAgICAgICAgICAgIGlmIChvcC50eXBlID09IE1vZHVsZVZh
cikKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IEdldFB1
dEluZm8oZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBDbG9zdXJlVmFyLCBnZXRQdXRJbmZvLmlu
aXRpYWxpemF0aW9uTW9kZSgpKS5vcGVyYW5kKCk7CiAgICAgICAgICAgICBpZiAob3AudHlwZSA9
PSBHbG9iYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
IHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IEdsb2JhbExleGlj
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgNV0udS53YXRjaHBvaW50U2V0ID0gb3Aud2F0Y2hwb2ludFNldDsKICAgICAgICAgICAg
IGVsc2UgaWYgKG9wLnN0cnVjdHVyZSkKQEAgLTIwNzEsMTcgKzIwOTQsMTggQEAgQ29kZUJsb2Nr
OjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW4KICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBhYnN0cmFjdGx5ICJyZWFk
ImluZyBmcm9tIGEgSlNTY29wZS4KICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Nj
b3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxT
Y29wZURlcHRoLCBzY29wZSwgaWRlbnQsIEdldCwgdHlwZSwgTm90SW5pdGlhbGl6YXRpb24pOwog
Ci0gICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhcikKKyAgICAgICAgICAg
ICAgICBpZiAob3AudHlwZSA9PSBDbG9zdXJlVmFyIHx8IG9wLnR5cGUgPT0gTW9kdWxlVmFyKQog
ICAgICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZSA9IG9wLmxleGljYWxFbnZpcm9ubWVudC0+
c3ltYm9sVGFibGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC50eXBlID09IEdsb2Jh
bFZhcikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBtX2dsb2JhbE9iamVjdC5n
ZXQoKS0+c3ltYm9sVGFibGUoKTsKLSAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsID0gKG9wLnR5cGUgPT0gTW9kdWxlVmFyKSA/IG9wLmlt
cG9ydGVkTmFtZS5nZXQoKSA6IGlkZW50LmltcGwoKTsKICAgICAgICAgICAgICAgICBpZiAoc3lt
Ym9sVGFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIG91ciBw
YXJlbnQgc2NvcGUgd2FzIGNyZWF0ZWQgd2hpbGUgcHJvZmlsaW5nIHdhcyBkaXNhYmxlZCwgaXQg
d2lsbCBub3QgaGF2ZSBwcmVwYXJlZCBmb3IgcHJvZmlsaW5nIHlldC4KICAgICAgICAgICAgICAg
ICAgICAgc3ltYm9sVGFibGUtPnByZXBhcmVGb3JUeXBlUHJvZmlsaW5nKGxvY2tlcik7Ci0gICAg
ICAgICAgICAgICAgICAgIGdsb2JhbFZhcmlhYmxlSUQgPSBzeW1ib2xUYWJsZS0+dW5pcXVlSURG
b3JWYXJpYWJsZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZtKCkpOwotICAgICAgICAgICAgICAg
ICAgICBnbG9iYWxUeXBlU2V0ID0gc3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJs
ZShsb2NrZXIsIGlkZW50LmltcGwoKSwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9i
YWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVuaXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBp
bXBsLCAqdm0oKSk7CisgICAgICAgICAgICAgICAgICAgIGdsb2JhbFR5cGVTZXQgPSBzeW1ib2xU
YWJsZS0+Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGxvY2tlciwgaW1wbCwgKnZtKCkpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlE
ID0gVHlwZVByb2ZpbGVyTm9HbG9iYWxJREV4aXN0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGVlYWZkNTBhMWVmYmQ0YmRlN2ZiY2RkMGJiNWU4
MTI2NWU1NDUzYTAuLjkxZTU0OGM5M2ZhMjBiMmRhNTY3NmM4YjM3ZDljZTkxNGUyOWIwZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTgyLDYgKzgy
LDcgQEAgY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xh
c3MgUmVwYXRjaEJ1ZmZlcjsKIGNsYXNzIFR5cGVMb2NhdGlvbjsKK2NsYXNzIEpTTW9kdWxlRW52
aXJvbm1lbnQ7CiAKIGVudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6
YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMmZlMWJiODdmZjI3
NjRjNmVhZTJiMzZmNDJhMTY3OGIyODY3MjZkNi4uYzExNGI5YjU3ZDE0NGQxNjVlYTQxZGFkOGYy
YTY4ZWU4ZmE4YjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yOTcsNyArMjk3LDYgQEAgdm9pZCBVbmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmkKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKj4oY2VsbCk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7CiB9CiAKIFVubGlu
a2VkQ29kZUJsb2NrOjp+VW5saW5rZWRDb2RlQmxvY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBmNzQ5YmIwOWNiOTk0
NDk2MjFlNjhjOThlYjVjNTIyYmY2ZThjNzBkLi5mYTUxNGMxNTZhN2NiN2NlZjc0YTlmMTAwMDE2
NWI4NjFmMGY4M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlBhcnNlck1v
ZGVzLmgiCiAjaW5jbHVkZSAiUmVnRXhwLmgiCiAjaW5jbHVkZSAiU3BlY2lhbFBvaW50ZXIuaCIK
LSNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgIlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlZp
cnR1YWxSZWdpc3Rlci5oIgpAQCAtNTUsNyArNTQsNiBAQCBjbGFzcyBQYXJzZXJFcnJvcjsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGFibGU7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgU291cmNlUHJv
dmlkZXI7Ci1jbGFzcyBTeW1ib2xUYWJsZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xh
c3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOwpAQCAtNTMxLDI5ICs1MjksMzUgQEAgY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2VkR2xvYmFsQ29kZUJsb2NrIHsKIAogICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAg
IC8vIFRoaXMgc3ltYm9sIHRhYmxlIHJlcHJlc2VudHMgdGhlIGxheW91dCBvZiB0aGUgbW9kdWxl
IGVudmlyb25tZW50LiBUaGlzIHN5bWJvbCB0YWJsZSB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBi
eXRlCi0gICAgLy8gY29kZSBnZW5lcmF0b3Igc2luY2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBp
bmNsdWRlcyB0aGUgdG9wLW1vc3QgbGV4aWNhbCBjYXB0dXJlZCB2YXJpYWJsZXMgaW5zaWRlIHRo
ZSBtb2R1bGUgY29kZS4KLSAgICAvLyBUaGlzIG1lYW5zIHRoYXQsIG9uY2UgdGhlIG1vZHVsZSBl
bnZpcm9ubWVudCBpcyBhbGxvY2F0ZWQgYW5kIGluc3RhbnRpYXRlZCBmcm9tIHRoaXMgc3ltYm9s
IHRhYmxlLCBpdCBpcyB0aXRlbHkKLSAgICAvLyBjb3VwbGVkIHdpdGggdGhlIHNwZWNpZmljIHVu
bGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgYW5kIHRoZSBzeW1ib2wgdGFibGUuIFNv
IGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZQotICAgIC8vIGNvZGUsIHdlIHNob3VsZCBub3Qg
Y2xlYXIgdGhlIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgaW4gdGhlIG1vZHVs
ZSBleGVjdXRhYmxlLiBUaGlzIHJlcXVpcmVtZW50IGlzIG1ldAotICAgIC8vIGJlY2F1c2UgdGhl
IGdhcmJhZ2UgY29sbGVjdG9yIG9ubHkgY2xlYXJzIHVubGlua2VkIGNvZGUgaW4gKDEpIHVubWFy
a2VkIGV4ZWN1dGFibGVzIGFuZCAoMikgZnVuY3Rpb24gZXhlY3V0YWJsZXMuCisgICAgLy8gVGhp
cyBvZmZzZXQgcmVwcmVzZW50cyB0aGUgY29uc3RhbnQgcmVnaXN0ZXIgb2Zmc2V0IHRvIHRoZSBz
dG9yZWQgc3ltYm9sIHRhYmxlIHRoYXQgcmVwcmVzZW50cyB0aGUgbGF5b3V0IG9mIHRoZQorICAg
IC8vIG1vZHVsZSBlbnZpcm9ubWVudC4gVGhpcyBzeW1ib2wgdGFibGUgaXMgY3JlYXRlZCBieSB0
aGUgYnl0ZSBjb2RlIGdlbmVyYXRvciBzaW5jZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IGluY2x1
ZGVzCisgICAgLy8gdGhlIHRvcC1tb3N0IGxleGljYWwgY2FwdHVyZWQgdmFyaWFibGVzIGluc2lk
ZSB0aGUgbW9kdWxlIGNvZGUuIFRoaXMgbWVhbnMgdGhhdCwgb25jZSB0aGUgbW9kdWxlIGVudmly
b25tZW50IGlzCisgICAgLy8gYWxsb2NhdGVkIGFuZCBpbnN0YW50aWF0ZWQgZnJvbSB0aGlzIHN5
bWJvbCB0YWJsZSwgaXQgaXMgdGl0ZWx5IGNvdXBsZWQgd2l0aCB0aGUgc3BlY2lmaWMgdW5saW5r
ZWQgbW9kdWxlIHByb2dyYW0KKyAgICAvLyBjb2RlIGJsb2NrIGFuZCB0aGUgc3RvcmVkIHN5bWJv
bCB0YWJsZS4gU28gYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlIGNvZGUsIHdlIHNob3VsZCBu
b3QgY2xlYXIgdGhlIHVubGlua2VkIG1vZHVsZQorICAgIC8vIHByb2dyYW0gY29kZSBibG9jayBp
biB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuIFRoaXMgcmVxdWlyZW1lbnQgaXMgbWV0IGJlY2F1c2Ug
dGhlIGdhcmJhZ2UgY29sbGVjdG9yIG9ubHkgY2xlYXJzCisgICAgLy8gdW5saW5rZWQgY29kZSBp
biAoMSkgdW5tYXJrZWQgZXhlY3V0YWJsZXMgYW5kICgyKSBmdW5jdGlvbiBleGVjdXRhYmxlcy4K
ICAgICAvLwogICAgIC8vIFNpbmNlIHRoZSBmdW5jdGlvbiBjb2RlIG1heSBiZSBleGVjdXRlZCBy
ZXBlYXRlZGx5IGFuZCB0aGUgZW52aXJvbm1lbnQgb2YgZWFjaCBmdW5jdGlvbiBleGVjdXRpb24g
aXMgZGlmZmVyZW50LAogICAgIC8vIHRoZSBmdW5jdGlvbiBjb2RlIG5lZWQgdG8gYWxsb2NhdGUg
YW5kIGluc3RhbnRpYXRlIHRoZSBlbnZpcm9ubWVudCBpbiB0aGUgcHJvbG9ndWUgb2YgdGhlIGZ1
bmN0aW9uIGNvZGUuIE9uIHRoZQogICAgIC8vIG90aGVyIGhhbmQsIHRoZSBtb2R1bGUgY29kZSBp
cyBleGVjdXRlZCBvbmx5IG9uY2UuIFNvIHdlIGNhbiBpbnN0YW50aWF0ZSB0aGUgbW9kdWxlIGVu
dmlyb25tZW50IG91dHNpZGUgdGhlIG1vZHVsZQotICAgIC8vIGNvZGUuIEF0IHRoYXQgdGltZSwg
d2UgY29uc3RydWN0IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgYnkgdXNpbmcgdGhpcyBzeW1ib2wg
dGFibGUgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbW9kdWxlIGNvZGUuCi0gICAgLy8gSW5zdGFudGlh
dGluZyB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBj
b2RlIGlzIHJlcXVpcmVkIHRvIGxpbmsgdGhlIGltcG9ydGVkIGJpbmRpbmdzCi0gICAgLy8gYmV0
d2VlbiB0aGUgbW9kdWxlcy4KKyAgICAvLyBjb2RlLiBBdCB0aGF0IHRpbWUsIHdlIGNvbnN0cnVj
dCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoZSBzeW1ib2wgdGFibGUgdGhhdCBp
cyBoZWxkIGJ5IHRoZSBtb2R1bGUgZXhlY3V0YWJsZS4KKyAgICAvLyBUaGUgc3ltYm9sIHRhYmxl
IGhlbGQgYnkgdGhlIGV4ZWN1dGFibGUgaXMgdGhlIGNsb25lZCBvbmUgZnJvbSBvbmUgaW4gdGhl
IHVubGlua2VkIGNvZGUgYmxvY2suIEluc3RhbnRpYXRpbmcgdGhlIG1vZHVsZQorICAgIC8vIGVu
dmlyb25tZW50IGJlZm9yZSBleGVjdXRpbmcgYW5kIGxpbmtpbmcgdGhlIG1vZHVsZSBjb2RlIGlz
IHJlcXVpcmVkIHRvIGxpbmsgdGhlIGltcG9ydGVkIGJpbmRpbmdzIGJldHdlZW4gdGhlIG1vZHVs
ZXMuCiAgICAgLy8KLSAgICAvLyBUaGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9j
ayBvbmx5IGhvbGRzIHRoZSBzeW1ib2wgdGFibGUuIEl0IGRvZXMgbm90IGhvbGQgdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudC4gU28gd2hpbGUKLSAgICAvLyB0aGUgbW9kdWxlIGVudmlyb25tZW50IHJl
cXVpcmVzIHRoZSBzcGVjaWZpYyB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrLCB0
aGUgdW5saW5rZWQgbW9kdWxlIGNvZGUgYmxvY2sKLSAgICAvLyBjYW4gYmUgdXNlZCBmb3IgdGhl
IG1vZHVsZSBlbnZpcm9ubWVudCBpbnN0YW50aWF0ZWQgZnJvbSB0aGlzIHVubGlua2VkIGNvZGUg
YmxvY2suIFRoZXJlIGlzIDE6TiByZWxhdGlvbiBiZXR3ZWVuCi0gICAgLy8gdGhlIHVubGlua2Vk
IG1vZHVsZSBjb2RlIGJsb2NrIGFuZCB0aGUgbW9kdWxlIGVudmlyb25tZW50cy4gU28gdGhlIHVu
bGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZC4KKyAgICAvLyBU
aGUgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBibG9jayBvbmx5IGhvbGRzIHRoZSBwcmUt
Y2xvbmVkIHN5bWJvbCB0YWJsZSBpbiBpdHMgY29uc3RhbnQgcmVnaXN0ZXIgcG9vbC4gSXQgZG9l
cworICAgIC8vIG5vdCBob2xkIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlIGVudmlyb25tZW50LiBT
byB3aGlsZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IHJlcXVpcmVzIHRoZSBzcGVjaWZpYyB1bmxp
bmtlZCBtb2R1bGUKKyAgICAvLyBwcm9ncmFtIGNvZGUgYmxvY2ssIHRoZSB1bmxpbmtlZCBtb2R1
bGUgY29kZSBibG9jayBjYW4gYmUgdXNlZCBmb3IgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBpbnN0
YW50aWF0ZWQgZnJvbSB0aGlzCisgICAgLy8gdW5saW5rZWQgY29kZSBibG9jay4gVGhlcmUgaXMg
MTpOIHJlbGF0aW9uIGJldHdlZW4gdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrIGFuZCB0
aGUgbW9kdWxlIGVudmlyb25tZW50cy4gU28gdGhlCisgICAgLy8gdW5saW5rZWQgbW9kdWxlIHBy
b2dyYW0gY29kZSBibG9jayBjYW4gYmUgY2FjaGVkLgogICAgIC8vCiAgICAgLy8gT24gdGhlIG90
aGVyIGhhbmQsIHRoZSBsaW5rZWQgY29kZSBibG9jayBmb3IgdGhlIG1vZHVsZSBlbnZpcm9ubWVu
dCBpbmNsdWRlcyB0aGUgcmVzb2x2ZWQgcmVmZXJlbmNlcyB0byB0aGUgaW1wb3J0ZWQKICAgICAv
LyBiaW5kaW5ncy4gVGhlIGltcG9ydGVkIGJpbmRpbmcgcmVmZXJlbmNlcyB0aGUgb3RoZXIgbW9k
dWxlIGVudmlyb25tZW50LCBzbyB0aGUgbGlua2VkIGNvZGUgYmxvY2sgaXMgdGl0bHkgY291cGxl
ZAogICAgIC8vIHdpdGggdGhlIHNwZWNpZmljIHNldCBvZiB0aGUgbW9kdWxlIGVudmlyb25tZW50
cy4gVGh1cywgdGhlIGxpbmtlZCBjb2RlIGJsb2NrIHNob3VsZCBub3QgYmUgY2FjaGVkLgotICAg
IFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9t
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CisgICAgaW50IG1vZHVsZUVudmly
b25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9tb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldDsgfQorICAgIHZv
aWQgc2V0TW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQo
aW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJs
ZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgPSBvZmZzZXQ7CisgICAgfQogCiBwcml2YXRlOgogICAg
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYgaW5mbykKQEAgLTU2MSwxMyArNTY1LDcgQEAgY2xh
c3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrIGZpbmFsIDogcHVibGljIFVubGlua2Vk
R2xvYmFsQ29kZUJsb2NrIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYgdm0pCi0gICAgewotICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAg
ICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIFN5bWJvbFRh
YmxlOjpjcmVhdGUodm0pKTsKLSAgICB9Ci0KLSAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+
IG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9tb2R1bGVFbnZpcm9u
bWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCB7IDAgfTsKIAogcHVibGljOgog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDUw
ODlmNTY2MTQ2YjkzNzViZGNkMDk3YWUwZGE3NmFlYjY0MjM2YjMuLjllMjViZTFkZmViYzg4MmFk
MmEwMjRmMzExNGQwMmYyYTM3ZTBiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC01MzYsOSArNTM2
LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxl
UHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICBpZiAobV9pc0J1aWx0aW5GdW5jdGlv
bikKICAgICAgICAgbV9zaG91bGRFbWl0RGVidWdIb29rcyA9IGZhbHNlOwogCi0gICAgLy8gVXNl
IHRoZSBzeW1ib2wgdGFibGUgYWxsb2NhdGVkIGluIHRoZSB1bmxpbmtlZCBjb2RlIGJsb2NrLiBU
aGlzIHN5bWJvbCB0YWJsZQotICAgIC8vIHdpbGwgYmUgdXNlZCB0byBhbGxvY2F0ZSBhbmQgaW5z
dGFudGlhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudC4KLSAgICBTeW1ib2xUYWJsZSogbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZSA9IGNvZGVCbG9jay0+bW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZSgpOworICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxl
ID0gU3ltYm9sVGFibGU6OmNyZWF0ZSgqbV92bSk7CiAgICAgbW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZS0+c2V0VXNlc05vblN0cmljdEV2YWwobV91c2VzTm9uU3RyaWN0RXZhbCk7CiAgICAg
bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+c2V0U2NvcGVUeXBlKFN5bWJvbFRhYmxlOjpT
Y29wZVR5cGU6OkxleGljYWxTY29wZSk7CiAKQEAgLTU5Miw2ICs1OTAsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9k
dWxlUHJvZ3JhbU5vZAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMg
PSBtb2R1bGVQcm9ncmFtTm9kZS0+bGV4aWNhbFZhcmlhYmxlcygpOwogICAgIGluc3RhbnRpYXRl
TGV4aWNhbFZhcmlhYmxlcyhsZXhpY2FsVmFyaWFibGVzLCBtb2R1bGVFbnZpcm9ubWVudFN5bWJv
bFRhYmxlLCBTY29wZVJlZ2lzdGVyVHlwZTo6QmxvY2ssIGxvb2tVcFZhcktpbmQpOwogCisgICAg
Ly8gV2Uga2VlcCB0aGUgc3ltYm9sIHRhYmxlIGluIHRoZSBjb25zdGFudCBwb29sLgogICAgIFJl
Z2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGUgPSBudWxscHRyOwogICAgIGlmICh2bS50eXBl
UHJvZmlsZXIoKSkKICAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFs
dWUobW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7CkBAIC02NTYsNiArNjU1LDExIEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1O
b2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgICAgICAgICBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6
ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUp
KTsKICAgICAgICAgfQogICAgIH0KKworICAgIC8vIFJlbWVtYmVyIHRoZSBjb25zdGFudCByZWdp
c3RlciBvZmZzZXQgdG8gdGhlIHRvcC1tb3N0IHN5bWJvbCB0YWJsZS4gVGhpcyBzeW1ib2wgdGFi
bGUgd2lsbCBiZQorICAgIC8vIGNsb25lZCBpbiB0aGUgY29kZSBibG9jayBsaW5raW5nLiBBZnRl
ciB0aGF0LCB0byBjcmVhdGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCwgd2UgcmV0cmlldmUKKyAg
ICAvLyB0aGUgY2xvbmVkIHN5bWJvbCB0YWJsZSBmcm9tIHRoZSBsaW5rZWQgY29kZSBibG9jayBi
eSB1c2luZyB0aGlzIG9mZnNldC4KKyAgICBjb2RlQmxvY2stPnNldE1vZHVsZUVudmlyb25tZW50
U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0KGNvbnN0YW50U3ltYm9sVGFibGUtPmlu
ZGV4KCkpOwogfQogCiBCeXRlY29kZUdlbmVyYXRvcjo6fkJ5dGVjb2RlR2VuZXJhdG9yKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
MmI4OWUzYWIwMDg3ZjcyMTE1MDRlOTEyY2JmZTExNTY4YzlhZjM3MS4uNzg2YjkyMTZjMDVkZmIx
Mzc3ZTk0MDg0YmQzYmY5NGY2YjJkNDkzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIlBy
ZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRl
ICJTdGFja0FsaWdubWVudC5oIgpAQCAtMzgzOSw2ICszODQwLDE0IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChQaGFudG9tLCBnZXQoVmlydHVhbFJlZ2lzdGVyKHNjb3BlKSkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6IHsK
KyAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGUgdmFsdWUgb2YgdGhlICJzY29wZSIgdmlydHVh
bCByZWdpc3RlciBpcyBub3QgdXNlZCBpbiBMTEludCAvIGJhc2VsaW5lIG9wX3Jlc29sdmVfc2Nv
cGUgd2l0aCBNb2R1bGVWYXIsCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCBub3QgdG8ga2Vl
cCBpdCBhbGl2ZSBieSB0aGUgUGhhbnRvbSBub2RlLgorICAgICAgICAgICAgICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1l
bnQqPihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIC8vIE1vZHVsZSBlbnZpcm9ubWVudCBpcyBhbHJlYWR5IHN0cm9uZ2x5IHJlZmVyZW5jZWQg
YnkgdGhlIENvZGVCbG9jay4KKyAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRz
dCksIHdlYWtKU0NvbnN0YW50KG1vZHVsZUVudmlyb25tZW50KSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoK
ICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZhcjoKICAgICAgICAgICAgIGNhc2UgQ2xvc3VyZVZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKQEAgLTQwMzQsNiArNDA0Myw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3Rlcihkc3QpLCBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyht
X2NvbnN0YW50VW5kZWZpbmVkKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgICAgICAgICBjYXNlIER5bmFt
aWM6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTQxMjgsNiArNDEzOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjYXNlIFVucmVz
b2x2ZWRQcm9wZXJ0eToKICAgICAgICAgICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrczogewogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JF
eGl0KTsKQEAgLTQxMzUsNiArNDE0NiwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwg
c2NvcGVOb2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgICAgICAgICAgLy8gTmVlZCBub3QgdG8g
a2VlcCAic2NvcGUiIGFuZCAidmFsdWUiIHJlZ2lzdGVyIHZhbHVlcyBoZXJlIGJ5IFBoYW50b20g
YmVjYXVzZQorICAgICAgICAgICAgICAgIC8vIHRoZXkgYXJlIG5vdCB1c2VkIGluIExMSW50IC8g
YmFzZWxpbmUgb3BfcHV0X3RvX3Njb3BlIHdpdGggTW9kdWxlVmFyLgorICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAxZjk5ZTJjNzJlMDAw
NTc4Y2ZkMWQ4MTE0ZjdjZTg0ZGE0ZDYzZjdkLi40YjBmMTJjMzkyYTE1N2IzZjI1NTk3MzkwY2U0
ODAyNTBmM2M3NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJKU0JvdW5kRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52
aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKQEAgLTEyMTUsNiArMTIxNiw1NCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZQogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKK0pTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU01vZHVsZUVudmlyb25tZW50KiBzY29wZSkKK3sKKyAgICBWTSYg
dm0gPSAqc2NvcGUtPnZtKCk7CisgICAgU2FtcGxpbmdTY29wZSBzYW1wbGluZ1Njb3BlKHRoaXMp
OworCisgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOworICAgIEFT
U0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
OworICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OworCisgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3Qo
KSk7CisgICAgaWYgKCF2bS5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisKKyAgICBKU09i
amVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxs
RnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKFVOTElLRUxZKCEh
Y29tcGlsZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52
bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayogY29kZUJsb2NrID0gZXhlY3V0YWJsZS0+Y29kZUJsb2NrKCk7CisK
KyAgICBpZiAoVU5MSUtFTFkodm0ud2F0Y2hkb2cgJiYgdm0ud2F0Y2hkb2ctPmRpZEZpcmUoY2Fs
bEZyYW1lKSkpCisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRp
b24oY2FsbEZyYW1lKTsKKworICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9
PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKworICAgIC8vIFRoZSB8dGhpc3wgb2Yg
dGhlIG1vZHVsZSBpcyBhbHdheXMgYHVuZGVmaW5lZGAuCisgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1y
ZWNvcmRzLWhhc3RoaXNiaW5kaW5nCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRo
aXNiaW5kaW5nCisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9D
YWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIEpTQ2FsbGVlOjpjcmVhdGUodm0sIHNjb3BlLT5nbG9i
YWxPYmplY3QoKSwgc2NvcGUpLCBqc1VuZGVmaW5lZCgpLCAxKTsKKworICAgIGlmIChMZWdhY3lQ
cm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmls
ZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1
dGFibGUtPmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIC8v
IEV4ZWN1dGUgdGhlIGNvZGU6CisgICAgSlNWYWx1ZSByZXN1bHQ7CisgICAgeworICAgICAgICBT
YW1wbGluZ1Rvb2w6OkNhbGxSZWNvcmQgY2FsbFJlY29yZChtX3NhbXBsZXIuZ2V0KCkpOworICAg
ICAgICByZXN1bHQgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZt
LCAmcHJvdG9DYWxsRnJhbWUpOworICAgIH0KKworICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJv
ZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKKyAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1
dGUoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2VVUkwoKSwgZXhlY3V0YWJsZS0+Zmlyc3RM
aW5lKCksIGV4ZWN1dGFibGUtPnN0YXJ0Q29sdW1uKCkpOworCisgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4ocmVzdWx0KTsKK30KKwogTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVn
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCkKIHsKICAgICBE
ZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVi
dWdnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKaW5kZXggMDM4YmNhNWNmYzc1YjliMjQ1NzYyZDZlNjRmNjhmMmU3OGVjNjI1MS4uNGZl
ZmFhNmNmOGUzMWFmMmQzNTlkMTYzYmFjOGExYTQwOTVhZjQ0YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTU0LDYgKzU0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNBcnJvd0Z1bmN0aW9uOwogICAgIGNsYXNzIEpT
RnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgSlNNb2R1bGVF
bnZpcm9ubWVudDsKICAgICBjbGFzcyBKU01vZHVsZVJlY29yZDsKICAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CkBAIC0yMTUsNiAr
MjE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoQ2Fs
bEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhl
Y3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqLCBKU09iamVjdCogZnVuY3Rpb24sIENvbnN0cnVjdFR5
cGUsIGNvbnN0IENvbnN0cnVjdERhdGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJn
ZXQpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBDYWxsRnJhbWUq
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUo
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU01vZHVsZUVudmlyb25tZW50
Kik7CiAKICAgICAgICAgdm9pZCBnZXRBcmd1bWVudHNEYXRhKENhbGxGcmFtZSosIEpTRnVuY3Rp
b24qJiwgcHRyZGlmZl90JiBmaXJzdFBhcmFtZXRlckluZGV4LCBSZWdpc3RlciomIGFyZ3YsIGlu
dCYgYXJnYyk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggNmQ1MDFlNmUyODY0OWZkYzAyOTliZWRiZGIxNTM1NGRhNmFlMzI3NC4u
MTU5NjBmMmZhZTA3NmY2NThjMTU4N2JkY2QwYjIzM2Y0YjJlNDg1NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xOTM5LDYgKzE5MzksOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEZyb21TY29wZShFeGVjU3Rh
dGUqIGV4ZWMsIEluc3RydWN0aW9uKgogICAgIEpTT2JqZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09i
amVjdCo+KGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5qc1ZhbHVlKCkpOwogICAg
IEdldFB1dEluZm8gZ2V0UHV0SW5mbyhwY1s0XS51Lm9wZXJhbmQpOwogCisgICAgLy8gTW9kdWxl
VmFyIGlzIGFsd2F5cyBjb252ZXJ0ZWQgdG8gQ2xvc3VyZVZhciBmb3IgZ2V0X2Zyb21fc2NvcGUu
CisgICAgQVNTRVJUKGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSAhPSBNb2R1bGVWYXIpOworCiAg
ICAgUHJvcGVydHlTbG90IHNsb3Qoc2NvcGUpOwogICAgIGlmICghc2NvcGUtPmdldFByb3BlcnR5
U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCkBAIC0xOTc0LDYgKzE5NzcsMTAgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogYnl0ZWNvZGVQQykKICAgICBKU09iamVjdCogc2NvcGUgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkuanNWYWx1ZSgpKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gZXhlYy0+cihwY1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICBHZXRQ
dXRJbmZvIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKHBjWzRdLnUub3BlcmFuZCk7CisKKyAgICAv
LyBNb2R1bGVWYXIgZG9lcyBub3Qga2VlcCB0aGUgc2NvcGUgcmVnaXN0ZXIgdmFsdWUgYWxpdmUg
aW4gREZHLgorICAgIEFTU0VSVChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9kdWxlVmFy
KTsKKwogICAgIGlmIChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgPT0gTG9jYWxDbG9zdXJlVmFy
KSB7CiAgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBlbnZpcm9ubWVudCA9IGpzQ2FzdDxK
U0xleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKICAgICAgICAgZW52aXJvbm1lbnQtPnZhcmlh
YmxlQXQoU2NvcGVPZmZzZXQocGNbNl0udS5vcGVyYW5kKSkuc2V0KHZtLCBlbnZpcm9ubWVudCwg
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAppbmRleCA0MjlhMGFhOTljYTkwNGEwNWU5ZTE1NjZiYjk2OWUzOTk2MDkxZTZkLi5jODU3
ZmNkYWMwY2QzM2FlMmViMDZjNGM1NjQ1NjY1MTE0YmE0NTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNzEwLDYgKzcxMCwxMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgY2FzZSBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAg
ICAgICAgZW1pdFJlc29sdmVDbG9zdXJlKGRzdCwgc2NvcGUsIG5lZWRzVmFySW5qZWN0aW9uQ2hl
Y2tzKHJlc29sdmVUeXBlKSwgZGVwdGgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVs
ZVZhcjoKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGN1cnJlbnRJbnN0cnVjdGlvbls2XS51
LmpzQ2VsbC5nZXQoKSksIHJlZ1QwKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKICAgICBj
YXNlIFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBE
eW5hbWljOgpAQCAtNzIzLDkgKzcyNywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Nj
b3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIFJlc29sdmVUeXBlIHJlc29s
dmVUeXBlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpOwotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNv
bHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCByZXNv
bHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9i
YWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0g
Q2xvc3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IHJlc29sdmVU
eXBlID09IE1vZHVsZVZhcikKICAgICAgICAgcmV0dXJuOwogCisKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwpAQCAtNzkwLDYgKzc5NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3Bl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWljOgogICAg
ICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVs
ZVZhcjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC04ODMsNiArODg5LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgogICAgIGNhc2UgVW5yZXNvbHZl
ZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKKyAgICBjYXNlIE1vZHVsZVZhcjoKICAg
ICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNsb3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtOTA5LDcgKzkxNiwxMiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Nj
b3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93QwogICAgICAg
ICByZXR1cm47CiAgICAgd2hpbGUgKGxpbmtDb3VudC0tKQogICAgICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5z
dHJ1Y3Rpb24pOworCisgICAgaWYgKHJlc29sdmVUeXBlID09IE1vZHVsZVZhcikgeworICAgICAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3Rocm93X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9y
KTsKKyAgICAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDBkZDA4NTMzZjY3MzdjZGIyYTkwZDY3MmViN2Nl
MjRmZjJmNjhkMTcuLmI3OWEyMDliNDM4ZTQ2OWQyZjlkNzExYjg4MmYzZTE1NWQ5ZjEzMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcApAQCAtNzQyLDYgKzc0MiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Nj
b3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBDbG9zdXJlVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICAgICAgZW1pdFJlc29sdmVDbG9zdXJlKGRzdCwg
c2NvcGUsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSwgZGVwdGgpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZhcjoKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGN1cnJlbnRJbnN0cnVjdGlvbls2XS51LmpzQ2VsbC5nZXQoKSksIHJlZ1QwKTsKKyAgICAgICAg
ZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBV
bnJlc29sdmVkUHJvcGVydHk6CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgRHluYW1pYzoKQEAgLTc1Niw3ICs3NjEsNyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBWZWN0b3I8U2xvdwogewogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZVR5cGU+KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwog
Ci0gICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09
IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyIHx8IHJlc29sdmVUeXBlID09
IEdsb2JhbExleGljYWxWYXIpCisgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5
IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFy
IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gTW9k
dWxlVmFyKQogICAgICAgICByZXR1cm47CiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CkBAIC04
MjQsNiArODI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBjYXNlIER5bmFtaWM6CiAgICAgICAgIGFkZFNs
b3dDYXNlKGp1bXAoKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTW9kdWxlVmFyOgogICAg
IGNhc2UgTG9jYWxDbG9zdXJlVmFyOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KQEAgLTkxMyw2ICs5MTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9f
c2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgZW1pdFZhcklu
amVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CiAgICAg
ICAgIGVtaXRQdXRDbG9zdXJlVmFyKHNjb3BlLCAqb3BlcmFuZFNsb3QsIHZhbHVlLCBjdXJyZW50
SW5zdHJ1Y3Rpb25bNV0udS53YXRjaHBvaW50U2V0KTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CiAgICAgY2FzZSBVbnJl
c29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNhc2UgRHluYW1pYzoK
QEAgLTkzOCw3ICs5NDUsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MKICAgICAgICAgcmV0
dXJuOwogICAgIHdoaWxlIChsaW5rQ291bnQtLSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0
aW9uKTsKKworICAgIGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsKKyAgICAgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcik7Cisg
ICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4
IGYxZjNlYTI5MTZhMzMxYTQyNzdhOTg1NWJmN2E5MzIyMmI2NzA5YjAuLjhlNzNlZGZjYzg0ZjZj
MDU3OWFhMWYwMzRkMmEyZjM1YmZkZjBjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCkBAIC0xNDgsMTAgKzE0OCwxMSBAQCB2b2lkIERhdGE6OnBlcmZvcm1B
c3NlcnRpb25zKFZNJiB2bSkKICAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbExleGljYWxWYXIgPT0g
MiwgIkxMSW50IGFzc3VtZXMgR2xvYmFsTGV4aWNhbFZhciBSZXN1bHRUeXBlIGlzID09IDIiKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KENsb3N1cmVWYXIgPT0gMywgIkxMSW50IGFzc3VtZXMgQ2xvc3Vy
ZVZhciBSZXN1bHRUeXBlIGlzID09IDMiKTsKICAgICBzdGF0aWNfYXNzZXJ0KExvY2FsQ2xvc3Vy
ZVZhciA9PSA0LCAiTExJbnQgYXNzdW1lcyBMb2NhbENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9
PSA0Iik7Ci0gICAgc3RhdGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MgPT0gNSwgIkxMSW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNSIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA2LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gNiIpOwotICAgIHN0YXRpY19hc3Nl
cnQoR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNywgIkxMSW50IGFz
c3VtZXMgR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBp
cyA9PSA3Iik7Ci0gICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcyA9PSA4LCAiTExJbnQgYXNzdW1lcyBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyBSZXN1bHRUeXBlIGlzID09IDgiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KE1vZHVsZVZhciA9PSA1
LCAiTExJbnQgYXNzdW1lcyBNb2R1bGVWYXIgUmVzdWx0VHlwZSBpcyA9PSA1Iik7CisgICAgc3Rh
dGljX2Fzc2VydChHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxM
SW50IGFzc3VtZXMgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5
cGUgaXMgPT0gNiIpOworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcyA9PSA3LCAiTExJbnQgYXNzdW1lcyBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIFJlc3VsdFR5cGUgaXMgPT0gNyIpOworICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsTGV4aWNh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gOCwgIkxMSW50IGFzc3VtZXMgR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA4Iik7CisgICAg
c3RhdGljX2Fzc2VydChDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9PSA5LCAiTExJ
bnQgYXNzdW1lcyBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlz
ID09IDkiKTsKIAogICAgIHN0YXRpY19hc3NlcnQoSW5pdGlhbGl6YXRpb25Nb2RlOjpJbml0aWFs
aXphdGlvbiA9PSAwLCAiTExJbnQgYXNzdW1lcyB0aGF0IEluaXRpYWxpemF0aW9uTW9kZTo6SW5p
dGlhbGl6YXRpb24gaXMgMCIpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggN2VkYTJiYThhZjRjYjM0ZmI1NmJjZjY2NjZkYzU5
OWE0ODhjOGFiYS4uM2ZiNDg1ZDBlZmExZWRmMTBkODNiZTAxOTdmZWU2ZWZlN2VkM2NjNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0x
MzY2LDYgKzEzNjYsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21f
c2NvcGUpCiAgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJTlRfT1Ao
MikuanNWYWx1ZSgpKTsKICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8ocGNbNF0udS5vcGVyYW5k
KTsKIAorICAgIC8vIE1vZHVsZVZhciBpcyBhbHdheXMgY29udmVydGVkIHRvIENsb3N1cmVWYXIg
Zm9yIGdldF9mcm9tX3Njb3BlLgorICAgIEFTU0VSVChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkg
IT0gTW9kdWxlVmFyKTsKKwogICAgIFByb3BlcnR5U2xvdCBzbG90KHNjb3BlKTsKICAgICBpZiAo
IXNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgIGlm
IChnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IDQ1NWI2MDcyNmNhNWZiMTE2ZTQ0Njk3OGUzMDViZGNjMGExMmMyNWYuLjJkNTFkMWU3MDVkMjNk
ZmRiNjY1OGM4ZmQ4OTQ5NzE3ZTI3ODVhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE5MywxMCArMTkzLDExIEBA
IGNvbnN0IEdsb2JhbFZhciA9IDEKIGNvbnN0IEdsb2JhbExleGljYWxWYXIgPSAyCiBjb25zdCBD
bG9zdXJlVmFyID0gMwogY29uc3QgTG9jYWxDbG9zdXJlVmFyID0gNAotY29uc3QgR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNQotY29uc3QgR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyA9IDYKLWNvbnN0IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzID0gNwotY29uc3QgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA4Citj
b25zdCBNb2R1bGVWYXIgPSA1Citjb25zdCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MgPSA2Citjb25zdCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gNworY29u
c3QgR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA4Citjb25zdCBDbG9z
dXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDkKIAogY29uc3QgUmVzb2x2ZVR5cGVNYXNr
ID0gMHgzZmYKIGNvbnN0IEluaXRpYWxpemF0aW9uTW9kZU1hc2sgPSAweGZmYzAwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCmluZGV4IDkyZTNlYzg3MzY4NWI1Y2NjZWM3MGJlMWUwMTlkYTAwM2Q3MDAyZjAuLmY1
ZjJhMDNjMjcwMTE3MWMzMjI3NmEzMWNkZjY0MTQwMTVmMzlmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CkBAIC0yMTA4LDEwICsyMTA4LDE1IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgogICAgIGRp
c3BhdGNoKDcpCiAKIC5yQ2xvc3VyZVZhcjoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBiaW5lcSB0MCwgQ2xvc3Vy
ZVZhciwgLnJNb2R1bGVWYXIKICAgICByZXNvbHZlU2NvcGUoKQogICAgIGRpc3BhdGNoKDcpCiAK
Ky5yTW9kdWxlVmFyOgorICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgZ2V0Q29uc3RhbnRTY29wZSgxKQorICAgIGRpc3Bh
dGNoKDcpCisKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJp
bmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykK
QEAgLTIzMzksMTMgKzIzNDQsMTggQEAgX2xsaW50X29wX3B1dF90b19zY29wZToKICAgICBkaXNw
YXRjaCg3KQogCiAucENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgotICAgIGJpbmVx
IHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBEeW5hbWljCisgICAgYmlu
ZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucE1vZHVsZVZhcgogICAg
IHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKICAgICB2YXJJbmplY3Rpb25DaGVjaygucER5
bmFtaWMpCiAgICAgbG9hZFZhcmlhYmxlKDEsIHQyLCB0MSwgdDApCiAgICAgcHV0Q2xvc3VyZVZh
cigpCiAgICAgZGlzcGF0Y2goNykKIAorLnBNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVs
ZVZhciwgLnBEeW5hbWljCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfdGhyb3dfc3RyaWN0
X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCisgICAgZGlzcGF0Y2goNykKKwog
LnBEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF90b19zY29w
ZSkKICAgICBkaXNwYXRjaCg3KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA3ZjMzOGRhMzY1OGIwNDRjMTcwNTYy
MmNjZDBlYTg1MTAzMDE1ODIxLi5lZmQwYzdkNzQxODk4MDVjMTNiZjgwOTI1ZTZmNjc0YzE4NmMy
NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMTk3NiwxMCArMTk3NiwxNSBAQCBfbGxpbnRfb3BfcmVzb2x2
ZV9zY29wZToKICAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAs
IENsb3N1cmVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAg
YmluZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAg
ICBkaXNwYXRjaCg3KQogCisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAu
ckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldENvbnN0YW50U2Nv
cGUoMSkKKyAgICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMpCkBAIC0yMjEzLDEzICsyMjE4LDE4IEBAIF9sbGludF9vcF9wdXRfdG9f
c2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKLSAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5w
RHluYW1pYworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywg
LnBNb2R1bGVWYXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5q
ZWN0aW9uQ2hlY2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKICAgICBwdXRD
bG9zdXJlVmFyKCkKICAgICBkaXNwYXRjaCg3KQogCisucE1vZHVsZVZhcjoKKyAgICBiaW5lcSB0
MCwgTW9kdWxlVmFyLCAucER5bmFtaWMKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF90aHJv
d19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0ZV9lcnJvcikKKyAgICBkaXNwYXRj
aCg3KQorCiAucER5bmFtaWM6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0
X3RvX3Njb3BlKQogICAgIGRpc3BhdGNoKDcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCmluZGV4IGY2MjM4ZmI5NjgwMmJlNTM3ZTkxYWRjMjZi
ODJkODkwYjk1NDAzMmQuLmMxYTNjYzJiMWYwNjgxZTA1OTkyZDVjZDRlNjI2YmU4ODBkNGI5NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3Bw
CkBAIC04Miw3ICs4Miw5IEBAIHZvaWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSwKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGNvbnN0IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCkt
Pmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8SlNNb2R1bGVSZWNv
cmQ6OkltcG9ydEVudHJ5PiBvcHRpb25hbEltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCktPnRy
eUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5nZXQoKSk7CisgICAgQVNTRVJUKG9wdGlvbmFsSW1w
b3J0RW50cnkpOworICAgIGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeSYgaW1wb3J0
RW50cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsKICAgICBpZiAodmFyaWFibGUuaXNJbXBvcnRl
ZE5hbWVzcGFjZSgpKSB7CiAgICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5nLgog
ICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggZTgyOWY4
NTU3YTJhZTYwM2U4ZWVkMGE0YjQwMzBjZTZkNTNjMDJkNS4uZTQ4NjFiYTJjZmM1ZTQyNjQ4NDFi
NzBmMTIzMWI2Y2NkYjUyN2VhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0yNzAsNiArMjcwLDEyIEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpCiAgICAgVEhST1coY3JlYXRlVERaRXJyb3Io
ZXhlYykpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVf
cmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCit7CisgICAgQkVHSU4oKTsKKyAgICBUSFJP
VyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcikpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCkK
IHsKICAgICBCRUdJTigpOwpAQCAtNjY4LDYgKzY3NCwxMCBAQCBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcmVzb2x2ZV9zY29wZSkKICAgICBKU1ZhbHVlIHJlc29sdmVkU2NvcGUgPSBKU1Njb3Bl
OjpyZXNvbHZlKGV4ZWMsIHNjb3BlLCBpZGVudCk7CiAKICAgICBSZXNvbHZlVHlwZSByZXNvbHZl
VHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihwY1s0XS51Lm9wZXJhbmQpOworCisgICAg
Ly8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVlIGFsaXZl
IGluIERGRy4KKyAgICBBU1NFUlQocmVzb2x2ZVR5cGUgIT0gTW9kdWxlVmFyKTsKKwogICAgIGlm
IChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5y
ZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewogICAgICAgICBpZiAoSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzRHlu
YW1pY0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihyZXNvbHZlZFNjb3BlKSkgewog
ICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggOGM5
ODY3ZmM0ZGUzMzVhMWY4N2UzNzhjM2ViM2JmNzM3NTI1NjZiYy4uZmJlZmNkMGUxODRhYmViYmRh
OTg5NTVmZjNlODRiOGU2OTNlNmUzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0MSw2ICsyNDEsNyBAQCBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2VudGVyKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2NhbGxlZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd190ZHpfZXJyb3IpOworU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9w
cm9wZXJ0eV93cml0ZV9lcnJvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25v
dCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VxKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbmVxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmNwcAppbmRleCAwMDI4NWE2NzU3NzM0NzQ3OWJkOWE5YjdiOTM5NTVjMjY0MzQ2NTdjLi4xYjkz
ZThmZDEyNTdkMGQ3OGFhNzkzNjg4MTEyNGNhZjY5OTQ0YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0yMTksNiArMjE5LDEwIEBAIEpTT2JqZWN0KiB0aHJv
d1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5
bnRheCBlcnJvciIpKSk7CiB9CiAKK0pTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHJldHVybiBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsK
K30KIAogSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKaW5kZXggZWMz
MGEzZGM0NjZlMWViNDQ5YjNlNTg1YWE4MDQ5MmVmMTk4NDY0Ny4uZjQ2ZmUzNzZmYjg2YzY1MmU0
YWVjODQ5MDEzY2VhMmRmM2M4MDFiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oCkBAIC03NCw2ICs3NCw3IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oRXhlY1N0YXRlKiwg
SlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYpCiAvLyBDb252ZW5p
ZW5jZSB3cmFwcGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVs
dCBtZXNzYWdlLgogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSopOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3Io
RXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJv
cihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiBpbmxpbmUgSlNPYmpl
Y3QqIHRocm93UmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgeyByZXR1cm4gc3RhdGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3RhdGUsIGNyZWF0
ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CiAKIC8vIENvbnZlbmllbmNlIHdy
YXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggYjMxNzJlNmQzN2VlY2M2MDMw
ODZlZDU3YWFjMTEyNmY0OWQyY2RmOC4uYzQ3M2M0OTFmOWIyNjZlMjNiNjc3NTI5MWRiNjg4NGJj
YTE0YjA1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAKQEAgLTQzOSw2ICs0MzksOSBAQCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrLnNldChleGVjLT52bSgpLCBleGVjdXRhYmxlLCB1bmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlKTsKIAorICAgIC8vIENsb25lIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgc3ltYm9sIHRhYmxl
IGZvciB0aGlzIGV4ZWN1dGFibGUgKGFuZCB0aGUgY29kZSBibG9jayBsaW5rZWQgYW5kIGluc3Rh
bnRpYXRlZCBsYXRlcikuCisgICAgZXhlY3V0YWJsZS0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJv
bFRhYmxlLnNldChleGVjLT52bSgpLCBleGVjdXRhYmxlLCBqc0Nhc3Q8U3ltYm9sVGFibGUqPih1
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlLT5jb25zdGFudFJlZ2lzdGVyKHVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGUtPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVy
T2Zmc2V0KCkpLmdldCgpKS0+Y2xvbmVTY29wZVBhcnQoZXhlYy0+dm0oKSkpOworCiAgICAgcmV0
dXJuIGV4ZWN1dGFibGU7CiB9CiAKQEAgLTYzMyw2ICs2MzYsNyBAQCB2b2lkIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OwogICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVF
bnZpcm9ubWVudFN5bWJvbFRhYmxlKTsKICAgICBpZiAodGhpc09iamVjdC0+bV9tb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKQogICAgICAgICB0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1Db2RlQmxv
Y2stPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogfQpAQCAtNjQxLDYgKzY0NSw3IEBAIHZvaWQg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNsZWFyQ29kZSgpCiB7CiAgICAgbV9tb2R1bGVQcm9n
cmFtQ29kZUJsb2NrID0gbnVsbHB0cjsKICAgICBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jay5jbGVhcigpOworICAgIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5jbGVhcigp
OwogICAgIEJhc2U6OmNsZWFyQ29kZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKaW5kZXggY2RjZWIzMDQyNjVmOTc2ZDAwNzdhZWZkNjU3YjViN2Jh
YmJmMmExNi4uZjNlZjRiYjZjMTE2NTk5YTI3OGRhMzlmZDMzNjRlZDQyM2JjMDY4YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTcsNiArNTcsOSBA
QCBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsK
IGNsYXNzIEpTU2NvcGU7CiBjbGFzcyBXZWJBc3NlbWJseUNvZGVCbG9jazsKK2NsYXNzIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2s7CitjbGFzcyBKU01vZHVsZVJlY29yZDsKK2NsYXNzIEpTU2NvcGU7
CiAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0Nv
bXBpbGF0aW9uIH07CiAKQEAgLTU4OSw2ICs1OTIsOCBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBFeGVjdXRhYmxl
SW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJbmZvKG5lZWRz
QWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFsc2UsIGZhbHNlLCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGZhbHNlKTsgfQogICAgIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KIAorICAgIFN5bWJvbFRhYmxl
KiBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9u
bWVudFN5bWJvbFRhYmxlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNj
cmlwdEV4ZWN1dGFibGU7CiAKQEAgLTU5Nyw2ICs2MDIsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBXcml0ZUJh
cnJpZXI8VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPiBtX3VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jazsKKyAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZTsKICAgICBSZWZQdHI8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4g
bV9tb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0UHV0SW5mby5oCmluZGV4IDJlN2EyZWZmZTg2ZTJmOGMxODc0ZTg3YzVmZTRjMDgz
MGNlNTUxZjkuLmY0OTliY2Q4OTYyNGRkMjRhZTg3ZGExZTI0OTU0YzBiMWIzYzRiYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgKQEAgLTI2LDYgKzI2LDgg
QEAKICNpZm5kZWYgR2V0UHV0SW5mb19oCiAjZGVmaW5lIEdldFB1dEluZm9faAogCisjaW5jbHVk
ZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIFN0cnVjdHVyZTsKQEAgLTQ0LDYgKzQ2LDcgQEAgZW51bSBSZXNvbHZlVHlwZSB7CiAgICAg
R2xvYmFsTGV4aWNhbFZhciwKICAgICBDbG9zdXJlVmFyLAogICAgIExvY2FsQ2xvc3VyZVZhciwK
KyAgICBNb2R1bGVWYXIsCiAKICAgICAvLyBEaXR0bywgYnV0IGF0IGxlYXN0IG9uZSBpbnRlcnZl
bmluZyBzY29wZSB1c2VkIG5vbi1zdHJpY3QgZXZhbCwgd2hpY2gKICAgICAvLyBjYW4gaW5qZWN0
IGFuIGludGVyY2VwdGluZyB2YXIgZGVsY2FyYXRpb24gYXQgcnVudGltZS4KQEAgLTg0LDYgKzg3
LDcgQEAgQUxXQVlTX0lOTElORSBjb25zdCBjaGFyKiByZXNvbHZlVHlwZU5hbWUoUmVzb2x2ZVR5
cGUgdHlwZSkKICAgICAgICAgIkdsb2JhbExleGljYWxWYXIiLAogICAgICAgICAiQ2xvc3VyZVZh
ciIsCiAgICAgICAgICJMb2NhbENsb3N1cmVWYXIiLAorICAgICAgICAiTW9kdWxlVmFyIiwKICAg
ICAgICAgIkdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyIsCiAgICAgICAgICJH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKICAgICAgICAgIkdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIiwKQEAgLTEyMiw2ICsxMjYsNyBAQCBBTFdBWVNfSU5M
SU5FIFJlc29sdmVUeXBlIG1ha2VUeXBlKFJlc29sdmVUeXBlIHR5cGUsIGJvb2wgbmVlZHNWYXJJ
bmplY3Rpb25DaGVjawogICAgICAgICByZXR1cm4gQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M7CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CiAgICAgICAgIHJldHVybiBVbnJl
c29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgIGNhc2UgTW9kdWxlVmFy
OgogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGNh
c2UgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIEdsb2JhbExleGlj
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAtMTQzLDYgKzE0OCw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogICAg
IGNhc2UgR2xvYmFsTGV4aWNhbFZhcjoKICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgY2FzZSBM
b2NhbENsb3N1cmVWYXI6CisgICAgY2FzZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBVbnJlc29sdmVk
UHJvcGVydHk6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTE1OSwxMyArMTY1LDE0IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhSZXNvbHZlVHlwZSB0eXBlKQogfQogCiBz
dHJ1Y3QgUmVzb2x2ZU9wIHsKLSAgICBSZXNvbHZlT3AoUmVzb2x2ZVR5cGUgdHlwZSwgc2l6ZV90
IGRlcHRoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGlj
YWxFbnZpcm9ubWVudCwgV2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCwgdWludHB0cl90IG9w
ZXJhbmQpCisgICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUsIHNpemVfdCBkZXB0aCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1l
bnQsIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRwdHJfdCBvcGVyYW5kLCBVbmlx
dWVkU3RyaW5nSW1wbCogaW1wb3J0ZWROYW1lID0gbnVsbHB0cikKICAgICAgICAgOiB0eXBlKHR5
cGUpCiAgICAgICAgICwgZGVwdGgoZGVwdGgpCiAgICAgICAgICwgc3RydWN0dXJlKHN0cnVjdHVy
ZSkKICAgICAgICAgLCBsZXhpY2FsRW52aXJvbm1lbnQobGV4aWNhbEVudmlyb25tZW50KQogICAg
ICAgICAsIHdhdGNocG9pbnRTZXQod2F0Y2hwb2ludFNldCkKICAgICAgICAgLCBvcGVyYW5kKG9w
ZXJhbmQpCisgICAgICAgICwgaW1wb3J0ZWROYW1lKGltcG9ydGVkTmFtZSkKICAgICB7CiAgICAg
fQogCkBAIC0xNzUsNiArMTgyLDcgQEAgc3RydWN0IFJlc29sdmVPcCB7CiAgICAgSlNMZXhpY2Fs
RW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudDsKICAgICBXYXRjaHBvaW50U2V0KiB3YXRj
aHBvaW50U2V0OwogICAgIHVpbnRwdHJfdCBvcGVyYW5kOworICAgIFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4gaW1wb3J0ZWROYW1lOwogfTsKIAogY2xhc3MgR2V0UHV0SW5mbyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYWQz
N2JhZWY5MmEyYTdjMjQ4Y2Q0YjExYThjODQ5Mzc0MmY1NzExMi4uMGU3N2NkMjg4OWNlYjhiYmYx
MDc2MGUyZWEzMjVhNWU5NDQ1YWRmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODQsNiArODQsNyBAQAogI2luY2x1ZGUgIkpT
TG9jay5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29y
ZC5oIgogI2luY2x1ZGUgIkpTTmF0aXZlU3RkRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09OT2Jq
ZWN0LmgiCkBAIC0zMTMsNiArMzE0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgbV90eXBlZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTRGF0YVZpZXc6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV90eXBl
ZEFycmF5c1t0b0luZGV4KFR5cGVEYXRhVmlldyldLnByb3RvdHlwZS5nZXQoKSkpOwogICAgIAog
ICAgIG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNMZXhpY2Fs
RW52aXJvbm1lbnQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOworICAgIG1fbW9kdWxlRW52
aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZUVudmlyb25tZW50OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKICAgICBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgU3RyaWN0RXZhbEFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuc2V0KG1f
dm0sIHRoaXMsIERlYnVnZ2VyU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZShtX3ZtLCB0aGlzKSk7CiAg
ICAgbV93aXRoU2NvcGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dpdGhTY29wZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwpAQCAtNzkzLDYgKzc5NSw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1
Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cmljdEV2YWxBY3Rp
dmF0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9sZXhp
Y2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDQ2MTk1
OWQxYmQ5YmJjOTMxMzM2OTc3NmIwZDljMTU1OTY4NzgxMzYuLmVjNjZjMWE5ZWMzYzljNTNlMThl
MDY3MGFlY2NiNWRhOWVhZDIyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjM0LDYgKzIzNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fd2l0aFNjb3BlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZTsKQEAgLTQ1MCw2
ICs0NTEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJp
Y3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFj
dGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGFjdGl2YXRpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBkaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdEFy
Z3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc2NvcGVkQXJndW1lbnRz
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG91dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3V0T2ZCYW5kQXJndW1lbnRzU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaApp
bmRleCA1MDczMTJlYjdiNmVjMzYyNTBhOTI4NWJlZTk4YzRmNzJmMGUyNDc2Li5iYmUzMTYxODI0
MWEzOTZlMzZmMDUyNGY1YzBhMjFlYmQxNjQ2NDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBSZWdpc3RlcjsKICAgICAKIGNsYXNzIEpTTGV4aWNh
bEVudmlyb25tZW50IDogcHVibGljIEpTRW52aXJvbm1lbnRSZWNvcmQgewotcHJpdmF0ZToKK3By
b3RlY3RlZDoKICAgICBKU0xleGljYWxFbnZpcm9ubWVudChWTSYsIFN0cnVjdHVyZSosIEpTU2Nv
cGUqLCBTeW1ib2xUYWJsZSopOwogICAgIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NzAxNzMxMmM2NmQ2MjUzNzY5NzI0MDEwOWUwN2JkMDAyNzY0NjY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAK
QEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1l
bnQuaCIKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU01vZHVsZUVudmlyb25tZW50OjpzX2lu
Zm8gPSB7ICJKU01vZHVsZUVudmlyb25tZW50IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU01vZHVsZUVudmlyb25tZW50KSB9OworCitKU01vZHVsZUVudmlyb25tZW50
KiBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUoCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUs
IEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorewor
ICAgIC8vIEpTTGV4aWNhbEVudmlyb25tZW50IChwcmVjaXNlbHksIEpTRW52aXJvbm1lbnRSZWNv
cmQpIGhhcyB0aGUgc3RvcmFnZSB0byBzdG9yZSB0aGUgdmFyaWFibGUgc2xvdHMgYWZ0ZXIgdGhl
IGl0cyBjbGFzcyBzdG9yYWdlLgorICAgIC8vIEJlY2F1c2UgdGhlIG9mZnNldCBvZiB0aGUgdmFy
aWFibGUgc2xvdHMgYXJlIGZpeGVkIGluIHRoZSBKU0Vudmlyb25tZW50UmVjb3JkLCBpbmhlcml0
dGluZyB0aGVzZSBjbGFzcyBhbmQgYWRkaW5nIG5ldyBtZW1iZXIgZmllbGQgaXMgbm90IGFsbG93
ZWQsCisgICAgLy8gdGhlIG5ldyBtZW1iZXIgd2lsbCBvdmVybGFwIHRoZSB2YXJpYWJsZSBzbG90
cy4KKyAgICAvLyBUbyBrZWVwIHRoZSBKU01vZHVsZUVudmlyb25tZW50IGNvbXBhdGlibGUgdG8g
dGhlIEpTTGV4aWNhbEVudmlyb25tZW50IGJ1dCBhZGQgdGhlIG5ldyBtZW1iZXIgdG8gc3RvcmUg
dGhlIEpTTW9kdWxlUmVjb3JkLCB3ZSBhZGRpdGlvbmFsbHkgYWxsb2NhdGUKKyAgICAvLyB0aGUg
c3RvcmFnZSBhZnRlciB0aGUgdmFyaWFibGUgc2xvdHMuCisgICAgLy8KKyAgICAvLyBKU0xleGlj
YWxFbnZpcm9ubWVudDoKKyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJp
YWJsZSBzbG90cyBdCisgICAgLy8KKyAgICAvLyBKU01vZHVsZUVudmlyb25tZW50OgorICAgIC8v
ICAgICBbIEpTTGV4aWNhbEVudmlyb25tZW50IF1bIHZhcmlhYmxlIHNsb3RzIF1bIGFkZGl0aW9u
YWwgc2xvdHMgZm9yIEpTTW9kdWxlRW52aXJvbm1lbnQgXQorICAgIEpTTW9kdWxlRW52aXJvbm1l
bnQqIHJlc3VsdCA9CisgICAgICAgIG5ldyAoCisgICAgICAgICAgICBOb3ROdWxsLAorICAgICAg
ICAgICAgYWxsb2NhdGVDZWxsPEpTTW9kdWxlRW52aXJvbm1lbnQ+KHZtLmhlYXAsIEpTTW9kdWxl
RW52aXJvbm1lbnQ6OmFsbG9jYXRpb25TaXplKHN5bWJvbFRhYmxlKSkpCisgICAgICAgIEpTTW9k
dWxlRW52aXJvbm1lbnQodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSk7
CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNv
cmQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNv
cmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgaW5pdGlh
bFZhbHVlKTsKKyAgICB0aGlzLT5tb2R1bGVSZWNvcmRTbG90KCkuc2V0KHZtLCB0aGlzLCBtb2R1
bGVSZWNvcmQpOworfQorCit2b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01vZHVsZUVudmly
b25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0
b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPnZhcmlhYmxlcygpLCB0aGlzT2JqZWN0LT5zeW1i
b2xUYWJsZSgpLT5zY29wZVNpemUoKSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1vZHVsZVJlY29yZFNsb3QoKSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVu
dmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxs
KTsKKyAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gdGhpc09iamVj
dC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVp
ZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVzb2x1dGlvbi50eXBlID09
IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAgICAv
LyBXaGVuIHJlc29sdmVJbXBvcnQgcmVzb2x2ZXMgdGhlIHJlc29sdXRpb24sIHRoZSBpbXBvcnRl
ZCBtb2R1bGUgZW52aXJvbm1lbnQgbXVzdCBoYXZlIHRoZSBiaW5kaW5nLgorICAgICAgICBKU01v
ZHVsZUVudmlyb25tZW50KiBpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50ID0gcmVzb2x1dGlvbi5t
b2R1bGVSZWNvcmQtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgICAgIFByb3BlcnR5U2xvdCBy
ZWRpcmVjdFNsb3QoaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAgIGJvb2wgcmVz
dWx0ID0gaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PmdldE93blByb3BlcnR5U2xvdChpbXBvcnRlZE1vZHVsZUVudmlyb25tZW50LCBleGVjLCByZXNv
bHV0aW9uLmxvY2FsTmFtZSwgcmVkaXJlY3RTbG90KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIEFTU0VSVChyZWRpcmVjdFNsb3QuaXNWYWx1ZSgpKTsK
KyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHJlZGlyZWN0U2xvdC5nZXRWYWx1ZShleGVjLCByZXNv
bHV0aW9uLmxvY2FsTmFtZSk7CisgICAgICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkp
OworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIHJlZGlyZWN0U2xvdC5hdHRyaWJ1
dGVzKCksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBC
YXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXNBcnJheSwgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgSlNN
b2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50
Kj4oY2VsbCk7CisgICAgaWYgKHByb3BlcnR5TmFtZXNBcnJheS5pbmNsdWRlU3RyaW5nUHJvcGVy
dGllcygpKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHRoaXNPYmplY3QtPm1v
ZHVsZVJlY29yZCgpLT5pbXBvcnRFbnRyaWVzKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IEpTTW9k
dWxlUmVjb3JkOjpJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAg
ICAgICAgaWYgKCFpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVjLT52bSgpKSkKKyAgICAgICAg
ICAgICAgICBwcm9wZXJ0eU5hbWVzQXJyYXkuYWRkKGltcG9ydEVudHJ5LmxvY2FsTmFtZSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzQXJyYXksIG1vZGUpOworfQorCit2
b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5k
aW5ncyBhcmUgaW1tdXRhYmxlLgorICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29s
dXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChy
ZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29s
dmVkKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOworfQorCitib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmRlbGV0ZVByb3BlcnR5
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
KQoreworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1
bGVFbnZpcm9ubWVudCo+KGNlbGwpOworICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUg
aW1tdXRhYmxlLgorICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0
aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIGlmIChyZXNvbHV0aW9u
LnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY3ZWZhNjI2M2IyYjI3NDlmNzg4YzBhN2YwNzNmNzY3N2EwMDliMDMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVu
dmlyb25tZW50LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZUVudmlyb25tZW50X2gKKyNkZWZp
bmUgSlNNb2R1bGVFbnZpcm9ubWVudF9oCisKKyNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVu
dC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBSZWdpc3RlcjsKKworY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0xl
eGljYWxFbnZpcm9ubWVudCB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHR5cGVkZWYgSlNMZXhpY2Fs
RW52aXJvbm1lbnQgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVFbnZpcm9u
bWVudCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKiwgSlNW
YWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3JkKik7CisKKyAgICBzdGF0aWMgSlNNb2R1
bGVFbnZpcm9ubWVudCogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUsIEpTVmFs
dWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkKQorICAgIHsKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm1vZHVsZUVudmlyb25t
ZW50U3RydWN0dXJlKCk7CisgICAgICAgIHJldHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgY3Vy
cmVudFNjb3BlLCBzeW1ib2xUYWJsZSwgaW5pdGlhbFZhbHVlLCBtb2R1bGVSZWNvcmQpOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwganNOdWxsKCks
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTW9kdWxlUmVjb3JkKFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBCYXNlOjphbGxvY2F0aW9u
U2l6ZShzeW1ib2xUYWJsZSk7CisgICAgICAgIEFTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxKU01vZHVsZVJlY29yZD4pPihvZmZzZXQpID09IG9mZnNl
dCk7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gb2Zmc2V0T2ZNb2R1bGVSZWNvcmQoc3ltYm9sVGFibGUpICsgc2l6ZW9mKFdyaXRlQmFy
cmllcjxKU01vZHVsZVJlY29yZD4pOworICAgIH0KKworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1
bGVSZWNvcmQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1vZHVsZVJlY29yZFNsb3QoKS5nZXQo
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyB2
b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBwdXQo
SlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpOworCitwcml2YXRlOgorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQoVk0m
LCBTdHJ1Y3R1cmUqLCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKKworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqKTsKKwor
ICAgIFdyaXRlQmFycmllckJhc2U8SlNNb2R1bGVSZWNvcmQ+JiBtb2R1bGVSZWNvcmRTbG90KCkK
KyAgICB7CisgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8SlNN
b2R1bGVSZWNvcmQ+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTW9kdWxl
UmVjb3JkKHN5bWJvbFRhYmxlKCkpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cit9OworCitpbmxpbmUgSlNNb2R1bGVFbnZp
cm9ubWVudDo6SlNNb2R1bGVFbnZpcm9ubWVudChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1Njb3BlKiBjdXJyZW50U2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSwgY3VycmVudFNjb3BlLCBzeW1ib2xUYWJsZSkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU01vZHVsZUVudmlyb25tZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRl
eCA3YjYwNjM3NGE2MDYwYjc3MDIwYzRlZjQ1MTJlOTI0NWUwM2YzZmM1Li4yY2VmYmU5NDAxY2Fk
NjQ3MmM3MWM0MmEwYzg3MDY1MThlZmQyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgog
CkBAIC02MCwxMCArNjEsNDkgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTW9kdWxlUmVjb3Jk
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CiAgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudCk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7CiB9CiAKK3ZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQor
eworICAgIG1fcmVxdWVzdGVkTW9kdWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCit2
b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlTmFtZSkKK3sKKyAgICBtX3N0YXJFeHBvcnRFbnRyaWVzLmFkZChtb2R1bGVOYW1lLmlt
cGwoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KGNvbnN0IElt
cG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBib29sIGlzTmV3RW50cnkgPSBtX2ltcG9ydEVudHJp
ZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KS5pc05ld0VudHJ5OworICAgIEFT
U0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7IC8vIFRoaXMgaXMgZ3VhcmFudGVl
ZCBieSB0aGUgcGFyc2VyLgorfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRy
eShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkpCit7CisgICAgYm9vbCBpc05ld0VudHJ5ID0gbV9l
eHBvcnRFbnRyaWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwoKSwgZW50cnkpLmlzTmV3RW50
cnk7CisgICAgQVNTRVJUX1VOVVNFRChpc05ld0VudHJ5LCBpc05ld0VudHJ5KTsgLy8gVGhpcyBp
cyBndWFyYW50ZWVkIGJ5IHRoZSBwYXJzZXIuCit9CisKK2F1dG8gSlNNb2R1bGVSZWNvcmQ6OnRy
eUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpIC0+IE9wdGlvbmFs
PEltcG9ydEVudHJ5PgoreworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2ltcG9ydEVudHJp
ZXMuZmluZChsb2NhbE5hbWUpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2ltcG9ydEVudHJpZXMu
ZW5kKCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIHJldHVybiBPcHRpb25hbDxJbXBv
cnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6dHJ5
R2V0RXhwb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpIC0+IE9wdGlvbmFs
PEV4cG9ydEVudHJ5PgoreworICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4cG9ydEVudHJp
ZXMuZmluZChleHBvcnROYW1lKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9leHBvcnRFbnRyaWVz
LmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gT3B0aW9uYWw8RXhw
b3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7Cit9CisKIGF1dG8gSlNNb2R1bGVSZWNvcmQ6OkV4
cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25z
dCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYg
dmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5CiB7CiAgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlw
ZTo6TG9jYWwsIGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigpLCBsb2NhbE5h
bWUsIHZhcmlhYmxlIH07CkBAIC03OSw2ICsxMTksMjEgQEAgYXV0byBKU01vZHVsZVJlY29yZDo6
RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUs
IGMKICAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpJbmRpcmVjdCwgZXhwb3J0TmFtZSwg
bW9kdWxlTmFtZSwgaW1wb3J0TmFtZSwgSWRlbnRpZmllcigpLCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkoKSB9OwogfQogCithdXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpub3RGb3Vu
ZCgpIC0+IFJlc29sdXRpb24KK3sKKyAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6Ok5vdEZv
dW5kLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6
UmVzb2x1dGlvbjo6ZXJyb3IoKSAtPiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIFJlc29sdXRp
b24geyBUeXBlOjpFcnJvciwgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07Cit9CisKK2F1dG8gSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OmFtYmlndW91cygpIC0+IFJlc29sdXRpb24KK3sKKyAg
ICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6OkFtYmlndW91cywgbnVsbHB0ciwgSWRlbnRpZmll
cigpIH07Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIGlmIChpZGVudGlm
aWVyLmlzU3ltYm9sKCkpCkBAIC05Myw2ICsxNDgsMjc5IEBAIEpTTW9kdWxlUmVjb3JkKiBKU01v
ZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0CiAgICAgcmV0dXJuIGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KHBhaXIuZ2V0KGV4ZWMsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInZhbHVlIikpKTsKIH0KIAorYXV0byBKU01vZHVs
ZVJlY29yZDo6cmVzb2x2ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IGxvY2FsTmFtZSkgLT4gUmVzb2x1dGlvbgoreworICAgIE9wdGlvbmFsPEltcG9ydEVudHJ5PiBv
cHRpb25hbEltcG9ydEVudHJ5ID0gdHJ5R2V0SW1wb3J0RW50cnkobG9jYWxOYW1lLmltcGwoKSk7
CisgICAgaWYgKCFvcHRpb25hbEltcG9ydEVudHJ5KQorICAgICAgICByZXR1cm4gUmVzb2x1dGlv
bjo6bm90Rm91bmQoKTsKKworICAgIGNvbnN0IEltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9ICpv
cHRpb25hbEltcG9ydEVudHJ5OworICAgIGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZShleGVj
LT52bSgpKSkKKyAgICAgICAgcmV0dXJuIFJlc29sdXRpb246Om5vdEZvdW5kKCk7CisKKyAgICBK
U01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxl
KGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOworICAgIHJldHVybiBpbXBvcnRlZE1v
ZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKK30KKwor
c3RydWN0IFJlc29sdmVRdWVyeSB7CisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3JkKiBt
b2R1bGVSZWNvcmQsIFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKQorICAgICAgICA6IG1v
ZHVsZVJlY29yZChtb2R1bGVSZWNvcmQpCisgICAgICAgICwgZXhwb3J0TmFtZShleHBvcnROYW1l
KQorICAgIHsKKyAgICB9CisKKyAgICBSZXNvbHZlUXVlcnkoSlNNb2R1bGVSZWNvcmQqIG1vZHVs
ZVJlY29yZCwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkKKyAgICAgICAgOiBSZXNvbHZl
UXVlcnkobW9kdWxlUmVjb3JkLCBleHBvcnROYW1lLmltcGwoKSkKKyAgICB7CisgICAgfQorCisg
ICAgZW51bSBFbXB0eVZhbHVlVGFnIHsgRW1wdHlWYWx1ZSB9OworICAgIFJlc29sdmVRdWVyeShF
bXB0eVZhbHVlVGFnKQorICAgIHsKKyAgICB9CisKKyAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7
IERlbGV0ZWRWYWx1ZSB9OworICAgIFJlc29sdmVRdWVyeShEZWxldGVkVmFsdWVUYWcpCisgICAg
ICAgIDogbW9kdWxlUmVjb3JkKG51bGxwdHIpCisgICAgICAgICwgZXhwb3J0TmFtZShXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5VmFs
dWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFleHBvcnROYW1lOworICAgIH0KKwor
ICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4
cG9ydE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyAgICAvLyBUaGUg
bW9kdWxlIHJlY29yZCBpcyBub3QgbWFya2VkIGZyb20gdGhlIEdDLiBCdXQgdGhlc2UgcmVjb3Jk
cyBhcmUgcmVhY2hhYmxlIGZyb20gdGhlIEpTR2xvYmFsT2JqZWN0LgorICAgIC8vIFNvIHdlIGRv
bid0IGNhcmUgdGhlIHJlYWNoYWJpbGl0eSB0byB0aGlzIHJlY29yZC4KKyAgICBKU01vZHVsZVJl
Y29yZCogbW9kdWxlUmVjb3JkOworICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gZXhwb3J0
TmFtZTsKK307CisKK3N0cnVjdCBSZXNvbHZlUXVlcnlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBSZXNvbHZlUXVlcnkmLCBjb25zdCBSZXNvbHZlUXVlcnkmKTsKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCitpbmxpbmUg
dW5zaWduZWQgUmVzb2x2ZVF1ZXJ5SGFzaDo6aGFzaChjb25zdCBSZXNvbHZlUXVlcnkmIHF1ZXJ5
KQoreworICAgIHJldHVybiBXVEY6OlB0ckhhc2g8SlNNb2R1bGVSZWNvcmQqPjo6aGFzaChxdWVy
eS5tb2R1bGVSZWNvcmQpICsgSWRlbnRpZmllclJlcEhhc2g6Omhhc2gocXVlcnkuZXhwb3J0TmFt
ZSk7Cit9CisKK2lubGluZSBib29sIFJlc29sdmVRdWVyeUhhc2g6OmVxdWFsKGNvbnN0IFJlc29s
dmVRdWVyeSYgbGhzLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJocykKK3sKKyAgICByZXR1cm4gbGhz
Lm1vZHVsZVJlY29yZCA9PSByaHMubW9kdWxlUmVjb3JkICYmIGxocy5leHBvcnROYW1lID09IHJo
cy5leHBvcnROYW1lOworfQorCitzdGF0aWMgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVz
b2x2ZUV4cG9ydExvb3AoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBSZXNvbHZlUXVlcnkmIHJvb3Qp
Cit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLXJlc29sdmVleHBvcnQKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGF2b2lkcyBDKysgcmVj
dXJzaW9uIG9mIHRoZSBuYWl2ZSBSZXNvbHZlRXhwb3J0IGltcGxlbWVudGF0aW9uLgorICAgIC8v
IEZsYXR0ZW4gdGhlIHJlY3Vyc2lvbiB0byB0aGUgbG9vcCB3aXRoIHRoZSB0YXNrIHF1ZXVlIGFu
ZCBmcmFtZXMuCisgICAgLy8KKyAgICAvLyAxLiBwZW5kaW5nVGFza3MKKyAgICAvLyAgICAgV2Ug
ZW5xdWV1ZSB0aGUgcmVjdXJzaXZlIHJlc29sdmVFeHBvcnQgY2FsbCB0byB0aGlzIHF1ZXVlIHRv
IGF2b2lkIHJlY3Vyc2l2ZSBjYWxscyBpbiBDKysuCisgICAgLy8gICAgIFRoZSB0YXNrIGhhcyAz
IHR5cGVzLiAoMSkgUXVlcnksICgyKSBJbmRpcmVjdEZhbGxiYWNrIGFuZCAoMykgR2F0aGVyU3Rh
cnMuCisgICAgLy8gICAgICgxKSBRdWVyeQorICAgIC8vICAgICAgICAgUXVlcnlpbmcgdGhlIHJl
c29sdXRpb24gdG8gdGhlIGN1cnJlbnQgbW9kdWxlLgorICAgIC8vICAgICAoMikgSW5kaXJlY3RG
YWxsYmFjaworICAgIC8vICAgICAgICAgRXhhbWluZSB0aGUgcmVzdWx0IG9mIHRoZSBpbmRpcmVj
dCBleHBvcnQgcmVzb2x1dGlvbi4gT25seSB3aGVuIHRoZSBpbmRpcmVjdCBleHBvcnQgcmVzb2x1
dGlvbiBmYWlscywKKyAgICAvLyAgICAgICAgIHdlIGxvb2sgaW50byB0aGUgc3RhciBleHBvcnRz
LiAoc3RlcCA1LWEtdmkpLgorICAgIC8vICAgICAoMykgR2F0aGVyU3RhcnMKKyAgICAvLyAgICAg
ICAgIEV4YW1pbmUgdGhlIHJlc3VsdCBvZiB0aGUgc3RhciBleHBvcnQgcmVzb2x1dGlvbnMuCisg
ICAgLy8KKyAgICAvLyAyLiBmcmFtZXMKKyAgICAvLyAgICAgV2hlbiB0aGUgc3BlYyBjYWxscyB0
aGUgcmVzb2x2ZUV4cG9ydCByZWN1cnNpdmVseSwgaW5zdGVhZCB3ZSBhcHBlbmQgdGhlIGZyYW1l
CisgICAgLy8gICAgICh0aGF0IGhvbGRzIHRoZSByZXN1bHQgcmVzb2x1dGlvbikgdG8gdGhlIGZy
YW1lcyBhbmQgZW5xdWV1ZSB0aGUgdGFzayB0byB0aGUgcGVuZGluZ1Rhc2tzLgorICAgIC8vICAg
ICBUaGUgZW50cnkgaW4gdGhlIGZyYW1lcyBtZWFucyB0aGUgKmxvY2FsKiByZXNvbHV0aW9uIHJl
c3VsdCBvZiB0aGUgc3BlY2lmaWMgcmVjdXJzaXZlIHJlc29sdmVFeHBvcnQuCisgICAgLy8KKyAg
ICAvLyBXZSBzaG91bGQgbWFpbnRhaW4gdGhlIGxvY2FsIHJlc29sdXRpb24gcmVzdWx0IGluc3Rl
YWQgb2YgaG9sZGluZyB0aGUgZ2xvYmFsIHJlc29sdXRpb24gcmVzdWx0IG9ubHkuCisgICAgLy8g
Rm9yIGV4YW1wbGUsCisgICAgLy8KKyAgICAvLyAgICAgc3RhcgorICAgIC8vICgxKSAtLS0+ICgy
KSAiUmVzb2x2ZSIKKyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgICst
PiAoMykgIk5vdEZvdW5kIgorICAgIC8vICAgICAgfAorICAgIC8vICAgICAgfCAgICAgICBzdGFy
CisgICAgLy8gICAgICArLT4gKDQpIC0tLT4gKDUpICJSZXNvbHZlIiBbaGVyZV0KKyAgICAvLyAg
ICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAg
ICAgICstPiAoNikgIkVycm9yIgorICAgIC8vCisgICAgLy8gQ29uc2lkZXIgdGhlIGFib3ZlIGdy
YXBoLiBUaGUgbnVtYmVycyByZXByZXNlbnRzIHRoZSBtb2R1bGVzLiBOb3cgd2UgYXJlIFtoZXJl
XS4KKyAgICAvLyBJZiB3ZSBvbmx5IGhvbGQgdGhlIGdsb2JhbCByZXNvbHV0aW9uIHJlc3VsdCBk
dXJpbmcgdGhlIHJlc29sdmVFeHBvcnQgb3BlcmF0aW9uLCBbaGVyZV0sCisgICAgLy8gd2UgZGVj
aWRlIHRoZSBlbnRpcmUgcmVzdWx0IG9mIHJlc29sdmVFeHBvcnQgaXMgIkFtYmlndW91cyIsIGJl
Y2F1c2UgdGhlcmUgYXJlIG11bHRpcGxlCisgICAgLy8gIlJlc2xvdmUiIChpbiBtb2R1bGUgKDIp
IGFuZCAoNSkpLiBIb3dldmVyLCB0aGlzIHNob3VsZCBiZWNvbWUgIkVycm9yIiBiZWNhdXNlICg2
KSB3aWxsCisgICAgLy8gcHJvcGFnYXRlICJFcnJvciIgc3RhdGUgdG8gdGhlICg0KSwgKDQpIHdp
bGwgYmVjb21lICJFcnJvciIgYW5kIHRoZW4sICgxKSB3aWxsIGJlY29tZQorICAgIC8vICJFcnJv
ciIuIFdlIHNob3VsZCBhZ2dyZWdhdGUgdGhlIHJlc3VsdHMgYXQgdGhlIHN0YXIgZXhwb3J0cyBw
b2ludCAoKDQpIGFuZCAoMSkpLgorICAgIC8vCisgICAgLy8gVXN1YWxseSwgYm90aCAiRXJyb3Ii
IGFuZCAiQW1iaWd1b3VzIiBzdGF0ZXMgd2lsbCB0aHJvdyB0aGUgc3ludGF4IGVycm9yLiBTbyBl
eGNlcHQgZm9yIHRoZSBjb250ZW50IG9mIHRoZQorICAgIC8vIGVycm9yIG1lc3NhZ2UsIHRoZXJl
IGFyZSBubyBkaWZmZXJlbmNlLiAoQW5kIGlmIHdlIGZpeCB0aGUgKDYpIHRoYXQgcmFpc2VzICJF
cnJvciIsIG5leHQsIGl0IHdpbGwgcHJvZHVjZQorICAgIC8vIHRoZSAiQW1iaWd1b3VzIiBlcnJv
ciBkdWUgdG8gKDUpLiBBbnl3YXksIHVzZXIgbmVlZCB0byBmaXggdGhlIGJvdGguIFNvIHdoaWNo
IGVycm9yIHNob3VsZCBiZSByYWlzZWQgYXQgZmlyc3QKKyAgICAvLyBkb2Vzbid0IG1hdHRlciBz
byBtdWNoLgorICAgIC8vCisgICAgLy8gSG93ZXZlciwgdGhpcyBtYXkgYmVjb21lIHRoZSBwcm9i
bGVtIHVuZGVyIHRoZSBtb2R1bGUgbmFtZXNwYWNlIGNyZWF0aW9uLgorICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZXRtb2R1bGVuYW1l
c3BhY2UKKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xOCwgc3RlcCAzLWQtaWkKKyAgICAvLyBIZXJl
LCB3ZSBkaXN0aW5ndWlzaCAiQW1iaWd1b3VzIiBhbmQgIkVycm9yIi4gV2hlbiAiRXJyb3IiIHN0
YXRlIGlzIHByb2R1Y2VkLCB3ZSBuZWVkIHRvIHRocm93IHRoZSBwcm9wYWdhdGVkIGVycm9yLgor
ICAgIC8vIEJ1dCBpZiAiQW1iaWd1b3VzIiBzdGF0ZSBjb21lcywgd2UganVzdCBpZ25vcmUgdGhl
IHJlc3VsdC4KKyAgICAvLyBUbyBmb2xsb3cgdGhlIHJlcXVpcmVtZW50IHN0cmljdGx5LCBpbiB0
aGlzIGltcGxlbWVudGF0aW9uLCB3ZSBrZWVwIHRoZSBsb2NhbCByZXNvbHV0aW9uIHJlc3VsdCB0
byBwcm9kdWNlIHRoZQorICAgIC8vIGNvcnJlY3QgcmVzdWx0IHVuZGVyIHRoZSBhYm92ZSBjb21w
bGV4IGNhc2VzLgorCisgICAgdXNpbmcgUmVzb2x1dGlvbiA9IEpTTW9kdWxlUmVjb3JkOjpSZXNv
bHV0aW9uOworICAgIHR5cGVkZWYgV1RGOjpIYXNoU2V0PFJlc29sdmVRdWVyeSwgUmVzb2x2ZVF1
ZXJ5SGFzaCwgV1RGOjpDdXN0b21IYXNoVHJhaXRzPFJlc29sdmVRdWVyeT4+IFJlc29sdmVTZXQ7
CisgICAgZW51bSBjbGFzcyBUeXBlIHsgUXVlcnksIEluZGlyZWN0RmFsbGJhY2ssIEdhdGhlclN0
YXJzIH07CisgICAgc3RydWN0IFRhc2sgeworICAgICAgICBSZXNvbHZlUXVlcnkgcXVlcnk7Cisg
ICAgICAgIFR5cGUgdHlwZTsKKyAgICB9OworCisgICAgVmVjdG9yPFRhc2ssIDg+IHBlbmRpbmdU
YXNrczsKKyAgICBSZXNvbHZlU2V0IHJlc29sdmVTZXQ7CisgICAgSGFzaFNldDxKU01vZHVsZVJl
Y29yZCo+IHN0YXJTZXQ7CisgICAgVmVjdG9yPFJlc29sdXRpb24sIDg+IGZyYW1lczsKKworICAg
IGZyYW1lcy5hcHBlbmQoUmVzb2x1dGlvbjo6bm90Rm91bmQoKSk7CisKKyAgICAvLyBDYWxsIHdo
ZW4gdGhlIHF1ZXJ5IGlzIG5vdCByZXNvbHZlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUuCisgICAg
Ly8gSXQgd2lsbCBlbnF1ZXVlIHRoZSBzdGFyIHJlc29sdXRpb24gcmVxdWVzdHMuIFJldHVybiAi
ZmFsc2UiIGlmIHRoZSBlcnJvciBvY2N1cnMuCisgICAgYXV0byByZXNvbHZlTm9uTG9jYWwgPSBb
Jl0oY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSkgLT4gYm9vbCB7CisgICAgICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZXNvbHZlZXhw
b3J0CisgICAgICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjMsIHN0ZXAgNgorICAgICAgICAvLyBJ
ZiB0aGUgImRlZmF1bHQiIG5hbWUgaXMgbm90IHJlc29sdmVkIGluIHRoZSBjdXJyZW50IG1vZHVs
ZSwgd2UgbmVlZCB0byB0aHJvdyBhbiBlcnJvciBhbmQgc3RvcCByZXNvbHV0aW9uIGltbWVkaWF0
ZWx5LAorICAgICAgICAvLyBSYXRpb25hbGUgdG8gdGhpcyBlcnJvcjogQSBkZWZhdWx0IGV4cG9y
dCBjYW5ub3QgYmUgcHJvdmlkZWQgYnkgYW4gZXhwb3J0ICouCisgICAgICAgIGlmIChxdWVyeS5l
eHBvcnROYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZhdWx0S2V5d29yZC5pbXBsKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gc3RlcCA3LCBJZiBleHBv
cnRTdGFyU2V0IGNvbnRhaW5zIG1vZHVsZSwgdGhlbiByZXR1cm4gbnVsbC4KKyAgICAgICAgaWYg
KCFzdGFyU2V0LmFkZChxdWVyeS5tb2R1bGVSZWNvcmQpLmlzTmV3RW50cnkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBFbnF1ZXVlIHRoZSB0YXNrIHRvIGdhdGhlciB0
aGUgcmVzdWx0cyBvZiB0aGUgc3RhcnMuCisgICAgICAgIC8vIEFuZCBhcHBlbmQgdGhlIG5ldyBS
ZXNvbHV0aW9uIGZyYW1lIHRvIGdhdGhlciB0aGUgbG9jYWwgcmVzdWx0IG9mIHRoZSBzdGFycy4K
KyAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgcXVlcnksIFR5cGU6OkdhdGhlclN0
YXJzIH0pOworICAgICAgICBmcmFtZXMuYXBwZW5kKFJlc29sdXRpb246Om5vdEZvdW5kKCkpOwor
CisgICAgICAgIC8vIEVucXVldWUgdGhlIHRhc2tzIGluIHJldmVyc2Ugb3JkZXIuCisgICAgICAg
IGZvciAoYXV0byBpdGVyYXRvciA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJp
ZXMoKS5yYmVnaW4oKSwgZW5kID0gcXVlcnkubW9kdWxlUmVjb3JkLT5zdGFyRXhwb3J0RW50cmll
cygpLnJlbmQoKTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBzdGFyTW9kdWxlTmFtZSA9ICppdGVyYXRv
cjsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZVJlY29yZCA9IHF1
ZXJ5Lm1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBJZGVudGlm
aWVyOjpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7CisgICAgICAgICAgICBw
ZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBSZXNvbHZlUXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNv
cmQsIHF1ZXJ5LmV4cG9ydE5hbWUuZ2V0KCkpLCBUeXBlOjpRdWVyeSB9KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50
IHJlc29sdXRpb24gdmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4KKyAgICBhdXRvIGN1cnJlbnRUb3Ag
PSBbJl0gKCkgLT4gUmVzb2x1dGlvbiYgeworICAgICAgICBBU1NFUlQoIWZyYW1lcy5pc0VtcHR5
KCkpOworICAgICAgICByZXR1cm4gZnJhbWVzLmxhc3QoKTsKKyAgICB9OworCisgICAgLy8gTWVy
Z2UgdGhlIGdpdmVuIHJlc29sdXRpb24gdG8gdGhlIGN1cnJlbnQgcmVzb2x1dGlvbiB2YWx1ZSBv
ZiB0aGUgdG9wIGZyYW1lLgorICAgIC8vIElmIHRoZXJlIGlzIGFtYmlndWl0eSwgcmV0dXJuICJm
YWxzZSIuIFdoZW4gdGhlICJmYWxzZSIgaXMgcmV0dXJuZWQsIHdlIHNob3VsZCBtYWtlIHRoZSBy
ZXN1bHQgImFtYmlndW91cyIuCisgICAgYXV0byBtZXJnZVRvQ3VycmVudFRvcCA9IFsmXSAoY29u
c3QgUmVzb2x1dGlvbiYgcmVzb2x1dGlvbikgLT4gYm9vbCB7CisgICAgICAgIGlmIChyZXNvbHV0
aW9uLnR5cGUgPT0gUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICBpZiAoY3VycmVudFRvcCgpLnR5cGUgPT0gUmVzb2x1dGlvbjo6
VHlwZTo6Tm90Rm91bmQpIHsKKyAgICAgICAgICAgIGN1cnJlbnRUb3AoKSA9IHJlc29sdXRpb247
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjdXJy
ZW50VG9wKCkubW9kdWxlUmVjb3JkICE9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkIHx8IGN1cnJl
bnRUb3AoKS5sb2NhbE5hbWUgIT0gcmVzb2x1dGlvbi5sb2NhbE5hbWUpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIHBlbmRp
bmdUYXNrcy5hcHBlbmQoVGFzayB7IHJvb3QsIFR5cGU6OlF1ZXJ5IH0pOworICAgIHdoaWxlICgh
cGVuZGluZ1Rhc2tzLmlzRW1wdHkoKSkgeworICAgICAgICBjb25zdCBUYXNrIHRhc2sgPSBwZW5k
aW5nVGFza3MudGFrZUxhc3QoKTsKKyAgICAgICAgY29uc3QgUmVzb2x2ZVF1ZXJ5JiBxdWVyeSA9
IHRhc2sucXVlcnk7CisKKyAgICAgICAgc3dpdGNoICh0YXNrLnR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBUeXBlOjpRdWVyeTogeworICAgICAgICAgICAgaWYgKCFyZXNvbHZlU2V0LmFkZCh0YXNrLnF1
ZXJ5KS5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gcXVlcnkubW9kdWxlUmVjb3JkOworICAg
ICAgICAgICAgY29uc3QgT3B0aW9uYWw8SlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5PiBvcHRp
b25hbEV4cG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkLT50cnlHZXRFeHBvcnRFbnRyeShxdWVyeS5l
eHBvcnROYW1lLmdldCgpKTsKKyAgICAgICAgICAgIGlmICghb3B0aW9uYWxFeHBvcnRFbnRyeSkg
eworICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIG1hdGNoZWQgZXhwb3J0ZWQgYmlu
ZGluZyBpbiB0aGUgY3VycmVudCBtb2R1bGUsCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0
byBsb29rIGludG8gdGhlIHN0YXJzLgorICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZU5vbkxv
Y2FsKHRhc2sucXVlcnkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6
ZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5JiBleHBvcnRFbnRyeSA9
ICpvcHRpb25hbEV4cG9ydEVudHJ5OworICAgICAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50
eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlw
ZTo6TG9jYWw6CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6
VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRUb3Ao
UmVzb2x1dGlvbiB7IFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkLCBtb2R1bGVSZWNvcmQsIGV4
cG9ydEVudHJ5LmxvY2FsTmFtZSB9KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29s
dXRpb246OmFtYmlndW91cygpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6IHsK
KyAgICAgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNvcmQgPSBt
b2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgZXhwb3J0RW50cnku
bW9kdWxlTmFtZSk7CisKKyAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBpbXBvcnRlZCBtb2R1
bGUgZG9lcyBub3QgcHJvZHVjZSBhbnkgcmVzb2x2ZWQgYmluZGluZywgd2UgbmVlZCB0byBsb29r
IGludG8gdGhlIHN0YXJzIGluIHRoZSAqY3VycmVudCoKKyAgICAgICAgICAgICAgICAvLyBtb2R1
bGUuIFRvIGRvIHRoaXMsIHdlIGFwcGVuZCB0aGUgYEluZGlyZWN0RmFsbGJhY2tgIHRhc2sgdG8g
dGhlIHRhc2sgcXVldWUuCisgICAgICAgICAgICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNr
IHsgcXVlcnksIFR5cGU6OkluZGlyZWN0RmFsbGJhY2sgfSk7CisgICAgICAgICAgICAgICAgLy8g
QW5kIGFwcGVuZCB0aGUgbmV3IFJlc29sdXRpb24gZnJhbWUgdG8gY2hlY2sgdGhlIGluZGlyZWN0
IGV4cG9ydCB3aWxsIGJlIHJlc29sdmVkIG9yIG5vdC4KKyAgICAgICAgICAgICAgICBmcmFtZXMu
YXBwZW5kKFJlc29sdXRpb246Om5vdEZvdW5kKCkpOworICAgICAgICAgICAgICAgIHBlbmRpbmdU
YXNrcy5hcHBlbmQoVGFzayB7IFJlc29sdmVRdWVyeShpbXBvcnRlZE1vZHVsZVJlY29yZCwgZXhw
b3J0RW50cnkuaW1wb3J0TmFtZSksIFR5cGU6OlF1ZXJ5IH0pOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFR5cGU6OkluZGlyZWN0RmFsbGJhY2s6IHsKKyAg
ICAgICAgICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBmcmFtZXMu
dGFrZUxhc3QoKTsKKworICAgICAgICAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBSZXNvbHV0
aW9uOjpUeXBlOjpOb3RGb3VuZCkgeworICAgICAgICAgICAgICAgIC8vIEluZGlyZWN0IGV4cG9y
dCBlbnRyeSBkb2VzIG5vdCBwcm9kdWNlIGFueSByZXNvbHZlZCBiaW5kaW5nLgorICAgICAgICAg
ICAgICAgIC8vIFNvIHdlIHdpbGwgaW52ZXN0aWdhdGUgdGhlIHN0YXJzLgorICAgICAgICAgICAg
ICAgIGlmICghcmVzb2x2ZU5vbkxvY2FsKHRhc2sucXVlcnkpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUmVzb2x1dGlvbjo6ZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgaW5kaXJlY3QgZXhwb3J0IGVudHJ5
IHByb2R1Y2VzIFJlc29sdmVkLCB3ZSBzaG91bGQgbWVyZ2UgaXQgdG8gdGhlIHVwcGVyIGZyYW1l
LgorICAgICAgICAgICAgLy8gQW5kIGRvIG5vdCBpbnZlc3RpZ2F0ZSB0aGUgc3RhcnMgb2YgdGhl
IGN1cnJlbnQgbW9kdWxlLgorICAgICAgICAgICAgaWYgKCFtZXJnZVRvQ3VycmVudFRvcChyZXNv
bHV0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb2x1dGlvbjo6YW1iaWd1b3VzKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgVHlwZTo6R2F0
aGVyU3RhcnM6IHsKKyAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBzdGFyIHJlc29sdXRpb24gdG8g
dGhlIHVwcGVyIGZyYW1lLgorICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24g
c3RhclJlc29sdXRpb24gPSBmcmFtZXMudGFrZUxhc3QoKTsKKyAgICAgICAgICAgIGlmICghbWVy
Z2VUb0N1cnJlbnRUb3Aoc3RhclJlc29sdXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBS
ZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlQoZnJhbWVzLnNpemUoKSA9PSAxKTsKKyAgICBy
ZXR1cm4gZnJhbWVzWzBdOworfQorCithdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNvbHZlRXhwb3J0
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSkgLT4gUmVzb2x1
dGlvbgoreworICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9vcChleGVjLCBSZXNvbHZlUXVlcnko
dGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKK30KKwogdm9pZCBKU01vZHVsZVJlY29yZDo6bGlu
ayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNvZGUo
KSk7CkBAIC0xMDEsMTEgKzQyOSwxMjAgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlY3V0YWJsZSk7CisgICAgaW5zdGFu
dGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSk7CiB9CiAKLUpTVmFsdWUgSlNNb2R1
bGVSZWNvcmQ6OmV4ZWN1dGUoRXhlY1N0YXRlKikKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQogewotICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKworICAgIFN5bWJvbFRhYmxlKiBz
eW1ib2xUYWJsZSA9IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5tb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlKCk7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQg
PSBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHN5bWJvbFRhYmxlLCBq
c1REWlZhbHVlKCksIHRoaXMpOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKworICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1
bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0
ZXAgOS4KKyAgICAvLyBFbnN1cmUgYWxsIHRoZSBpbmRpcmVjdCBleHBvcnRzIGFyZSBjb3JyZWN0
bHkgcmVzb2x2ZWQgdG8gdW5pcXVlIGJpbmRpbmdzLgorICAgIC8vIEV2ZW4gaWYgd2UgYXZvaWRl
ZCBkdXBsaWNhdGUgZXhwb3J0cyBpbiB0aGUgcGFyc2VyLCBzdGlsbCBhbWJpZ3VvdXMgZXhwb3J0
cyBvY2N1ciBkdWUgdG8gdGhlIHN0YXIgZXhwb3J0IChgZXhwb3J0ICogZnJvbSAibW9kImApLgor
ICAgIC8vIFdoZW4gd2Ugc2VlIHRoaXMgdHlwZSBvZiBhbWJpZ3VpdHkgZm9yIHRoZSBpbmRpcmVj
dCBleHBvcnRzIGhlcmUsIHRocm93IGEgc3ludGF4IGVycm9yLgorICAgIGZvciAoY29uc3QgYXV0
byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYg
ZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBpZiAoZXhwb3J0RW50cnkudHlwZSA9
PSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0KSB7CisgICAgICAg
ICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVu
dHJ5LmV4cG9ydE5hbWUpOworICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsK
KyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAg
ICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9y
dGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgp
KSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgICAg
IHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBi
aW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSksICIn
IGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlv
bjo6VHlwZTo6RXJyb3I6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBt
YWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fu
bm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZl
ZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0aW9uIDE1
LjIuMS4xNi40IHN0ZXAgMTIuCisgICAgLy8gSW5zdGFudGlhdGUgbmFtZXNwYWNlIG9iamVjdHMg
YW5kIGluaXRpYWxpemUgdGhlIGJpbmRpbmdzIHdpdGggdGhlbSBpZiByZXF1aXJlZC4KKyAgICAv
LyBBbmQgZW5zdXJlIHRoYXQgYWxsIHRoZSBpbXBvcnRzIGNvcnJlY3RseSByZXNvbHZlZCB0byB1
bmlxdWUgYmluZGluZ3MuCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRy
aWVzKSB7CisgICAgICAgIGNvbnN0IEltcG9ydEVudHJ5JiBpbXBvcnRFbnRyeSA9IHBhaXIudmFs
dWU7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZE1vZHVsZSA9IGhvc3RSZXNvbHZl
SW1wb3J0ZWRNb2R1bGUoZXhlYywgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCk7CisgICAgICAg
IGlmIChpbXBvcnRFbnRyeS5pc05hbWVzcGFjZSh2bSkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBNb2R1bGVOYW1lc3BhY2VPYmplY3Qgd2lsbCBiZSBpbXBsZW1lbnRlZC4KKyAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3MDUKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGltcG9ydGVk
TW9kdWxlLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOworICAg
ICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgUmVz
b2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJv
cihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1w
b3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpB
bWJpZ3VvdXM6CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3Ry
aW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0
TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0
aXBsZSBiaW5kaW5ncy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnZGVmYXVs
dCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpS
ZXNvbHZlZDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAgICAvLyBzZWN0
aW9uIDE1LjIuMS4xNi40IHN0ZXAgMTQuCisgICAgLy8gTW9kdWxlIGVudmlyb25tZW50IGNvbnRh
aW5zIHRoZSBoZWFwIGFsbG9jYXRlZCAidmFyIiwgImZ1bmN0aW9uIiwgImxldCIsICJjb25zdCIs
IGFuZCAiY2xhc3MiLgorICAgIC8vIFdoZW4gY3JlYXRpbmcgdGhlIGVudmlyb25tZW50LCB3ZSBp
bml0aWFsaXplZCBhbGwgdGhlIHNsb3RzIHdpdGggZW1wdHksIGl0J3Mgb2sgZm9yIGxleGljYWwg
dmFsdWVzLgorICAgIC8vIEJ1dCBmb3IgInZhciIgYW5kICJmdW5jdGlvbiIsIHdlIHNob3VsZCBp
bml0aWFsaXplIGl0IHdpdGggdW5kZWZpbmVkLiBUaGV5IGFyZSBjb250YWluZWQgaW4gdGhlIGRl
Y2xhcmVkIHZhcmlhYmxlcy4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogbV9kZWNs
YXJlZFZhcmlhYmxlcykgeworICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9s
VGFibGUtPmdldCh2YXJpYWJsZS5rZXkuZ2V0KCkpOworICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0
ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlmICghb2Zmc2V0LmlzU3RhY2soKSkKKyAg
ICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVudmlyb25tZW50LCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tVWlkKGV4ZWMsIHZhcmlhYmxlLmtleS5nZXQoKSksIGpzVW5kZWZpbmVkKCksIGZh
bHNlLCB0cnVlKTsKKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisg
ICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDE2LWEtaXYuCisgICAgLy8gSW5pdGlhbGl6
ZSBoZWFwIGFsbG9jYXRlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisgICAgLy8gVGhleSBjYW4g
YmUgY2FsbGVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgbW9kdWxlIGlzIGV4ZWN1dGVkIHVuZGVy
IGNpcmN1bGFyIGRlcGVuZGVuY2llcy4KKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBudW1iZXJP
ZkZ1bmN0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsg
aSA8IG51bWJlck9mRnVuY3Rpb25zOyArK2kpIHsKKyAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChpKTsKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJv
bFRhYmxlLT5nZXQodW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKS5pbXBsKCkpOwor
ICAgICAgICBWYXJPZmZzZXQgb2Zmc2V0ID0gZW50cnkudmFyT2Zmc2V0KCk7CisgICAgICAgIGlm
ICghb2Zmc2V0LmlzU3RhY2soKSkgeworICAgICAgICAgICAgQVNTRVJUKCF1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS0+bmFtZSgpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBpZiAodm0udHlw
ZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9maWxlcigpKSB7CisgICAgICAgICAgICAg
ICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZSht
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+c291cmNlSUQoKSwKKyAgICAgICAgICAgICAgICAgICAg
dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgpLAor
ICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlwZVByb2Zp
bGluZ0VuZE9mZnNldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNvdXJjZSgpKSwgbW9kdWxl
RW52aXJvbm1lbnQpOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJvbm1l
bnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9uLCBm
YWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX21vZHVsZUVudmlyb25tZW50
LnNldCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOworfQorCitKU1ZhbHVlIEpTTW9kdWxl
UmVjb3JkOjpleGVjdXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBpZiAoIW1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShtX21vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLmdldCgpLCBleGVjLCBtX21vZHVsZUVudmlyb25tZW50LmdldCgpKTsKKyAgICBt
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogc3RhdGljIFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIHVpZCkKQEAgLTEyOSwyMyArNTY2LDI1IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmR1
bXAoKQogICAgICAgICBkYXRhTG9nKCIgICAgICBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShtb2R1
bGVOYW1lKSwgIilcbiIpOwogCiAgICAgZGF0YUxvZygiICAgIEltcG9ydDogIiwgbV9pbXBvcnRF
bnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBtX2ltcG9ydEVudHJpZXMpCi0gICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9ydCgiLCBwcmlu
dGFibGVOYW1lKHBhaXIudmFsdWUuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVO
YW1lKHBhaXIudmFsdWUubG9jYWxOYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKHBh
aXIudmFsdWUubW9kdWxlUmVxdWVzdCksICIpXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBtX2ltcG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgSW1wb3J0RW50cnkmIGltcG9y
dEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHBy
aW50YWJsZU5hbWUoaW1wb3J0RW50cnkuaW1wb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFi
bGVOYW1lKGltcG9ydEVudHJ5LmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFt
ZShpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSwgIilcbiIpOworICAgIH0KIAogICAgIGRhdGFM
b2coIiAgICBFeHBvcnQ6ICIsIG1fZXhwb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbV9leHBvcnRFbnRyaWVzKSB7Ci0gICAgICAg
IGNvbnN0IEV4cG9ydEVudHJ5JiBlbnRyeSA9IHBhaXIudmFsdWU7Ci0gICAgICAgIHN3aXRjaCAo
ZW50cnkudHlwZSkgeworICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZXhwb3J0RW50cnkgPSBw
YWlyLnZhbHVlOworICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKICAgICAgICAg
Y2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwg
IiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50cnkubG9jYWxOYW1lKSwgIilcbiIpOworICAg
ICAgICAgICAgZGF0YUxvZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5h
bWUoZXhwb3J0RW50cnkuZXhwb3J0TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGV4
cG9ydEVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKLSAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5l
eHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVudHJ5Lm1vZHVsZU5hbWUp
LCAiKVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhw
b3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUo
IiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6
Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5kaXJlY3RdICIsICJleHBvcnQoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1l
KGVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9k
dWxlTmFtZSksICIpXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtJbmRpcmVjdF0g
IiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwg
aW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkuaW1wb3J0TmFtZSksICIpLCBtb2R1
bGUoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCA4MWRhMzk2NmU4YzVhOGRhOTMwNGQy
ODJmNGZiY2E5NGYyNGVhZTQ4Li4wODUyMWI0Y2NkM2IwNGFhZWUwM2IzYjQ0MWEyMWMxZjZkNDE5
NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc4LDggKzc5
LDggQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogICAgIH07CiAKICAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0OwotICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwg
SWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+
IEltcG9ydE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRy
YWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0RW50cmllczsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50
aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBv
cnRFbnRyaWVzOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIApAQCAtMTAwLDI1ICsxMDEs
NDkgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
ewogICAgIHZvaWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKICAgICB2b2lk
IGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7CiAKLSAgICBjb25zdCBJbXBvcnRF
bnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
bG9jYWxOYW1lKTsKKyAgICBPcHRpb25hbDxJbXBvcnRFbnRyeT4gdHJ5R2V0SW1wb3J0RW50cnko
VW5pcXVlZFN0cmluZ0ltcGwqIGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8RXhwb3J0RW50cnk+
IHRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKTsKIAogICAg
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNv
ZGU7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkoKSBjb25zdCB7IHJldHVybiBt
X21vZHVsZUtleTsgfQogICAgIGNvbnN0IE9yZGVyZWRJZGVudGlmaWVyU2V0JiByZXF1ZXN0ZWRN
b2R1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRNb2R1bGVzOyB9Ci0gICAgY29uc3Qg
RXhwb3J0TWFwJiBleHBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRFbnRyaWVz
OyB9Ci0gICAgY29uc3QgSW1wb3J0TWFwJiBpbXBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4g
bV9pbXBvcnRFbnRyaWVzOyB9CisgICAgY29uc3QgRXhwb3J0RW50cmllcyYgZXhwb3J0RW50cmll
cygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0RW50cmllczsgfQorICAgIGNvbnN0IEltcG9ydEVu
dHJpZXMmIGltcG9ydEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydEVudHJpZXM7IH0K
KyAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgc3RhckV4cG9ydEVudHJpZXMoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJFeHBvcnRFbnRyaWVzOyB9CiAKICAgICBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRW
YXJpYWJsZXM7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFi
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzOyB9CiAKICAgICB2b2lkIGR1
bXAoKTsKIAorICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50KCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX21vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgcmV0dXJu
IG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7CisgICAgfQogCiAgICAgdm9pZCBsaW5rKEV4ZWNT
dGF0ZSopOwogICAgIEpTVmFsdWUgZXhlY3V0ZShFeGVjU3RhdGUqKTsKIAogICAgIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCk7IH0KIAorICAgIHN0cnVjdCBSZXNvbHV0
aW9uIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgUmVzb2x2ZWQsIE5vdEZvdW5kLCBBbWJp
Z3VvdXMsIEVycm9yIH07CisKKyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gbm90Rm91bmQoKTsK
KyAgICAgICAgc3RhdGljIFJlc29sdXRpb24gZXJyb3IoKTsKKyAgICAgICAgc3RhdGljIFJlc29s
dXRpb24gYW1iaWd1b3VzKCk7CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBKU01vZHVs
ZVJlY29yZCogbW9kdWxlUmVjb3JkOworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAg
ICB9OworCisgICAgUmVzb2x1dGlvbiByZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydE5hbWUpOworICAgIFJlc29sdXRpb24gcmVzb2x2ZUltcG9ydChFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpOworCisgICAgSlNNb2R1bGVSZWNv
cmQqIGhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlTmFtZSk7CisKIHByaXZhdGU6CiAgICAgSlNNb2R1bGVSZWNvcmQoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJl
ZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykK
ICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCkBAIC0xMzQsNyArMTU5LDcgQEAgY2xhc3Mg
SlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgSlNNb2R1bGVSZWNvcmQqIGhvc3RSZXNvbHZl
SW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7
CisgICAgdm9pZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSopOwogCiAgICAgLy8gVGhlIGxvYWRlciByZXNvbHZlcyB0aGUgZ2l2ZW4g
bW9kdWxlIG5hbWUgdG8gdGhlIG1vZHVsZSBrZXkuIFRoZSBtb2R1bGUga2V5IGlzIHRoZSB1bmlx
dWUgdmFsdWUgdG8gcmVwcmVzZW50IHRoaXMgbW9kdWxlLgogICAgIElkZW50aWZpZXIgbV9tb2R1
bGVLZXk7CkBAIC0xNDQsNDYgKzE2OSwzNyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xh
cmVkVmFyaWFibGVzOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9sZXhpY2FsVmFyaWFibGVz
OwogCisgICAgLy8gQ3VycmVudGx5LCB3ZSBkb24ndCBrZWVwIHRoZSBvY2N1cnJlbmNlIG9yZGVy
IG9mIHRoZSBpbXBvcnQgLyBleHBvcnQgZW50cmllcy4KKyAgICAvLyBTbywgd2UgZG9lcyBub3Qg
Z3VhcmFudGVlIHRoZSBvcmRlciBvZiB0aGUgZXJyb3JzLgorICAgIC8vIGUuZy4gVGhlIGltcG9y
dCBkZWNsYXJhdGlvbiB0aGF0IG9jY3VyciBsYXRlciB0aGFuIHRoZSBhbm90aGVyIGltcG9ydCBk
ZWNsYXJhdGlvbiBtYXkKKyAgICAvLyAgICAgIHRocm93IHRoZSBlcnJvciBldmVuIGlmIHRoZSBm
b3JtZXIgaW1wb3J0IGRlY2xhcmF0aW9uIGFsc28gaGFzIHRoZSBpbnZhbGlkIGNvbnRlbnQuCisg
ICAgLy8KKyAgICAvLyAgICAgIGltcG9ydCAuLi4gLy8gKDEpIHRoaXMgaGFzIHNvbWUgaW52YWxp
ZCBjb250ZW50LgorICAgIC8vICAgICAgaW1wb3J0IC4uLiAvLyAoMikgdGhpcyBhbHNvIGhhcyBz
b21lIGludmFsaWQgY29udGVudC4KKyAgICAvLworICAgIC8vICAgICAgSW4gdGhlIGFib3ZlIGNh
c2UsICgyKSBtYXkgdGhyb3cgdGhlIGVycm9yIGVhcmxpZXIgdGhhbiAoMSkKKyAgICAvLworICAg
IC8vIEJ1dCwgaW4gdGhlIGFsbCBjYXNlcywgd2Ugd2lsbCB0aHJvdyB0aGUgc3ludGF4IGVycm9y
LiBTbyBleGNlcHQgZm9yIHRoZSBjb250ZW50IG9mIHRoZSBzeW50YXggZXJyb3IsCisgICAgLy8g
dGhlcmUgYXJlIG5vIGRpZmZlcmVuY2UuCisKICAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9y
dEVudHJ5LgotICAgIEltcG9ydE1hcCBtX2ltcG9ydEVudHJpZXM7CisgICAgSW1wb3J0RW50cmll
cyBtX2ltcG9ydEVudHJpZXM7CiAKICAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRy
eS4KLSAgICBFeHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOworICAgIEV4cG9ydEVudHJpZXMgbV9l
eHBvcnRFbnRyaWVzOwogCi0gICAgSWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOwor
ICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgcmVzb2x2ZUV4cG9ydCByZXF1
aXJlcyBpdC4KKyAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3N0YXJFeHBvcnRFbnRyaWVzOwog
CiAgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5jZSB0aGUgbW9kdWxlIGxvYWRl
ciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9yZGVyLgogICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFs
dWF0aW9uCiAgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1ZXN0ZWRNb2R1bGVzOwogCi0g
ICAgV3JpdGVCYXJyaWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dyYW1F
eGVjdXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxKU01hcD4gbV9kZXBlbmRlbmNpZXNNYXA7Ci19
OwogCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9yZXF1ZXN0ZWRNb2R1bGVzLmFk
ZChtb2R1bGVOYW1lLmltcGwoKSk7Ci19Ci0KLWlubGluZSB2b2lkIEpTTW9kdWxlUmVjb3JkOjph
ZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCi17Ci0gICAgbV9pbXBvcnRF
bnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSk7Ci19Ci0KLWlubGluZSB2
b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50
cnkpCi17Ci0gICAgbV9leHBvcnRFbnRyaWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwoKSwg
ZW50cnkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVu
dHJ5KGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCi17Ci0gICAgbV9zdGFyRXhwb3J0RW50
cmllcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgYXV0byBKU01vZHVsZVJl
Y29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
bG9jYWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRyeSYKLXsKLSAgICByZXR1cm4gKCptX2ltcG9y
dEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsKLX0KKyAgICBXcml0ZUJhcnJpZXI8TW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CisgICAgV3Jp
dGVCYXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+IG1fbW9kdWxlRW52aXJvbm1lbnQ7Cit9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcAppbmRleCAxMjhhNjAyMjk1OWM5MDdhZGE3ZmMyMDczNDI2YjcyYjc1ZTE5ZWYyLi4w
ODc5NTNlMDE2NTgwOGNhY2E2NGZhNWY0ZTQwZDUyODE0NmM5NWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgor
I2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29y
ZC5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
CkBAIC02NSw2ICs2NywxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgY29uc3QgSWRlbnRpZgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoSlNNb2R1bGVFbnZpcm9ubWVu
dCogbW9kdWxlRW52aXJvbm1lbnQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PihzY29wZSkpIHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBt
b2R1bGVFbnZpcm9ubWVudC0+bW9kdWxlUmVjb3JkKCk7CisgICAgICAgICAgICBKU01vZHVsZVJl
Y29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlSW1wb3J0
KGV4ZWMsIGlkZW50KTsKKyAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7CisgICAgICAgICAgICAgICAg
SlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkUmVjb3JkID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7
CisgICAgICAgICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRFbnZpcm9ubWVu
dCA9IGltcG9ydGVkUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgICAgICAgICAgICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBpbXBvcnRlZEVudmlyb25tZW50LT5zeW1ib2xUYWJs
ZSgpLT5nZXQocmVzb2x1dGlvbi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcCht
YWtlVHlwZShNb2R1bGVWYXIsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIGlt
cG9ydGVkRW52aXJvbm1lbnQsIGVudHJ5LndhdGNocG9pbnRTZXQoKSwgZW50cnkuc2NvcGVPZmZz
ZXQoKS5vZmZzZXQoKSwgcmVzb2x1dGlvbi5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlm
IChsZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPnVzZXNOb25TdHJpY3RFdmFsKCkp
CiAgICAgICAgICAgICBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyA9IHRydWU7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1
bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDI4ZTBiYWRhYTcyYWYzMGNjNzcxOTE5NjA0YTYxMmQ2
Y2RiNzNlMDcuLjZlNmY5ZjlhNmRhNjE4MTJlM2MyMWFkNDM2NmZkODdiN2NkMTQ3ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9taXNlLmgiCiAj
aW5jbHVkZSAiSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTTWFwLmgi
CisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVj
b3JkLmgiCiAjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260536</attachid>
            <date>2015-09-03 16:21:22 -0700</date>
            <delta_ts>2015-09-03 19:05:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148053-20150903162121.patch</filename>
            <type>text/plain</type>
            <size>111679</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NmM4NDdhN2IwMjhjNWJlMjgzYjE5ZjQ5ZDE3MjY3NTcwMTY0MjlkLi5kMmI3ZGZiMWVhMjdmY2Q2
MGNlMmZiOWViZmEzZDkwMzRkMTJmYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTUgQEAKKzIwMTUtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJp
bmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIE1vZHVsZSBFbnZpcm9ubWVu
dCBiaW5kaW5nIGluc3RhbnRpYXRpb24uCisgICAgICAgIEFuZCBzaW5jZSB0aGUgbGF5b3V0IG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaXMgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIHZhcmlh
YmxlCisgICAgICAgIGxvb2sgdXAgaW4gTExJbnQgLyBCYXNlbGluZSAvIERGRywgd2UgaW1wbGVt
ZW50IHRoZSBleGVjdXRpb24gcGFydCBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAgICAgIEZvciB0
aGUgaW5zdGFudGlhdGlvbiwgd2UgaW1wbGVtZW50IHRoZSBzZXZlcmFsIG9wZXJhdGlvbnMgKGxp
a2UgcmVzb2x2ZUV4cG9ydCkKKyAgICAgICAgc3BlY2lmaWVkIGluIHRoZSBzcGVjLiBUaGUgb3Jp
Z2luYWwgYWxnb3JpdGhtIGNvbnRhaW5zIHRoZSByZWN1cnNpdmUgY2FsbCwgYnV0IGl0IGlzIG5v
dAorICAgICAgICBnb29kIGZvciBDKysgY29kZS4gV2UgZmxhdHRlbiB0aGUgYWxnb3JpdGhtIGJ5
IHVzaW5nIHRoZSBtYW51YWwgZnJhbWVzIHRvIGF2b2lkIHJlY3Vyc2lvbnMuCisgICAgICAgIEJ5
IGxldmVyYWdpbmcgdGhlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBieSB0aGUgYWJvdmUgb3BlcmF0
aW9ucywgd2UgaW5zdGFudGlhdGUgYW5kCisgICAgICAgIGluaXRpYWxpemUgdGhlIHNsb3RzIG9m
IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgaW4gdGhpcyBwYXRjaC4gSXQgd2lsbCBiZSBp
bXBsZW1lbnRlZAorICAgICAgICBhbmQgaW5zdGFudGlhdGVkIGluIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW4gdGhlIHN1YnNlcXVlbnQgcGF0Y2hbMV0uCisKKyAgICAgICAgVG8gbG9vayB1cCB0
aGUgaW1wb3J0ZWQgbW9kdWxlIGJpbmRpbmdzIGluIHRoZSBKUyBjb2RlLCB3ZSBpbnRyb2R1Y2Ug
dGhlICJNb2R1bGVWYXIiIHJlc29sdmUKKyAgICAgICAgdHlwZSBmb3IgcmVzb2x2ZV9zY29wZSwg
Z2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4gVGhpcyAiTW9kdWxlVmFyIiB3aWxsIGJl
IGZpbGxlZAorICAgICAgICB3aGVuIGxpbmtpbmcgdGhlIENvZGVCbG9jay4gVGhpcyB0eXBlIGlz
IHVzZWQgd2hlbiB0cmVhdGluZyB0aGUgaW1wb3J0ZWQgYmluZGluZ3MuCisKKyAgICAgICAgMS4g
Rm9yIHJlc29sdmVfc2NvcGUsIHdoZW4gbGlua2luZywgd2UgcmVzb2x2ZSB0aGUgYWN0dWFsIG1v
ZHVsZSBlbnZpcm9ubWVudCB3aGVyZQorICAgICAgICAgICAgbG9va2VkIHVwIHZhcmlhYmxlIHJl
c2lkZXMgYW5kIHN0b3JlIGl0IGRpcmVjdGx5IHRvIHRoZSBpbnN0cnVjdGlvbi4gQW5kIHJlc29s
dmVfc2NvcGUKKyAgICAgICAgICAgIHNpbXBseSByZXRyaWV2ZSB0aGUgc3RvcmVkIHBvaW50ZXIg
ZnJvbSB0aGUgaW5zdHJ1Y3Rpb24uCisKKyAgICAgICAgMi4gRm9yIGdldF9mcm9tX3Njb3BlLCBz
aW5jZSAiTW9kdWxlVmFyIiBiZWhhdmlvciBmb3IgZ2V0X2Zyb21fc2NvcGUgaXMgY29tcGxldGVs
eSBzYW1lCisgICAgICAgICAgICB0byB0aGUgIkNsb3N1cmVWYXIiLCB3ZSBqdXN0IHN0b3JlICJD
bG9zdXJlVmFyIiBmb3IgZ2V0X2Zyb21fc2NvcGUgdG8gZWxpbWluYXRlCisgICAgICAgICAgICB1
bm5lY2Vzc2FyeSBicmFuY2ggaW4gTExJbnQgbGF5ZXIuCisKKyAgICAgICAgMy4gRm9yIHB1dF90
b19zY29wZSwgd2UgYWx3YXlzIGVtaXQgdGhlIGZ1bmN0aW9uIGNhbGwgdGhhdCBpbW1lZGlhdGVs
eSByYWlzZXMgdGhlIGVycm9yLgorICAgICAgICAgICAgQmVjYXVzZSBhbGwgdGhlIGltcG9ydGVk
IGJpbmRpbmdzIGFyZSBpbW11dGFibGUgYW5kIG1vZHVsZSBjb2RlIGlzIGFsd2F5cyBzdHJpY3Qg
Y29kZS4KKyAgICAgICAgICAgIEluIERGRywgd2UganVzdCBlbWl0IHRoZSBGb3JjZU9TUkV4aXQu
IFdlIGRvbid0IG1ha2UgcHV0X3RvX3Njb3BlIHdpdGggIk1vZHVsZVZhciIKKyAgICAgICAgICAg
ICJDYW5ub3RDb21waWxlIiBiZWNhdXNlIGl0IGRpc2FibGVzIERGRyBjb21waWxpbmcgZm9yIHRo
ZSBmdW5jdGlvbiBldmVuIGlmIHRoaXMKKyAgICAgICAgICAgIHByb2JsZW1hdGljIGluc3RydWN0
aW9uIGlzIG5ldmVyIGV4ZWN1dGVkLgorCisgICAgICAgIEV4cG9ydGVkIG1vZHVsZSB2YXJpYWJs
ZXMgaW5zaWRlIHRoZSBvcmlnaW5hbCBtb2R1bGUgZW52aXJvbm1lbnQgYXJlIGp1c3QgdHJlYXRl
ZCBhcyB0aGUKKyAgICAgICAgdXN1YWwgaGVhcCB2YXJpYWJsZXMuIFNvIHRoZSB0eXBlcyBmb3Ig
Y2xvc3VyZSB2YXJpYWJsZXMgYXJlIGp1c3QgdXNlZC4gKCJDbG9zdXJlVmFyIiBldGMuKQorCisg
ICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODcw
NQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2Zyb21fc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Jlc29s
dmVfc2NvcGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZXhw
b3J0VmFyaWFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OnRo
cm93U3ludGF4RXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y2xl
YXJDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0dldFB1dEluZm8uaDoKKyAgICAgICAgKEpTQzo6cmVzb2x2ZVR5cGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6bWFrZVR5cGUpOgorICAgICAgICAoSlNDOjpuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyk6CisgICAgICAgIChKU0M6OlJlc29sdmVPcDo6UmVzb2x2ZU9wKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oLgorICAgICAgICAoSlNDOjpKU01vZHVs
ZUVudmlyb25tZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUVudmlyb25tZW50Ojpv
ZmZzZXRPZk1vZHVsZVJlY29yZCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6
OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9k
dWxlUmVjb3JkKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9ubWVudDo6bW9kdWxlUmVj
b3JkU2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52
aXJvbm1lbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAg
ICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OmFkZEltcG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmFk
ZEV4cG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5OjpSZXNvbHZlUXVlcnkp
OgorICAgICAgICAoSlNDOjpSZXNvbHZlUXVlcnk6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgIChK
U0M6OlJlc29sdmVRdWVyeTo6aXNEZWxldGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpSZXNvbHZl
UXVlcnlIYXNoOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZVF1ZXJ5SGFzaDo6ZXF1YWwp
OgorICAgICAgICAoSlNDOjpyZXNvbHZlRXhwb3J0TG9vcCk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRp
YXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZHVtcCk6CisgICAgICAgICogcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhwb3J0
RW50cmllcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbXBvcnRFbnRyaWVzKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OnN0YXJFeHBvcnRFbnRyaWVzKToKKyAgICAg
ICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Om1vZHVsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjphZGRTdGFyRXhwb3J0RW50cnkpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0QWNj
ZXNzKToKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdFZhcmlhYmxlc1VuZGVyVERaKToK
KyAgICAgICAgKEpTQzo6SlNTY29wZTo6aXNNb2R1bGVTY29wZSk6CisgICAgICAgICogcnVudGlt
ZS9KU1Njb3BlLmg6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgor
CiAyMDE1LTA5LTAzICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IEJsb2NrIHNjb3BlZCB2YXJpYWJsZXMgc2hvdWxkIGJlIHZpc2libGUgYWNyb3NzIHNjcmlwdHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyZDMwYmI5MTc1NTcyNDQzNDYz
NGRhMTdmMzJkOTZhODZlMGRjZTc0Li40N2UwODMzNjg5MzNlNjYzM2MyZmNhYzkzNWZhNDU2Njc1
NWYyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MzgsNiArNTM4
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNM
b2NrLmNwcAogICAgIHJ1bnRpbWUvSlNNYXAuY3BwCiAgICAgcnVudGltZS9KU01hcEl0ZXJhdG9y
LmNwcAorICAgIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKICAgICBydW50aW1lL0pT
TW9kdWxlUmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKICAg
ICBydW50aW1lL0pTTm90QW5PYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagppbmRleCA0MmNjNWY1YTg5MmQzNTgwMTE2OTc0ZDJiYzFiNWZlM2I1ZjEzMTdjLi4x
MDQ1ZmIwOTEyODU5NzI1ZWI1ZGU5MDdhNGQwODQ0ZmY2MWRiOWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTc4Nyw2ICs3ODcsNyBAQAogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEpTTWFwSXRlcmF0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5jcHAiIC8+CkBAIC0xNjQz
LDYgKzE2NDQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xvY2su
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5o
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IDVkYTRmZTM0OTM0NzM5YmIwNmFlMDc0OGUzZjk4MmM1OWMyNjRlOTcuLmNmOWM0ZGE2
YjNiMjhjMTkxY2RjZWM2Zjc4NjNmNjJiYjM1ZTQ1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcyOSw2ICs3MjksOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5jcHAiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0zNTE0LDYgKzM1MTcsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYxZmQz
YjViOWZjZjJhZDg2OTE1MTE4YzQ5OGVkNDdmNzY1MTZiNDUuLjQyNTcyZGJjYjA0NTM3NTEyOTlh
NDkwMjdlNjU4Njc5OTcxZjgwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NzI5LDYgKzE3MjksOCBAQAogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFs
eXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICov
OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFC
ODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CisJCUUzRDIz
OUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVG
NjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCAqLzsgfTsKIAkJRTNFRjg4NzUxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5REMx
NkIxMkVGMjkzRTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5REMxNTUxMkVGMjc3MjAwMTg0
QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwICovOyB9OwpAQCAtMzU5Myw2ICszNTk1LDgg
QEAKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYz
M0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDIzOUM3MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODczMUI2
NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00Nzg2LDYg
KzQ3OTAsOCBAQAogCQkJCUE3MDA4NzQwMTdDQkU4RUIwMEMzRTY0MyAvKiBKU01hcC5oICovLAog
CQkJCUE3NERFRjhGMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmNwcCAqLywKIAkJ
CQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAorCQkJCUUz
RDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLywKKwkJ
CQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovLAog
CQkJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8sCiAJ
CQkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJ
RTMzRThEMUExQjkwMTNDMzAwMzQ2QjUyIC8qIEpTTmF0aXZlU3RkRnVuY3Rpb24uY3BwICovLApA
QCAtNjE1MCw2ICs2MTU2LDcgQEAKIAkJCQkwRjJCOUNFOTE5RDBCQTdEMDBCMUQxQjUgLyogREZH
T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEOUEyOTgx
N0EwQkM3NDAwRUUyNjE4IC8qIERGR0xJQ01QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdE
ODlDRkMxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJv
bm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjBGMTlCMTZCNzI5RkEwMDVERjk1QiAvKiBE
RkdMb25nTGl2ZWRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5RkI4NjgxQUUzMzVDNjAw
MzlEMDY5IC8qIEpTV2Vha1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc2N0I1QjYxN0EwQjk2
NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKQEAgLTczOTgsNiArNzQwNSw3IEBACiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8q
IFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QjU4MjY5
MTREMjc5NzAwMEE5QzMwNiAvKiBDb2RlUHJvZmlsaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGOEY5NDNDMTY2NzYzMTMwMEQ2MTk3MSAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQyMTY2NzYzMzUwMEQ2MTk3
MSAvKiBDb2RlVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDMTEwN0VDMzc2MDA0
MjdBNDggLyogQ29tbW9uSWRlbnRpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5QzVF
NUUxOEUzNUY1RTAwRDQzMUMzIC8qIEZUTERXQVJGUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGYx
MjA0NmNhN2EwMmY0NzdhMzY1NWMwNDkzYzkyNmVhMGYyZjkwZGMuLjYzNDUwM2VlZjkyYmI4OWVi
Y2NlZmNlM2IwYWQyYzAzZWMzM2ZkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9u
bWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJMTElu
dEVudHJ5cG9pbnQuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgpAQCAtMTc4Niw2ICsxNzg3LDE3IEBAIENvZGVCbG9jazo6Q29kZUJs
b2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGluCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIGNs
b25lZCBzeW1ib2wgdGFibGUgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgc2luY2Ugd2UgbmVl
ZCB0byBpbnN0YW50aWF0ZQorICAgIC8vIHRoZSBtb2R1bGUgZW52aXJvbm1lbnRzIGJlZm9yZSBs
aW5raW5nIHRoZSBjb2RlIGJsb2NrLiBXZSByZXBsYWNlIHRoZSBzdG9yZWQgc3ltYm9sIHRhYmxl
IHdpdGggdGhlIGFscmVhZHkgY2xvbmVkIG9uZS4KKyAgICBpZiAoVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sgPSBqc0R5bmFtaWND
YXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHVubGlua2VkQ29kZUJsb2NrKSkg
eworICAgICAgICBTeW1ib2xUYWJsZSogY2xvbmVkU3ltYm9sVGFibGUgPSBqc0Nhc3Q8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUpLT5tb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlKCk7CisgICAgICAgIGlmIChtX3ZtLT50eXBlUHJvZmlsZXIoKSkgeworICAgICAg
ICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoY2xvbmVkU3ltYm9sVGFibGUtPm1fbG9j
ayk7CisgICAgICAgICAgICBjbG9uZWRTeW1ib2xUYWJsZS0+cHJlcGFyZUZvclR5cGVQcm9maWxp
bmcobG9ja2VyKTsKKyAgICAgICAgfQorICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNv
bnN0YW50UmVnaXN0ZXJPZmZzZXQoKSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5zZXQo
Km1fdm0sIG93bmVyRXhlY3V0YWJsZSwgY2xvbmVkU3ltYm9sVGFibGUpOworICAgIH0KKwogICAg
IG1fZnVuY3Rpb25EZWNscy5yZXNpemVUb0ZpdCh1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZG
dW5jdGlvbkRlY2xzKCkpOwogICAgIGZvciAoc2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRnVuY3Rpb25EZWNscygpLCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAg
ICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVu
bGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CkBAIC0xODY0LDYgKzE4NzYsOSBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSB1
bmxpbmtlZENvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuY291bnQoKTsKICAgICBVbmxpbmtlZElu
c3RydWN0aW9uU3RyZWFtOjpSZWFkZXIgaW5zdHJ1Y3Rpb25SZWFkZXIodW5saW5rZWRDb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpKTsKIAorICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSByZWZl
cmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCisgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25t
ZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOworCiAgICAgVmVjdG9y
PEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gaW5zdHJ1Y3Rpb25zKGluc3Ry
dWN0aW9uQ291bnQpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVh
ZGVyLmF0RW5kKCk7ICkgewpAQCAtMTk3Myw5ICsxOTg4LDE1IEBAIENvZGVCbG9jazo6Q29kZUJs
b2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGluCiAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29s
dmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbG9jYWxTY29wZURlcHRoLCBzY29wZSwg
aWRlbnQsIEdldCwgdHlwZSwgTm90SW5pdGlhbGl6YXRpb24pOwogICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQgPSBvcC50eXBlOwogICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyA1XS51Lm9wZXJhbmQgPSBvcC5kZXB0aDsKLSAgICAgICAgICAgIGlmIChvcC5sZXhp
Y2FsRW52aXJvbm1lbnQpCi0gICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA2XS51LnN5
bWJvbFRhYmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvcC5sZXhpY2FsRW52aXJvbm1l
bnQtPnN5bWJvbFRhYmxlKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoSlNTY29wZSogY29uc3Rh
bnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2sob3AudHlwZSwgdGhp
cykpCisgICAgICAgICAgICBpZiAob3AubGV4aWNhbEVudmlyb25tZW50KSB7CisgICAgICAgICAg
ICAgICAgaWYgKG9wLnR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IEtlZXAgdGhlIGxpbmtlZCBtb2R1bGUgZW52aXJvbm1lbnQgc3Ryb25nbHkgcmVmZXJlbmNlZC4K
KyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25t
ZW50cy5hZGQoanNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihvcC5sZXhpY2FsRW52aXJvbm1l
bnQpKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ29uc3RhbnQob3Au
bGV4aWNhbEVudmlyb25tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA2XS51LmpzQ2VsbC5zZXQoKnZtKCksIG93bmVyRXhlY3V0YWJsZSwgb3AubGV4aWNhbEVudmly
b25tZW50KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyA2XS51LnN5bWJvbFRhYmxlLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxl
LCBvcC5sZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkpOworICAgICAgICAgICAgfSBl
bHNlIGlmIChKU1Njb3BlKiBjb25zdGFudFNjb3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZv
ckNvZGVCbG9jayhvcC50eXBlLCB0aGlzKSkKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNb
aSArIDZdLnUuanNDZWxsLnNldCgqdm0oKSwgb3duZXJFeGVjdXRhYmxlLCBjb25zdGFudFNjb3Bl
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDZd
LnUucG9pbnRlciA9IG51bGxwdHI7CkBAIC0yMDA0LDYgKzIwMjUsOCBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbgogICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RS
ZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGxvY2FsU2NvcGVEZXB0aCwgc2Nv
cGUsIGlkZW50LCBHZXQsIGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgTm90SW5pdGlhbGl6YXRp
b24pOwogCiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDRdLnUub3BlcmFuZCA9IEdldFB1
dEluZm8oZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBvcC50eXBlLCBnZXRQdXRJbmZvLmluaXRp
YWxpemF0aW9uTW9kZSgpKS5vcGVyYW5kKCk7CisgICAgICAgICAgICBpZiAob3AudHlwZSA9PSBN
b2R1bGVWYXIpCisgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA0XS51Lm9wZXJhbmQg
PSBHZXRQdXRJbmZvKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgQ2xvc3VyZVZhciwgZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkub3BlcmFuZCgpOwogICAgICAgICAgICAgaWYgKG9w
LnR5cGUgPT0gR2xvYmFsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIgfHwgb3AudHlwZSA9PSBHbG9i
YWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIDVdLnUud2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7CiAgICAg
ICAgICAgICBlbHNlIGlmIChvcC5zdHJ1Y3R1cmUpCkBAIC0yMDcxLDE3ICsyMDk0LDE4IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICAgICAgLy8gd2UncmUgYWJzdHJhY3Rs
eSAicmVhZCJpbmcgZnJvbSBhIEpTU2NvcGUuCiAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9w
ID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGxvY2FsU2NvcGVEZXB0aCwgc2NvcGUsIGlkZW50LCBHZXQsIHR5cGUsIE5vdEluaXRpYWxpemF0
aW9uKTsKIAotICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IENsb3N1cmVWYXIpCisgICAg
ICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gQ2xvc3VyZVZhciB8fCBvcC50eXBlID09IE1vZHVs
ZVZhcikKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUgPSBvcC5sZXhpY2FsRW52aXJv
bm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3AudHlwZSA9
PSBHbG9iYWxWYXIpCiAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlID0gbV9nbG9iYWxP
YmplY3QuZ2V0KCktPnN5bWJvbFRhYmxlKCk7Ci0gICAgICAgICAgICAgICAgCisKKyAgICAgICAg
ICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA9IChvcC50eXBlID09IE1vZHVsZVZhcikg
PyBvcC5pbXBvcnRlZE5hbWUuZ2V0KCkgOiBpZGVudC5pbXBsKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHN5bWJvbFRhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiBvdXIgcGFyZW50IHNjb3BlIHdhcyBjcmVhdGVkIHdoaWxlIHByb2ZpbGluZyB3YXMgZGlzYWJs
ZWQsIGl0IHdpbGwgbm90IGhhdmUgcHJlcGFyZWQgZm9yIHByb2ZpbGluZyB5ZXQuCiAgICAgICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5wcmVwYXJlRm9yVHlwZVByb2ZpbGluZyhsb2NrZXIp
OwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxWYXJpYWJsZUlEID0gc3ltYm9sVGFibGUtPnVu
aXF1ZUlERm9yVmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZ2xvYmFsVHlwZVNldCA9IHN5bWJvbFRhYmxlLT5nbG9iYWxUeXBlU2V0Rm9y
VmFyaWFibGUobG9ja2VyLCBpZGVudC5pbXBsKCksICp2bSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZ2xvYmFsVmFyaWFibGVJRCA9IHN5bWJvbFRhYmxlLT51bmlxdWVJREZvclZhcmlhYmxlKGxv
Y2tlciwgaW1wbCwgKnZtKCkpOworICAgICAgICAgICAgICAgICAgICBnbG9iYWxUeXBlU2V0ID0g
c3ltYm9sVGFibGUtPmdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShsb2NrZXIsIGltcGwsICp2bSgp
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsVmFy
aWFibGVJRCA9IFR5cGVQcm9maWxlck5vR2xvYmFsSURFeGlzdHM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBlZWFmZDUwYTFlZmJkNGJkZTdmYmNk
ZDBiYjVlODEyNjVlNTQ1M2EwLi45MWU1NDhjOTNmYTIwYjJkYTU2NzZjOGIzN2Q5Y2U5MTRlMjli
MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC04
Miw2ICs4Miw3IEBAIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIFJlcGF0Y2hCdWZmZXI7CiBjbGFzcyBUeXBlTG9jYXRpb247CitjbGFzcyBKU01v
ZHVsZUVudmlyb25tZW50OwogCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJl
b3B0aW1pemF0aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDJmZTFi
Yjg3ZmYyNzY0YzZlYWUyYjM2ZjQyYTE2NzhiMjg2NzI2ZDYuLmMxMTRiOWI1N2QxNDRkMTY1ZWE0
MWRhZDhmMmE2OGVlOGZhOGI1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjk3LDcgKzI5Nyw2IEBAIHZvaWQg
VW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KGNlbGwp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOwogfQog
CiBVbmxpbmtlZENvZGVCbG9jazo6flVubGlua2VkQ29kZUJsb2NrKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZjc0OWJi
MDljYjk5NDQ5NjIxZTY4Yzk4ZWI1YzUyMmJmNmU4YzcwZC4uZmE1MTRjMTU2YTdjYjdjZWY3NGE5
ZjEwMDAxNjViODYxZjBmODNjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJQ
YXJzZXJNb2Rlcy5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgogI2luY2x1ZGUgIlNwZWNpYWxQb2lu
dGVyLmgiCi0jaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTU1LDcgKzU0LDYgQEAgY2xhc3MgUGFyc2VyRXJy
b3I7CiBjbGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNv
dXJjZVByb3ZpZGVyOwotY2xhc3MgU3ltYm9sVGFibGU7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9j
azsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTsKQEAgLTUzMSwyOSArNTI5LDM1IEBAIGNsYXNzIFVubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBVbmxpbmtlZEdsb2JhbENvZGVCbG9jayB7
CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKLSAgICAvLyBUaGlzIHN5bWJvbCB0YWJsZSByZXByZXNlbnRzIHRoZSBsYXlvdXQgb2YgdGhl
IG1vZHVsZSBlbnZpcm9ubWVudC4gVGhpcyBzeW1ib2wgdGFibGUgd2lsbCBiZSBtb2RpZmllZCBi
eSB0aGUgYnl0ZQotICAgIC8vIGNvZGUgZ2VuZXJhdG9yIHNpbmNlIHRoZSBtb2R1bGUgZW52aXJv
bm1lbnQgaW5jbHVkZXMgdGhlIHRvcC1tb3N0IGxleGljYWwgY2FwdHVyZWQgdmFyaWFibGVzIGlu
c2lkZSB0aGUgbW9kdWxlIGNvZGUuCi0gICAgLy8gVGhpcyBtZWFucyB0aGF0LCBvbmNlIHRoZSBt
b2R1bGUgZW52aXJvbm1lbnQgaXMgYWxsb2NhdGVkIGFuZCBpbnN0YW50aWF0ZWQgZnJvbSB0aGlz
IHN5bWJvbCB0YWJsZSwgaXQgaXMgdGl0ZWx5Ci0gICAgLy8gY291cGxlZCB3aXRoIHRoZSBzcGVj
aWZpYyB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGFuZCB0aGUgc3ltYm9sIHRh
YmxlLiBTbyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBtb2R1bGUKLSAgICAvLyBjb2RlLCB3ZSBzaG91
bGQgbm90IGNsZWFyIHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGluIHRo
ZSBtb2R1bGUgZXhlY3V0YWJsZS4gVGhpcyByZXF1aXJlbWVudCBpcyBtZXQKLSAgICAvLyBiZWNh
dXNlIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBvbmx5IGNsZWFycyB1bmxpbmtlZCBjb2RlIGluICgx
KSB1bm1hcmtlZCBleGVjdXRhYmxlcyBhbmQgKDIpIGZ1bmN0aW9uIGV4ZWN1dGFibGVzLgorICAg
IC8vIFRoaXMgb2Zmc2V0IHJlcHJlc2VudHMgdGhlIGNvbnN0YW50IHJlZ2lzdGVyIG9mZnNldCB0
byB0aGUgc3RvcmVkIHN5bWJvbCB0YWJsZSB0aGF0IHJlcHJlc2VudHMgdGhlIGxheW91dCBvZiB0
aGUKKyAgICAvLyBtb2R1bGUgZW52aXJvbm1lbnQuIFRoaXMgc3ltYm9sIHRhYmxlIGlzIGNyZWF0
ZWQgYnkgdGhlIGJ5dGUgY29kZSBnZW5lcmF0b3Igc2luY2UgdGhlIG1vZHVsZSBlbnZpcm9ubWVu
dCBpbmNsdWRlcworICAgIC8vIHRoZSB0b3AtbW9zdCBsZXhpY2FsIGNhcHR1cmVkIHZhcmlhYmxl
cyBpbnNpZGUgdGhlIG1vZHVsZSBjb2RlLiBUaGlzIG1lYW5zIHRoYXQsIG9uY2UgdGhlIG1vZHVs
ZSBlbnZpcm9ubWVudCBpcworICAgIC8vIGFsbG9jYXRlZCBhbmQgaW5zdGFudGlhdGVkIGZyb20g
dGhpcyBzeW1ib2wgdGFibGUsIGl0IGlzIHRpdGVseSBjb3VwbGVkIHdpdGggdGhlIHNwZWNpZmlj
IHVubGlua2VkIG1vZHVsZSBwcm9ncmFtCisgICAgLy8gY29kZSBibG9jayBhbmQgdGhlIHN0b3Jl
ZCBzeW1ib2wgdGFibGUuIFNvIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2RlLCB3ZSBz
aG91bGQgbm90IGNsZWFyIHRoZSB1bmxpbmtlZCBtb2R1bGUKKyAgICAvLyBwcm9ncmFtIGNvZGUg
YmxvY2sgaW4gdGhlIG1vZHVsZSBleGVjdXRhYmxlLiBUaGlzIHJlcXVpcmVtZW50IGlzIG1ldCBi
ZWNhdXNlIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBvbmx5IGNsZWFycworICAgIC8vIHVubGlua2Vk
IGNvZGUgaW4gKDEpIHVubWFya2VkIGV4ZWN1dGFibGVzIGFuZCAoMikgZnVuY3Rpb24gZXhlY3V0
YWJsZXMuCiAgICAgLy8KICAgICAvLyBTaW5jZSB0aGUgZnVuY3Rpb24gY29kZSBtYXkgYmUgZXhl
Y3V0ZWQgcmVwZWF0ZWRseSBhbmQgdGhlIGVudmlyb25tZW50IG9mIGVhY2ggZnVuY3Rpb24gZXhl
Y3V0aW9uIGlzIGRpZmZlcmVudCwKICAgICAvLyB0aGUgZnVuY3Rpb24gY29kZSBuZWVkIHRvIGFs
bG9jYXRlIGFuZCBpbnN0YW50aWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4gdGhlIHByb2xvZ3VlIG9m
IHRoZSBmdW5jdGlvbiBjb2RlLiBPbiB0aGUKICAgICAvLyBvdGhlciBoYW5kLCB0aGUgbW9kdWxl
IGNvZGUgaXMgZXhlY3V0ZWQgb25seSBvbmNlLiBTbyB3ZSBjYW4gaW5zdGFudGlhdGUgdGhlIG1v
ZHVsZSBlbnZpcm9ubWVudCBvdXRzaWRlIHRoZSBtb2R1bGUKLSAgICAvLyBjb2RlLiBBdCB0aGF0
IHRpbWUsIHdlIGNvbnN0cnVjdCB0aGUgbW9kdWxlIGVudmlyb25tZW50IGJ5IHVzaW5nIHRoaXMg
c3ltYm9sIHRhYmxlIGJlZm9yZSBleGVjdXRpbmcgdGhlIG1vZHVsZSBjb2RlLgotICAgIC8vIElu
c3RhbnRpYXRpbmcgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBt
b2R1bGUgY29kZSBpcyByZXF1aXJlZCB0byBsaW5rIHRoZSBpbXBvcnRlZCBiaW5kaW5ncwotICAg
IC8vIGJldHdlZW4gdGhlIG1vZHVsZXMuCisgICAgLy8gY29kZS4gQXQgdGhhdCB0aW1lLCB3ZSBj
b25zdHJ1Y3QgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCBieSB1c2luZyB0aGUgc3ltYm9sIHRhYmxl
IHRoYXQgaXMgaGVsZCBieSB0aGUgbW9kdWxlIGV4ZWN1dGFibGUuCisgICAgLy8gVGhlIHN5bWJv
bCB0YWJsZSBoZWxkIGJ5IHRoZSBleGVjdXRhYmxlIGlzIHRoZSBjbG9uZWQgb25lIGZyb20gb25l
IGluIHRoZSB1bmxpbmtlZCBjb2RlIGJsb2NrLiBJbnN0YW50aWF0aW5nIHRoZSBtb2R1bGUKKyAg
ICAvLyBlbnZpcm9ubWVudCBiZWZvcmUgZXhlY3V0aW5nIGFuZCBsaW5raW5nIHRoZSBtb2R1bGUg
Y29kZSBpcyByZXF1aXJlZCB0byBsaW5rIHRoZSBpbXBvcnRlZCBiaW5kaW5ncyBiZXR3ZWVuIHRo
ZSBtb2R1bGVzLgogICAgIC8vCi0gICAgLy8gVGhlIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNv
ZGUgYmxvY2sgb25seSBob2xkcyB0aGUgc3ltYm9sIHRhYmxlLiBJdCBkb2VzIG5vdCBob2xkIHRo
ZSBtb2R1bGUgZW52aXJvbm1lbnQuIFNvIHdoaWxlCi0gICAgLy8gdGhlIG1vZHVsZSBlbnZpcm9u
bWVudCByZXF1aXJlcyB0aGUgc3BlY2lmaWMgdW5saW5rZWQgbW9kdWxlIHByb2dyYW0gY29kZSBi
bG9jaywgdGhlIHVubGlua2VkIG1vZHVsZSBjb2RlIGJsb2NrCi0gICAgLy8gY2FuIGJlIHVzZWQg
Zm9yIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcyB1bmxpbmtl
ZCBjb2RlIGJsb2NrLiBUaGVyZSBpcyAxOk4gcmVsYXRpb24gYmV0d2VlbgotICAgIC8vIHRoZSB1
bmxpbmtlZCBtb2R1bGUgY29kZSBibG9jayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMuIFNv
IHRoZSB1bmxpbmtlZCBtb2R1bGUgcHJvZ3JhbSBjb2RlIGJsb2NrIGNhbiBiZSBjYWNoZWQuCisg
ICAgLy8gVGhlIHVubGlua2VkIG1vZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgb25seSBob2xkcyB0
aGUgcHJlLWNsb25lZCBzeW1ib2wgdGFibGUgaW4gaXRzIGNvbnN0YW50IHJlZ2lzdGVyIHBvb2wu
IEl0IGRvZXMKKyAgICAvLyBub3QgaG9sZCB0aGUgaW5zdGFudGlhdGVkIG1vZHVsZSBlbnZpcm9u
bWVudC4gU28gd2hpbGUgdGhlIG1vZHVsZSBlbnZpcm9ubWVudCByZXF1aXJlcyB0aGUgc3BlY2lm
aWMgdW5saW5rZWQgbW9kdWxlCisgICAgLy8gcHJvZ3JhbSBjb2RlIGJsb2NrLCB0aGUgdW5saW5r
ZWQgbW9kdWxlIGNvZGUgYmxvY2sgY2FuIGJlIHVzZWQgZm9yIHRoZSBtb2R1bGUgZW52aXJvbm1l
bnQgaW5zdGFudGlhdGVkIGZyb20gdGhpcworICAgIC8vIHVubGlua2VkIGNvZGUgYmxvY2suIFRo
ZXJlIGlzIDE6TiByZWxhdGlvbiBiZXR3ZWVuIHRoZSB1bmxpbmtlZCBtb2R1bGUgY29kZSBibG9j
ayBhbmQgdGhlIG1vZHVsZSBlbnZpcm9ubWVudHMuIFNvIHRoZQorICAgIC8vIHVubGlua2VkIG1v
ZHVsZSBwcm9ncmFtIGNvZGUgYmxvY2sgY2FuIGJlIGNhY2hlZC4KICAgICAvLwogICAgIC8vIE9u
IHRoZSBvdGhlciBoYW5kLCB0aGUgbGlua2VkIGNvZGUgYmxvY2sgZm9yIHRoZSBtb2R1bGUgZW52
aXJvbm1lbnQgaW5jbHVkZXMgdGhlIHJlc29sdmVkIHJlZmVyZW5jZXMgdG8gdGhlIGltcG9ydGVk
CiAgICAgLy8gYmluZGluZ3MuIFRoZSBpbXBvcnRlZCBiaW5kaW5nIHJlZmVyZW5jZXMgdGhlIG90
aGVyIG1vZHVsZSBlbnZpcm9ubWVudCwgc28gdGhlIGxpbmtlZCBjb2RlIGJsb2NrIGlzIHRpdGx5
IGNvdXBsZWQKICAgICAvLyB3aXRoIHRoZSBzcGVjaWZpYyBzZXQgb2YgdGhlIG1vZHVsZSBlbnZp
cm9ubWVudHMuIFRodXMsIHRoZSBsaW5rZWQgY29kZSBibG9jayBzaG91bGQgbm90IGJlIGNhY2hl
ZC4KLSAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0
dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQorICAgIGludCBtb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCgpIHsgcmV0dXJu
IG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQ7IH0K
KyAgICB2b2lkIHNldE1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lzdGVy
T2Zmc2V0KGludCBvZmZzZXQpCisgICAgeworICAgICAgICBtX21vZHVsZUVudmlyb25tZW50U3lt
Ym9sVGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KIAogcHJpdmF0
ZToKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mIGluZm8pCkBAIC01NjEsMTMgKzU2NSw3
IEBAIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayBmaW5hbCA6IHB1YmxpYyBV
bmxpbmtlZEdsb2JhbENvZGVCbG9jayB7CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQotICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwotICAgICAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuc2V0KHZtLCB0aGlzLCBT
eW1ib2xUYWJsZTo6Y3JlYXRlKHZtKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVyPFN5bWJv
bFRhYmxlPiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGU7CisgICAgaW50IG1fbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgeyAwIH07CiAKIHB1
YmxpYzoKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCA1MDg5ZjU2NjE0NmI5Mzc1YmRjZDA5N2FlMGRhNzZhZWI2NDIzNmIzLi45ZTI1YmUxZGZl
YmM4ODJhZDJhMDI0ZjMxMTRkMDJmMmEzN2UwYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNTM2
LDkgKzUzNiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgaWYgKG1faXNCdWlsdGlu
RnVuY3Rpb24pCiAgICAgICAgIG1fc2hvdWxkRW1pdERlYnVnSG9va3MgPSBmYWxzZTsKIAotICAg
IC8vIFVzZSB0aGUgc3ltYm9sIHRhYmxlIGFsbG9jYXRlZCBpbiB0aGUgdW5saW5rZWQgY29kZSBi
bG9jay4gVGhpcyBzeW1ib2wgdGFibGUKLSAgICAvLyB3aWxsIGJlIHVzZWQgdG8gYWxsb2NhdGUg
YW5kIGluc3RhbnRpYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCi0gICAgU3ltYm9sVGFibGUq
IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUgPSBjb2RlQmxvY2stPm1vZHVsZUVudmlyb25t
ZW50U3ltYm9sVGFibGUoKTsKKyAgICBTeW1ib2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoKm1fdm0pOwogICAgIG1vZHVsZUVudmlyb25t
ZW50U3ltYm9sVGFibGUtPnNldFVzZXNOb25TdHJpY3RFdmFsKG1fdXNlc05vblN0cmljdEV2YWwp
OwogICAgIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPnNldFNjb3BlVHlwZShTeW1ib2xU
YWJsZTo6U2NvcGVUeXBlOjpMZXhpY2FsU2NvcGUpOwogCkBAIC01OTIsNiArNTkwLDcgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5v
ZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFy
aWFibGVzID0gbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKTsKICAgICBpbnN0
YW50aWF0ZUxleGljYWxWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcywgbW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZSwgU2NvcGVSZWdpc3RlclR5cGU6OkJsb2NrLCBsb29rVXBWYXJLaW5kKTsK
IAorICAgIC8vIFdlIGtlZXAgdGhlIHN5bWJvbCB0YWJsZSBpbiB0aGUgY29uc3RhbnQgcG9vbC4K
ICAgICBSZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlID0gbnVsbHB0cjsKICAgICBpZiAo
dm0udHlwZVByb2ZpbGVyKCkpCiAgICAgICAgIGNvbnN0YW50U3ltYm9sVGFibGUgPSBhZGRDb25z
dGFudFZhbHVlKG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOwpAQCAtNjU2LDYgKzY1NSwx
MSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQ
cm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICAgICAgICAgbV9mdW5jdGlvbnNUb0lu
aXRpYWxpemUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9uLCBOb3JtYWxGdW5jdGlvblZh
cmlhYmxlKSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBSZW1lbWJlciB0aGUgY29uc3Rh
bnQgcmVnaXN0ZXIgb2Zmc2V0IHRvIHRoZSB0b3AtbW9zdCBzeW1ib2wgdGFibGUuIFRoaXMgc3lt
Ym9sIHRhYmxlIHdpbGwgYmUKKyAgICAvLyBjbG9uZWQgaW4gdGhlIGNvZGUgYmxvY2sgbGlua2lu
Zy4gQWZ0ZXIgdGhhdCwgdG8gY3JlYXRlIHRoZSBtb2R1bGUgZW52aXJvbm1lbnQsIHdlIHJldHJp
ZXZlCisgICAgLy8gdGhlIGNsb25lZCBzeW1ib2wgdGFibGUgZnJvbSB0aGUgbGlua2VkIGNvZGUg
YmxvY2sgYnkgdXNpbmcgdGhpcyBvZmZzZXQuCisgICAgY29kZUJsb2NrLT5zZXRNb2R1bGVFbnZp
cm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldChjb25zdGFudFN5bWJvbFRh
YmxlLT5pbmRleCgpKTsKIH0KIAogQnl0ZWNvZGVHZW5lcmF0b3I6On5CeXRlY29kZUdlbmVyYXRv
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IDJiODllM2FiMDA4N2Y3MjExNTA0ZTkxMmNiZmUxMTU2OGM5YWYzNzEuLjc4NmI5MjE2
YzA1ZGZiMTM3N2U5NDA4NGJkM2JmOTRmNmIyZDQ5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5j
bHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKQEAgLTM4MzksNiArMzg0MCwxNCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoUGhhbnRvbSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihzY29wZSkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxl
VmFyOiB7CisgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlIHZhbHVlIG9mIHRoZSAic2NvcGUi
IHZpcnR1YWwgcmVnaXN0ZXIgaXMgbm90IHVzZWQgaW4gTExJbnQgLyBiYXNlbGluZSBvcF9yZXNv
bHZlX3Njb3BlIHdpdGggTW9kdWxlVmFyLAorICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgbm90
IHRvIGtlZXAgaXQgYWxpdmUgYnkgdGhlIFBoYW50b20gbm9kZS4KKyAgICAgICAgICAgICAgICBK
U01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU01vZHVsZUVu
dmlyb25tZW50Kj4oY3VycmVudEluc3RydWN0aW9uWzZdLnUuanNDZWxsLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICAvLyBNb2R1bGUgZW52aXJvbm1lbnQgaXMgYWxyZWFkeSBzdHJvbmdseSByZWZl
cmVuY2VkIGJ5IHRoZSBDb2RlQmxvY2suCisgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3Rlcihkc3QpLCB3ZWFrSlNDb25zdGFudChtb2R1bGVFbnZpcm9ubWVudCkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBMb2NhbENsb3N1
cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENsb3N1cmVWYXI6CiAgICAgICAgICAgICBjYXNlIENs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CkBAIC00MDM0LDYgKzQwNDMsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZHN0KSwgYWRkVG9HcmFwaChKU0NvbnN0YW50LCBP
cEluZm8obV9jb25zdGFudFVuZGVmaW5lZCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgogICAgICAgICAgICAgY2Fz
ZSBEeW5hbWljOgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00MTI4LDYgKzQxMzgsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2Fz
ZSBVbnJlc29sdmVkUHJvcGVydHk6CiAgICAgICAgICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZv
cmNlT1NSRXhpdCk7CkBAIC00MTM1LDYgKzQxNDYsMTMgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBo
YW50b20sIHNjb3BlTm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGNhc2UgTW9kdWxlVmFyOgorICAgICAgICAgICAgICAgIC8vIE5lZWQg
bm90IHRvIGtlZXAgInNjb3BlIiBhbmQgInZhbHVlIiByZWdpc3RlciB2YWx1ZXMgaGVyZSBieSBQ
aGFudG9tIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBub3QgdXNlZCBpbiBM
TEludCAvIGJhc2VsaW5lIG9wX3B1dF90b19zY29wZSB3aXRoIE1vZHVsZVZhci4KKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisKICAgICAgICAgICAgIGNhc2UgRHluYW1pYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMWY5OWUy
YzcyZTAwMDU3OGNmZDFkODExNGY3Y2U4NGRhNGQ2M2Y3ZC4uNGIwZjEyYzM5MmExNTdiM2YyNTU5
NzM5MGNlNDgwMjUwZjNjNzZkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiSlNC
b3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTGV4
aWNhbEVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2lu
Y2x1ZGUgIkpTTm90QW5PYmplY3QuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMjE1LDYgKzEyMTYsNTQgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTVmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCitKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCit7Cisg
ICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIFNhbXBsaW5nU2NvcGUgc2FtcGxpbmdTY29w
ZSh0aGlzKTsKKworICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52bSgpKTsK
KyAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9y
QnVzeSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJ
TG9jaygpKTsKKyAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCisgICAgICAgIHJldHVybiBq
c051bGwoKTsKKworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFs
T2JqZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworCisg
ICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRp
b24oY2FsbEZyYW1lLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwpOworICAgIGlmIChVTkxJ
S0VMWSghIWNvbXBpbGVFcnJvcikpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxG
cmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAg
IE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmNvZGVCbG9j
aygpOworCisgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nICYmIHZtLndhdGNoZG9nLT5kaWRG
aXJlKGNhbGxGcmFtZSkpKQorICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKGNhbGxGcmFtZSk7CisKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisKKyAgICAvLyBUaGUgfHRo
aXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRlZmluZWRgLgorICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJv
bm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGluZworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jk
cy1nZXR0aGlzYmluZGluZworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBzY29w
ZS0+Z2xvYmFsT2JqZWN0KCksIHNjb3BlKSwganNVbmRlZmluZWQoKSwgMSk7CisKKyAgICBpZiAo
TGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAg
IHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZVVSTCgp
LCBleGVjdXRhYmxlLT5maXJzdExpbmUoKSwgZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKSk7CisK
KyAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgorICAgIEpTVmFsdWUgcmVzdWx0OworICAgIHsKKyAg
ICAgICAgU2FtcGxpbmdUb29sOjpDYWxsUmVjb3JkIGNhbGxSZWNvcmQobV9zYW1wbGVyLmdldCgp
KTsKKyAgICAgICAgcmVzdWx0ID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVj
dXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5UHJvZmls
ZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCisgICAgICAgIHByb2ZpbGVyLT5k
aWRFeGVjdXRlKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+c291cmNlVVJMKCksIGV4ZWN1dGFibGUt
PmZpcnN0TGluZSgpLCBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpKTsKKworICAgIHJldHVybiBj
aGVja2VkUmV0dXJuKHJlc3VsdCk7Cit9CisKIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVy
OjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQpCiB7
CiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCktPmRlYnVnZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCmluZGV4IDAzOGJjYTVjZmM3NWI5YjI0NTc2MmQ2ZTY0ZjY4ZjJlNzhlYzYy
NTEuLjRmZWZhYTZjZjhlMzFhZjJkMzU5ZDE2M2JhYzhhMWE0MDk1YWY0NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC01NCw2ICs1
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQXJyb3dGdW5jdGlvbjsKICAgICBj
bGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIEpT
TW9kdWxlRW52aXJvbm1lbnQ7CiAgICAgY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CiAgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwpAQCAt
MjE1LDYgKzIxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVD
YWxsKENhbGxGcmFtZSosIEpTT2JqZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxE
YXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmpl
Y3QqIGV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBDb25z
dHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUg
bmV3VGFyZ2V0KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgQ2Fs
bEZyYW1lKiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqKTsKKyAgICAgICAgSlNWYWx1ZSBl
eGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNNb2R1bGVFbnZp
cm9ubWVudCopOwogCiAgICAgICAgIHZvaWQgZ2V0QXJndW1lbnRzRGF0YShDYWxsRnJhbWUqLCBK
U0Z1bmN0aW9uKiYsIHB0cmRpZmZfdCYgZmlyc3RQYXJhbWV0ZXJJbmRleCwgUmVnaXN0ZXIqJiBh
cmd2LCBpbnQmIGFyZ2MpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IDZkNTAxZTZlMjg2NDlmZGMwMjk5YmVkYmRiMTUzNTRkYTZh
ZTMyNzQuLjE1OTYwZjJmYWUwNzZmNjU4YzE1ODdiZGNkMGIyMzNmNGIyZTQ4NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTkzOSw2ICsxOTM5
LDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRGcm9tU2NvcGUo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbioKICAgICBKU09iamVjdCogc2NvcGUgPSBqc0Nh
c3Q8SlNPYmplY3QqPihleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuanNWYWx1ZSgp
KTsKICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8ocGNbNF0udS5vcGVyYW5kKTsKIAorICAgIC8v
IE1vZHVsZVZhciBpcyBhbHdheXMgY29udmVydGVkIHRvIENsb3N1cmVWYXIgZm9yIGdldF9mcm9t
X3Njb3BlLgorICAgIEFTU0VSVChnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkgIT0gTW9kdWxlVmFy
KTsKKwogICAgIFByb3BlcnR5U2xvdCBzbG90KHNjb3BlKTsKICAgICBpZiAoIXNjb3BlLT5nZXRQ
cm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CiAgICAgICAgIGlmIChnZXRQdXRJbmZv
LnJlc29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQpAQCAtMTk3NCw2ICsxOTc3LDEwIEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIGJ5dGVjb2RlUEMpCiAgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpT
T2JqZWN0Kj4oZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQpLmpzVmFsdWUoKSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIocGNbM10udS5vcGVyYW5kKS5qc1ZhbHVlKCk7CiAg
ICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhwY1s0XS51Lm9wZXJhbmQpOwor
CisgICAgLy8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVl
IGFsaXZlIGluIERGRy4KKyAgICBBU1NFUlQoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpICE9IE1v
ZHVsZVZhcik7CisKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpID09IExvY2FsQ2xv
c3VyZVZhcikgewogICAgICAgICBKU0xleGljYWxFbnZpcm9ubWVudCogZW52aXJvbm1lbnQgPSBq
c0Nhc3Q8SlNMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7CiAgICAgICAgIGVudmlyb25tZW50
LT52YXJpYWJsZUF0KFNjb3BlT2Zmc2V0KHBjWzZdLnUub3BlcmFuZCkpLnNldCh2bSwgZW52aXJv
bm1lbnQsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKaW5kZXggNDI5YTBhYTk5Y2E5MDRhMDVlOWUxNTY2YmI5NjllMzk5NjA5MWU2
ZC4uYzg1N2ZjZGFjMGNkMzNhZTJlYjA2YzRjNTY0NTY2NTExNGJhNDUyOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTcxMCw2ICs3
MTAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3VyZShkc3QsIHNjb3BlLCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjdXJyZW50SW5zdHJ1Y3Rp
b25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6
CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAg
IGNhc2UgRHluYW1pYzoKQEAgLTcyMyw5ICs3MjcsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVz
b2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogdm9pZCBKSVQ6OmVt
aXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBSZXNvbHZlVHlw
ZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKTsKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkg
fHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIg
fHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikKKyAgICBpZiAocmVzb2x2ZVR5cGUg
PT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVU
eXBlID09IENsb3N1cmVWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBy
ZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpCiAgICAgICAgIHJldHVybjsKIAorCiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiAgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKQEAgLTc5MCw2ICs3OTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJv
bV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgRHluYW1p
YzoKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNb2R1bGVWYXI6CiAgICAgY2FzZSBMb2NhbENsb3N1cmVWYXI6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtODgzLDYgKzg4OSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKICAgICBjYXNlIFVu
cmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CisgICAgY2FzZSBNb2R1bGVW
YXI6CiAgICAgY2FzZSBEeW5hbWljOgogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAg
ICAgICBicmVhazsKQEAgLTkwOSw3ICs5MTYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF90b19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0MK
ICAgICAgICAgcmV0dXJuOwogICAgIHdoaWxlIChsaW5rQ291bnQtLSkKICAgICAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3Vy
cmVudEluc3RydWN0aW9uKTsKKworICAgIGlmIChyZXNvbHZlVHlwZSA9PSBNb2R1bGVWYXIpIHsK
KyAgICAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF90aHJvd19zdHJpY3RfbW9kZV9yZWFkb25seV9wcm9wZXJ0eV93cml0
ZV9lcnJvcik7CisgICAgICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CisgICAgfSBlbHNlCisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9u
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fYXJndW1lbnRzKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCAwZGQwODUzM2Y2NzM3Y2RiMmE5MGQ2
NzJlYjdjZTI0ZmYyZjY4ZDE3Li5iNzlhMjA5YjQzOGU0NjlkMmY5ZDcxMWI4ODJmM2UxNTVkOWYx
MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKQEAgLTc0Miw2ICs3NDIsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVz
b2x2ZV9zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGNhc2UgQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGVtaXRSZXNvbHZlQ2xvc3Vy
ZShkc3QsIHNjb3BlLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSksIGRlcHRo
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNb2R1bGVWYXI6CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdUMSk7CisgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihjdXJyZW50SW5zdHJ1Y3Rpb25bNl0udS5qc0NlbGwuZ2V0KCkpLCByZWdUMCk7Cisg
ICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgogICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIER5bmFtaWM6CkBAIC03NTYsNyArNzYxLDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Jlc29sdmVfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3cKIHsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlw
ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVy
YW5kKTsKIAotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhciB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKQorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQ
cm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xv
c3VyZVZhciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IHJlc29sdmVUeXBl
ID09IE1vZHVsZVZhcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwpAQCAtODI0LDYgKzgyOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgY2FzZSBEeW5hbWljOgogICAgICAg
ICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1vZHVsZVZh
cjoKICAgICBjYXNlIExvY2FsQ2xvc3VyZVZhcjoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CkBAIC05MTMsNiArOTE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X3RvX3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGVt
aXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkp
OwogICAgICAgICBlbWl0UHV0Q2xvc3VyZVZhcihzY29wZSwgKm9wZXJhbmRTbG90LCB2YWx1ZSwg
Y3VycmVudEluc3RydWN0aW9uWzVdLnUud2F0Y2hwb2ludFNldCk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgogICAgIGNh
c2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBjYXNlIER5
bmFtaWM6CkBAIC05MzgsNyArOTQ1LDEyIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9f
c2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDCiAgICAg
ICAgIHJldHVybjsKICAgICB3aGlsZSAobGlua0NvdW50LS0pCiAgICAgICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJ
bnN0cnVjdGlvbik7CisKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gTW9kdWxlVmFyKSB7CisgICAg
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJy
b3IpOworICAgICAgICBzbG93UGF0aENhbGwuY2FsbCgpOworICAgIH0gZWxzZQorICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAppbmRleCBmMWYzZWEyOTE2YTMzMWE0Mjc3YTk4NTViZjdhOTMyMjJiNjcwOWIwLi44ZTczZWRm
Y2M4NGY2YzA1NzlhYTFmMDM0ZDJhMmYzNWJmZGYwYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtMTQ4LDEwICsxNDgsMTEgQEAgdm9pZCBEYXRhOjpw
ZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgc3RhdGljX2Fzc2VydChHbG9iYWxMZXhpY2Fs
VmFyID09IDIsICJMTEludCBhc3N1bWVzIEdsb2JhbExleGljYWxWYXIgUmVzdWx0VHlwZSBpcyA9
PSAyIik7CiAgICAgc3RhdGljX2Fzc2VydChDbG9zdXJlVmFyID09IDMsICJMTEludCBhc3N1bWVz
IENsb3N1cmVWYXIgUmVzdWx0VHlwZSBpcyA9PSAzIik7CiAgICAgc3RhdGljX2Fzc2VydChMb2Nh
bENsb3N1cmVWYXIgPT0gNCwgIkxMSW50IGFzc3VtZXMgTG9jYWxDbG9zdXJlVmFyIFJlc3VsdFR5
cGUgaXMgPT0gNCIpOwotICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzID09IDUsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDUiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEds
b2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0gNiwgIkxMSW50IGFzc3VtZXMgR2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDYiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDcsICJM
TEludCBhc3N1bWVzIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3Vs
dFR5cGUgaXMgPT0gNyIpOwotICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MgPT0gOCwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgUmVzdWx0VHlwZSBpcyA9PSA4Iik7CisgICAgc3RhdGljX2Fzc2VydChNb2R1bGVW
YXIgPT0gNSwgIkxMSW50IGFzc3VtZXMgTW9kdWxlVmFyIFJlc3VsdFR5cGUgaXMgPT0gNSIpOwor
ICAgIHN0YXRpY19hc3NlcnQoR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09
IDYsICJMTEludCBhc3N1bWVzIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyBS
ZXN1bHRUeXBlIGlzID09IDYiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MgPT0gNywgIkxMSW50IGFzc3VtZXMgR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyBSZXN1bHRUeXBlIGlzID09IDciKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdsb2Jh
bExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID09IDgsICJMTEludCBhc3N1bWVzIEds
b2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIFJlc3VsdFR5cGUgaXMgPT0gOCIp
OworICAgIHN0YXRpY19hc3NlcnQoQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPT0g
OSwgIkxMSW50IGFzc3VtZXMgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgUmVzdWx0
VHlwZSBpcyA9PSA5Iik7CiAKICAgICBzdGF0aWNfYXNzZXJ0KEluaXRpYWxpemF0aW9uTW9kZTo6
SW5pdGlhbGl6YXRpb24gPT0gMCwgIkxMSW50IGFzc3VtZXMgdGhhdCBJbml0aWFsaXphdGlvbk1v
ZGU6OkluaXRpYWxpemF0aW9uIGlzIDAiKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDdlZGEyYmE4YWY0Y2IzNGZiNTZiY2Y2
NjY2ZGM1OTlhNDg4YzhhYmEuLjNmYjQ4NWQwZWZhMWVkZjEwZDgzYmUwMTk3ZmVlNmVmZTdlZDNj
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cApAQCAtMTM2Niw2ICsxMzY2LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dl
dF9mcm9tX3Njb3BlKQogICAgIEpTT2JqZWN0KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExM
SU5UX09QKDIpLmpzVmFsdWUoKSk7CiAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvKHBjWzRdLnUu
b3BlcmFuZCk7CiAKKyAgICAvLyBNb2R1bGVWYXIgaXMgYWx3YXlzIGNvbnZlcnRlZCB0byBDbG9z
dXJlVmFyIGZvciBnZXRfZnJvbV9zY29wZS4KKyAgICBBU1NFUlQoZ2V0UHV0SW5mby5yZXNvbHZl
VHlwZSgpICE9IE1vZHVsZVZhcik7CisKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSk7CiAg
ICAgaWYgKCFzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgewogICAg
ICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCA0NTViNjA3MjZjYTVmYjExNmU0NDY5NzhlMzA1YmRjYzBhMTJjMjVmLi4yZDUxZDFl
NzA1ZDIzZGZkYjY2NThjOGZkODk0OTcxN2UyNzg1YTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xOTMsMTAgKzE5
MywxMSBAQCBjb25zdCBHbG9iYWxWYXIgPSAxCiBjb25zdCBHbG9iYWxMZXhpY2FsVmFyID0gMgog
Y29uc3QgQ2xvc3VyZVZhciA9IDMKIGNvbnN0IExvY2FsQ2xvc3VyZVZhciA9IDQKLWNvbnN0IEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA9IDUKLWNvbnN0IEdsb2JhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MgPSA2Ci1jb25zdCBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyA9IDcKLWNvbnN0IENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
ID0gOAorY29uc3QgTW9kdWxlVmFyID0gNQorY29uc3QgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzID0gNgorY29uc3QgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA9
IDcKK2NvbnN0IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzID0gOAorY29u
c3QgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgPSA5CiAKIGNvbnN0IFJlc29sdmVU
eXBlTWFzayA9IDB4M2ZmCiBjb25zdCBJbml0aWFsaXphdGlvbk1vZGVNYXNrID0gMHhmZmMwMApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQppbmRleCA5MmUzZWM4NzM2ODViNWNjY2VjNzBiZTFlMDE5ZGEwMDNkNzAw
MmYwLi5mNWYyYTAzYzI3MDExNzFjMzIyNzZhMzFjZGY2NDE0MDE1ZjM5ZmY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQpAQCAtMjEwOCwxMCArMjEwOCwxNSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToK
ICAgICBkaXNwYXRjaCg3KQogCiAuckNsb3N1cmVWYXI6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVW
YXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCisgICAgYmluZXEgdDAs
IENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCiAgICAgcmVzb2x2ZVNjb3BlKCkKICAgICBkaXNwYXRj
aCg3KQogCisuck1vZHVsZVZhcjoKKyAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcworICAgIGdldENvbnN0YW50U2NvcGUoMSkKKyAg
ICBkaXNwYXRjaCg3KQorCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoK
ICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckds
b2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5
bmFtaWMpCkBAIC0yMzM5LDEzICsyMzQ0LDE4IEBAIF9sbGludF9vcF9wdXRfdG9fc2NvcGU6CiAg
ICAgZGlzcGF0Y2goNykKIAogLnBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKLSAg
ICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wRHluYW1pYwor
ICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBNb2R1bGVW
YXIKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgdmFySW5qZWN0aW9uQ2hl
Y2soLnBEeW5hbWljKQogICAgIGxvYWRWYXJpYWJsZSgxLCB0MiwgdDEsIHQwKQogICAgIHB1dENs
b3N1cmVWYXIoKQogICAgIGRpc3BhdGNoKDcpCiAKKy5wTW9kdWxlVmFyOgorICAgIGJpbmVxIHQw
LCBNb2R1bGVWYXIsIC5wRHluYW1pYworICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Rocm93
X3N0cmljdF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQorICAgIGRpc3BhdGNo
KDcpCisKIC5wRHluYW1pYzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRf
dG9fc2NvcGUpCiAgICAgZGlzcGF0Y2goNykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggN2YzMzhkYTM2NThiMDQ0
YzE3MDU2MjJjY2QwZWE4NTEwMzAxNTgyMS4uZWZkMGM3ZDc0MTg5ODA1YzEzYmY4MDkyNWU2ZjY3
NGMxODZjMjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE5NzYsMTAgKzE5NzYsMTUgQEAgX2xsaW50X29w
X3Jlc29sdmVfc2NvcGU6CiAgICAgZGlzcGF0Y2goNykKIAogLnJDbG9zdXJlVmFyOgotICAgIGJp
bmVxIHQwLCBDbG9zdXJlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cworICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgogICAgIHJlc29sdmVTY29w
ZSgpCiAgICAgZGlzcGF0Y2goNykKIAorLnJNb2R1bGVWYXI6CisgICAgYmluZXEgdDAsIE1vZHVs
ZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKKyAgICBnZXRDb25z
dGFudFNjb3BlKDEpCisgICAgZGlzcGF0Y2goNykKKwogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5q
ZWN0aW9uQ2hlY2soLnJEeW5hbWljKQpAQCAtMjIxMywxMyArMjIxOCwxOCBAQCBfbGxpbnRfb3Bf
cHV0X3RvX3Njb3BlOgogICAgIGRpc3BhdGNoKDcpCiAKIC5wQ2xvc3VyZVZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6Ci0gICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLCAucER5bmFtaWMKKyAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5wTW9kdWxlVmFyCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQogICAg
IHZhckluamVjdGlvbkNoZWNrKC5wRHluYW1pYykKICAgICBsb2FkVmFyaWFibGUoMSwgdDApCiAg
ICAgcHV0Q2xvc3VyZVZhcigpCiAgICAgZGlzcGF0Y2goNykKIAorLnBNb2R1bGVWYXI6CisgICAg
YmluZXEgdDAsIE1vZHVsZVZhciwgLnBEeW5hbWljCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfdGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCisgICAg
ZGlzcGF0Y2goNykKKwogLnBEeW5hbWljOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX3B1dF90b19zY29wZSkKICAgICBkaXNwYXRjaCg3KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCBmNjIzOGZiOTY4MDJiZTUzN2U5
MWFkYzI2YjgyZDg5MGI5NTQwMzJkLi5jMWEzY2MyYjFmMDY4MWUwNTk5MmQ1Y2Q0ZTYyNmJlODgw
ZDRiOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFu
YWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5
emVyLmNwcApAQCAtODIsNyArODIsOSBAQCB2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJp
YWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJl
Y29yZCgpLT5sb29rVXBJbXBvcnRFbnRyeShsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEpTTW9k
dWxlUmVjb3JkOjpJbXBvcnRFbnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29y
ZCgpLT50cnlHZXRJbXBvcnRFbnRyeShsb2NhbE5hbWUuZ2V0KCkpOworICAgIEFTU0VSVChvcHRp
b25hbEltcG9ydEVudHJ5KTsKKyAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkm
IGltcG9ydEVudHJ5ID0gKm9wdGlvbmFsSW1wb3J0RW50cnk7CiAgICAgaWYgKHZhcmlhYmxlLmlz
SW1wb3J0ZWROYW1lc3BhY2UoKSkgewogICAgICAgICAvLyBFeHBvcnRlZCBuYW1lc3BhY2UgYmlu
ZGluZy4KICAgICAgICAgLy8gaW1wb3J0ICogYXMgbmFtZXNwYWNlIGZyb20gIm1vZCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4
IGU4MjlmODU1N2EyYWU2MDNlOGVlZDBhNGI0MDMwY2U2ZDUzYzAyZDUuLmU0ODYxYmEyY2ZjNWU0
MjY0ODQxYjcwZjEyMzFiNmNjZGI1MjdlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMjcwLDYgKzI3MCwxMiBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9yKQogICAgIFRIUk9XKGNyZWF0ZVRE
WkVycm9yKGV4ZWMpKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3N0cmlj
dF9tb2RlX3JlYWRvbmx5X3Byb3BlcnR5X3dyaXRlX2Vycm9yKQoreworICAgIEJFR0lOKCk7Cisg
ICAgVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9ub3QpCiB7CiAgICAgQkVHSU4oKTsKQEAgLTY2OCw2ICs2NzQsMTAgQEAgU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpCiAgICAgSlNWYWx1ZSByZXNvbHZlZFNjb3BlID0g
SlNTY29wZTo6cmVzb2x2ZShleGVjLCBzY29wZSwgaWRlbnQpOwogCiAgICAgUmVzb2x2ZVR5cGUg
cmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4ocGNbNF0udS5vcGVyYW5kKTsK
KworICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSByZWdpc3RlciB2YWx1
ZSBhbGl2ZSBpbiBERkcuCisgICAgQVNTRVJUKHJlc29sdmVUeXBlICE9IE1vZHVsZVZhcik7CisK
ICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJlc29sdmVUeXBl
ID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKICAgICAgICAg
aWYgKEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQg
PSBqc0R5bmFtaWNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4ocmVzb2x2ZWRTY29w
ZSkpIHsKICAgICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmlu
ZGV4IDhjOTg2N2ZjNGRlMzM1YTFmODdlMzc4YzNlYjNiZjczNzUyNTY2YmMuLmZiZWZjZDBlMTg0
YWJlYmJkYTk4OTU1ZmYzZTg0YjhlNjkzZTZlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDEsNiArMjQxLDcgQEAgU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lbnRlcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9jYWxsZWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90
b190aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfdGR6X2Vycm9y
KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdGhyb3dfc3RyaWN0X21vZGVfcmVh
ZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9ub3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9lcSk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25lcSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvci5jcHAKaW5kZXggMDAyODVhNjc1NzczNDc0NzliZDlhOWI3YjkzOTU1YzI2NDM0NjU3
Yy4uMWI5M2U4ZmQxMjU3ZDBkNzhhYTc5MzY4ODExMjRjYWY2OTk0NGI4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMjE5LDYgKzIxOSwxMCBAQCBKU09iamVj
dCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJTeW50YXggZXJyb3IiKSkpOwogfQogCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtZXNz
YWdlKSk7Cit9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmlu
ZGV4IGVjMzBhM2RjNDY2ZTFlYjQ0OWIzZTU4NWFhODA0OTJlZjE5ODQ2NDcuLmY0NmZlMzc2ZmI4
NmM2NTJlNGFlYzg0OTAxM2NlYTJkZjNjODAxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3IuaApAQCAtNzQsNiArNzQsNyBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiBlcnJvciwgaW50IGxpbmUsIGNvbnN0IFNvdXJjZUNvZGUmKQogLy8g
Q29udmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBh
IGRlZmF1bHQgbWVzc2FnZS4KIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVF
cnJvcihFeGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRh
eEVycm9yKEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogaW5saW5l
IEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgpLnRocm93RXhjZXB0aW9uKHN0YXRl
LCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5p
ZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGIzMTcyZTZkMzdl
ZWNjNjAzMDg2ZWQ1N2FhYzExMjZmNDlkMmNkZjguLmM0NzNjNDkxZjliMjY2ZTIzYjY3NzUyOTFk
YjY4ODRiY2ExNGIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCkBAIC00MzksNiArNDM5LDkgQEAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5zZXQoZXhlYy0+dm0oKSwgZXhlY3V0YWJsZSwgdW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZSk7CiAKKyAgICAvLyBDbG9uZSB0aGUgbW9kdWxlIGVudmlyb25tZW50IHN5bWJv
bCB0YWJsZSBmb3IgdGhpcyBleGVjdXRhYmxlIChhbmQgdGhlIGNvZGUgYmxvY2sgbGlua2VkIGFu
ZCBpbnN0YW50aWF0ZWQgbGF0ZXIpLgorICAgIGV4ZWN1dGFibGUtPm1fbW9kdWxlRW52aXJvbm1l
bnRTeW1ib2xUYWJsZS5zZXQoZXhlYy0+dm0oKSwgZXhlY3V0YWJsZSwganNDYXN0PFN5bWJvbFRh
YmxlKj4odW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZS0+Y29uc3RhbnRSZWdpc3Rlcih1bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlLT5tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRS
ZWdpc3Rlck9mZnNldCgpKS5nZXQoKSktPmNsb25lU2NvcGVQYXJ0KGV4ZWMtPnZtKCkpKTsKKwog
ICAgIHJldHVybiBleGVjdXRhYmxlOwogfQogCkBAIC02MzMsNiArNjM2LDcgQEAgdm9pZCBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3Qs
IHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPm1fbW9k
dWxlUHJvZ3JhbUNvZGVCbG9jaykKICAgICAgICAgdGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKIH0KQEAgLTY0MSw2ICs2NDUsNyBA
QCB2b2lkIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlOjpjbGVhckNvZGUoKQogewogICAgIG1fbW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgbV91bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2suY2xlYXIoKTsKKyAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUu
Y2xlYXIoKTsKICAgICBCYXNlOjpjbGVhckNvZGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCmluZGV4IGNkY2ViMzA0MjY1Zjk3NmQwMDc3YWVmZDY1
N2I1YjdiYWJiZjJhMTYuLmYzZWY0YmI2YzExNjU5OWEyNzhkYTM5ZmQzMzY0ZWQ0MjNiYzA2OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTU3LDYg
KzU3LDkgQEAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2s7CiBjbGFzcyBKU1Njb3BlOwogY2xhc3MgV2ViQXNzZW1ibHlDb2RlQmxvY2s7CitjbGFz
cyBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOworY2xhc3MgSlNNb2R1bGVSZWNvcmQ7CitjbGFzcyBK
U1Njb3BlOwogCiBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGlt
aXppbmdDb21waWxhdGlvbiB9OwogCkBAIC01ODksNiArNTkyLDggQEAgY2xhc3MgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRXhl
Y3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5m
byhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZhbHNlLCBm
YWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBmYWxzZSk7IH0KICAgICBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpIHsgcmV0
dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdldCgpOyB9CiAKKyAgICBTeW1i
b2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBTY3JpcHRFeGVjdXRhYmxlOwogCkBAIC01OTcsNiArNjAyLDcgQEAgY2xhc3MgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAg
V3JpdGVCYXJyaWVyPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jaz4gbV91bmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2s7CisgICAgV3JpdGVCYXJyaWVyPFN5bWJvbFRhYmxlPiBtX21v
ZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGU7CiAgICAgUmVmUHRyPE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2s+IG1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dldFB1dEluZm8uaAppbmRleCAyZTdhMmVmZmU4NmUyZjhjMTg3NGU4N2M1
ZmU0YzA4MzBjZTU1MWY5Li5mNDk5YmNkODk2MjRkZDI0YWU4N2RhMWUyNDk1NGMwYjFiM2M0YmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXRQdXRJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0UHV0SW5mby5oCkBAIC0yNiw2
ICsyNiw4IEBACiAjaWZuZGVmIEdldFB1dEluZm9faAogI2RlZmluZSBHZXRQdXRJbmZvX2gKIAor
I2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CisKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBTdHJ1Y3R1cmU7CkBAIC00NCw2ICs0Niw3IEBAIGVudW0gUmVzb2x2ZVR5cGUg
ewogICAgIEdsb2JhbExleGljYWxWYXIsCiAgICAgQ2xvc3VyZVZhciwKICAgICBMb2NhbENsb3N1
cmVWYXIsCisgICAgTW9kdWxlVmFyLAogCiAgICAgLy8gRGl0dG8sIGJ1dCBhdCBsZWFzdCBvbmUg
aW50ZXJ2ZW5pbmcgc2NvcGUgdXNlZCBub24tc3RyaWN0IGV2YWwsIHdoaWNoCiAgICAgLy8gY2Fu
IGluamVjdCBhbiBpbnRlcmNlcHRpbmcgdmFyIGRlbGNhcmF0aW9uIGF0IHJ1bnRpbWUuCkBAIC04
NCw2ICs4Nyw3IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgY2hhciogcmVzb2x2ZVR5cGVOYW1lKFJl
c29sdmVUeXBlIHR5cGUpCiAgICAgICAgICJHbG9iYWxMZXhpY2FsVmFyIiwKICAgICAgICAgIkNs
b3N1cmVWYXIiLAogICAgICAgICAiTG9jYWxDbG9zdXJlVmFyIiwKKyAgICAgICAgIk1vZHVsZVZh
ciIsCiAgICAgICAgICJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MiLAogICAg
ICAgICAiR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCiAgICAgICAgICJHbG9iYWxM
ZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyIsCkBAIC0xMjIsNiArMTI2LDcgQEAgQUxX
QVlTX0lOTElORSBSZXNvbHZlVHlwZSBtYWtlVHlwZShSZXNvbHZlVHlwZSB0eXBlLCBib29sIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2sKICAgICAgICAgcmV0dXJuIENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOwogICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgogICAgICAgICByZXR1
cm4gVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsKKyAgICBjYXNlIE1v
ZHVsZVZhcjoKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoK
ICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgY2FzZSBHbG9i
YWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTE0Myw2ICsxNDgsNyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5cGUgdHlw
ZSkKICAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6CiAgICAgY2FzZSBDbG9zdXJlVmFyOgogICAg
IGNhc2UgTG9jYWxDbG9zdXJlVmFyOgorICAgIGNhc2UgTW9kdWxlVmFyOgogICAgIGNhc2UgVW5y
ZXNvbHZlZFByb3BlcnR5OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CkBAIC0xNTksMTMgKzE2NSwxNCBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MoUmVzb2x2ZVR5cGUgdHlwZSkK
IH0KIAogc3RydWN0IFJlc29sdmVPcCB7Ci0gICAgUmVzb2x2ZU9wKFJlc29sdmVUeXBlIHR5cGUs
IHNpemVfdCBkZXB0aCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTGV4aWNhbEVudmlyb25tZW50
KiBsZXhpY2FsRW52aXJvbm1lbnQsIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRTZXQsIHVpbnRw
dHJfdCBvcGVyYW5kKQorICAgIFJlc29sdmVPcChSZXNvbHZlVHlwZSB0eXBlLCBzaXplX3QgZGVw
dGgsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0xleGljYWxFbnZpcm9ubWVudCogbGV4aWNhbEVu
dmlyb25tZW50LCBXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0LCB1aW50cHRyX3Qgb3BlcmFu
ZCwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcG9ydGVkTmFtZSA9IG51bGxwdHIpCiAgICAgICAgIDog
dHlwZSh0eXBlKQogICAgICAgICAsIGRlcHRoKGRlcHRoKQogICAgICAgICAsIHN0cnVjdHVyZShz
dHJ1Y3R1cmUpCiAgICAgICAgICwgbGV4aWNhbEVudmlyb25tZW50KGxleGljYWxFbnZpcm9ubWVu
dCkKICAgICAgICAgLCB3YXRjaHBvaW50U2V0KHdhdGNocG9pbnRTZXQpCiAgICAgICAgICwgb3Bl
cmFuZChvcGVyYW5kKQorICAgICAgICAsIGltcG9ydGVkTmFtZShpbXBvcnRlZE5hbWUpCiAgICAg
ewogICAgIH0KIApAQCAtMTc1LDYgKzE4Miw3IEBAIHN0cnVjdCBSZXNvbHZlT3AgewogICAgIEpT
TGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2FsRW52aXJvbm1lbnQ7CiAgICAgV2F0Y2hwb2ludFNl
dCogd2F0Y2hwb2ludFNldDsKICAgICB1aW50cHRyX3Qgb3BlcmFuZDsKKyAgICBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+IGltcG9ydGVkTmFtZTsKIH07CiAKIGNsYXNzIEdldFB1dEluZm8gewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGFkMzdiYWVmOTJhMmE3YzI0OGNkNGIxMWE4Yzg0OTM3NDJmNTcxMTIuLjBlNzdjZDI4ODlj
ZWI4YmJmMTA3NjBlMmVhMzI1YTVlOTQ0NWFkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg0LDYgKzg0LDcgQEAKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1
bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNPTk9iamVjdC5oIgpAQCAtMzEzLDYgKzMxNCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXQoVk0mIHZtKQogICAgIG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5zdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU0RhdGFWaWV3OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1fdHlwZWRBcnJheXNbdG9JbmRleChUeXBlRGF0YVZpZXcpXS5wcm90b3R5cGUuZ2V0KCkpKTsK
ICAgICAKICAgICBtX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT
TGV4aWNhbEVudmlyb25tZW50OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMpKTsKKyAgICBtX21v
ZHVsZUVudmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVFbnZpcm9ubWVu
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CiAgICAgbV9zdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJl
LnNldChtX3ZtLCB0aGlzLCBEZWJ1Z2dlclNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUobV92bSwgdGhp
cykpOwogICAgIG1fd2l0aFNjb3BlU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNXaXRoU2NvcGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKQEAgLTc5Myw2ICs3OTUsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2l0aFNj
b3BlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zdHJpY3RF
dmFsQWN0aXZhdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCA0NjE5NTlkMWJkOWJiYzkzMTMzNjk3NzZiMGQ5YzE1NTk2ODc4MTM2Li5lYzY2YzFhOWVjM2M5
YzUzZTE4ZTA2NzBhZWNjYjVkYTllYWQyMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzNCw2ICsyMzQsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlOworICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmU7CkBA
IC00NTAsNiArNDUxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVy
ZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmlj
dEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBhY3RpdmF0
aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1
cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZUVudmlyb25tZW50U3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9k
aXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHNjb3BlZEFy
Z3VtZW50c1N0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVkQXJndW1lbnRzU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvdXRPZkJhbmRBcmd1bWVudHNTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX291dE9mQmFuZEFyZ3VtZW50c1N0cnVjdHVyZS5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJv
bm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25t
ZW50LmgKaW5kZXggNTA3MzEyZWI3YjZlYzM2MjUwYTkyODViZWU5OGM0ZjcyZjBlMjQ3Ni4uYmJl
MzE2MTgyNDFhMzk2ZTM2ZjA1MjRmNWMwYTIxZWJkMTY0NjQxZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCkBAIC0zOSw3
ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgUmVnaXN0ZXI7CiAgICAgCiBjbGFzcyBK
U0xleGljYWxFbnZpcm9ubWVudCA6IHB1YmxpYyBKU0Vudmlyb25tZW50UmVjb3JkIHsKLXByaXZh
dGU6Citwcm90ZWN0ZWQ6CiAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQoVk0mLCBTdHJ1Y3R1cmUq
LCBKU1Njb3BlKiwgU3ltYm9sVGFibGUqKTsKICAgICAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzcwMTczMTJjNjZkNjI1Mzc2OTcyNDAxMDllMDdiZDAwMjc2NDY2NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1l
bnQuY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVu
dmlyb25tZW50LmgiCisKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7
CisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVFbnZpcm9ubWVu
dDo6c19pbmZvID0geyAiSlNNb2R1bGVFbnZpcm9ubWVudCIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVFbnZpcm9ubWVudCkgfTsKKworSlNNb2R1bGVFbnZp
cm9ubWVudCogSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKAorICAgIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJv
bFRhYmxlLCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29y
ZCkKK3sKKyAgICAvLyBKU0xleGljYWxFbnZpcm9ubWVudCAocHJlY2lzZWx5LCBKU0Vudmlyb25t
ZW50UmVjb3JkKSBoYXMgdGhlIHN0b3JhZ2UgdG8gc3RvcmUgdGhlIHZhcmlhYmxlIHNsb3RzIGFm
dGVyIHRoZSBpdHMgY2xhc3Mgc3RvcmFnZS4KKyAgICAvLyBCZWNhdXNlIHRoZSBvZmZzZXQgb2Yg
dGhlIHZhcmlhYmxlIHNsb3RzIGFyZSBmaXhlZCBpbiB0aGUgSlNFbnZpcm9ubWVudFJlY29yZCwg
aW5oZXJpdHRpbmcgdGhlc2UgY2xhc3MgYW5kIGFkZGluZyBuZXcgbWVtYmVyIGZpZWxkIGlzIG5v
dCBhbGxvd2VkLAorICAgIC8vIHRoZSBuZXcgbWVtYmVyIHdpbGwgb3ZlcmxhcCB0aGUgdmFyaWFi
bGUgc2xvdHMuCisgICAgLy8gVG8ga2VlcCB0aGUgSlNNb2R1bGVFbnZpcm9ubWVudCBjb21wYXRp
YmxlIHRvIHRoZSBKU0xleGljYWxFbnZpcm9ubWVudCBidXQgYWRkIHRoZSBuZXcgbWVtYmVyIHRv
IHN0b3JlIHRoZSBKU01vZHVsZVJlY29yZCwgd2UgYWRkaXRpb25hbGx5IGFsbG9jYXRlCisgICAg
Ly8gdGhlIHN0b3JhZ2UgYWZ0ZXIgdGhlIHZhcmlhYmxlIHNsb3RzLgorICAgIC8vCisgICAgLy8g
SlNMZXhpY2FsRW52aXJvbm1lbnQ6CisgICAgLy8gICAgIFsgSlNMZXhpY2FsRW52aXJvbm1lbnQg
XVsgdmFyaWFibGUgc2xvdHMgXQorICAgIC8vCisgICAgLy8gSlNNb2R1bGVFbnZpcm9ubWVudDoK
KyAgICAvLyAgICAgWyBKU0xleGljYWxFbnZpcm9ubWVudCBdWyB2YXJpYWJsZSBzbG90cyBdWyBh
ZGRpdGlvbmFsIHNsb3RzIGZvciBKU01vZHVsZUVudmlyb25tZW50IF0KKyAgICBKU01vZHVsZUVu
dmlyb25tZW50KiByZXN1bHQgPQorICAgICAgICBuZXcgKAorICAgICAgICAgICAgTm90TnVsbCwK
KyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxKU01vZHVsZUVudmlyb25tZW50Pih2bS5oZWFwLCBK
U01vZHVsZUVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZShzeW1ib2xUYWJsZSkpKQorICAgICAg
ICBKU01vZHVsZUVudmlyb25tZW50KHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9s
VGFibGUpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0sIGluaXRpYWxWYWx1ZSwgbW9k
dWxlUmVjb3JkKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9k
dWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IGluaXRpYWxWYWx1ZSk7CisgICAgdGhpcy0+bW9kdWxlUmVjb3JkU2xvdCgpLnNldCh2bSwgdGhp
cywgbW9kdWxlUmVjb3JkKTsKK30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNb2R1
bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4o
Y2VsbCk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVj
dC0+c3ltYm9sVGFibGUoKS0+c2NvcGVTaXplKCkpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tb2R1bGVSZWNvcmRTbG90KCkpOworfQorCitib29sIEpTTW9kdWxlRW52aXJvbm1l
bnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNN
b2R1bGVFbnZpcm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50
Kj4oY2VsbCk7CisgICAgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHRo
aXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZlSW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgaWYgKHJlc29sdXRpb24u
dHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQpIHsKKyAg
ICAgICAgLy8gV2hlbiByZXNvbHZlSW1wb3J0IHJlc29sdmVzIHRoZSByZXNvbHV0aW9uLCB0aGUg
aW1wb3J0ZWQgbW9kdWxlIGVudmlyb25tZW50IG11c3QgaGF2ZSB0aGUgYmluZGluZy4KKyAgICAg
ICAgSlNNb2R1bGVFbnZpcm9ubWVudCogaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCA9IHJlc29s
dXRpb24ubW9kdWxlUmVjb3JkLT5tb2R1bGVFbnZpcm9ubWVudCgpOworICAgICAgICBQcm9wZXJ0
eVNsb3QgcmVkaXJlY3RTbG90KGltcG9ydGVkTW9kdWxlRW52aXJvbm1lbnQpOworICAgICAgICBi
b29sIHJlc3VsdCA9IGltcG9ydGVkTW9kdWxlRW52aXJvbm1lbnQtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QoaW1wb3J0ZWRNb2R1bGVFbnZpcm9ubWVudCwgZXhl
YywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHJlZGlyZWN0U2xvdCk7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgICAgICBBU1NFUlQocmVkaXJlY3RTbG90LmlzVmFs
dWUoKSk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSByZWRpcmVjdFNsb3QuZ2V0VmFsdWUoZXhl
YywgcmVzb2x1dGlvbi5sb2NhbE5hbWUpOworICAgICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCByZWRpcmVjdFNsb3Qu
YXR0cmlidXRlcygpLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7Cit9CisKK3ZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzQXJyYXksIEVudW1lcmF0aW9uTW9kZSBtb2RlKQorewor
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZp
cm9ubWVudCo+KGNlbGwpOworICAgIGlmIChwcm9wZXJ0eU5hbWVzQXJyYXkuaW5jbHVkZVN0cmlu
Z1Byb3BlcnRpZXMoKSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB0aGlzT2Jq
ZWN0LT5tb2R1bGVSZWNvcmQoKS0+aW1wb3J0RW50cmllcygpKSB7CisgICAgICAgICAgICBjb25z
dCBKU01vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkmIGltcG9ydEVudHJ5ID0gcGFpci52YWx1ZTsK
KyAgICAgICAgICAgIGlmICghaW1wb3J0RW50cnkuaXNOYW1lc3BhY2UoZXhlYy0+dm0oKSkpCisg
ICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lc0FycmF5LmFkZChpbXBvcnRFbnRyeS5sb2NhbE5h
bWUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBCYXNlOjpnZXRPd25Ob25JbmRleFBy
b3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lc0FycmF5LCBtb2RlKTsK
K30KKwordm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFBy
b3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0
ZWQgYmluZGluZ3MgYXJlIGltbXV0YWJsZS4KKyAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlv
biByZXNvbHV0aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQo
ZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAg
ICBpZiAocmVzb2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBl
OjpSZXNvbHZlZCkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90KTsKK30KKworYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpkZWxldGVQ
cm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKK3sKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTW9kdWxlRW52aXJvbm1lbnQqPihjZWxsKTsKKyAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGlu
Z3MgYXJlIGltbXV0YWJsZS4KKyAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0
aW9uID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBpZiAocmVz
b2x1dGlvbi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZl
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52
aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mN2VmYTYyNjNiMmIyNzQ5Zjc4OGMwYTdmMDczZjc2NzdhMDA5
YjAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNb2R1bGVFbnZpcm9ubWVudF9o
CisjZGVmaW5lIEpTTW9kdWxlRW52aXJvbm1lbnRfaAorCisjaW5jbHVkZSAiSlNMZXhpY2FsRW52
aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgUmVnaXN0ZXI7CisKK2NsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQgOiBwdWJs
aWMgSlNMZXhpY2FsRW52aXJvbm1lbnQgeworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpT
TGV4aWNhbEVudmlyb25tZW50IEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworCisgICAgc3RhdGljIEpTTW9kdWxl
RW52aXJvbm1lbnQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEpTU2NvcGUqLCBTeW1ib2xUYWJs
ZSosIEpTVmFsdWUgaW5pdGlhbFZhbHVlLCBKU01vZHVsZVJlY29yZCopOworCisgICAgc3RhdGlj
IEpTTW9kdWxlRW52aXJvbm1lbnQqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTU2NvcGUqIGN1cnJlbnRTY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
LCBKU1ZhbHVlIGluaXRpYWxWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKKyAg
ICB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5tb2R1bGVF
bnZpcm9ubWVudFN0cnVjdHVyZSgpOworICAgICAgICByZXR1cm4gY3JlYXRlKHZtLCBzdHJ1Y3R1
cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUsIGluaXRpYWxWYWx1ZSwgbW9kdWxlUmVjb3Jk
KTsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGpz
TnVsbCgpLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZk1vZHVsZVJlY29yZChTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUpCisgICAgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gQmFzZTo6YWxs
b2NhdGlvblNpemUoc3ltYm9sVGFibGUpOworICAgICAgICBBU1NFUlQoV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KT4ob2Zmc2V0KSA9
PSBvZmZzZXQpOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIHN0YXRpYyBz
aXplX3QgYWxsb2NhdGlvblNpemUoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG9mZnNldE9mTW9kdWxlUmVjb3JkKHN5bWJvbFRhYmxlKSArIHNpemVvZihX
cml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+KTsKKyAgICB9CisKKyAgICBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtb2R1bGVSZWNvcmRTbG90
KCkuZ2V0KCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBz
dGF0aWMgdm9pZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAgc3RhdGljIHZv
aWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJv
cGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKKworcHJpdmF0ZToKKyAgICBKU01vZHVsZUVudmlyb25t
ZW50KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSosIFN5bWJvbFRhYmxlKik7CisKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNWYWx1ZSBpbml0aWFsVmFsdWUsIEpTTW9kdWxlUmVjb3Jk
Kik7CisKKyAgICBXcml0ZUJhcnJpZXJCYXNlPEpTTW9kdWxlUmVjb3JkPiYgbW9kdWxlUmVjb3Jk
U2xvdCgpCisgICAgeworICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJC
YXNlPEpTTW9kdWxlUmVjb3JkPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRP
Zk1vZHVsZVJlY29yZChzeW1ib2xUYWJsZSgpKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworfTsKKworaW5saW5lIEpTTW9k
dWxlRW52aXJvbm1lbnQ6OkpTTW9kdWxlRW52aXJvbm1lbnQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNTY29wZSogY3VycmVudFNjb3BlLCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGN1cnJlbnRTY29wZSwgc3ltYm9sVGFibGUpCit7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNNb2R1bGVFbnZpcm9ubWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5j
cHAKaW5kZXggN2I2MDYzNzRhNjA2MGI3NzAyMGM0ZWY0NTEyZTkyNDVlMDNmM2ZjNS4uMmNlZmJl
OTQwMWNhZDY0NzJjNzFjNDJhMGM4NzA2NTE4ZWZkMjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTTWFwLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgog
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKIApAQCAtNjAsMTAgKzYxLDQ5IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBKU01vZHVs
ZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOwogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnQpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZXBlbmRlbmNpZXNNYXApOwogfQogCit2b2lkIEpTTW9k
dWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
TmFtZSkKK3sKKyAgICBtX3JlcXVlc3RlZE1vZHVsZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsK
K30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6YWRkU3RhckV4cG9ydEVudHJ5KGNvbnN0IElkZW50
aWZpZXImIG1vZHVsZU5hbWUpCit7CisgICAgbV9zdGFyRXhwb3J0RW50cmllcy5hZGQobW9kdWxl
TmFtZS5pbXBsKCkpOworfQorCit2b2lkIEpTTW9kdWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShj
b25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCit7CisgICAgYm9vbCBpc05ld0VudHJ5ID0gbV9pbXBv
cnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSkuaXNOZXdFbnRyeTsK
KyAgICBBU1NFUlRfVU5VU0VEKGlzTmV3RW50cnksIGlzTmV3RW50cnkpOyAvLyBUaGlzIGlzIGd1
YXJhbnRlZWQgYnkgdGhlIHBhcnNlci4KK30KKwordm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhw
b3J0RW50cnkoY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5KQoreworICAgIGJvb2wgaXNOZXdFbnRy
eSA9IG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5pbXBsKCksIGVudHJ5KS5p
c05ld0VudHJ5OworICAgIEFTU0VSVF9VTlVTRUQoaXNOZXdFbnRyeSwgaXNOZXdFbnRyeSk7IC8v
IFRoaXMgaXMgZ3VhcmFudGVlZCBieSB0aGUgcGFyc2VyLgorfQorCithdXRvIEpTTW9kdWxlUmVj
b3JkOjp0cnlHZXRJbXBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogbG9jYWxOYW1lKSAtPiBP
cHRpb25hbDxJbXBvcnRFbnRyeT4KK3sKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9pbXBv
cnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9pbXBvcnRF
bnRyaWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICByZXR1cm4gT3B0aW9u
YWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7Cit9CisKK2F1dG8gSlNNb2R1bGVSZWNv
cmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBP
cHRpb25hbDxFeHBvcnRFbnRyeT4KK3sKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9leHBv
cnRFbnRyaWVzLmZpbmQoZXhwb3J0TmFtZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fZXhwb3J0
RW50cmllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIE9wdGlv
bmFsPEV4cG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOworfQorCiBhdXRvIEpTTW9kdWxlUmVj
b3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTG9jYWwoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFt
ZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkmIHZhcmlhYmxlKSAtPiBFeHBvcnRFbnRyeQogewogICAgIHJldHVybiBFeHBvcnRFbnRy
eSB7IFR5cGU6OkxvY2FsLCBleHBvcnROYW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwg
bG9jYWxOYW1lLCB2YXJpYWJsZSB9OwpAQCAtNzksNiArMTE5LDIxIEBAIGF1dG8gSlNNb2R1bGVS
ZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBv
cnROYW1lLCBjCiAgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5kaXJlY3QsIGV4cG9y
dE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5KCkgfTsKIH0KIAorYXV0byBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6
bm90Rm91bmQoKSAtPiBSZXNvbHV0aW9uCit7CisgICAgcmV0dXJuIFJlc29sdXRpb24geyBUeXBl
OjpOb3RGb3VuZCwgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07Cit9CisKK2F1dG8gSlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb246OmVycm9yKCkgLT4gUmVzb2x1dGlvbgoreworICAgIHJldHVybiBS
ZXNvbHV0aW9uIHsgVHlwZTo6RXJyb3IsIG51bGxwdHIsIElkZW50aWZpZXIoKSB9OworfQorCith
dXRvIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKSAtPiBSZXNvbHV0aW9u
Cit7CisgICAgcmV0dXJuIFJlc29sdXRpb24geyBUeXBlOjpBbWJpZ3VvdXMsIG51bGxwdHIsIElk
ZW50aWZpZXIoKSB9OworfQorCiBzdGF0aWMgSlNWYWx1ZSBpZGVudGlmaWVyVG9KU1ZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBpZiAo
aWRlbnRpZmllci5pc1N5bWJvbCgpKQpAQCAtOTMsNiArMTQ4LDI3OSBAQCBKU01vZHVsZVJlY29y
ZCogSlNNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdAogICAgIHJldHVybiBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihwYWlyLmdldChl
eGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJ2YWx1ZSIpKSk7CiB9CiAKK2F1dG8g
SlNNb2R1bGVSZWNvcmQ6OnJlc29sdmVJbXBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBsb2NhbE5hbWUpIC0+IFJlc29sdXRpb24KK3sKKyAgICBPcHRpb25hbDxJbXBvcnRF
bnRyeT4gb3B0aW9uYWxJbXBvcnRFbnRyeSA9IHRyeUdldEltcG9ydEVudHJ5KGxvY2FsTmFtZS5p
bXBsKCkpOworICAgIGlmICghb3B0aW9uYWxJbXBvcnRFbnRyeSkKKyAgICAgICAgcmV0dXJuIFJl
c29sdXRpb246Om5vdEZvdW5kKCk7CisKKyAgICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50
cnkgPSAqb3B0aW9uYWxJbXBvcnRFbnRyeTsKKyAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3Bh
Y2UoZXhlYy0+dm0oKSkpCisgICAgICAgIHJldHVybiBSZXNvbHV0aW9uOjpub3RGb3VuZCgpOwor
CisgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0gaG9zdFJlc29sdmVJbXBvcnRl
ZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KTsKKyAgICByZXR1cm4gaW1w
b3J0ZWRNb2R1bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7
Cit9CisKK3N0cnVjdCBSZXNvbHZlUXVlcnkgeworICAgIFJlc29sdmVRdWVyeShKU01vZHVsZVJl
Y29yZCogbW9kdWxlUmVjb3JkLCBVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKKyAgICAg
ICAgOiBtb2R1bGVSZWNvcmQobW9kdWxlUmVjb3JkKQorICAgICAgICAsIGV4cG9ydE5hbWUoZXhw
b3J0TmFtZSkKKyAgICB7CisgICAgfQorCisgICAgUmVzb2x2ZVF1ZXJ5KEpTTW9kdWxlUmVjb3Jk
KiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpCisgICAgICAgIDog
UmVzb2x2ZVF1ZXJ5KG1vZHVsZVJlY29yZCwgZXhwb3J0TmFtZS5pbXBsKCkpCisgICAgeworICAg
IH0KKworICAgIGVudW0gRW1wdHlWYWx1ZVRhZyB7IEVtcHR5VmFsdWUgfTsKKyAgICBSZXNvbHZl
UXVlcnkoRW1wdHlWYWx1ZVRhZykKKyAgICB7CisgICAgfQorCisgICAgZW51bSBEZWxldGVkVmFs
dWVUYWcgeyBEZWxldGVkVmFsdWUgfTsKKyAgICBSZXNvbHZlUXVlcnkoRGVsZXRlZFZhbHVlVGFn
KQorICAgICAgICA6IG1vZHVsZVJlY29yZChudWxscHRyKQorICAgICAgICAsIGV4cG9ydE5hbWUo
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNF
bXB0eVZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhZXhwb3J0TmFtZTsKKyAg
ICB9CisKKyAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBleHBvcnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CisgICAgfQorCisgICAg
Ly8gVGhlIG1vZHVsZSByZWNvcmQgaXMgbm90IG1hcmtlZCBmcm9tIHRoZSBHQy4gQnV0IHRoZXNl
IHJlY29yZHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSBKU0dsb2JhbE9iamVjdC4KKyAgICAvLyBT
byB3ZSBkb24ndCBjYXJlIHRoZSByZWFjaGFiaWxpdHkgdG8gdGhpcyByZWNvcmQuCisgICAgSlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
IGV4cG9ydE5hbWU7Cit9OworCitzdHJ1Y3QgUmVzb2x2ZVF1ZXJ5SGFzaCB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgUmVzb2x2ZVF1ZXJ5JiwgY29uc3QgUmVzb2x2ZVF1ZXJ5Jik7CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwor
aW5saW5lIHVuc2lnbmVkIFJlc29sdmVRdWVyeUhhc2g6Omhhc2goY29uc3QgUmVzb2x2ZVF1ZXJ5
JiBxdWVyeSkKK3sKKyAgICByZXR1cm4gV1RGOjpQdHJIYXNoPEpTTW9kdWxlUmVjb3JkKj46Omhh
c2gocXVlcnkubW9kdWxlUmVjb3JkKSArIElkZW50aWZpZXJSZXBIYXNoOjpoYXNoKHF1ZXJ5LmV4
cG9ydE5hbWUpOworfQorCitpbmxpbmUgYm9vbCBSZXNvbHZlUXVlcnlIYXNoOjplcXVhbChjb25z
dCBSZXNvbHZlUXVlcnkmIGxocywgY29uc3QgUmVzb2x2ZVF1ZXJ5JiByaHMpCit7CisgICAgcmV0
dXJuIGxocy5tb2R1bGVSZWNvcmQgPT0gcmhzLm1vZHVsZVJlY29yZCAmJiBsaHMuZXhwb3J0TmFt
ZSA9PSByaHMuZXhwb3J0TmFtZTsKK30KKworc3RhdGljIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0
aW9uIHJlc29sdmVFeHBvcnRMb29wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgUmVzb2x2ZVF1ZXJ5
JiByb290KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1yZXNvbHZlZXhwb3J0CisgICAgLy8gVGhpcyBmdW5jdGlvbiBhdm9pZHMg
QysrIHJlY3Vyc2lvbiBvZiB0aGUgbmFpdmUgUmVzb2x2ZUV4cG9ydCBpbXBsZW1lbnRhdGlvbi4K
KyAgICAvLyBGbGF0dGVuIHRoZSByZWN1cnNpb24gdG8gdGhlIGxvb3Agd2l0aCB0aGUgdGFzayBx
dWV1ZSBhbmQgZnJhbWVzLgorICAgIC8vCisgICAgLy8gMS4gcGVuZGluZ1Rhc2tzCisgICAgLy8g
ICAgIFdlIGVucXVldWUgdGhlIHJlY3Vyc2l2ZSByZXNvbHZlRXhwb3J0IGNhbGwgdG8gdGhpcyBx
dWV1ZSB0byBhdm9pZCByZWN1cnNpdmUgY2FsbHMgaW4gQysrLgorICAgIC8vICAgICBUaGUgdGFz
ayBoYXMgMyB0eXBlcy4gKDEpIFF1ZXJ5LCAoMikgSW5kaXJlY3RGYWxsYmFjayBhbmQgKDMpIEdh
dGhlclN0YXJzLgorICAgIC8vICAgICAoMSkgUXVlcnkKKyAgICAvLyAgICAgICAgIFF1ZXJ5aW5n
IHRoZSByZXNvbHV0aW9uIHRvIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAgICAvLyAgICAgKDIpIElu
ZGlyZWN0RmFsbGJhY2sKKyAgICAvLyAgICAgICAgIEV4YW1pbmUgdGhlIHJlc3VsdCBvZiB0aGUg
aW5kaXJlY3QgZXhwb3J0IHJlc29sdXRpb24uIE9ubHkgd2hlbiB0aGUgaW5kaXJlY3QgZXhwb3J0
IHJlc29sdXRpb24gZmFpbHMsCisgICAgLy8gICAgICAgICB3ZSBsb29rIGludG8gdGhlIHN0YXIg
ZXhwb3J0cy4gKHN0ZXAgNS1hLXZpKS4KKyAgICAvLyAgICAgKDMpIEdhdGhlclN0YXJzCisgICAg
Ly8gICAgICAgICBFeGFtaW5lIHRoZSByZXN1bHQgb2YgdGhlIHN0YXIgZXhwb3J0IHJlc29sdXRp
b25zLgorICAgIC8vCisgICAgLy8gMi4gZnJhbWVzCisgICAgLy8gICAgIFdoZW4gdGhlIHNwZWMg
Y2FsbHMgdGhlIHJlc29sdmVFeHBvcnQgcmVjdXJzaXZlbHksIGluc3RlYWQgd2UgYXBwZW5kIHRo
ZSBmcmFtZQorICAgIC8vICAgICAodGhhdCBob2xkcyB0aGUgcmVzdWx0IHJlc29sdXRpb24pIHRv
IHRoZSBmcmFtZXMgYW5kIGVucXVldWUgdGhlIHRhc2sgdG8gdGhlIHBlbmRpbmdUYXNrcy4KKyAg
ICAvLyAgICAgVGhlIGVudHJ5IGluIHRoZSBmcmFtZXMgbWVhbnMgdGhlICpsb2NhbCogcmVzb2x1
dGlvbiByZXN1bHQgb2YgdGhlIHNwZWNpZmljIHJlY3Vyc2l2ZSByZXNvbHZlRXhwb3J0LgorICAg
IC8vCisgICAgLy8gV2Ugc2hvdWxkIG1haW50YWluIHRoZSBsb2NhbCByZXNvbHV0aW9uIHJlc3Vs
dCBpbnN0ZWFkIG9mIGhvbGRpbmcgdGhlIGdsb2JhbCByZXNvbHV0aW9uIHJlc3VsdCBvbmx5Lgor
ICAgIC8vIEZvciBleGFtcGxlLAorICAgIC8vCisgICAgLy8gICAgIHN0YXIKKyAgICAvLyAoMSkg
LS0tPiAoMikgIlJlc29sdmUiCisgICAgLy8gICAgICB8CisgICAgLy8gICAgICB8CisgICAgLy8g
ICAgICArLT4gKDMpICJOb3RGb3VuZCIKKyAgICAvLyAgICAgIHwKKyAgICAvLyAgICAgIHwgICAg
ICAgc3RhcgorICAgIC8vICAgICAgKy0+ICg0KSAtLS0+ICg1KSAiUmVzb2x2ZSIgW2hlcmVdCisg
ICAgLy8gICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICB8CisgICAgLy8gICAg
ICAgICAgICAgICArLT4gKDYpICJFcnJvciIKKyAgICAvLworICAgIC8vIENvbnNpZGVyIHRoZSBh
Ym92ZSBncmFwaC4gVGhlIG51bWJlcnMgcmVwcmVzZW50cyB0aGUgbW9kdWxlcy4gTm93IHdlIGFy
ZSBbaGVyZV0uCisgICAgLy8gSWYgd2Ugb25seSBob2xkIHRoZSBnbG9iYWwgcmVzb2x1dGlvbiBy
ZXN1bHQgZHVyaW5nIHRoZSByZXNvbHZlRXhwb3J0IG9wZXJhdGlvbiwgW2hlcmVdLAorICAgIC8v
IHdlIGRlY2lkZSB0aGUgZW50aXJlIHJlc3VsdCBvZiByZXNvbHZlRXhwb3J0IGlzICJBbWJpZ3Vv
dXMiLCBiZWNhdXNlIHRoZXJlIGFyZSBtdWx0aXBsZQorICAgIC8vICJSZXNsb3ZlIiAoaW4gbW9k
dWxlICgyKSBhbmQgKDUpKS4gSG93ZXZlciwgdGhpcyBzaG91bGQgYmVjb21lICJFcnJvciIgYmVj
YXVzZSAoNikgd2lsbAorICAgIC8vIHByb3BhZ2F0ZSAiRXJyb3IiIHN0YXRlIHRvIHRoZSAoNCks
ICg0KSB3aWxsIGJlY29tZSAiRXJyb3IiIGFuZCB0aGVuLCAoMSkgd2lsbCBiZWNvbWUKKyAgICAv
LyAiRXJyb3IiLiBXZSBzaG91bGQgYWdncmVnYXRlIHRoZSByZXN1bHRzIGF0IHRoZSBzdGFyIGV4
cG9ydHMgcG9pbnQgKCg0KSBhbmQgKDEpKS4KKyAgICAvLworICAgIC8vIFVzdWFsbHksIGJvdGgg
IkVycm9yIiBhbmQgIkFtYmlndW91cyIgc3RhdGVzIHdpbGwgdGhyb3cgdGhlIHN5bnRheCBlcnJv
ci4gU28gZXhjZXB0IGZvciB0aGUgY29udGVudCBvZiB0aGUKKyAgICAvLyBlcnJvciBtZXNzYWdl
LCB0aGVyZSBhcmUgbm8gZGlmZmVyZW5jZS4gKEFuZCBpZiB3ZSBmaXggdGhlICg2KSB0aGF0IHJh
aXNlcyAiRXJyb3IiLCBuZXh0LCBpdCB3aWxsIHByb2R1Y2UKKyAgICAvLyB0aGUgIkFtYmlndW91
cyIgZXJyb3IgZHVlIHRvICg1KS4gQW55d2F5LCB1c2VyIG5lZWQgdG8gZml4IHRoZSBib3RoLiBT
byB3aGljaCBlcnJvciBzaG91bGQgYmUgcmFpc2VkIGF0IGZpcnN0CisgICAgLy8gZG9lc24ndCBt
YXR0ZXIgc28gbXVjaC4KKyAgICAvLworICAgIC8vIEhvd2V2ZXIsIHRoaXMgbWF5IGJlY29tZSB0
aGUgcHJvYmxlbSB1bmRlciB0aGUgbW9kdWxlIG5hbWVzcGFjZSBjcmVhdGlvbi4KKyAgICAvLyBo
dHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZ2V0bW9k
dWxlbmFtZXNwYWNlCisgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTgsIHN0ZXAgMy1kLWlpCisgICAg
Ly8gSGVyZSwgd2UgZGlzdGluZ3Vpc2ggIkFtYmlndW91cyIgYW5kICJFcnJvciIuIFdoZW4gIkVy
cm9yIiBzdGF0ZSBpcyBwcm9kdWNlZCwgd2UgbmVlZCB0byB0aHJvdyB0aGUgcHJvcGFnYXRlZCBl
cnJvci4KKyAgICAvLyBCdXQgaWYgIkFtYmlndW91cyIgc3RhdGUgY29tZXMsIHdlIGp1c3QgaWdu
b3JlIHRoZSByZXN1bHQuCisgICAgLy8gVG8gZm9sbG93IHRoZSByZXF1aXJlbWVudCBzdHJpY3Rs
eSwgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgd2Uga2VlcCB0aGUgbG9jYWwgcmVzb2x1dGlvbiBy
ZXN1bHQgdG8gcHJvZHVjZSB0aGUKKyAgICAvLyBjb3JyZWN0IHJlc3VsdCB1bmRlciB0aGUgYWJv
dmUgY29tcGxleCBjYXNlcy4KKworICAgIHVzaW5nIFJlc29sdXRpb24gPSBKU01vZHVsZVJlY29y
ZDo6UmVzb2x1dGlvbjsKKyAgICB0eXBlZGVmIFdURjo6SGFzaFNldDxSZXNvbHZlUXVlcnksIFJl
c29sdmVRdWVyeUhhc2gsIFdURjo6Q3VzdG9tSGFzaFRyYWl0czxSZXNvbHZlUXVlcnk+PiBSZXNv
bHZlU2V0OworICAgIGVudW0gY2xhc3MgVHlwZSB7IFF1ZXJ5LCBJbmRpcmVjdEZhbGxiYWNrLCBH
YXRoZXJTdGFycyB9OworICAgIHN0cnVjdCBUYXNrIHsKKyAgICAgICAgUmVzb2x2ZVF1ZXJ5IHF1
ZXJ5OworICAgICAgICBUeXBlIHR5cGU7CisgICAgfTsKKworICAgIFZlY3RvcjxUYXNrLCA4PiBw
ZW5kaW5nVGFza3M7CisgICAgUmVzb2x2ZVNldCByZXNvbHZlU2V0OworICAgIEhhc2hTZXQ8SlNN
b2R1bGVSZWNvcmQqPiBzdGFyU2V0OworICAgIFZlY3RvcjxSZXNvbHV0aW9uLCA4PiBmcmFtZXM7
CisKKyAgICBmcmFtZXMuYXBwZW5kKFJlc29sdXRpb246Om5vdEZvdW5kKCkpOworCisgICAgLy8g
Q2FsbCB3aGVuIHRoZSBxdWVyeSBpcyBub3QgcmVzb2x2ZWQgaW4gdGhlIGN1cnJlbnQgbW9kdWxl
LgorICAgIC8vIEl0IHdpbGwgZW5xdWV1ZSB0aGUgc3RhciByZXNvbHV0aW9uIHJlcXVlc3RzLiBS
ZXR1cm4gImZhbHNlIiBpZiB0aGUgZXJyb3Igb2NjdXJzLgorICAgIGF1dG8gcmVzb2x2ZU5vbkxv
Y2FsID0gWyZdKGNvbnN0IFJlc29sdmVRdWVyeSYgcXVlcnkpIC0+IGJvb2wgeworICAgICAgICAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtcmVz
b2x2ZWV4cG9ydAorICAgICAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi4zLCBzdGVwIDYKKyAgICAg
ICAgLy8gSWYgdGhlICJkZWZhdWx0IiBuYW1lIGlzIG5vdCByZXNvbHZlZCBpbiB0aGUgY3VycmVu
dCBtb2R1bGUsIHdlIG5lZWQgdG8gdGhyb3cgYW4gZXJyb3IgYW5kIHN0b3AgcmVzb2x1dGlvbiBp
bW1lZGlhdGVseSwKKyAgICAgICAgLy8gUmF0aW9uYWxlIHRvIHRoaXMgZXJyb3I6IEEgZGVmYXVs
dCBleHBvcnQgY2Fubm90IGJlIHByb3ZpZGVkIGJ5IGFuIGV4cG9ydCAqLgorICAgICAgICBpZiAo
cXVlcnkuZXhwb3J0TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQu
aW1wbCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vIHN0ZXAgNywg
SWYgZXhwb3J0U3RhclNldCBjb250YWlucyBtb2R1bGUsIHRoZW4gcmV0dXJuIG51bGwuCisgICAg
ICAgIGlmICghc3RhclNldC5hZGQocXVlcnkubW9kdWxlUmVjb3JkKS5pc05ld0VudHJ5KQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gRW5xdWV1ZSB0aGUgdGFzayB0byBn
YXRoZXIgdGhlIHJlc3VsdHMgb2YgdGhlIHN0YXJzLgorICAgICAgICAvLyBBbmQgYXBwZW5kIHRo
ZSBuZXcgUmVzb2x1dGlvbiBmcmFtZSB0byBnYXRoZXIgdGhlIGxvY2FsIHJlc3VsdCBvZiB0aGUg
c3RhcnMuCisgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBlbmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpH
YXRoZXJTdGFycyB9KTsKKyAgICAgICAgZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9uOjpub3RGb3Vu
ZCgpKTsKKworICAgICAgICAvLyBFbnF1ZXVlIHRoZSB0YXNrcyBpbiByZXZlcnNlIG9yZGVyLgor
ICAgICAgICBmb3IgKGF1dG8gaXRlcmF0b3IgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPnN0YXJFeHBv
cnRFbnRyaWVzKCkucmJlZ2luKCksIGVuZCA9IHF1ZXJ5Lm1vZHVsZVJlY29yZC0+c3RhckV4cG9y
dEVudHJpZXMoKS5yZW5kKCk7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikgeworICAgICAg
ICAgICAgY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgc3Rhck1vZHVsZU5hbWUgPSAq
aXRlcmF0b3I7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGVSZWNv
cmQgPSBxdWVyeS5tb2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAg
ICAgICAgcGVuZGluZ1Rhc2tzLmFwcGVuZChUYXNrIHsgUmVzb2x2ZVF1ZXJ5KGltcG9ydGVkTW9k
dWxlUmVjb3JkLCBxdWVyeS5leHBvcnROYW1lLmdldCgpKSwgVHlwZTo6UXVlcnkgfSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIC8vIFJldHVybiB0aGUg
Y3VycmVudCByZXNvbHV0aW9uIHZhbHVlIG9mIHRoZSB0b3AgZnJhbWUuCisgICAgYXV0byBjdXJy
ZW50VG9wID0gWyZdICgpIC0+IFJlc29sdXRpb24mIHsKKyAgICAgICAgQVNTRVJUKCFmcmFtZXMu
aXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIGZyYW1lcy5sYXN0KCk7CisgICAgfTsKKworICAg
IC8vIE1lcmdlIHRoZSBnaXZlbiByZXNvbHV0aW9uIHRvIHRoZSBjdXJyZW50IHJlc29sdXRpb24g
dmFsdWUgb2YgdGhlIHRvcCBmcmFtZS4KKyAgICAvLyBJZiB0aGVyZSBpcyBhbWJpZ3VpdHksIHJl
dHVybiAiZmFsc2UiLiBXaGVuIHRoZSAiZmFsc2UiIGlzIHJldHVybmVkLCB3ZSBzaG91bGQgbWFr
ZSB0aGUgcmVzdWx0ICJhbWJpZ3VvdXMiLgorICAgIGF1dG8gbWVyZ2VUb0N1cnJlbnRUb3AgPSBb
Jl0gKGNvbnN0IFJlc29sdXRpb24mIHJlc29sdXRpb24pIC0+IGJvb2wgeworICAgICAgICBpZiAo
cmVzb2x1dGlvbi50eXBlID09IFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKGN1cnJlbnRUb3AoKS50eXBlID09IFJlc29s
dXRpb246OlR5cGU6Ok5vdEZvdW5kKSB7CisgICAgICAgICAgICBjdXJyZW50VG9wKCkgPSByZXNv
bHV0aW9uOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoY3VycmVudFRvcCgpLm1vZHVsZVJlY29yZCAhPSByZXNvbHV0aW9uLm1vZHVsZVJlY29yZCB8
fCBjdXJyZW50VG9wKCkubG9jYWxOYW1lICE9IHJlc29sdXRpb24ubG9jYWxOYW1lKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAg
ICBwZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyByb290LCBUeXBlOjpRdWVyeSB9KTsKKyAgICB3
aGlsZSAoIXBlbmRpbmdUYXNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29uc3QgVGFzayB0YXNr
ID0gcGVuZGluZ1Rhc2tzLnRha2VMYXN0KCk7CisgICAgICAgIGNvbnN0IFJlc29sdmVRdWVyeSYg
cXVlcnkgPSB0YXNrLnF1ZXJ5OworCisgICAgICAgIHN3aXRjaCAodGFzay50eXBlKSB7CisgICAg
ICAgIGNhc2UgVHlwZTo6UXVlcnk6IHsKKyAgICAgICAgICAgIGlmICghcmVzb2x2ZVNldC5hZGQo
dGFzay5xdWVyeSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHF1ZXJ5Lm1vZHVsZVJlY29y
ZDsKKyAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eT4gb3B0aW9uYWxFeHBvcnRFbnRyeSA9IG1vZHVsZVJlY29yZC0+dHJ5R2V0RXhwb3J0RW50cnko
cXVlcnkuZXhwb3J0TmFtZS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIW9wdGlvbmFsRXhwb3J0
RW50cnkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBtYXRjaGVkIGV4cG9y
dGVkIGJpbmRpbmcgaW4gdGhlIGN1cnJlbnQgbW9kdWxlLAorICAgICAgICAgICAgICAgIC8vIHdl
IG5lZWQgdG8gbG9vayBpbnRvIHRoZSBzdGFycy4KKyAgICAgICAgICAgICAgICBpZiAoIXJlc29s
dmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29s
dXRpb246OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGNvbnN0IEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeSYgZXhwb3J0
RW50cnkgPSAqb3B0aW9uYWxFeHBvcnRFbnRyeTsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwb3J0
RW50cnkudHlwZSkgeworICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50
cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0
RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgICAgICBpZiAoIW1lcmdlVG9DdXJy
ZW50VG9wKFJlc29sdXRpb24geyBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCwgbW9kdWxlUmVj
b3JkLCBleHBvcnRFbnRyeS5sb2NhbE5hbWUgfSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSZXNvbHV0aW9uOjphbWJpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGly
ZWN0OiB7CisgICAgICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlUmVj
b3JkID0gbW9kdWxlUmVjb3JkLT5ob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGV4cG9y
dEVudHJ5Lm1vZHVsZU5hbWUpOworCisgICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgaW1wb3J0
ZWQgbW9kdWxlIGRvZXMgbm90IHByb2R1Y2UgYW55IHJlc29sdmVkIGJpbmRpbmcsIHdlIG5lZWQg
dG8gbG9vayBpbnRvIHRoZSBzdGFycyBpbiB0aGUgKmN1cnJlbnQqCisgICAgICAgICAgICAgICAg
Ly8gbW9kdWxlLiBUbyBkbyB0aGlzLCB3ZSBhcHBlbmQgdGhlIGBJbmRpcmVjdEZhbGxiYWNrYCB0
YXNrIHRvIHRoZSB0YXNrIHF1ZXVlLgorICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrcy5hcHBl
bmQoVGFzayB7IHF1ZXJ5LCBUeXBlOjpJbmRpcmVjdEZhbGxiYWNrIH0pOworICAgICAgICAgICAg
ICAgIC8vIEFuZCBhcHBlbmQgdGhlIG5ldyBSZXNvbHV0aW9uIGZyYW1lIHRvIGNoZWNrIHRoZSBp
bmRpcmVjdCBleHBvcnQgd2lsbCBiZSByZXNvbHZlZCBvciBub3QuCisgICAgICAgICAgICAgICAg
ZnJhbWVzLmFwcGVuZChSZXNvbHV0aW9uOjpub3RGb3VuZCgpKTsKKyAgICAgICAgICAgICAgICBw
ZW5kaW5nVGFza3MuYXBwZW5kKFRhc2sgeyBSZXNvbHZlUXVlcnkoaW1wb3J0ZWRNb2R1bGVSZWNv
cmQsIGV4cG9ydEVudHJ5LmltcG9ydE5hbWUpLCBUeXBlOjpRdWVyeSB9KTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBUeXBlOjpJbmRpcmVjdEZhbGxiYWNr
OiB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0g
ZnJhbWVzLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0g
UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICAvLyBJbmRpcmVj
dCBleHBvcnQgZW50cnkgZG9lcyBub3QgcHJvZHVjZSBhbnkgcmVzb2x2ZWQgYmluZGluZy4KKyAg
ICAgICAgICAgICAgICAvLyBTbyB3ZSB3aWxsIGludmVzdGlnYXRlIHRoZSBzdGFycy4KKyAgICAg
ICAgICAgICAgICBpZiAoIXJlc29sdmVOb25Mb2NhbCh0YXNrLnF1ZXJ5KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmVycm9yKCk7CisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIGluZGlyZWN0IGV4cG9y
dCBlbnRyeSBwcm9kdWNlcyBSZXNvbHZlZCwgd2Ugc2hvdWxkIG1lcmdlIGl0IHRvIHRoZSB1cHBl
ciBmcmFtZS4KKyAgICAgICAgICAgIC8vIEFuZCBkbyBub3QgaW52ZXN0aWdhdGUgdGhlIHN0YXJz
IG9mIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAgICAgICAgICAgIGlmICghbWVyZ2VUb0N1cnJlbnRU
b3AocmVzb2x1dGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFJlc29sdXRpb246OmFtYmln
dW91cygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFR5
cGU6OkdhdGhlclN0YXJzOiB7CisgICAgICAgICAgICAvLyBNZXJnZSB0aGUgc3RhciByZXNvbHV0
aW9uIHRvIHRoZSB1cHBlciBmcmFtZS4KKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNv
bHV0aW9uIHN0YXJSZXNvbHV0aW9uID0gZnJhbWVzLnRha2VMYXN0KCk7CisgICAgICAgICAgICBp
ZiAoIW1lcmdlVG9DdXJyZW50VG9wKHN0YXJSZXNvbHV0aW9uKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gUmVzb2x1dGlvbjo6YW1iaWd1b3VzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUKGZyYW1lcy5zaXplKCkgPT0gMSk7
CisgICAgcmV0dXJuIGZyYW1lc1swXTsKK30KKworYXV0byBKU01vZHVsZVJlY29yZDo6cmVzb2x2
ZUV4cG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpIC0+
IFJlc29sdXRpb24KK3sKKyAgICByZXR1cm4gcmVzb2x2ZUV4cG9ydExvb3AoZXhlYywgUmVzb2x2
ZVF1ZXJ5KHRoaXMsIGV4cG9ydE5hbWUuaW1wbCgpKSk7Cit9CisKIHZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjKQogewogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3Vy
Y2VDb2RlKCkpOwpAQCAtMTAxLDExICs0MjksMTIwIEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omxp
bmsoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWN1dGFibGUpOworICAg
IGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKGV4ZWMsIGV4ZWN1dGFibGUpOwogfQogCi1KU1ZhbHVl
IEpTTW9kdWxlUmVjb3JkOjpleGVjdXRlKEV4ZWNTdGF0ZSopCit2b2lkIEpTTW9kdWxlUmVjb3Jk
OjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkKIHsKLSAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisKKyAgICBTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS0+bW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZSgpOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmly
b25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xU
YWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisK
KyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8gc2VjdGlvbiAxNS4yLjEu
MTYuNCBzdGVwIDkuCisgICAgLy8gRW5zdXJlIGFsbCB0aGUgaW5kaXJlY3QgZXhwb3J0cyBhcmUg
Y29ycmVjdGx5IHJlc29sdmVkIHRvIHVuaXF1ZSBiaW5kaW5ncy4KKyAgICAvLyBFdmVuIGlmIHdl
IGF2b2lkZWQgZHVwbGljYXRlIGV4cG9ydHMgaW4gdGhlIHBhcnNlciwgc3RpbGwgYW1iaWd1b3Vz
IGV4cG9ydHMgb2NjdXIgZHVlIHRvIHRoZSBzdGFyIGV4cG9ydCAoYGV4cG9ydCAqIGZyb20gIm1v
ZCJgKS4KKyAgICAvLyBXaGVuIHdlIHNlZSB0aGlzIHR5cGUgb2YgYW1iaWd1aXR5IGZvciB0aGUg
aW5kaXJlY3QgZXhwb3J0cyBoZXJlLCB0aHJvdyBhIHN5bnRheCBlcnJvci4KKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHBhaXIgOiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgRXhwb3J0
RW50cnkmIGV4cG9ydEVudHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgaWYgKGV4cG9ydEVudHJ5
LnR5cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdCkgewor
ICAgICAgICAgICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBl
eHBvcnRFbnRyeS5leHBvcnROYW1lKTsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50
eXBlKSB7CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAg
ICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3Rs
eSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1l
LmltcGwoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAg
ICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhw
b3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBs
KCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5k
aW5ncy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OkVycm9yOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1
bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
UmVzb2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAgLy8gc2Vj
dGlvbiAxNS4yLjEuMTYuNCBzdGVwIDEyLgorICAgIC8vIEluc3RhbnRpYXRlIG5hbWVzcGFjZSBv
YmplY3RzIGFuZCBpbml0aWFsaXplIHRoZSBiaW5kaW5ncyB3aXRoIHRoZW0gaWYgcmVxdWlyZWQu
CisgICAgLy8gQW5kIGVuc3VyZSB0aGF0IGFsbCB0aGUgaW1wb3J0cyBjb3JyZWN0bHkgcmVzb2x2
ZWQgdG8gdW5pcXVlIGJpbmRpbmdzLgorICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1w
b3J0RW50cmllcykgeworICAgICAgICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50cnkgPSBw
YWlyLnZhbHVlOworICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0
UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOwor
ICAgICAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2Uodm0pKSB7CisgICAgICAgICAgICAv
LyBGSVhNRTogTW9kdWxlTmFtZXNwYWNlT2JqZWN0IHdpbGwgYmUgaW1wbGVtZW50ZWQuCisgICAg
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NzA1
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBp
bXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1l
KTsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CisgICAgICAgICAgICBj
YXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgorICAgICAgICAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKGltcG9ydEVudHJ5LmltcG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywg
bWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5
LmltcG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3Vv
dXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKKyAgICAgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUg
J2RlZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCisgICAg
Ly8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDE0LgorICAgIC8vIE1vZHVsZSBlbnZpcm9ubWVu
dCBjb250YWlucyB0aGUgaGVhcCBhbGxvY2F0ZWQgInZhciIsICJmdW5jdGlvbiIsICJsZXQiLCAi
Y29uc3QiLCBhbmQgImNsYXNzIi4KKyAgICAvLyBXaGVuIGNyZWF0aW5nIHRoZSBlbnZpcm9ubWVu
dCwgd2UgaW5pdGlhbGl6ZWQgYWxsIHRoZSBzbG90cyB3aXRoIGVtcHR5LCBpdCdzIG9rIGZvciBs
ZXhpY2FsIHZhbHVlcy4KKyAgICAvLyBCdXQgZm9yICJ2YXIiIGFuZCAiZnVuY3Rpb24iLCB3ZSBz
aG91bGQgaW5pdGlhbGl6ZSBpdCB3aXRoIHVuZGVmaW5lZC4gVGhleSBhcmUgY29udGFpbmVkIGlu
IHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMuCisgICAgZm9yIChjb25zdCBhdXRvJiB2YXJpYWJsZSA6
IG1fZGVjbGFyZWRWYXJpYWJsZXMpIHsKKyAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9
IHN5bWJvbFRhYmxlLT5nZXQodmFyaWFibGUua2V5LmdldCgpKTsKKyAgICAgICAgVmFyT2Zmc2V0
IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgpOworICAgICAgICBpZiAoIW9mZnNldC5pc1N0YWNr
KCkpCisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywg
SWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5rZXkuZ2V0KCkpLCBqc1VuZGVmaW5l
ZCgpLCBmYWxzZSwgdHJ1ZSk7CisgICAgfQorCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlh
dGlvbgorICAgIC8vIHNlY3Rpb24gMTUuMi4xLjE2LjQgc3RlcCAxNi1hLWl2LgorICAgIC8vIElu
aXRpYWxpemUgaGVhcCBhbGxvY2F0ZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgorICAgIC8vIFRo
ZXkgY2FuIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGJvZHkgb2YgdGhlIG1vZHVsZSBpcyBleGVjdXRl
ZCB1bmRlciBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT51
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMCwg
bnVtYmVyT2ZGdW5jdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkRl
Y2xzKCk7IGkgPCBudW1iZXJPZkZ1bmN0aW9uczsgKytpKSB7CisgICAgICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSA9IHVubGlua2VkQ29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CisgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkg
PSBzeW1ib2xUYWJsZS0+Z2V0KHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCkuaW1w
bCgpKTsKKyAgICAgICAgVmFyT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnZhck9mZnNldCgpOworICAg
ICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghdW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgaWYg
KHZtLnR5cGVQcm9maWxlcigpIHx8IHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkgeworICAgICAg
ICAgICAgICAgIHZtLmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVk
UmFuZ2UobW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNvdXJjZUlEKCksCisgICAgICAgICAgICAg
ICAgICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZz
ZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5
cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUtPmxpbmsodm0sIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3VyY2UoKSks
IG1vZHVsZUVudmlyb25tZW50KTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVu
dmlyb25tZW50LCBleGVjLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5j
dGlvbiwgZmFsc2UsIHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgbV9tb2R1bGVFbnZp
cm9ubWVudC5zZXQodm0sIHRoaXMsIG1vZHVsZUVudmlyb25tZW50KTsKK30KKworSlNWYWx1ZSBK
U01vZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFtX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUobV9tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5nZXQoKSwgZXhlYywgbV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKSk7
CisgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jbGVhcigpOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiB1aWQpCkBAIC0xMjksMjMgKzU2NiwyNSBAQCB2b2lkIEpTTW9kdWxlUmVj
b3JkOjpkdW1wKCkKICAgICAgICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHByaW50YWJsZU5h
bWUobW9kdWxlTmFtZSksICIpXG4iKTsKIAogICAgIGRhdGFMb2coIiAgICBJbXBvcnQ6ICIsIG1f
aW1wb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKQotICAgICAgICBkYXRhTG9nKCIgICAgICBpbXBvcnQo
IiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJp
bnRhYmxlTmFtZShwYWlyLnZhbHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxl
TmFtZShwYWlyLnZhbHVlLm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7CisgICAgZm9yIChjb25zdCBh
dXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKSB7CisgICAgICAgIGNvbnN0IEltcG9ydEVudHJ5
JiBpbXBvcnRFbnRyeSA9IHBhaXIudmFsdWU7CisgICAgICAgIGRhdGFMb2coIiAgICAgIGltcG9y
dCgiLCBwcmludGFibGVOYW1lKGltcG9ydEVudHJ5LmltcG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwg
cHJpbnRhYmxlTmFtZShpbXBvcnRFbnRyeS5sb2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50
YWJsZU5hbWUoaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCksICIpXG4iKTsKKyAgICB9CiAKICAg
ICBkYXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJp
ZXNcbiIpOwogICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgewot
ICAgICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkgPSBwYWlyLnZhbHVlOwotICAgICAgICBz
d2l0Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGV4cG9ydEVu
dHJ5ID0gcGFpci52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChleHBvcnRFbnRyeS50eXBlKSB7CiAg
ICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgotICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgW0xvY2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0
TmFtZSksICIpLCBsb2NhbCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4i
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtMb2NhbF0gIiwgImV4cG9ydCgiLCBwcmlu
dGFibGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwgbG9jYWwoIiwgcHJpbnRhYmxl
TmFtZShleHBvcnRFbnRyeS5sb2NhbE5hbWUpLCAiKVxuIik7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpOYW1lc3BhY2U6Ci0gICAgICAgICAg
ICBkYXRhTG9nKCIgICAgICBbTmFtZXNwYWNlXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUo
ZW50cnkuZXhwb3J0TmFtZSksICIpLCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1
bGVOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW05hbWVzcGFjZV0g
IiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpLCAiKSwg
bW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkubW9kdWxlTmFtZSksICIpXG4iKTsK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Oklu
ZGlyZWN0OgotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhwb3J0
KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJpbnRh
YmxlTmFtZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKGVu
dHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbSW5k
aXJlY3RdICIsICJleHBvcnQoIiwgcHJpbnRhYmxlTmFtZShleHBvcnRFbnRyeS5leHBvcnROYW1l
KSwgIiksIGltcG9ydCgiLCBwcmludGFibGVOYW1lKGV4cG9ydEVudHJ5LmltcG9ydE5hbWUpLCAi
KSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZXhwb3J0RW50cnkubW9kdWxlTmFtZSksICIpXG4i
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggODFkYTM5NjZlOGM1YThk
YTkzMDRkMjgyZjRmYmNhOTRmMjRlYWU0OC4uMDg1MjFiNGNjZDNiMDRhYWVlMDNiM2I0NDFhMjFj
MWY2ZDQxOTY0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiVmFyaWFibGVFbnZpcm9ubWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03
OCw4ICs3OSw4IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKICAgICB9OwogCiAgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNl
dDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSW1wb3J0
RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4+PiBJbXBvcnRNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIEV4cG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gRXhwb3J0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gs
IEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEltcG9ydEVudHJpZXM7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEV4cG9ydEVudHJ5
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
Pj4gRXhwb3J0RW50cmllczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKQEAgLTEwMCwy
NSArMTAxLDQ5IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKICAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5Jik7CiAg
ICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOwogCi0gICAgY29uc3Qg
SW1wb3J0RW50cnkmIGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGxvY2FsTmFtZSk7CisgICAgT3B0aW9uYWw8SW1wb3J0RW50cnk+IHRyeUdldEltcG9y
dEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpOworICAgIE9wdGlvbmFsPEV4cG9y
dEVudHJ5PiB0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSk7
CiAKICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VDb2RlOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2R1bGVLZXk7IH0KICAgICBjb25zdCBPcmRlcmVkSWRlbnRpZmllclNldCYgcmVx
dWVzdGVkTW9kdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVkTW9kdWxlczsgfQotICAg
IGNvbnN0IEV4cG9ydE1hcCYgZXhwb3J0RW50cmllcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0
RW50cmllczsgfQotICAgIGNvbnN0IEltcG9ydE1hcCYgaW1wb3J0RW50cmllcygpIGNvbnN0IHsg
cmV0dXJuIG1faW1wb3J0RW50cmllczsgfQorICAgIGNvbnN0IEV4cG9ydEVudHJpZXMmIGV4cG9y
dEVudHJpZXMoKSBjb25zdCB7IHJldHVybiBtX2V4cG9ydEVudHJpZXM7IH0KKyAgICBjb25zdCBJ
bXBvcnRFbnRyaWVzJiBpbXBvcnRFbnRyaWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRFbnRy
aWVzOyB9CisgICAgY29uc3QgT3JkZXJlZElkZW50aWZpZXJTZXQmIHN0YXJFeHBvcnRFbnRyaWVz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFyRXhwb3J0RW50cmllczsgfQogCiAgICAgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Rl
Y2xhcmVkVmFyaWFibGVzOyB9CiAgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNh
bFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlczsgfQogCiAgICAg
dm9pZCBkdW1wKCk7CiAKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVu
dCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9tb2R1bGVFbnZpcm9ubWVudCk7CisgICAgICAg
IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgpOworICAgIH0KIAogICAgIHZvaWQgbGlu
ayhFeGVjU3RhdGUqKTsKICAgICBKU1ZhbHVlIGV4ZWN1dGUoRXhlY1N0YXRlKik7CiAKICAgICBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSBjb25zdCB7
IHJldHVybiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpOyB9CiAKKyAgICBzdHJ1Y3Qg
UmVzb2x1dGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IFJlc29sdmVkLCBOb3RGb3Vu
ZCwgQW1iaWd1b3VzLCBFcnJvciB9OworCisgICAgICAgIHN0YXRpYyBSZXNvbHV0aW9uIG5vdEZv
dW5kKCk7CisgICAgICAgIHN0YXRpYyBSZXNvbHV0aW9uIGVycm9yKCk7CisgICAgICAgIHN0YXRp
YyBSZXNvbHV0aW9uIGFtYmlndW91cygpOworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAg
SlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZDsKKyAgICAgICAgSWRlbnRpZmllciBsb2NhbE5h
bWU7CisgICAgfTsKKworICAgIFJlc29sdXRpb24gcmVzb2x2ZUV4cG9ydChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKTsKKyAgICBSZXNvbHV0aW9uIHJlc29sdmVJbXBv
cnQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKTsKKworICAgIEpTTW9k
dWxlUmVjb3JkKiBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZU5hbWUpOworCiBwcml2YXRlOgogICAgIEpTTW9kdWxlUmVjb3JkKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
ZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJp
YWJsZXMpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpAQCAtMTM0LDcgKzE1OSw3IEBA
IGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIEpTTW9kdWxlUmVjb3JkKiBob3N0
UmVzb2x2ZUltcG9ydGVkTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZU5hbWUpOworICAgIHZvaWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUqKTsKIAogICAgIC8vIFRoZSBsb2FkZXIgcmVzb2x2ZXMgdGhl
IGdpdmVuIG1vZHVsZSBuYW1lIHRvIHRoZSBtb2R1bGUga2V5LiBUaGUgbW9kdWxlIGtleSBpcyB0
aGUgdW5pcXVlIHZhbHVlIHRvIHJlcHJlc2VudCB0aGlzIG1vZHVsZS4KICAgICBJZGVudGlmaWVy
IG1fbW9kdWxlS2V5OwpAQCAtMTQ0LDQ2ICsxNjksMzcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQg
bV9kZWNsYXJlZFZhcmlhYmxlczsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fbGV4aWNhbFZh
cmlhYmxlczsKIAorICAgIC8vIEN1cnJlbnRseSwgd2UgZG9uJ3Qga2VlcCB0aGUgb2NjdXJyZW5j
ZSBvcmRlciBvZiB0aGUgaW1wb3J0IC8gZXhwb3J0IGVudHJpZXMuCisgICAgLy8gU28sIHdlIGRv
ZXMgbm90IGd1YXJhbnRlZSB0aGUgb3JkZXIgb2YgdGhlIGVycm9ycy4KKyAgICAvLyBlLmcuIFRo
ZSBpbXBvcnQgZGVjbGFyYXRpb24gdGhhdCBvY2N1cnIgbGF0ZXIgdGhhbiB0aGUgYW5vdGhlciBp
bXBvcnQgZGVjbGFyYXRpb24gbWF5CisgICAgLy8gICAgICB0aHJvdyB0aGUgZXJyb3IgZXZlbiBp
ZiB0aGUgZm9ybWVyIGltcG9ydCBkZWNsYXJhdGlvbiBhbHNvIGhhcyB0aGUgaW52YWxpZCBjb250
ZW50LgorICAgIC8vCisgICAgLy8gICAgICBpbXBvcnQgLi4uIC8vICgxKSB0aGlzIGhhcyBzb21l
IGludmFsaWQgY29udGVudC4KKyAgICAvLyAgICAgIGltcG9ydCAuLi4gLy8gKDIpIHRoaXMgYWxz
byBoYXMgc29tZSBpbnZhbGlkIGNvbnRlbnQuCisgICAgLy8KKyAgICAvLyAgICAgIEluIHRoZSBh
Ym92ZSBjYXNlLCAoMikgbWF5IHRocm93IHRoZSBlcnJvciBlYXJsaWVyIHRoYW4gKDEpCisgICAg
Ly8KKyAgICAvLyBCdXQsIGluIHRoZSBhbGwgY2FzZXMsIHdlIHdpbGwgdGhyb3cgdGhlIHN5bnRh
eCBlcnJvci4gU28gZXhjZXB0IGZvciB0aGUgY29udGVudCBvZiB0aGUgc3ludGF4IGVycm9yLAor
ICAgIC8vIHRoZXJlIGFyZSBubyBkaWZmZXJlbmNlLgorCiAgICAgLy8gTWFwIGxvY2FsTmFtZSAt
PiBJbXBvcnRFbnRyeS4KLSAgICBJbXBvcnRNYXAgbV9pbXBvcnRFbnRyaWVzOworICAgIEltcG9y
dEVudHJpZXMgbV9pbXBvcnRFbnRyaWVzOwogCiAgICAgLy8gTWFwIGV4cG9ydE5hbWUgLT4gRXhw
b3J0RW50cnkuCi0gICAgRXhwb3J0TWFwIG1fZXhwb3J0RW50cmllczsKKyAgICBFeHBvcnRFbnRy
aWVzIG1fZXhwb3J0RW50cmllczsKIAotICAgIElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50
cmllczsKKyAgICAvLyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHJlc29sdmVFeHBv
cnQgcmVxdWlyZXMgaXQuCisgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9zdGFyRXhwb3J0RW50
cmllczsKIAogICAgIC8vIFNhdmUgdGhlIG9jY3VycmVuY2Ugb3JkZXIgc2luY2UgdGhlIG1vZHVs
ZSBsb2FkZXIgbG9hZHMgYW5kIHJ1bnMgdGhlIG1vZHVsZXMgaW4gdGhpcyBvcmRlci4KICAgICAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9k
dWxlZXZhbHVhdGlvbgogICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fcmVxdWVzdGVkTW9kdWxl
czsKIAotICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4gbV9tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8SlNNYXA+IG1fZGVwZW5kZW5jaWVz
TWFwOwotfTsKIAotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1v
ZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fcmVxdWVzdGVkTW9k
dWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOwotfQotCi1pbmxpbmUgdm9pZCBKU01vZHVsZVJl
Y29yZDo6YWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmIGVudHJ5KQotewotICAgIG1f
aW1wb3J0RW50cmllcy5hZGQoZW50cnkubG9jYWxOYW1lLmltcGwoKSwgZW50cnkpOwotfQotCi1p
bmxpbmUgdm9pZCBKU01vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0RW50
cnkmIGVudHJ5KQotewotICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFtZS5p
bXBsKCksIGVudHJ5KTsKLX0KLQotaW5saW5lIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmFkZFN0YXJF
eHBvcnRFbnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQotewotICAgIG1fc3RhckV4
cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKLX0KLQotaW5saW5lIGF1dG8gSlNN
b2R1bGVSZWNvcmQ6Omxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGxvY2FsTmFtZSkgLT4gY29uc3QgSW1wb3J0RW50cnkmCi17Ci0gICAgcmV0dXJuICgq
bV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKSkudmFsdWU7Ci19CisgICAgV3JpdGVCYXJy
aWVyPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlPiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlOwor
ICAgIFdyaXRlQmFycmllcjxKU01vZHVsZUVudmlyb25tZW50PiBtX21vZHVsZUVudmlyb25tZW50
OworfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKaW5kZXggMTI4YTYwMjI5NTljOTA3YWRhN2ZjMjA3MzQyNmI3MmI3NWUx
OWVmMi4uMDBiYWU1NDEzNmQzOGJkMWU4YjNhZThhYWU0NzlhYmYwNDg5YjNmMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1l
bnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1
bGVSZWNvcmQuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKIApAQCAtNjUsNiArNjcsMTkgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNj
ZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIGNvbnN0IElkZW50aWYKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUVudmly
b25tZW50Kj4oc2NvcGUpKSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVj
b3JkID0gbW9kdWxlRW52aXJvbm1lbnQtPm1vZHVsZVJlY29yZCgpOworICAgICAgICAgICAgSlNN
b2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2
ZUltcG9ydChleGVjLCBpZGVudCk7CisgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi50eXBlID09
IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgeworICAgICAgICAg
ICAgICAgIEpTTW9kdWxlUmVjb3JkKiBpbXBvcnRlZFJlY29yZCA9IHJlc29sdXRpb24ubW9kdWxl
UmVjb3JkOworICAgICAgICAgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIGltcG9ydGVkRW52
aXJvbm1lbnQgPSBpbXBvcnRlZFJlY29yZC0+bW9kdWxlRW52aXJvbm1lbnQoKTsKKyAgICAgICAg
ICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gaW1wb3J0ZWRFbnZpcm9ubWVudC0+c3lt
Ym9sVGFibGUoKS0+Z2V0KHJlc29sdXRpb24ubG9jYWxOYW1lLmltcGwoKSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CisgICAgICAgICAgICAgICAgb3AgPSBSZXNv
bHZlT3AobWFrZVR5cGUoTW9kdWxlVmFyLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRo
LCAwLCBpbXBvcnRlZEVudmlyb25tZW50LCBlbnRyeS53YXRjaHBvaW50U2V0KCksIGVudHJ5LnNj
b3BlT2Zmc2V0KCkub2Zmc2V0KCksIHJlc29sdXRpb24ubG9jYWxOYW1lLmltcGwoKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAg
ICAgICBpZiAobGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT51c2VzTm9uU3RyaWN0
RXZhbCgpKQogICAgICAgICAgICAgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MgPSB0cnVlOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDgsNiArMjIzLDExIEBAIFJlc29sdmVPcCBKU1Njb3Bl
OjphYnN0cmFjdFJlc29sdmUoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgZGVwdGhPZmZzZXQsIEpT
U2NvcGUqCiB2b2lkIEpTU2NvcGU6OmNvbGxlY3RWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBz
Y29wZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcmVzdWx0KQogewogICAgIGZvciAoOyBzY29wZTsg
c2NvcGUgPSBzY29wZS0+bmV4dCgpKSB7CisgICAgICAgIGlmIChzY29wZS0+aXNNb2R1bGVTY29w
ZSgpKSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNDYXN0
PEpTTW9kdWxlRW52aXJvbm1lbnQqPihzY29wZSktPm1vZHVsZVJlY29yZCgpOworICAgICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbW9kdWxlUmVjb3JkLT5pbXBvcnRFbnRyaWVzKCkp
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmtleSk7CisgICAgICAgIH0KICAgICAg
ICAgaWYgKCFzY29wZS0+aXNMZXhpY2FsU2NvcGUoKSAmJiAhc2NvcGUtPmlzR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU3ltYm9sVGFi
bGUqIHN5bWJvbFRhYmxlID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihzY29wZSktPnN5
bWJvbFRhYmxlKCk7CkBAIC0yMzgsNiArMjU4LDExIEBAIGJvb2wgSlNTY29wZTo6aXNMZXhpY2Fs
U2NvcGUoKQogICAgIHJldHVybiBpc1Njb3BlVHlwZTxKU0xleGljYWxFbnZpcm9ubWVudCwgU3lt
Ym9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlPih0aGlzKTsKIH0KIAorYm9vbCBKU1Nj
b3BlOjppc01vZHVsZVNjb3BlKCkKK3sKKyAgICByZXR1cm4gaXNTY29wZVR5cGU8SlNNb2R1bGVF
bnZpcm9ubWVudCwgU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6TGV4aWNhbFNjb3BlPih0aGlzKTsK
K30KKwogYm9vbCBKU1Njb3BlOjppc0NhdGNoU2NvcGUoKQogewogICAgIHJldHVybiBpc1Njb3Bl
VHlwZTxKU0xleGljYWxFbnZpcm9ubWVudCwgU3ltYm9sVGFibGU6OlNjb3BlVHlwZTo6Q2F0Y2hT
Y29wZT4odGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKaW5kZXgg
MDZkOWVmMWI3ZjAzYjBmZDRhYjczMmU1YmY1ZWMzOTZlODE4ODM5Zi4uNTU5NDgyODM2ZmQ5MGFk
ZWM5MjY0ZmE1YzEzYTY2OTMxYzc2NTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuaApAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBKU1Njb3BlIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgewogCiAgICAgYm9vbCBpc1ZhclNjb3BlKCk7CiAgICAgYm9vbCBpc0xleGlj
YWxTY29wZSgpOworICAgIGJvb2wgaXNNb2R1bGVTY29wZSgpOwogICAgIGJvb2wgaXNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICBib29sIGlzQ2F0Y2hTY29wZSgpOwogICAgIGJvb2wg
aXNGdW5jdGlvbk5hbWVTY29wZU9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggMjhlMGJhZGFhNzJhZjMw
Y2M3NzE5MTk2MDRhNjEyZDZjZGI3M2UwNy4uNmU2ZjlmOWE2ZGE2MTgxMmUzYzIxYWQ0MzY2ZmQ4
N2I3Y2QxNDdkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9k
dWxlTG9hZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNJbnRl
cm5hbFByb21pc2UuaCIKICNpbmNsdWRlICJKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmgiCiAj
aW5jbHVkZSAiSlNNYXAuaCIKKyNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJNb2R1bGVBbmFseXplci5oIgogI2lu
Y2x1ZGUgIk5vZGVzLmgiCg==
</data>
<flag name="review"
          id="285719"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>