<?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>183786</bug_id>
          
          <creation_ts>2018-03-20 11:39:43 -0700</creation_ts>
          <short_desc>Implement setupArgumentsImpl for ARM and MIPS</short_desc>
          <delta_ts>2018-05-03 23:38:21 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>183474</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominik Inführ">dominik.infuehr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dominik.infuehr</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1407740</commentid>
    <comment_count>0</comment_count>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-03-20 11:39:43 -0700</bug_when>
    <thetext>Implement setupArgumentsImpl for ARM and MIPS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407746</commentid>
    <comment_count>1</comment_count>
      <attachid>336138</attachid>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-03-20 11:54:21 -0700</bug_when>
    <thetext>Created attachment 336138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407754</commentid>
    <comment_count>2</comment_count>
      <attachid>336140</attachid>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-03-20 12:44:58 -0700</bug_when>
    <thetext>Created attachment 336140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407755</commentid>
    <comment_count>3</comment_count>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-03-20 12:45:40 -0700</bug_when>
    <thetext>I&apos;ve fixed the unused parameter warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407953</commentid>
    <comment_count>4</comment_count>
      <attachid>336183</attachid>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-03-21 01:15:45 -0700</bug_when>
    <thetext>Created attachment 336183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408322</commentid>
    <comment_count>5</comment_count>
      <attachid>336183</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-03-22 03:50:07 -0700</bug_when>
    <thetext>Comment on attachment 336183
Patch

After reading this I&apos;m kinda starting to think that we should duplicate this code for each architecture via #ifs... With this change (and kinda before), you really need to deeply understand every architecture in order to understand the one you are interested in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408404</commentid>
    <comment_count>6</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-03-22 10:34:33 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #5)
&gt; Comment on attachment 336183 [details]
&gt; Patch
&gt; 
&gt; After reading this I&apos;m kinda starting to think that we should duplicate this
&gt; code for each architecture via #ifs... With this change (and kinda before),
&gt; you really need to deeply understand every architecture in order to
&gt; understand the one you are interested in.

+1 -- I think we&apos;ll need to do this for https://bugs.webkit.org/show_bug.cgi?id=183655 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409792</commentid>
    <comment_count>7</comment_count>
      <attachid>336644</attachid>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-03-28 00:13:01 -0700</bug_when>
    <thetext>Created attachment 336644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409793</commentid>
    <comment_count>8</comment_count>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-03-28 00:17:58 -0700</bug_when>
    <thetext>I&apos;ve updated the patch. The patch now implements ARM (hardfp and softfp) and MIPS calling convention. x86 uses still its own `#if CPU(X86)`.

I didn&apos;t split the implementation of ARM &amp; MIPS though since they are quite similar and only differ in one function. But instead of having those GPRInfo:: variables, I am now using #ifs in this function. Hope you like that better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411731</commentid>
    <comment_count>9</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-04-04 08:48:24 -0700</bug_when>
    <thetext>Ping reviewer. These platforms don&apos;t work at all without this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414255</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2018-04-12 17:39:11 -0700</bug_when>
    <thetext>(In reply to Guillaume Emont from comment #9)
&gt; Ping reviewer. These platforms don&apos;t work at all without this patch.

Second ping JSC reviewers? This bug is blocking on this platforms, please take a look if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414288</commentid>
    <comment_count>11</comment_count>
      <attachid>336644</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-12 20:10:53 -0700</bug_when>
    <thetext>Comment on attachment 336644
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:969
&gt; +        m_assembler.vmov(dest, RegisterID(dest+1), src);

Use `dest + 1`.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2926
&gt; +        m_assembler.mfc1(RegisterID(dest+1), FPRegisterID(src+1));

Ditto.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:305
&gt; +        RELEASE_ASSERT(TargetSize &lt;= sourceArray.size());

Keep `static_assert`.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:341
&gt; +    ALWAYS_INLINE bool pokeAligned(unsigned currentGPRArgument, unsigned currentFPRArgument, unsigned numCrossSources, unsigned extraGPRArgs, unsigned extraPoke)

The function name seems confusing. It does not `poke`. Use the name like `shouldPokeAligned` or the other.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:-337
&gt; -#else // USE(JSVALUE64)

Let&apos;s keep this #else.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:399
&gt; +#elif CPU(X86)

And add it as `#if CPU(X86)`.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:449
&gt; +    ALWAYS_INLINE unsigned align2(unsigned val)
&gt; +    {
&gt; +        return (val + 1) &amp; (~1);
&gt; +    }

Use `roundUpToMultipleOf&lt;2&gt;(val)` instead and remove this function.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:493
&gt; +            pokeForArgument(arg, numGPRArgs, numFPRArgs, numCrossSources, extraGPRArgs+1, extraPoke);

Use `extraPoke + 1`.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:503
&gt; +            pokeForArgument(arg, numGPRArgs, numFPRArgs, numCrossSources, extraGPRArgs, extraPoke+1);

Use `extraPoke + 1`.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:534
&gt; +

Remove this blank line.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:539
&gt; +

Remove this blank line.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:549
&gt; +    setupArgumentsImpl(ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt; argSourceRegs, JSValue::JSCellTag, GPRReg payload, Args... args)

Now, `JSValue::JSCellTag` is removed. We are using `CCallHelpers::CellValue` instead.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:563
&gt; +            move(TrustedImm32(JSValue::CellTag), GPRInfo::toArgumentRegister(alignedArgCount+1));

Use `alignedArgCount + 1`.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:564
&gt; +

Remove this blank line.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:571
&gt; +    setupArgumentsImpl(ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt; argSourceRegs, JSValue::JSCellTag, TrustedImmPtr payload, Args... args)

Ditto. But maybe this function is not necessary. We do not have `JSValue::JSCellTag &amp; TrustedImmPtr` combination right now.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:584
&gt; +            move(TrustedImm32(JSValue::CellTag), GPRInfo::toArgumentRegister(alignedArgCount+1));

Ditto.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:600
&gt; +            auto updatedArgSourceRegs2 = updatedArgSourceRegs1.pushExtraRegArg(arg.tagGPR(), GPRInfo::toArgumentRegister(alignedArgCount+1));

Use `alignedArgCount + 1`.
And is `pushExtraRegArg` correct? Do we always need extra reg arg to push JSValueRegs?

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:606
&gt; +

Remove this blank line.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:-453
&gt; -#undef RESULT_TYPE

Do not remove this undef.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:688
&gt; +#if CPU(JSVALUE64)
&gt;          static_assert(FunctionTraits&lt;OperationType&gt;::cCallArity() == numGPRArgs + numFPRArgs + extraPoke, &quot;Check the CCall arity&quot;);
&gt; +#endif

Add a valid static_assert for 32bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414762</commentid>
    <comment_count>12</comment_count>
      <attachid>337996</attachid>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-04-16 07:26:20 -0700</bug_when>
    <thetext>Created attachment 337996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415080</commentid>
    <comment_count>13</comment_count>
      <attachid>338093</attachid>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-04-17 02:10:36 -0700</bug_when>
    <thetext>Created attachment 338093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415087</commentid>
    <comment_count>14</comment_count>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-04-17 02:49:03 -0700</bug_when>
    <thetext>Thanks a lot for the review! I hope I&apos;ve addressed the points you raised. The patch is now rebased/updated, it now uses CellValue.

I didn&apos;t add a static_assert for 32-bit architectures though: Rules are a bit complicated here, I guess there is only a simple to write such a line after adding even more template parameters (to keep track of registers or stack slots not used due to padding).

&gt; And is `pushExtraRegArg` correct? Do we always need extra reg arg to push JSalueRegs?

I think so, JSValueRegs is 64-bit and on ARM/MIPS such a value is passed in two 32-bit registers if possible. I can&apos;t increase numGPRArgs by 2 for that (since it is also used for CURRENT_ARGUMEN_TYPE, we would skip an argument). That&apos;s why I&apos;ve added extraGPRArgs. Passing JSValueRegs in registers therefore means: increasing both numGPRARgs and extraGPRArgs by 1. If we need to skip a register for &quot;alignment&quot; (64-bit value can only start in register r0/r1 or r2/r3 but not r1/r2), extraGPRArgs even needs to be increased by 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415123</commentid>
    <comment_count>15</comment_count>
      <attachid>338093</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 07:41:10 -0700</bug_when>
    <thetext>Comment on attachment 338093
Patch

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

r=me with nits. Nice work!

&gt; Source/JavaScriptCore/ChangeLog:39
&gt; +        * assembler/MacroAssemblerARMv7.h:
&gt; +        (JSC::MacroAssemblerARMv7::moveDouble):
&gt; +        * assembler/MacroAssemblerMIPS.h:
&gt; +        (JSC::MacroAssemblerMIPS::moveDouble):
&gt; +        * jit/CCallHelpers.h:
&gt; +        (JSC::CCallHelpers::setupStubCrossArgs):
&gt; +        (JSC::CCallHelpers::ArgCollection::ArgCollection):
&gt; +        (JSC::CCallHelpers::ArgCollection::pushRegArg):
&gt; +        (JSC::CCallHelpers::ArgCollection::pushExtraRegArg):
&gt; +        (JSC::CCallHelpers::ArgCollection::addGPRArg):
&gt; +        (JSC::CCallHelpers::ArgCollection::addGPRExtraArg):
&gt; +        (JSC::CCallHelpers::ArgCollection::addStackArg):
&gt; +        (JSC::CCallHelpers::ArgCollection::addPoke):
&gt; +        (JSC::CCallHelpers::ArgCollection::argCount):
&gt; +        (JSC::CCallHelpers::clampArrayToSize):
&gt; +        (JSC::CCallHelpers::calculatePokeOffset):
&gt; +        (JSC::CCallHelpers::pokeForArgument):
&gt; +        (JSC::CCallHelpers::pokeAligned):
&gt; +        (JSC::CCallHelpers::marshallArgumentRegister):
&gt; +        (JSC::CCallHelpers::setupArgumentsImpl):
&gt; +        (JSC::CCallHelpers::align2):
&gt; +        (JSC::CCallHelpers::pokeArgumentsAligned):
&gt; +        (JSC::CCallHelpers::std::is_integral&lt;CURRENT_ARGUMENT_TYPE&gt;::value):
&gt; +        (JSC::CCallHelpers::std::is_pointer&lt;CURRENT_ARGUMENT_TYPE&gt;::value):
&gt; +        (JSC::CCallHelpers::setupArguments):
&gt; +        * jit/FPRInfo.h:
&gt; +        (JSC::FPRInfo::toArgumentRegister):

Could you update this ChangeLog to reflect the change in the latest patch? You can run `Tools/Scripts/webkit-patch upload --update-changelogs`.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:585
&gt; +            auto updatedArgSourceRegs1 = argSourceRegs.pushRegArg(arg.payloadGPR(), GPRInfo::toArgumentRegister(alignedArgCount));
&gt; +            auto updatedArgSourceRegs2 = updatedArgSourceRegs1.pushExtraRegArg(arg.tagGPR(), GPRInfo::toArgumentRegister(alignedArgCount + 1));

OK, so can you add a comment about why we are increasing extra reg arg and not increasing numGPRArgs by 2 instead? It is tricky if we know that JSValueRegs is represented by two GPRRegs in 32bit function calls.

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:674
&gt; +#if CPU(JSVALUE64)
&gt;          static_assert(FunctionTraits&lt;OperationType&gt;::cCallArity() == numGPRArgs + numFPRArgs + extraPoke, &quot;Check the CCall arity&quot;);
&gt; +#endif

So, can we keep this static_assert for CPU(X86) too? It is useful for keeping 32bit build sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415124</commentid>
    <comment_count>16</comment_count>
      <attachid>338093</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-17 07:42:06 -0700</bug_when>
    <thetext>Comment on attachment 338093
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:39
&gt;&gt; +        (JSC::FPRInfo::toArgumentRegister):
&gt; 
&gt; Could you update this ChangeLog to reflect the change in the latest patch? You can run `Tools/Scripts/webkit-patch upload --update-changelogs`.

If you want not to clear r+, you can use like `Tools/Scripts/webkit-patch upload --update-changelogs --no-review --no-obsolete`. And you can set cq? for that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415140</commentid>
    <comment_count>17</comment_count>
      <attachid>338115</attachid>
    <who name="Dominik Inführ">dominik.infuehr</who>
    <bug_when>2018-04-17 08:37:06 -0700</bug_when>
    <thetext>Created attachment 338115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415153</commentid>
    <comment_count>18</comment_count>
      <attachid>338115</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-17 08:53:06 -0700</bug_when>
    <thetext>Comment on attachment 338115
Patch

Rejecting attachment 338115 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 338115, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/JavaScriptCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/7344653</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415199</commentid>
    <comment_count>19</comment_count>
      <attachid>338115</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-17 10:05:26 -0700</bug_when>
    <thetext>Comment on attachment 338115
Patch

Clearing flags on attachment: 338115

Committed r230717: &lt;https://trac.webkit.org/changeset/230717&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1420577</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-03 23:38:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/39968383&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336138</attachid>
            <date>2018-03-20 11:54:21 -0700</date>
            <delta_ts>2018-03-20 12:44:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183786-20180320195419.patch</filename>
            <type>text/plain</type>
            <size>43596</size>
            <attacher name="Dominik Inführ">dominik.infuehr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YmNlYTI0YjQ1NDcyY2Q2Nzc4NDQwZDBiNTA5YmU1YmQ1MTJiNzc3Li4xMzJmZTFjYTEyZDZhYTVm
NzYxZmRjM2Y5NzBiZjdlZDcxMzM5NThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0wMy0yMCAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2V0dXBBcmd1bWVudHNJbXBsIGZvciBBUk0gYW5k
IE1JUFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBzZXR1cEFyZ3VtZW50c0ltcGwgZm9yIEFSTSBhbmQgTUlQUyBjYWxsaW5nIGNvbnZl
bnRpb24uIEFkZGVkCisgICAgICAgIG51bUNyb3NzU291cmNlcyBhbmQgZXh0cmFHUFJBcmdzIHRv
IEFyZ0NvbGxlY3Rpb24gdG8ga2VlcCB0cmFjayBvZiBleHRyYQorICAgICAgICByZWdpc3RlcnMg
dXNlZCBmb3IgNjQtYml0IHZhbHVlcyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gbnVtQ3Jvc3NT
b3VyY2VzCisgICAgICAgIGtlZXBzIHRyYWNrIG9mIGFzc2lnbm1lbnRzIGZyb20gRlBSIHRvIEdQ
UiByZWdpc3RlcnMgYXMgaGFwcGVucyBlLmcuIG9uIE1JUFMuCisKKyAgICAgICAgR1BSSW5mbzo6
YWxpZ242NEJpdEFyZ3VtZW50c09uU3RhY2sgaXMgc2V0IHRvIHRydWUgaWYgNjQtYml0IHZhbHVl
cyBuZWVkIHRvCisgICAgICAgIGJlIGFsaWduZWQgdG8gOC1ieXRlcyBhcyBvcHBvc2VkIHRvIDQt
Ynl0ZXMgb24gYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojptb3ZlRG91YmxlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQ3Jvc3NBcmdzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphcmdDb3VudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkND
YWxsSGVscGVyczo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
Ojpwb2tlQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bWFyc2hhbGxBcmd1
bWVudFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
c0ltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmFsaWduMik6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFs
dWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5U
X0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0
dXBBcmd1bWVudHMpOgorICAgICAgICAqIGppdC9GUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkZQ
UkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKwog
MjAxOC0wMy0yMCAgU3RhbmlzbGF2IE9jb3ZhaiAgPHN0YW5pc2xhdi5vY292YWpAcnQtcmsuY29t
PgogCiAgICAgICAgIFtNSVBTXSBPcHRpbWl6ZSBnZW5lcmF0ZWQgSklUIGNvZGUgZm9yIGxvYWRz
L3N0b3JlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmgKaW5kZXggMGEyNGM1NDZjZjZiODg3OWZhYzVjN2I3MDdmODcwYjA5OGY0
N2VmNi4uODM0OTIxMzc3MjE1N2VjZThmNGE4YjU2OTAyMjJhNzRiNWVlYWZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5o
CkBAIC0yOTEyLDYgKzI5MTIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92ZChkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tZmMx
KGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoUmVnaXN0ZXJJRChkZXN0KzEp
LCBGUFJlZ2lzdGVySUQoc3JjKzEpKTsKKyAgICB9CisKICAgICB2b2lkIG1vdmVaZXJvVG9Eb3Vi
bGUoRlBSZWdpc3RlcklEIHJlZykKICAgICB7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91Ymxl
KE1JUFNSZWdpc3RlcnM6Onplcm8sIHJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAppbmRleCA3ZjQ3YTQxYWU5ZGQ4N2FhYWM4Y2M3OWVjNTBhMDdjOTc4ODQ3Mjgx
Li5hYWIwZWE1YWMwNjkxNTZkMzYxYjgyMjYzZTQzNTg3MzQ4YTc2NjgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTE3NywxMSArMTc3LDI2IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJl
Z2lzdGVycz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBTdHViQ3Jvc3NBcmdzKHN0ZDo6
YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gZGVzdGluYXRpb25zLCBzdGQ6OmFycmF5
PEZQUlJlZywgTnVtYmVyT2ZSZWdpc3RlcnM+IHNvdXJjZXMpIHsKKyNpZiBDUFUoTUlQUykKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mUmVnaXN0ZXJzOyBpKyspIHsK
KyAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gZGVzdGluYXRpb25zW2ldOworICAgICAgICAgICAg
RlBSUmVnIHNvdXJjZSA9IHNvdXJjZXNbaV07CisKKyAgICAgICAgICAgIG1vdmVEb3VibGUoc291
cmNlLCBkZXN0KTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgc3RhdGljX2Fzc2VydCghTnVt
YmVyT2ZSZWdpc3RlcnMsICJzaG91bGQgb25seSBiZSB1c2VkIG9uIE1JUFMgZm9yIG5vdy4iKTsK
KyNlbmRpZgorICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CiAgICAgdXNp
bmcgSW5mb1R5cGVGb3JSZWcgPSBkZWNsdHlwZSh0b0luZm9Gcm9tUmVnKFJlZ1R5cGUoLTEpKSk7
CiAKKyAgICAvLyBleHRyYUdQUkFyZ3MgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQg
dHlwZXMgcGFzc2VkIGluIHJlZ2lzdGVyCiAgICAgLy8gZXh0cmFQb2tlIGlzIHVzZWQgdG8gdHJh
Y2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBvbiB0aGUgc3RhY2suCi0gICAgdGVtcGxh
dGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlPgor
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+
CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewogICAgICAgICBBcmdDb2xsZWN0aW9uKCkKICAg
ICAgICAgewpAQCAtMTg5LDYzICsyMDQsOTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGdwckRl
c3RpbmF0aW9ucy5maWxsKEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgZnByU291cmNlcy5m
aWxsKEludmFsaWRGUFJSZWcpOwogICAgICAgICAgICAgZnByRGVzdGluYXRpb25zLmZpbGwoSW52
YWxpZEZQUlJlZyk7CisgICAgICAgICAgICBjcm9zc1NvdXJjZXMuZmlsbChJbnZhbGlkRlBSUmVn
KTsKKyAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAg
ICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNp
Z25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlPgotICAgICAgICBBcmdDb2xsZWN0aW9uKEFy
Z0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZT4mIG90aGVyKQorICAgICAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1
bnNpZ25lZCBmLCB1bnNpZ25lZCBnPgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rp
b248YSwgYiwgYywgZCwgZSwgZiwgZz4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBn
cHJTb3VyY2VzID0gb3RoZXIuZ3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9u
cyA9IG90aGVyLmdwckRlc3RpbmF0aW9uczsKICAgICAgICAgICAgIGZwclNvdXJjZXMgPSBvdGhl
ci5mcHJTb3VyY2VzOwogICAgICAgICAgICAgZnByRGVzdGluYXRpb25zID0gb3RoZXIuZnByRGVz
dGluYXRpb25zOworICAgICAgICAgICAgY3Jvc3NTb3VyY2VzID0gb3RoZXIuY3Jvc3NTb3VyY2Vz
OworICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMgPSBvdGhlci5jcm9zc0Rlc3RpbmF0aW9u
czsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51
bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IHB1
c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiByZXN1bHQoKnRo
aXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3Vs
dC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1
bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyAr
IDEsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5h
dGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVz
dGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBleHRy
YVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAog
ICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBhcmd1bWVudDsK
ICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNlc10gPSBkZXN0
aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNo
UmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICB7Cisg
ICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKworICAgICAgICAgICAgcmVzdWx0LmNyb3Nz
U291cmNlc1tudW1Dcm9zc1NvdXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQu
Y3Jvc3NEZXN0aW5hdGlvbnNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFS
ZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsg
MSwgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291
cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRl
c3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgIH0KKworICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiBhZGRHUFJF
eHRyYUFyZygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBl
eHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0K
IAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykK
KyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4g
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4o
KnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBh
ZGRTdGFja0FyZyhGUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4oKnRoaXMpOwor
ICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAgICAgICB9CiAKIAotICAgICAgICB1bnNpZ25l
ZCBhcmdDb3VudChHUFJSZWcpIHsgcmV0dXJuIG51bUdQUkFyZ3M7IH0KKyAgICAgICAgdW5zaWdu
ZWQgYXJnQ291bnQoR1BSUmVnKSB7IHJldHVybiBudW1HUFJBcmdzICsgZXh0cmFHUFJBcmdzOyB9
CiAgICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50KEZQUlJlZykgeyByZXR1cm4gbnVtRlBSQXJnczsg
fQogCisgICAgICAgIC8vIHN0b3JlIEdQUiAtPiBHUFIgYXNzaWdubWVudHMKICAgICAgICAgc3Rk
OjphcnJheTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBncHJTb3VyY2VzOwog
ICAgICAgICBzdGQ6OmFycmF5PEdQUlJlZywgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM+IGdw
ckRlc3RpbmF0aW9uczsKKworICAgICAgICAvLyBzdG9yZSBGUFIgLT4gRlBSIGFzc2lnbm1lbnRz
CiAgICAgICAgIHN0ZDo6YXJyYXk8RlBSUmVnLCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycz4g
ZnByU291cmNlczsKICAgICAgICAgc3RkOjphcnJheTxGUFJSZWcsIEZQUkluZm86Om51bWJlck9m
UmVnaXN0ZXJzPiBmcHJEZXN0aW5hdGlvbnM7CisKKyAgICAgICAgLy8gc3RvcmUgRlBSIC0+IEdQ
UiBhc3NpZ25tZW50cworICAgICAgICBzdGQ6OmFycmF5PEZQUlJlZywgR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM+IGNyb3NzU291cmNlczsKKyAgICAgICAgc3RkOjphcnJheTxHUFJSZWcsIEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBjcm9zc0Rlc3RpbmF0aW9uczsKICAgICB9OwogCiAg
ICAgdGVtcGxhdGU8dW5zaWduZWQgVGFyZ2V0U2l6ZSwgdHlwZW5hbWUgUmVnVHlwZT4KQEAgLTI2
NCwyMCArMzEzLDM1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFM
V0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNldCh1bnNpZ25lZCBjdXJyZW50
R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewogICAgICAgICAvLyBDbGFuZyBjbGFp
bXMgdGhhdCBpdCBjYW5ub3QgZmluZCB0aGUgc3ltYm9sIGZvciBGUFJSZWcvR1BSUmVnOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHdoZW4gdGhleSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHN0
ZDo6bWF4Li4uIHNlZW1zIGxpa2UgYSBidWcKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGUEFy
Z3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKLSAgICAgICAgQVNTRVJUKGN1cnJlbnRHUFJBcmd1bWVu
dCA+PSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHx8IGN1cnJlbnRGUFJBcmd1
bWVudCA+PSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKKworICAgICAgICB1
bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnRXaXRoRXh0cmEgPSBjdXJyZW50R1BSQXJndW1lbnQg
KyBleHRyYUdQUkFyZ3M7CisgICAgICAgIEFTU0VSVChjdXJyZW50R1BSQXJndW1lbnRXaXRoRXh0
cmEgPj0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB8fCBjdXJyZW50RlBSQXJn
dW1lbnQgPj0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7CiAKICAgICAgICAg
dW5zaWduZWQgcG9rZU9mZnNldCA9IFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgZXh0cmFQb2tlOwot
ICAgICAgICBwb2tlT2Zmc2V0ICs9IHN0ZDo6bWF4KGN1cnJlbnRHUFJBcmd1bWVudCwgbnVtYmVy
T2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSAtIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVyczsKKyAg
ICAgICAgcG9rZU9mZnNldCArPSBzdGQ6Om1heChjdXJyZW50R1BSQXJndW1lbnRXaXRoRXh0cmEs
IG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgLSBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3Rl
cnM7CiAgICAgICAgIHBva2VPZmZzZXQgKz0gc3RkOjptYXgoY3VycmVudEZQUkFyZ3VtZW50LCBu
dW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMpIC0gbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJz
OworCisgICAgICAgIHJldHVybiBwb2tlT2Zmc2V0OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEFyZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChB
cmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50
RlBSQXJndW1lbnQsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQor
ICAgIHsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQo
Y3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOwogICAgIH0KIAorICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBwb2tlQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBleHRyYVBva2UpCisgICAgeworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2Fs
Y3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYg
MSk7CisgICAgfQorCiAgICAgLy8gSW4gdGhlIGF1dG8tY2FsbGluZyBjb252ZW50aW9uIGNvZGUg
YmVsb3cgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaXM6CiAgICAgLy8gICAgMSkgc3BpbGwgYXJn
dW1lbnRzIHRvIHN0YWNrIHNsb3RzCiAgICAgLy8gICAgMikgc2h1ZmZsZSBpbmNvbW1pbmcgYXJn
dW1lbnQgdmFsdWVzIGluIHJlZ2lzdGVycyB0byBhcmd1bWVudCByZWdpc3RlcnMKQEAgLTI5MCw4
ICszNTQsOCBAQCBwcml2YXRlOgogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJ
bmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1B
cmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTMw
MiwxMzUgKzM2NiwyNjkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJn
cy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJB
cmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25l
ZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxD
VVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUg
cGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRS
ZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdz
KQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQogCi0jZWxzZSAvLyBVU0UoSlNWQUxVRTY0
KQorI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAotICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBh
cmUgYSBoYWNrIGZvciBYODYgc2luY2UgaXQgaGFzIG5vIGFyZ3VtZW50IGdwcnMuLi4KKyAgICB1
bnNpZ25lZCBhbGlnbjIodW5zaWduZWQgdmFsKQorICAgIHsKKyAgICAgICAgcmV0dXJuICh2YWwg
KyAxKSAmICh+MSk7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyNpZiBDUFUoTUlQUykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVl
LCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7Ci0gICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9r
ZSk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKKworICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3Rl
cnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50RlBBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKKyAgICAg
ICAgdW5zaWduZWQgY3VycmVudEdQQXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgdW5zaWduZWQgYWxpZ25lZEdQQXJnQ291bnQgPSBhbGln
bjIoY3VycmVudEdQQXJnQ291bnQpOworCisgICAgICAgIGlmIChjdXJyZW50RlBBcmdDb3VudCA8
IG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyAmJiAhbnVtR1BSQXJncykgeworICAgICAgICAg
ICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhh
cmcsIEZQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50RlBBcmdDb3VudCkpOworCisg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFsaWduZWRHUEFy
Z0NvdW50ICsgMSA8IG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgeworICAgICAgICAgICAg
YXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcs
IEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkR1BBcmdDb3VudCkpOworCisgICAg
ICAgICAgICBpZiAoYWxpZ25lZEdQQXJnQ291bnQgPiBjdXJyZW50R1BBcmdDb3VudCkKKyAgICAg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJn
KCksIGFyZ3MuLi4pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncy5hZGRHUFJFeHRy
YUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudEdQQXJnQ291bnQgPCBudW1iZXJPZkdQ
QXJndW1lbnRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncysxLCBleHRyYVBva2UpOworICAgICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRk
R1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocG9rZUFsaWduZWQobnVt
R1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7CisgICAgICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4u
Lik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSsxKTsKKyAgICAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFk
ZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIH0K
KyAgICB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQ
UlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUsICJXZSBzaG91
bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKKworICAgICAgICB1bnNp
Z25lZCBudW1BcmdSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJz
OworICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0Nv
dW50KGFyZyk7CisKKyAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lzdGVy
cykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJl
Z3MucHVzaFJlZ0FyZyhhcmcsIEZQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJn
Q291bnQpKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1
cGRhdGVkQXJnU291cmNlUmVncywgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIUdQUkluZm86OmFsaWduNjRCaXRBcmd1bWVudHNPblN0YWNr
IHx8IHBva2VBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJn
KS5hZGRQb2tlKCksIGFyZ3MuLi4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UrMSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOworICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6
ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CisgICAgICAg
IHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3Mu
YXJnQ291bnQoYXJnKTsKKyAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lz
dGVycykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJj
ZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50
QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
Pih1cGRhdGVkQXJnU291cmNlUmVncywgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3Mu
Li4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVu
YW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBv
a2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3Mu
Li4gYXJncykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUklu
Zm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRB
cmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoR1BSSW5mbzo6cmVnVDApOworCisgICAg
ICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJh
R1BSQXJncyArIDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
MiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsg
MSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7
CisKKyAgICAgICAgfSBlbHNlIGlmICghR1BSSW5mbzo6YWxpZ242NEJpdEFyZ3VtZW50c09uU3Rh
Y2sgfHwgcG9rZUFsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOworCisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSArIDIpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2Uo
KSwgYXJncy4uLik7CisgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEpTVmFsdWU6OkpTQ2VsbFRhZywgR1BSUmVnIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKKyAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlOjpKU0NlbGxUYWcsIEdQUlJlZyBw
YXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQocGF5
bG9hZCwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9rZUZv
ckFyZ3VtZW50KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgZXh0cmFQb2tlICsgMSk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7
CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1Nv
dXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZCk7CisgICAgICAgIHVuc2lnbmVkIGFsaWduZWRBcmdD
b3VudCA9IGFsaWduMihjdXJyZW50QXJnQ291bnQpOworCisgICAgICAgIGlmIChhbGlnbmVkQXJn
Q291bnQgKyAxIDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBhdXRvIHVwZGF0ZWRB
cmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKHBheWxvYWQsIEdQUkluZm86
OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQpKTsKKworICAgICAgICAgICAgaWYg
KGFsaWduZWRBcmdDb3VudCA+IGN1cnJlbnRBcmdDb3VudCkKKyAgICAgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BS
RXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRl
ZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKSwgYXJncy4uLik7CisKKyAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjp0b0FyZ3VtZW50
UmVnaXN0ZXIoYWxpZ25lZEFyZ0NvdW50KzEpKTsKKworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIHBh
eWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgYXJncy4uLik7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElO
RSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVu
Y29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlOjpKU0NlbGxUYWcsIFRydXN0ZWRJbW1Q
dHIgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEpTVmFsdWU6OkpTQ2VsbFRhZywgVHJ1c3RlZEltbVB0ciBwYXlsb2FkLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQocGF5bG9hZCwgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tl
ICsgMSk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIHVuc2lnbmVk
IG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7Cisg
ICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQo
R1BSSW5mbzo6cmVnVDApOworICAgICAgICB1bnNpZ25lZCBhbGlnbmVkQXJnQ291bnQgPSBhbGln
bjIoY3VycmVudEFyZ0NvdW50KTsKKworICAgICAgICBpZiAoYWxpZ25lZEFyZ0NvdW50ICsgMSA8
IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgaWYgKGFsaWduZWRBcmdDb3VudCA+IGN1
cnJlbnRBcmdDb3VudCkKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRHUFJFeHRyYUFyZygpLmFkZEdQ
UkV4dHJhQXJnKCksIGFyZ3MuLi4pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFy
ZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworCisgICAgICAgICAgICBtb3ZlKHBheWxv
YWQsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQpKTsKKyAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjp0b0Fy
Z3VtZW50UmVnaXN0ZXIoYWxpZ25lZEFyZ0NvdW50KzEpKTsKKworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MsIHBheWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlT
X0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcs
IEFyZ3MuLi4gYXJncykKICAgICB7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcucGF5bG9h
ZEdQUigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLnRhZ0dQUigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBv
a2UgKyAxKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKKyAgICAgICAgdW5zaWdu
ZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsK
KyAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3Vu
dChhcmcudGFnR1BSKCkpOworICAgICAgICB1bnNpZ25lZCBhbGlnbmVkQXJnQ291bnQgPSBhbGln
bjIoY3VycmVudEFyZ0NvdW50KTsKKworICAgICAgICBpZiAoYWxpZ25lZEFyZ0NvdW50ICsgMSA8
IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVn
czEgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdBcmcoYXJnLnBheWxvYWRHUFIoKSwgR1BSSW5mbzo6
dG9Bcmd1bWVudFJlZ2lzdGVyKGFsaWduZWRBcmdDb3VudCkpOworICAgICAgICAgICAgYXV0byB1
cGRhdGVkQXJnU291cmNlUmVnczIgPSB1cGRhdGVkQXJnU291cmNlUmVnczEucHVzaEV4dHJhUmVn
QXJnKGFyZy50YWdHUFIoKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGFsaWduZWRBcmdD
b3VudCsxKSk7CisKKyAgICAgICAgICAgIGlmIChhbGlnbmVkQXJnQ291bnQgPiBjdXJyZW50QXJn
Q291bnQpCisgICAgICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KHVwZGF0ZWRBcmdTb3VyY2VSZWdzMi5hZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MyLCBhcmdzLi4uKTsKKworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIGFyZy5wYXlsb2FkR1BSKCksIGFyZy50YWdHUFIoKSwgYXJncy4uLik7CiAgICAgfQog
CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5F
IHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxUcnVzdGVkSW1tLCBB
cmc+Ojp2YWx1ZQogICAgICAgICB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPEFyZywgVHJ1c3RlZElt
bT46OnZhbHVlPiAvLyBXZSBoYXZlIHRoaXMgc2luY2UgREZHU3BlY3VsYXRpdmVKSVQgaGFzIGl0
J3Mgb3duIGltcGxlbWVudGF0aW9uIG9mIFRydXN0ZWRJbW1QdHIKLSAgICBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBvbmx5IHN1cHBvcnRz
IG5vbi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRzIHNpbmNlIHdlIG5ldmVyIGNh
bGwgb3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMuCiAgICAgICAgIC8vIElmIHdl
IGV2ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0aW5nIHBvaW50IGFyZ3VtZW50
cyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2ljIGZvciBib3RoIHR5cGVzLCB3
aGljaCBzb3VuZHMKICAgICAgICAgLy8gZ3Jvc3Mgc28gaXQncyBwcm9iYWJseSBiZXR0ZXIgdG8g
ZG8gdGhhdCBtYXJzaGFsbGluZyBiZWZvcmUgdGhlIGNhbGwgb3BlcmF0aW9uLi4uCiAgICAgICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8Q1VSUkVOVF9BUkdVTUVOVF9U
WVBFPjo6dmFsdWUsICJXZSBkb24ndCBzdXBwb3J0IGltbWVkaWF0ZSBmbG9hdHMvZG91YmxlcyBp
biBzZXR1cEFyZ3VtZW50cyIpOwogICAgICAgICBhdXRvIG51bUFyZ1JlZ2lzdGVycyA9IEdQUklu
Zm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgICAgIGlmIChudW1HUFJBcmdzIDwg
bnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IG51
bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7CisgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgPCBu
dW1BcmdSZWdpc3RlcnMpIHsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKLSAgICAgICAgICAg
IG1vdmUoYXJnLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobnVtR1BSQXJncykpOworICAg
ICAgICAgICAgbW92ZShhcmcsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJn
Q291bnQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJn
cz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNf
c2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6
aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNp
emVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBB
cmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjpp
c19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3Rk
Ojppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAo
c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPT0gOCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4u
IGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02NChhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6
OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKChz
dGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6OnJl
bW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+PiosIENVUlJFTlRfQVJHVU1F
TlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjppc19zYW1lPEFyZywgc3RkOjpu
dWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRy
dXN0ZWRJbW1QdHIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgLy8gU3BlY2lhbCBjYXNl
IERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZSBiZWNhdXNlIGl0J3MgcmVhbGx5IGFubm95aW5nIHRv
IGRlYWwgd2l0aCBvdGhlcndpc2UuLi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBF
LCBTdHJ1Y3R1cmUqPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19zYW1lPEFyZywgREZHOjpS
ZWdpc3RlcmVkU3RydWN0dXJlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisg
ICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDM4
LDEzICs2MzYsMTcgQEAgcHJpdmF0ZToKICN1bmRlZiBDVVJSRU5UX0FSR1VNRU5UX1RZUEUKIAog
ICAgIC8vIEJhc2UgY2FzZTsgc2V0IHVwIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25l
IGxhc3Qgc2FuaXR5IGNoZWNrIik7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFp
dHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJn
cyArIGV4dHJhUG9rZSwgIkNoZWNrIHRoZSBDQ2FsbCBhcml0eSIpOworI2lmIENQVShKU1ZBTFVF
NjQpCisgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46
OmNDYWxsQXJpdHkoKSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncyArIGV4dHJhR1BSQXJncyAr
IGV4dHJhUG9rZSwgIkNoZWNrIHRoZSBDQ2FsbCBhcml0eSIpOworI2VuZGlmCiAgICAgICAgIHNl
dHVwU3R1YkFyZ3M8bnVtR1BSU291cmNlcywgR1BSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUdQ
UlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVncy5ncHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFy
cmF5VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVncy5ncHJTb3VyY2Vz
KSk7Ci0KKyNpZiBDUFUoTUlQUykKKyAgICAgICAgc2V0dXBTdHViQ3Jvc3NBcmdzKGNsYW1wQXJy
YXlUb1NpemU8bnVtQ3Jvc3NTb3VyY2VzLCBHUFJSZWc+KGFyZ1NvdXJjZVJlZ3MuY3Jvc3NEZXN0
aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUNyb3NzU291cmNlcywgRlBSUmVnPihhcmdT
b3VyY2VSZWdzLmNyb3NzU291cmNlcykpOworI2VuZGlmCiAgICAgICAgIHNldHVwU3R1YkFyZ3M8
bnVtRlBSU291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQ
UlJlZz4oYXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51
bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2VzKSk7CiAgICAgfQog
CkBAIC00NTksNyArNjYxLDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5
IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAz
Mi1iaXQuLi4KICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25U
eXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkg
Y2hlY2siKTsKICNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzSW1w
bDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAs
IDAsIDAsIDAsIDAsIDA+KCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgpAQCAtNDY5LDcgKzY3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gVGhpcyBvbmx5
IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1
cCBmb3IgMzItYml0Li4uCiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJCYXNpYyBzYW5p
dHkgY2hlY2siKTsKICNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwPigpLCBhcmdz
Li4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAs
IDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4u
Lik7CiAgICAgfQogCiAjdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0ZQUkluZm8uaAppbmRleCA5ODUyMDc4OTJkNTMwNmE4NWY3YzkxOTY1Mzg1YTJlYjEzMzY1
NjVhLi4xYTQwMzNhOGNmMGQ2ZjY5MmNmMzk2MmE3ODJkZjdkMjgzMGM0NDg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0ZQUkluZm8uaApAQCAtMTA3LDcgKzEwNywxMiBAQCBjbGFzcyBGUFJJbmZv
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworI2lmIENQVShBUk1fSEFS
REZQKQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJz
ID0gODsKKyNlbHNlCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMgPSAwOworI2VuZGlmCiAKICAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAg
IC8vIGQ3IGlzIHVzZSBieSB0aGUgTWFjcm9Bc3NlbWJsZXIgYXMgZnBUZW1wUmVnaXN0ZXIuCkBA
IC0xNDMsNiArMTQ4LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAodW5zaWdu
ZWQpcmVnOwogICAgIH0KKyAgICBzdGF0aWMgRlBSUmVnIHRvQXJndW1lbnRSZWdpc3Rlcih1bnNp
Z25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mQXJndW1l
bnRSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RlBSUmVnPihpbmRleCk7
CisgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQog
ICAgIHsKQEAgLTI4MCw2ICsyOTAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVnaXN0
ZXJGb3JJbmRleFtpbmRleF07CiAgICAgfQogCisgICAgc3RhdGljIEZQUlJlZyB0b0FyZ3VtZW50
UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBp
bmRleEZvclJlZ2lzdGVyWzJdID0geworICAgICAgICAgICAgYXJndW1lbnRGUFIwLCBhcmd1bWVu
dEZQUjEKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIGluZGV4Rm9yUmVnaXN0ZXJbaW5kZXhd
OworICAgIH0KKwogICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCiAgICAg
ewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAppbmRleCAyY2EzMDZhYTNhOTAxZDc5ZGQ1NWExYzM0YjgzM2U0MTlkMmRk
NTFiLi4wMzRhMmU5NTMzMmFkNTVlM2EzOTExYTYwYTM5NmJlNDk1YTA1MzQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtMzQwLDYgKzM0MCw3IEBAIHB1YmxpYzoKICAgICB0
eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51
bWJlck9mUmVnaXN0ZXJzID0gNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZB
cmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgYWxpZ242NEJpdEFyZ3VtZW50c09uU3RhY2sgPSBmYWxzZTsKIAogICAg
IC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9
IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAtNTM1LDYgKzUzNiw3IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mUmVnaXN0ZXJzID0gOTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1
bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgYWxpZ242NEJpdEFyZ3VtZW50c09uU3RhY2sgPSB0cnVlOwogCiAgICAgLy8g
VGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gQVJN
UmVnaXN0ZXJzOjpyMDsKQEAgLTcyOSw2ICs3MzEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBH
UFJSZWcgUmVnaXN0ZXJUeXBlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJl
Z2lzdGVycyA9IDc7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOworICAgIHN0YXRpYyBjb25z
dCBib29sIGFsaWduNjRCaXRBcmd1bWVudHNPblN0YWNrID0gdHJ1ZTsKIAogICAgIC8vIHJlZ1Qw
IG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBhIDMyLWJpdCB2YWx1ZS4KICAgICAvLyByZWdUMSBt
dXN0IGJlIHYxIGZvciByZXR1cm5pbmcgYSBwYWlyIG9mIDMyLWJpdCB2YWx1ZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336140</attachid>
            <date>2018-03-20 12:44:58 -0700</date>
            <delta_ts>2018-03-21 01:15:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183786-20180320204456.patch</filename>
            <type>text/plain</type>
            <size>43665</size>
            <attacher name="Dominik Inführ">dominik.infuehr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YmNlYTI0YjQ1NDcyY2Q2Nzc4NDQwZDBiNTA5YmU1YmQ1MTJiNzc3Li4xMzJmZTFjYTEyZDZhYTVm
NzYxZmRjM2Y5NzBiZjdlZDcxMzM5NThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0wMy0yMCAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2V0dXBBcmd1bWVudHNJbXBsIGZvciBBUk0gYW5k
IE1JUFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBzZXR1cEFyZ3VtZW50c0ltcGwgZm9yIEFSTSBhbmQgTUlQUyBjYWxsaW5nIGNvbnZl
bnRpb24uIEFkZGVkCisgICAgICAgIG51bUNyb3NzU291cmNlcyBhbmQgZXh0cmFHUFJBcmdzIHRv
IEFyZ0NvbGxlY3Rpb24gdG8ga2VlcCB0cmFjayBvZiBleHRyYQorICAgICAgICByZWdpc3RlcnMg
dXNlZCBmb3IgNjQtYml0IHZhbHVlcyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gbnVtQ3Jvc3NT
b3VyY2VzCisgICAgICAgIGtlZXBzIHRyYWNrIG9mIGFzc2lnbm1lbnRzIGZyb20gRlBSIHRvIEdQ
UiByZWdpc3RlcnMgYXMgaGFwcGVucyBlLmcuIG9uIE1JUFMuCisKKyAgICAgICAgR1BSSW5mbzo6
YWxpZ242NEJpdEFyZ3VtZW50c09uU3RhY2sgaXMgc2V0IHRvIHRydWUgaWYgNjQtYml0IHZhbHVl
cyBuZWVkIHRvCisgICAgICAgIGJlIGFsaWduZWQgdG8gOC1ieXRlcyBhcyBvcHBvc2VkIHRvIDQt
Ynl0ZXMgb24gYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojptb3ZlRG91YmxlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQ3Jvc3NBcmdzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphcmdDb3VudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkND
YWxsSGVscGVyczo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
Ojpwb2tlQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bWFyc2hhbGxBcmd1
bWVudFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
c0ltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmFsaWduMik6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFs
dWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5U
X0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0
dXBBcmd1bWVudHMpOgorICAgICAgICAqIGppdC9GUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkZQ
UkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKwog
MjAxOC0wMy0yMCAgU3RhbmlzbGF2IE9jb3ZhaiAgPHN0YW5pc2xhdi5vY292YWpAcnQtcmsuY29t
PgogCiAgICAgICAgIFtNSVBTXSBPcHRpbWl6ZSBnZW5lcmF0ZWQgSklUIGNvZGUgZm9yIGxvYWRz
L3N0b3JlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmgKaW5kZXggMGEyNGM1NDZjZjZiODg3OWZhYzVjN2I3MDdmODcwYjA5OGY0
N2VmNi4uODM0OTIxMzc3MjE1N2VjZThmNGE4YjU2OTAyMjJhNzRiNWVlYWZiMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5o
CkBAIC0yOTEyLDYgKzI5MTIsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92ZChkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tZmMx
KGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoUmVnaXN0ZXJJRChkZXN0KzEp
LCBGUFJlZ2lzdGVySUQoc3JjKzEpKTsKKyAgICB9CisKICAgICB2b2lkIG1vdmVaZXJvVG9Eb3Vi
bGUoRlBSZWdpc3RlcklEIHJlZykKICAgICB7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91Ymxl
KE1JUFNSZWdpc3RlcnM6Onplcm8sIHJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAppbmRleCA3ZjQ3YTQxYWU5ZGQ4N2FhYWM4Y2M3OWVjNTBhMDdjOTc4ODQ3Mjgx
Li5lZmUwYTRkMDRiNTQ2ZmQwMzNiOTljMDg2OTAzZmI2ZDAxNWMyNjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTE3NywxMSArMTc3LDI4IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBOdW1iZXJPZlJl
Z2lzdGVycz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBTdHViQ3Jvc3NBcmdzKHN0ZDo6
YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVycz4gZGVzdGluYXRpb25zLCBzdGQ6OmFycmF5
PEZQUlJlZywgTnVtYmVyT2ZSZWdpc3RlcnM+IHNvdXJjZXMpIHsKKyNpZiBDUFUoTUlQUykKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mUmVnaXN0ZXJzOyBpKyspIHsK
KyAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gZGVzdGluYXRpb25zW2ldOworICAgICAgICAgICAg
RlBSUmVnIHNvdXJjZSA9IHNvdXJjZXNbaV07CisKKyAgICAgICAgICAgIG1vdmVEb3VibGUoc291
cmNlLCBkZXN0KTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKGRlc3Rp
bmF0aW9ucyk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzb3VyY2VzKTsKKyAgICAgICAgc3RhdGlj
X2Fzc2VydCghTnVtYmVyT2ZSZWdpc3RlcnMsICJzaG91bGQgb25seSBiZSB1c2VkIG9uIE1JUFMg
Zm9yIG5vdy4iKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ1R5
cGU+CiAgICAgdXNpbmcgSW5mb1R5cGVGb3JSZWcgPSBkZWNsdHlwZSh0b0luZm9Gcm9tUmVnKFJl
Z1R5cGUoLTEpKSk7CiAKKyAgICAvLyBleHRyYUdQUkFyZ3MgaXMgdXNlZCB0byB0cmFjayA2NC1i
aXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIGluIHJlZ2lzdGVyCiAgICAgLy8gZXh0cmFQb2tlIGlz
IHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBvbiB0aGUgc3RhY2su
Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
ZXh0cmFQb2tlPgorICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2U+CiAgICAgc3RydWN0IEFyZ0NvbGxlY3Rpb24gewogICAgICAgICBBcmdDb2xs
ZWN0aW9uKCkKICAgICAgICAgewpAQCAtMTg5LDYzICsyMDYsOTcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGdwckRlc3RpbmF0aW9ucy5maWxsKEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAg
ZnByU291cmNlcy5maWxsKEludmFsaWRGUFJSZWcpOwogICAgICAgICAgICAgZnByRGVzdGluYXRp
b25zLmZpbGwoSW52YWxpZEZQUlJlZyk7CisgICAgICAgICAgICBjcm9zc1NvdXJjZXMuZmlsbChJ
bnZhbGlkRlBSUmVnKTsKKyAgICAgICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgIH0KIAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNp
Z25lZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlPgotICAgICAgICBBcmdD
b2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZT4mIG90aGVyKQorICAgICAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1
bnNpZ25lZCBlLCB1bnNpZ25lZCBmLCB1bnNpZ25lZCBnPgorICAgICAgICBBcmdDb2xsZWN0aW9u
KEFyZ0NvbGxlY3Rpb248YSwgYiwgYywgZCwgZSwgZiwgZz4mIG90aGVyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBncHJTb3VyY2VzID0gb3RoZXIuZ3ByU291cmNlczsKICAgICAgICAgICAgIGdw
ckRlc3RpbmF0aW9ucyA9IG90aGVyLmdwckRlc3RpbmF0aW9uczsKICAgICAgICAgICAgIGZwclNv
dXJjZXMgPSBvdGhlci5mcHJTb3VyY2VzOwogICAgICAgICAgICAgZnByRGVzdGluYXRpb25zID0g
b3RoZXIuZnByRGVzdGluYXRpb25zOworICAgICAgICAgICAgY3Jvc3NTb3VyY2VzID0gb3RoZXIu
Y3Jvc3NTb3VyY2VzOworICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMgPSBvdGhlci5jcm9z
c0Rlc3RpbmF0aW9uczsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBl
eHRyYVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24p
CisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAx
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0
aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAx
LCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tl
PiByZXN1bHQoKnRoaXMpOworICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsg
MSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAg
ICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAg
ICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRp
b247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcyArIDEsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQ
UlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50
LCBGUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJj
ZXMgKyAxLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3Vy
Y2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0
KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10g
PSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291
cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyAr
IDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQor
ICAgICAgICB7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAx
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKworICAgICAgICAgICAg
cmVzdWx0LmNyb3NzU291cmNlc1tudW1Dcm9zc1NvdXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAg
ICAgICByZXN1bHQuY3Jvc3NEZXN0aW5hdGlvbnNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGRlc3RpbmF0
aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tl
PiBwdXNoRXh0cmFSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICBy
ZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAg
cmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Mg
KyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgIH0KKworICAg
ICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQ
b2tlPiBhZGRHUFJFeHRyYUFyZygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPigqdGhpcyk7
CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFkZFN0YWNr
QXJnKEdQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywg
ZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0YWNrQXJnKEZQUlJl
ZykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9r
ZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2Uo
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2UgKyAx
PigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOwogICAgICAgICB9CiAKIAotICAg
ICAgICB1bnNpZ25lZCBhcmdDb3VudChHUFJSZWcpIHsgcmV0dXJuIG51bUdQUkFyZ3M7IH0KKyAg
ICAgICAgdW5zaWduZWQgYXJnQ291bnQoR1BSUmVnKSB7IHJldHVybiBudW1HUFJBcmdzICsgZXh0
cmFHUFJBcmdzOyB9CiAgICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50KEZQUlJlZykgeyByZXR1cm4g
bnVtRlBSQXJnczsgfQogCisgICAgICAgIC8vIHN0b3JlIEdQUiAtPiBHUFIgYXNzaWdubWVudHMK
ICAgICAgICAgc3RkOjphcnJheTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBn
cHJTb3VyY2VzOwogICAgICAgICBzdGQ6OmFycmF5PEdQUlJlZywgR1BSSW5mbzo6bnVtYmVyT2ZS
ZWdpc3RlcnM+IGdwckRlc3RpbmF0aW9uczsKKworICAgICAgICAvLyBzdG9yZSBGUFIgLT4gRlBS
IGFzc2lnbm1lbnRzCiAgICAgICAgIHN0ZDo6YXJyYXk8RlBSUmVnLCBGUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycz4gZnByU291cmNlczsKICAgICAgICAgc3RkOjphcnJheTxGUFJSZWcsIEZQUklu
Zm86Om51bWJlck9mUmVnaXN0ZXJzPiBmcHJEZXN0aW5hdGlvbnM7CisKKyAgICAgICAgLy8gc3Rv
cmUgRlBSIC0+IEdQUiBhc3NpZ25tZW50cworICAgICAgICBzdGQ6OmFycmF5PEZQUlJlZywgR1BS
SW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM+IGNyb3NzU291cmNlczsKKyAgICAgICAgc3RkOjphcnJh
eTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBjcm9zc0Rlc3RpbmF0aW9uczsK
ICAgICB9OwogCiAgICAgdGVtcGxhdGU8dW5zaWduZWQgVGFyZ2V0U2l6ZSwgdHlwZW5hbWUgUmVn
VHlwZT4KQEAgLTI2NCwyMCArMzE1LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50
R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgZXh0cmFQ
b2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNldCh1bnNp
Z25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAgewogICAgICAgICAv
LyBDbGFuZyBjbGFpbXMgdGhhdCBpdCBjYW5ub3QgZmluZCB0aGUgc3ltYm9sIGZvciBGUFJSZWcv
R1BSUmVnOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHdoZW4gdGhleSBhcmUgcGFzc2VkIGRp
cmVjdGx5IHRvIHN0ZDo6bWF4Li4uIHNlZW1zIGxpa2UgYSBidWcKICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzID0g
R1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKLSAgICAgICAgQVNTRVJUKGN1cnJl
bnRHUFJBcmd1bWVudCA+PSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHx8IGN1
cnJlbnRGUFJBcmd1bWVudCA+PSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsK
KworICAgICAgICB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnRXaXRoRXh0cmEgPSBjdXJyZW50
R1BSQXJndW1lbnQgKyBleHRyYUdQUkFyZ3M7CisgICAgICAgIEFTU0VSVChjdXJyZW50R1BSQXJn
dW1lbnRXaXRoRXh0cmEgPj0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB8fCBj
dXJyZW50RlBSQXJndW1lbnQgPj0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7
CiAKICAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsg
ZXh0cmFQb2tlOwotICAgICAgICBwb2tlT2Zmc2V0ICs9IHN0ZDo6bWF4KGN1cnJlbnRHUFJBcmd1
bWVudCwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSAtIG51bWJlck9mR1BBcmd1bWVudFJl
Z2lzdGVyczsKKyAgICAgICAgcG9rZU9mZnNldCArPSBzdGQ6Om1heChjdXJyZW50R1BSQXJndW1l
bnRXaXRoRXh0cmEsIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgLSBudW1iZXJPZkdQQXJn
dW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHBva2VPZmZzZXQgKz0gc3RkOjptYXgoY3VycmVudEZQ
UkFyZ3VtZW50LCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMpIC0gbnVtYmVyT2ZGUEFyZ3Vt
ZW50UmVnaXN0ZXJzOworCisgICAgICAgIHJldHVybiBwb2tlT2Zmc2V0OworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VG
b3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNp
Z25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0
ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOwogICAg
IH0KIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwb2tlQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50
R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgeworICAgICAgICB1bnNpZ25lZCBwb2tl
T2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRG
UFJBcmd1bWVudCwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICByZXR1cm4gIShw
b2tlT2Zmc2V0ICYgMSk7CisgICAgfQorCiAgICAgLy8gSW4gdGhlIGF1dG8tY2FsbGluZyBjb252
ZW50aW9uIGNvZGUgYmVsb3cgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMgaXM6CiAgICAgLy8gICAg
MSkgc3BpbGwgYXJndW1lbnRzIHRvIHN0YWNrIHNsb3RzCiAgICAgLy8gICAgMikgc2h1ZmZsZSBp
bmNvbW1pbmcgYXJndW1lbnQgdmFsdWVzIGluIHJlZ2lzdGVycyB0byBhcmd1bWVudCByZWdpc3Rl
cnMKQEAgLTI5MCw4ICszNTYsOCBAQCBwcml2YXRlOgogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgUmVnVHlwZSwgdHlwZW5h
bWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJn
cy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIG1hcnNoYWxsQXJndW1lbnRS
ZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAg
ICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1
bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lz
dGVyczsKQEAgLTMwMiwxMzUgKzM2OCwyNjkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKICAgICAgICAg
c2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tB
cmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcs
IEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBG
UFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hv
dWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7CiAgICAgICAgIG1hcnNo
YWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFy
Z3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywg
QXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdz
KQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQogCi0jZWxzZSAvLyBV
U0UoSlNWQUxVRTY0KQorI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAotICAgIC8vIFRoZXNl
IGZ1bmN0aW9ucyBhcmUgYSBoYWNrIGZvciBYODYgc2luY2UgaXQgaGFzIG5vIGFyZ3VtZW50IGdw
cnMuLi4KKyAgICB1bnNpZ25lZCBhbGlnbjIodW5zaWduZWQgdmFsKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICh2YWwgKyAxKSAmICh+MSk7CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJl
ZyBhcmcsIEFyZ3MuLi4gYXJncykKKyNpZiBDUFUoTUlQUykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRv
dWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91
YmxlIik7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKKwor
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJn
dW1lbnRSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworICAg
ICAgICB1bnNpZ25lZCBjdXJyZW50RlBBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQo
YXJnKTsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEdQQXJnQ291bnQgPSBhcmdTb3VyY2VSZWdz
LmFyZ0NvdW50KEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgdW5zaWduZWQgYWxpZ25lZEdQQXJn
Q291bnQgPSBhbGlnbjIoY3VycmVudEdQQXJnQ291bnQpOworCisgICAgICAgIGlmIChjdXJyZW50
RlBBcmdDb3VudCA8IG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyAmJiAhbnVtR1BSQXJncykg
eworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3Mu
cHVzaFJlZ0FyZyhhcmcsIEZQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50RlBBcmdD
b3VudCkpOworCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4o
dXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLCBh
cmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGFsaWduZWRHUEFyZ0NvdW50ICsgMSA8IG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgewor
ICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVz
aFJlZ0FyZyhhcmcsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkR1BBcmdDb3Vu
dCkpOworCisgICAgICAgICAgICBpZiAoYWxpZ25lZEdQQXJnQ291bnQgPiBjdXJyZW50R1BBcmdD
b3VudCkKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4o
dXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLmFk
ZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVn
cy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudEdQQXJnQ291bnQg
PCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncysxLCBleHRyYVBv
a2UpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJn
cy4uLik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocG9r
ZUFsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2Up
KSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBv
a2UoKSwgYXJncy4uLik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSsxKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7
CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFs
dWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKKwor
ICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3Vy
Y2VSZWdzLmFyZ0NvdW50KGFyZyk7CisKKyAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCA8IG51
bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9
IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEZQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rl
cihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncywgYXJncy4uLik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIUdQUkluZm86OmFsaWduNjRCaXRBcmd1
bWVudHNPblN0YWNrIHx8IHBva2VBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRk
U3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UrMSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKS5h
ZGRQb2tlKCksIGFyZ3MuLi4pOworICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5h
YmxlX2lmX3Q8c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBh
cmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJS
ZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4u
Lik7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFy
Z1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKKyAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCA8
IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVn
cyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEdQUkluZm86OnRvQXJndW1lbnRSZWdp
c3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncywgYXJncy4uLik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJn
KGFyZyksIGFyZ3MuLi4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJB
cmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnMSBhcmcxLCBBcmcy
IGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lz
dGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2ln
bmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoR1BSSW5mbzo6cmVn
VDApOworCisgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAxID09IG51bUFyZ1JlZ2lzdGVy
cykgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzICsgMSwg
ZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2Uo
KSwgYXJncy4uLik7CisKKyAgICAgICAgfSBlbHNlIGlmICghR1BSSW5mbzo6YWxpZ242NEJpdEFy
Z3VtZW50c09uU3RhY2sgfHwgcG9rZUFsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
MSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAg
ICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAx
KTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDIpOworICAgICAgICAgICAgc2V0dXBBcmd1
bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9r
ZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIH0KICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+
Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEpTVmFsdWU6OkpTQ2VsbFRhZywgR1BSUmVnIHBheWxvYWQsIEFyZ3MuLi4g
YXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlOjpKU0NlbGxU
YWcsIEdQUlJlZyBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9y
QXJndW1lbnQocGF5bG9hZCwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsKLSAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlICsgMSk7Ci0gICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2Uo
KSwgYXJncy4uLik7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86
Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdD
b3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZCk7CisgICAgICAgIHVuc2lnbmVk
IGFsaWduZWRBcmdDb3VudCA9IGFsaWduMihjdXJyZW50QXJnQ291bnQpOworCisgICAgICAgIGlm
IChhbGlnbmVkQXJnQ291bnQgKyAxIDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBh
dXRvIHVwZGF0ZWRBcmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKHBheWxv
YWQsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQpKTsKKworICAg
ICAgICAgICAgaWYgKGFsaWduZWRBcmdDb3VudCA+IGN1cnJlbnRBcmdDb3VudCkKKyAgICAgICAg
ICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJj
ZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKSwgYXJncy4uLik7CisK
KyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZv
Ojp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxpZ25lZEFyZ0NvdW50KzEpKTsKKworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIHBheWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgYXJncy4u
Lik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAg
QUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VN
RU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlOjpKU0NlbGxUYWcs
IFRydXN0ZWRJbW1QdHIgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWU6OkpTQ2VsbFRhZywgVHJ1c3RlZEltbVB0ciBwYXlsb2Fk
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQocGF5bG9hZCwg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9rZUZvckFyZ3Vt
ZW50KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgZXh0cmFQb2tlICsgMSk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAg
ICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJl
Z3MuYXJnQ291bnQoR1BSSW5mbzo6cmVnVDApOworICAgICAgICB1bnNpZ25lZCBhbGlnbmVkQXJn
Q291bnQgPSBhbGlnbjIoY3VycmVudEFyZ0NvdW50KTsKKworICAgICAgICBpZiAoYWxpZ25lZEFy
Z0NvdW50ICsgMSA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgaWYgKGFsaWduZWRB
cmdDb3VudCA+IGN1cnJlbnRBcmdDb3VudCkKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRHUFJFeHRy
YUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZEdQUkFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworCisgICAgICAgICAg
ICBtb3ZlKHBheWxvYWQsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291
bnQpKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBH
UFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxpZ25lZEFyZ0NvdW50KzEpKTsKKworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MsIHBheWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwg
YXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBh
cmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1Zh
bHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcucGF5bG9hZEdQUigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UpOwot
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLnRhZ0dQUigpLCBudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBleHRyYVBva2UgKyAxKTsKLSAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKKyAg
ICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNl
UmVncy5hcmdDb3VudChhcmcudGFnR1BSKCkpOworICAgICAgICB1bnNpZ25lZCBhbGlnbmVkQXJn
Q291bnQgPSBhbGlnbjIoY3VycmVudEFyZ0NvdW50KTsKKworICAgICAgICBpZiAoYWxpZ25lZEFy
Z0NvdW50ICsgMSA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVk
QXJnU291cmNlUmVnczEgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdBcmcoYXJnLnBheWxvYWRHUFIo
KSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGFsaWduZWRBcmdDb3VudCkpOworICAgICAg
ICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVnczIgPSB1cGRhdGVkQXJnU291cmNlUmVnczEu
cHVzaEV4dHJhUmVnQXJnKGFyZy50YWdHUFIoKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVy
KGFsaWduZWRBcmdDb3VudCsxKSk7CisKKyAgICAgICAgICAgIGlmIChhbGlnbmVkQXJnQ291bnQg
PiBjdXJyZW50QXJnQ291bnQpCisgICAgICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VSZWdzMi5hZGRHUFJFeHRyYUFyZygpLCBhcmdz
Li4uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MyLCBhcmdzLi4uKTsKKworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5wYXlsb2FkR1BSKCksIGFyZy50YWdHUFIoKSwgYXJncy4u
Lik7CiAgICAgfQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBB
TFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxU
cnVzdGVkSW1tLCBBcmc+Ojp2YWx1ZQogICAgICAgICB8fCBzdGQ6OmlzX2NvbnZlcnRpYmxlPEFy
ZywgVHJ1c3RlZEltbT46OnZhbHVlPiAvLyBXZSBoYXZlIHRoaXMgc2luY2UgREZHU3BlY3VsYXRp
dmVKSVQgaGFzIGl0J3Mgb3duIGltcGxlbWVudGF0aW9uIG9mIFRydXN0ZWRJbW1QdHIKLSAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFy
ZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBB
cmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICAvLyBSaWdodCBub3cgdGhpcyBv
bmx5IHN1cHBvcnRzIG5vbi1mbG9hdGluZyBwb2ludCBpbW1lZGlhdGUgYXJndW1lbnRzIHNpbmNl
IHdlIG5ldmVyIGNhbGwgb3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdpc3RlciB2YWx1ZXMuCiAgICAg
ICAgIC8vIElmIHdlIGV2ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0aW5nIHBv
aW50IGFyZ3VtZW50cyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0ZSB0aGlzIGxvZ2ljIGZvciBi
b3RoIHR5cGVzLCB3aGljaCBzb3VuZHMKICAgICAgICAgLy8gZ3Jvc3Mgc28gaXQncyBwcm9iYWJs
eSBiZXR0ZXIgdG8gZG8gdGhhdCBtYXJzaGFsbGluZyBiZWZvcmUgdGhlIGNhbGwgb3BlcmF0aW9u
Li4uCiAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8Q1VSUkVO
VF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUsICJXZSBkb24ndCBzdXBwb3J0IGltbWVkaWF0ZSBmbG9h
dHMvZG91YmxlcyBpbiBzZXR1cEFyZ3VtZW50cyIpOwogICAgICAgICBhdXRvIG51bUFyZ1JlZ2lz
dGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7Ci0gICAgICAgIGlmIChu
dW1HUFJBcmdzIDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRB
cmdDb3VudCA9IG51bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7CisgICAgICAgIGlmIChjdXJyZW50
QXJnQ291bnQgPCBudW1BcmdSZWdpc3RlcnMpIHsKICAgICAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsK
LSAgICAgICAgICAgIG1vdmUoYXJnLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIobnVtR1BS
QXJncykpOworICAgICAgICAgICAgbW92ZShhcmcsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rl
cihjdXJyZW50QXJnQ291bnQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJh
UG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOwogICAg
IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlw
ZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAg
ICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAg
ICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAg
ICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9IDQpPgotICAgIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFy
ZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIoYXJnKSwgYXJncy4uLik7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0
eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAg
ICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAg
ICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQog
ICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPT0gOCk+Ci0gICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02NChhcmcpLCBhcmdzLi4uKTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcs
IHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAog
ICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAg
ICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUgJiYgc3RkOjppc19jb252ZXJ0
aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxBcmc+PiosIENV
UlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAgICAgfHwgc3RkOjppc19zYW1l
PEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdz
KQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCiAgICAgLy8g
U3BlY2lhbCBjYXNlIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZSBiZWNhdXNlIGl0J3MgcmVhbGx5
IGFubm95aW5nIHRvIGRlYWwgd2l0aCBvdGhlcndpc2UuLi4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlT
X0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9B
UkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUqPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19zYW1l
PEFyZywgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlPjo6dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJn
cy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAg
ICAgfQpAQCAtNDM4LDEzICs2MzgsMTcgQEAgcHJpdmF0ZToKICN1bmRlZiBDVVJSRU5UX0FSR1VN
RU5UX1RZUEUKIAogICAgIC8vIEJhc2UgY2FzZTsgc2V0IHVwIHRoZSBhcmd1bWVudCByZWdpc3Rl
cnMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlPgotICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFyZ3MgKyBudW1G
UFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBudW1HUFJBcmdz
ICsgbnVtRlBSQXJncyArIGV4dHJhUG9rZSwgIkNoZWNrIHRoZSBDQ2FsbCBhcml0eSIpOworI2lm
IENQVShKU1ZBTFVFNjQpCisgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncyArIGV4
dHJhR1BSQXJncyArIGV4dHJhUG9rZSwgIkNoZWNrIHRoZSBDQ2FsbCBhcml0eSIpOworI2VuZGlm
CiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVtR1BSU291cmNlcywgR1BSUmVnPihjbGFtcEFycmF5
VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVncy5ncHJEZXN0aW5hdGlv
bnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVn
cy5ncHJTb3VyY2VzKSk7Ci0KKyNpZiBDUFUoTUlQUykKKyAgICAgICAgc2V0dXBTdHViQ3Jvc3NB
cmdzKGNsYW1wQXJyYXlUb1NpemU8bnVtQ3Jvc3NTb3VyY2VzLCBHUFJSZWc+KGFyZ1NvdXJjZVJl
Z3MuY3Jvc3NEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUNyb3NzU291cmNlcywg
RlBSUmVnPihhcmdTb3VyY2VSZWdzLmNyb3NzU291cmNlcykpOworI2VuZGlmCiAgICAgICAgIHNl
dHVwU3R1YkFyZ3M8bnVtRlBSU291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQ
UlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFy
cmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2Vz
KSk7CiAgICAgfQogCkBAIC00NTksNyArNjYzLDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGlz
IG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhp
bmdzIHVwIGZvciAzMi1iaXQuLi4KICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0
czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJC
YXNpYyBzYW5pdHkgY2hlY2siKTsKICNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAw
PigpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xs
ZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBhcmdzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtNDY5LDcgKzY3Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBt
ZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyks
ICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKICNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAw
LCAwPigpLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwg
MD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAjdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAppbmRleCA5ODUyMDc4OTJkNTMwNmE4NWY3YzkxOTY1
Mzg1YTJlYjEzMzY1NjVhLi4xYTQwMzNhOGNmMGQ2ZjY5MmNmMzk2MmE3ODJkZjdkMjgzMGM0NDg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaApAQCAtMTA3LDcgKzEwNywxMiBAQCBj
bGFzcyBGUFJJbmZvIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworI2lm
IENQVShBUk1fSEFSREZQKQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzID0gODsKKyNlbHNlCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnMgPSAwOworI2VuZGlmCiAKICAgICAvLyBUZW1wb3JhcnkgcmVn
aXN0ZXJzLgogICAgIC8vIGQ3IGlzIHVzZSBieSB0aGUgTWFjcm9Bc3NlbWJsZXIgYXMgZnBUZW1w
UmVnaXN0ZXIuCkBAIC0xNDMsNiArMTQ4LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiAodW5zaWduZWQpcmVnOwogICAgIH0KKyAgICBzdGF0aWMgRlBSUmVnIHRvQXJndW1lbnRS
ZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51
bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RlBS
UmVnPihpbmRleCk7CisgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShG
UFJSZWcgcmVnKQogICAgIHsKQEAgLTI4MCw2ICsyOTAsMTUgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CiAgICAgfQogCisgICAgc3RhdGljIEZQUlJl
ZyB0b0FyZ3VtZW50UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NF
UlQoaW5kZXggPCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBpbmRleEZvclJlZ2lzdGVyWzJdID0geworICAgICAgICAgICAgYXJndW1lbnRG
UFIwLCBhcmd1bWVudEZQUjEKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIGluZGV4Rm9yUmVn
aXN0ZXJbaW5kZXhdOworICAgIH0KKwogICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJl
ZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCAyY2EzMDZhYTNhOTAxZDc5ZGQ1NWExYzM0
YjgzM2U0MTlkMmRkNTFiLi4wMzRhMmU5NTMzMmFkNTVlM2EzOTExYTYwYTM5NmJlNDk1YTA1MzQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtMzQwLDYgKzM0MCw3IEBAIHB1
YmxpYzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlM7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgYWxpZ242NEJpdEFyZ3VtZW50c09uU3RhY2sgPSBm
YWxzZTsKIAogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAtNTM1LDYgKzUzNiw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gOTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgYWxpZ242NEJpdEFyZ3VtZW50c09uU3RhY2sgPSB0cnVl
OwogCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpyMDsKQEAgLTcyOSw2ICs3MzEsNyBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBudW1iZXJPZlJlZ2lzdGVycyA9IDc7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOworICAg
IHN0YXRpYyBjb25zdCBib29sIGFsaWduNjRCaXRBcmd1bWVudHNPblN0YWNrID0gdHJ1ZTsKIAog
ICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBhIDMyLWJpdCB2YWx1ZS4KICAg
ICAvLyByZWdUMSBtdXN0IGJlIHYxIGZvciByZXR1cm5pbmcgYSBwYWlyIG9mIDMyLWJpdCB2YWx1
ZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336183</attachid>
            <date>2018-03-21 01:15:45 -0700</date>
            <delta_ts>2018-03-28 00:12:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183786-20180321091544.patch</filename>
            <type>text/plain</type>
            <size>44082</size>
            <attacher name="Dominik Inführ">dominik.infuehr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YzM5NTY5YzYzM2M4M2ZhM2VlOTcxNWE1MTg2MzhjOTQyYTdiYjBkLi5jNjQ4ZGMxYTBhOWQyZTYx
NjAyMzRmZDFhYjY1MWM3M2FhODgzYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOC0wMy0yMCAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2V0dXBBcmd1bWVudHNJbXBsIGZvciBBUk0gYW5k
IE1JUFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBzZXR1cEFyZ3VtZW50c0ltcGwgZm9yIEFSTSBhbmQgTUlQUyBjYWxsaW5nIGNvbnZl
bnRpb24uIEFkZGVkCisgICAgICAgIG51bUNyb3NzU291cmNlcyBhbmQgZXh0cmFHUFJBcmdzIHRv
IEFyZ0NvbGxlY3Rpb24gdG8ga2VlcCB0cmFjayBvZiBleHRyYQorICAgICAgICByZWdpc3RlcnMg
dXNlZCBmb3IgNjQtYml0IHZhbHVlcyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gbnVtQ3Jvc3NT
b3VyY2VzCisgICAgICAgIGtlZXBzIHRyYWNrIG9mIGFzc2lnbm1lbnRzIGZyb20gRlBSIHRvIEdQ
UiByZWdpc3RlcnMgYXMgaGFwcGVucyBlLmcuIG9uIE1JUFMuCisKKyAgICAgICAgR1BSSW5mbzo6
YWxpZ242NEJpdEFyZ3VtZW50c09uU3RhY2sgaXMgc2V0IHRvIHRydWUgaWYgNjQtYml0IHZhbHVl
cyBuZWVkIHRvCisgICAgICAgIGJlIGFsaWduZWQgdG8gOC1ieXRlcyBhcyBvcHBvc2VkIHRvIDQt
Ynl0ZXMgb24gYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4KKworICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojptb3ZlRG91YmxlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQ3Jvc3NBcmdzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphcmdDb3VudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkND
YWxsSGVscGVyczo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
Ojpwb2tlQWxpZ25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bWFyc2hhbGxBcmd1
bWVudFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
c0ltcGwpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmFsaWduMik6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpD
Q2FsbEhlbHBlcnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFs
dWUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5U
X0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0
dXBBcmd1bWVudHMpOgorICAgICAgICAqIGppdC9GUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkZQ
UkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcik6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKwog
MjAxOC0wMy0yMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CiAKICAg
ICAgICAgV2luZG93cyA2NC1iaXQgYnVpbGQgZml4IGFmdGVyIHIyMjk3NjcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4
IGE5Y2U0YjA5NGYzMDRhNDE3N2YxYTE2MTNmZmJkYjE2ZWFmMjU2N2IuLmVhMDdiYTZkOGZhMGNj
YmRlYmFkMDc3MmMyNmNkOThkOWIyZTUxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMjkxMiw2ICsyOTEyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmQoZGVzdCwgc3JjKTsKICAg
ICB9CiAKKyAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBzcmMpOworICAgICAg
ICBtX2Fzc2VtYmxlci5tZmMxKFJlZ2lzdGVySUQoZGVzdCsxKSwgRlBSZWdpc3RlcklEKHNyYysx
KSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlWmVyb1RvRG91YmxlKEZQUmVnaXN0ZXJJRCByZWcp
CiAgICAgewogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCByZWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggN2Y0
N2E0MWFlOWRkODdhYWFjOGNjNzllYzUwYTA3Yzk3ODg0NzI4MS4uOWIxYjgzMjQyOTRmODQ3YTQ1
MDE4M2NlZTRjMzQwMDc0MGJiY2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCkBAIC0xNzcsMTEgKzE3NywyOCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
fQogCisgICAgdGVtcGxhdGU8dW5zaWduZWQgTnVtYmVyT2ZSZWdpc3RlcnM+CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwU3R1YkNyb3NzQXJncyhzdGQ6OmFycmF5PEdQUlJlZywgTnVtYmVy
T2ZSZWdpc3RlcnM+IGRlc3RpbmF0aW9ucywgc3RkOjphcnJheTxGUFJSZWcsIE51bWJlck9mUmVn
aXN0ZXJzPiBzb3VyY2VzKSB7CisjaWYgQ1BVKE1JUFMpCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBOdW1iZXJPZlJlZ2lzdGVyczsgaSsrKSB7CisgICAgICAgICAgICBHUFJSZWcg
ZGVzdCA9IGRlc3RpbmF0aW9uc1tpXTsKKyAgICAgICAgICAgIEZQUlJlZyBzb3VyY2UgPSBzb3Vy
Y2VzW2ldOworCisgICAgICAgICAgICBtb3ZlRG91YmxlKHNvdXJjZSwgZGVzdCk7CisgICAgICAg
IH0KKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbnMpOworICAgICAgICBV
TlVTRURfUEFSQU0oc291cmNlcyk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIU51bWJlck9mUmVn
aXN0ZXJzLCAic2hvdWxkIG9ubHkgYmUgdXNlZCBvbiBNSVBTIGZvciBub3cuIik7CisjZW5kaWYK
KyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgogICAgIHVzaW5nIEluZm9U
eXBlRm9yUmVnID0gZGVjbHR5cGUodG9JbmZvRnJvbVJlZyhSZWdUeXBlKC0xKSkpOwogCisgICAg
Ly8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBh
c3NlZCBpbiByZWdpc3RlcgogICAgIC8vIGV4dHJhUG9rZSBpcyB1c2VkIHRvIHRyYWNrIDY0LWJp
dCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgb24gdGhlIHN0YWNrLgotICAgIHRlbXBsYXRlPHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgogICAgIHN0
cnVjdCBBcmdDb2xsZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAgICAgICAgIHsK
QEAgLTE4OSw2OSArMjA2LDEwMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3ByRGVzdGluYXRp
b25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICBmcHJTb3VyY2VzLmZpbGwoSW52
YWxpZEZQUlJlZyk7CiAgICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkRlBS
UmVnKTsKKyAgICAgICAgICAgIGNyb3NzU291cmNlcy5maWxsKEludmFsaWRGUFJSZWcpOworICAg
ICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAg
fQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMs
IHVuc2lnbmVkIGQsIHVuc2lnbmVkIGU+Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVj
dGlvbjxhLCBiLCBjLCBkLCBlPiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEs
IHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVk
IGYsIHVuc2lnbmVkIGc+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBi
LCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJj
ZXMgPSBvdGhlci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3Ro
ZXIuZ3ByRGVzdGluYXRpb25zOwogICAgICAgICAgICAgZnByU291cmNlcyA9IG90aGVyLmZwclNv
dXJjZXM7CiAgICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMgPSBvdGhlci5mcHJEZXN0aW5hdGlv
bnM7CisgICAgICAgICAgICBjcm9zc1NvdXJjZXMgPSBvdGhlci5jcm9zc1NvdXJjZXM7CisgICAg
ICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRpb25zOwogICAg
ICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291
cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gcHVzaFJlZ0Fy
ZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hS
ZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAx
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7Cisg
ICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsg
MSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNv
dXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJE
ZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgZXh0
cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQor
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIGV4dHJhUG9rZT4g
cmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAg
ICAgICByZXN1bHQuZnByU291cmNlc1tudW1GUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAg
ICAgICAgcmVzdWx0LmZwckRlc3RpbmF0aW9uc1tudW1GUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9u
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmco
RlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyAr
IDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3VyY2Vz
W251bUNyb3NzU291cmNlc10gPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHJlc3VsdC5jcm9zc0Rl
c3RpbmF0aW9uc1tudW1Dcm9zc1NvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IHB1c2hFeHRyYVJlZ0FyZyhH
UFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgeworICAgICAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRy
YVBva2U+IHJlc3VsdCgqdGhpcyk7CisKKyAgICAgICAgICAgIHJlc3VsdC5ncHJTb3VyY2VzW251
bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuZ3ByRGVzdGluYXRp
b25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+IGFkZEdQUkV4dHJhQXJn
KCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9r
ZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAgICAgfQogCi0gICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQorICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhZGRTdGFja0FyZyhHUFJSZWcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPigqdGhpcyk7
CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFkZFN0YWNr
QXJnKEZQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRy
YVBva2UgKyAxPiBhZGRQb2tlKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZSArIDE+KCp0aGlzKTsKKyAgICAgICAg
ICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogCi0gICAgICAgIHVuc2lnbmVkIGFyZ0Nv
dW50KEdQUlJlZykgeyByZXR1cm4gbnVtR1BSQXJnczsgfQorICAgICAgICB1bnNpZ25lZCBhcmdD
b3VudChHUFJSZWcpIHsgcmV0dXJuIG51bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7IH0KICAgICAg
ICAgdW5zaWduZWQgYXJnQ291bnQoRlBSUmVnKSB7IHJldHVybiBudW1GUFJBcmdzOyB9CiAKKyAg
ICAgICAgLy8gc3RvcmUgR1BSIC0+IEdQUiBhc3NpZ25tZW50cwogICAgICAgICBzdGQ6OmFycmF5
PEdQUlJlZywgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM+IGdwclNvdXJjZXM7CiAgICAgICAg
IHN0ZDo6YXJyYXk8R1BSUmVnLCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycz4gZ3ByRGVzdGlu
YXRpb25zOworCisgICAgICAgIC8vIHN0b3JlIEZQUiAtPiBGUFIgYXNzaWdubWVudHMKICAgICAg
ICAgc3RkOjphcnJheTxGUFJSZWcsIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBmcHJTb3Vy
Y2VzOwogICAgICAgICBzdGQ6OmFycmF5PEZQUlJlZywgRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3Rl
cnM+IGZwckRlc3RpbmF0aW9uczsKKworICAgICAgICAvLyBzdG9yZSBGUFIgLT4gR1BSIGFzc2ln
bm1lbnRzCisgICAgICAgIHN0ZDo6YXJyYXk8RlBSUmVnLCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lz
dGVycz4gY3Jvc3NTb3VyY2VzOworICAgICAgICBzdGQ6OmFycmF5PEdQUlJlZywgR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM+IGNyb3NzRGVzdGluYXRpb25zOwogICAgIH07CiAKICAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBUYXJnZXRTaXplLCB0eXBlbmFtZSBSZWdUeXBlPgogICAgIHN0ZDo6YXJy
YXk8UmVnVHlwZSwgVGFyZ2V0U2l6ZT4gY2xhbXBBcnJheVRvU2l6ZShzdGQ6OmFycmF5PFJlZ1R5
cGUsIEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OjpudW1iZXJPZlJlZ2lzdGVycz4gc291cmNlQXJy
YXkpCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KFRhcmdldFNpemUgPD0gc291cmNlQXJy
YXkuc2l6ZSgpLCAiVGFyZ2V0U2l6ZSBpcyBiaWdnZXIgdGhhbiBzb3VyY2Uuc2l6ZSgpIik7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKFRhcmdldFNpemUgPD0gc291cmNlQXJyYXkuc2l6ZSgpKTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoVGFyZ2V0U2l6ZSA8PSBJbmZvVHlwZUZvclJlZzxSZWdU
eXBlPjo6bnVtYmVyT2ZSZWdpc3RlcnMpOwogCiAgICAgICAgIHN0ZDo6YXJyYXk8UmVnVHlwZSwg
VGFyZ2V0U2l6ZT4gcmVzdWx0IHsgfTsKQEAgLTI2NCwyMCArMzE1LDM1IEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJn
VHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJn
LCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVu
dCwgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3Vs
YXRlUG9rZU9mZnNldCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJl
bnRGUFJBcmd1bWVudCwgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Up
CiAgICAgewogICAgICAgICAvLyBDbGFuZyBjbGFpbXMgdGhhdCBpdCBjYW5ub3QgZmluZCB0aGUg
c3ltYm9sIGZvciBGUFJSZWcvR1BSUmVnOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHdoZW4g
dGhleSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHN0ZDo6bWF4Li4uIHNlZW1zIGxpa2UgYSBidWcK
ICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6
bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFy
Z3VtZW50UmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKLSAg
ICAgICAgQVNTRVJUKGN1cnJlbnRHUFJBcmd1bWVudCA+PSBHUFJJbmZvOjpudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzIHx8IGN1cnJlbnRGUFJBcmd1bWVudCA+PSBGUFJJbmZvOjpudW1iZXJPZkFy
Z3VtZW50UmVnaXN0ZXJzKTsKKworICAgICAgICB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnRX
aXRoRXh0cmEgPSBjdXJyZW50R1BSQXJndW1lbnQgKyBleHRyYUdQUkFyZ3M7CisgICAgICAgIEFT
U0VSVChjdXJyZW50R1BSQXJndW1lbnRXaXRoRXh0cmEgPj0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1
bWVudFJlZ2lzdGVycyB8fCBjdXJyZW50RlBSQXJndW1lbnQgPj0gRlBSSW5mbzo6bnVtYmVyT2ZB
cmd1bWVudFJlZ2lzdGVycyk7CiAKICAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IFBPS0Vf
QVJHVU1FTlRfT0ZGU0VUICsgZXh0cmFQb2tlOwotICAgICAgICBwb2tlT2Zmc2V0ICs9IHN0ZDo6
bWF4KGN1cnJlbnRHUFJBcmd1bWVudCwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSAtIG51
bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgcG9rZU9mZnNldCArPSBzdGQ6Om1h
eChjdXJyZW50R1BSQXJndW1lbnRXaXRoRXh0cmEsIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVy
cykgLSBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnM7CiAgICAgICAgIHBva2VPZmZzZXQgKz0g
c3RkOjptYXgoY3VycmVudEZQUkFyZ3VtZW50LCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMp
IC0gbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzOworCisgICAgICAgIHJldHVybiBwb2tlT2Zm
c2V0OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+CisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVu
dEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcG9r
ZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50
RlBSQXJndW1lbnQsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcs
IHBva2VPZmZzZXQpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwb2tlQWxpZ25l
ZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVu
dCwgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgeworICAg
ICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BS
QXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwor
ICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYgMSk7CisgICAgfQorCiAgICAgLy8gSW4gdGhl
IGF1dG8tY2FsbGluZyBjb252ZW50aW9uIGNvZGUgYmVsb3cgdGhlIG9yZGVyIG9mIG9wZXJhdGlv
bnMgaXM6CiAgICAgLy8gICAgMSkgc3BpbGwgYXJndW1lbnRzIHRvIHN0YWNrIHNsb3RzCiAgICAg
Ly8gICAgMikgc2h1ZmZsZSBpbmNvbW1pbmcgYXJndW1lbnQgdmFsdWVzIGluIHJlZ2lzdGVycyB0
byBhcmd1bWVudCByZWdpc3RlcnMKQEAgLTI5MCw4ICszNTYsOCBAQCBwcml2YXRlOgogCiAjaWYg
VVNFKEpTVkFMVUU2NCkKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbWFy
c2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJl
Z1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTMwMiwxMzUgKzM2OCwyNjkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQg
bnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNl
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJs
ZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91Ymxl
Iik7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJS
ZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxB
cmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZywgYXJncy4u
Lik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdz
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAg
ICAgfQogCi0jZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQorI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82
NCkKIAotICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgYSBoYWNrIGZvciBYODYgc2luY2UgaXQg
aGFzIG5vIGFyZ3VtZW50IGdwcnMuLi4KKyAgICB1bnNpZ25lZCBhbGlnbjIodW5zaWduZWQgdmFs
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICh2YWwgKyAxKSAmICh+MSk7CisgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyNpZiBDUFUoTUlQUykKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4u
IGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2lu
ZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9r
ZSgpLCBhcmdzLi4uKTsKKworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdp
c3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25lZCBjdXJyZW50RlBBcmdDb3VudCA9IGFyZ1Nv
dXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEdQQXJnQ291
bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgdW5z
aWduZWQgYWxpZ25lZEdQQXJnQ291bnQgPSBhbGlnbjIoY3VycmVudEdQQXJnQ291bnQpOworCisg
ICAgICAgIGlmIChjdXJyZW50RlBBcmdDb3VudCA8IG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVy
cyAmJiAhbnVtR1BSQXJncykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVn
cyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEZQUkluZm86OnRvQXJndW1lbnRSZWdp
c3RlcihjdXJyZW50RlBBcmdDb3VudCkpOworCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5h
ZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGFsaWduZWRHUEFyZ0NvdW50ICsgMSA8IG51bWJlck9mR1BBcmd1
bWVudFJlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9
IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rl
cihhbGlnbmVkR1BBcmdDb3VudCkpOworCisgICAgICAgICAgICBpZiAoYWxpZ25lZEdQQXJnQ291
bnQgPiBjdXJyZW50R1BBcmdDb3VudCkKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5h
ZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1
cGRhdGVkQXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFy
Z3MuLi4pOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
Y3VycmVudEdQQXJnQ291bnQgPCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAgICAg
ICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJh
R1BSQXJncysxLCBleHRyYVBva2UpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhh
cmcpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAocG9rZUFsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRT
dGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSsxKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFk
ZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAg
ICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRf
VFlQRSwgZG91YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3Mg
dG8gYSBkb3VibGUiKTsKKworICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBGUFJJ
bmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25lZCBjdXJyZW50
QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7CisKKyAgICAgICAgaWYgKGN1
cnJlbnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRh
dGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEZQUkluZm86
OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncywgYXJncy4u
Lik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIUdQUklu
Zm86OmFsaWduNjRCaXRBcmd1bWVudHNPblN0YWNrIHx8IHBva2VBbGlnbmVkKG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UrMSk7CisgICAgICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0Fy
ZyhhcmcpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOworICAgICAgICB9CiAgICAgfQor
I2VuZGlmCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkg
PD0gND4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UpOwot
ICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5h
ZGRHUFJBcmcoKSwgYXJncy4uLik7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKKyAgICAgICAgaWYg
KGN1cnJlbnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1
cGRhdGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEdQUklu
Zm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncywgYXJn
cy4uLik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBwb2tlRm9y
QXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSk7CisgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJn
Q291bnQoR1BSSW5mbzo6cmVnVDApOworCisgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAx
ID09IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZSk7Cisg
ICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
ZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFk
ZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CisKKyAgICAgICAgfSBlbHNlIGlmICghR1BS
SW5mbzo6YWxpZ242NEJpdEFyZ3VtZW50c09uU3RhY2sgfHwgcG9rZUFsaWduZWQobnVtR1BSQXJn
cywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJB
cmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDIpOworICAg
ICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3Mu
YWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIH0KICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNf
SU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWU6OkpTQ2VsbFRhZywgR1BSUmVn
IHBheWxvYWQsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBKU1ZhbHVlOjpKU0NlbGxUYWcsIEdQUlJlZyBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAg
ewotICAgICAgICBwb2tlRm9yQXJndW1lbnQocGF5bG9hZCwgbnVtR1BSQXJncywgbnVtRlBSQXJn
cywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlICsgMSk7Ci0g
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFk
ZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1Jl
Z2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQocGF5bG9hZCk7
CisgICAgICAgIHVuc2lnbmVkIGFsaWduZWRBcmdDb3VudCA9IGFsaWduMihjdXJyZW50QXJnQ291
bnQpOworCisgICAgICAgIGlmIChhbGlnbmVkQXJnQ291bnQgKyAxIDwgbnVtQXJnUmVnaXN0ZXJz
KSB7CisgICAgICAgICAgICBhdXRvIHVwZGF0ZWRBcmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVn
cy5wdXNoUmVnQXJnKHBheWxvYWQsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVk
QXJnQ291bnQpKTsKKworICAgICAgICAgICAgaWYgKGFsaWduZWRBcmdDb3VudCA+IGN1cnJlbnRB
cmdDb3VudCkKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygp
LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFB
cmcoKSwgYXJncy4uLik7CisKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxpZ25lZEFyZ0NvdW50KzEp
KTsKKworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGlnbmVkPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIHBheWxvYWQsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
c2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+Ci0gICAg
c2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBK
U1ZhbHVlOjpKU0NlbGxUYWcsIFRydXN0ZWRJbW1QdHIgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQor
ICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWU6OkpTQ2VsbFRhZywgVHJ1
c3RlZEltbVB0ciBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9y
QXJndW1lbnQocGF5bG9hZCwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsKLSAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlICsgMSk7Ci0gICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2Uo
KSwgYXJncy4uLik7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86
Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdD
b3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoR1BSSW5mbzo6cmVnVDApOworICAgICAgICB1
bnNpZ25lZCBhbGlnbmVkQXJnQ291bnQgPSBhbGlnbjIoY3VycmVudEFyZ0NvdW50KTsKKworICAg
ICAgICBpZiAoYWxpZ25lZEFyZ0NvdW50ICsgMSA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAg
ICAgICAgaWYgKGFsaWduZWRBcmdDb3VudCA+IGN1cnJlbnRBcmdDb3VudCkKKyAgICAgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRH
UFJBcmcoKS5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3Mu
Li4pOworCisgICAgICAgICAgICBtb3ZlKHBheWxvYWQsIEdQUkluZm86OnRvQXJndW1lbnRSZWdp
c3RlcihhbGlnbmVkQXJnQ291bnQpKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxpZ25lZEFyZ0Nv
dW50KzEpKTsKKworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBva2VBcmd1bWVudHNBbGln
bmVkPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIHBheWxvYWQsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+
Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7Ci0gICAg
ICAgIHBva2VGb3JBcmd1bWVudChhcmcucGF5bG9hZEdQUigpLCBudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBleHRyYVBva2UpOwotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLnRhZ0dQUigpLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKLSAgICAgICAgc2V0dXBBcmd1
bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9r
ZSgpLCBhcmdzLi4uKTsKKyAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEFy
Z0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcudGFnR1BSKCkpOworICAgICAgICB1
bnNpZ25lZCBhbGlnbmVkQXJnQ291bnQgPSBhbGlnbjIoY3VycmVudEFyZ0NvdW50KTsKKworICAg
ICAgICBpZiAoYWxpZ25lZEFyZ0NvdW50ICsgMSA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAg
ICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVnczEgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdB
cmcoYXJnLnBheWxvYWRHUFIoKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGFsaWduZWRB
cmdDb3VudCkpOworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVnczIgPSB1cGRh
dGVkQXJnU291cmNlUmVnczEucHVzaEV4dHJhUmVnQXJnKGFyZy50YWdHUFIoKSwgR1BSSW5mbzo6
dG9Bcmd1bWVudFJlZ2lzdGVyKGFsaWduZWRBcmdDb3VudCsxKSk7CisKKyAgICAgICAgICAgIGlm
IChhbGlnbmVkQXJnQ291bnQgPiBjdXJyZW50QXJnQ291bnQpCisgICAgICAgICAgICAgICAgc2V0
dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VSZWdzMi5hZGRH
UFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3My
LCBhcmdzLi4uKTsKKworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBva2VBcmd1bWVudHNB
bGlnbmVkPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIGFyZy5wYXlsb2FkR1BSKCksIGFy
Zy50YWdHUFIoKSwgYXJncy4uLik7CiAgICAgfQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkK
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWdu
ZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5h
bWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAg
IHN0ZDo6aXNfYmFzZV9vZjxUcnVzdGVkSW1tLCBBcmc+Ojp2YWx1ZQogICAgICAgICB8fCBzdGQ6
OmlzX2NvbnZlcnRpYmxlPEFyZywgVHJ1c3RlZEltbT46OnZhbHVlPiAvLyBXZSBoYXZlIHRoaXMg
c2luY2UgREZHU3BlY3VsYXRpdmVKSVQgaGFzIGl0J3Mgb3duIGltcGxlbWVudGF0aW9uIG9mIFRy
dXN0ZWRJbW1QdHIKLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICAv
LyBSaWdodCBub3cgdGhpcyBvbmx5IHN1cHBvcnRzIG5vbi1mbG9hdGluZyBwb2ludCBpbW1lZGlh
dGUgYXJndW1lbnRzIHNpbmNlIHdlIG5ldmVyIGNhbGwgb3BlcmF0aW9ucyB3aXRoIG5vbi1yZWdp
c3RlciB2YWx1ZXMuCiAgICAgICAgIC8vIElmIHdlIGV2ZXIgbmVlZGVkIHRvIHN1cHBvcnQgaW1t
ZWRpYXRlIGZsb2F0aW5nIHBvaW50IGFyZ3VtZW50cyB3ZSB3b3VsZCBuZWVkIHRvIGR1cGxpY2F0
ZSB0aGlzIGxvZ2ljIGZvciBib3RoIHR5cGVzLCB3aGljaCBzb3VuZHMKICAgICAgICAgLy8gZ3Jv
c3Mgc28gaXQncyBwcm9iYWJseSBiZXR0ZXIgdG8gZG8gdGhhdCBtYXJzaGFsbGluZyBiZWZvcmUg
dGhlIGNhbGwgb3BlcmF0aW9uLi4uCiAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfZmxv
YXRpbmdfcG9pbnQ8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUsICJXZSBkb24ndCBzdXBw
b3J0IGltbWVkaWF0ZSBmbG9hdHMvZG91YmxlcyBpbiBzZXR1cEFyZ3VtZW50cyIpOwogICAgICAg
ICBhdXRvIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7Ci0gICAgICAgIGlmIChudW1HUFJBcmdzIDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAg
IHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IG51bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7Cisg
ICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgPCBudW1BcmdSZWdpc3RlcnMpIHsKICAgICAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQ
UkFyZygpLCBhcmdzLi4uKTsKLSAgICAgICAgICAgIG1vdmUoYXJnLCBHUFJJbmZvOjp0b0FyZ3Vt
ZW50UmVnaXN0ZXIobnVtR1BSQXJncykpOworICAgICAgICAgICAgbW92ZShhcmcsIEdQUkluZm86
OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJnQ291bnQpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKICAgICAgICAg
c2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJn
KCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6
ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUs
IEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVO
VF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUp
IDw9IDQpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tMzIo
YXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3Rk
OjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJSRU5UX0FSR1VN
RU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQ
RSkgPT0gOCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW02
NChhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBz
dGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3BvaW50ZXI8Q1VSUkVOVF9BUkdVTUVO
VF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKChzdGQ6OmlzX3BvaW50ZXI8QXJnPjo6dmFsdWUg
JiYgc3RkOjppc19jb252ZXJ0aWJsZTxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3Bv
aW50ZXJfdDxBcmc+PiosIENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKQogICAgICAgICAg
ICAgfHwgc3RkOjppc19zYW1lPEFyZywgc3RkOjpudWxscHRyX3Q+Ojp2YWx1ZSk+Ci0gICAgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
IGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnKSwgYXJncy4uLik7
CiAgICAgfQogCiAgICAgLy8gU3BlY2lhbCBjYXNlIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZSBi
ZWNhdXNlIGl0J3MgcmVhbGx5IGFubm95aW5nIHRvIGRlYWwgd2l0aCBvdGhlcndpc2UuLi4KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6
OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBTdHJ1Y3R1cmUqPjo6dmFsdWUKICAgICAg
ICAgJiYgc3RkOjppc19zYW1lPEFyZywgREZHOjpSZWdpc3RlcmVkU3RydWN0dXJlPjo6dmFsdWU+
Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdl
dCgpKSwgYXJncy4uLik7CiAgICAgfQpAQCAtNDM4LDEzICs2MzgsMTcgQEAgcHJpdmF0ZToKICN1
bmRlZiBDVVJSRU5UX0FSR1VNRU5UX1RZUEUKIAogICAgIC8vIEJhc2UgY2FzZTsgc2V0IHVwIHRo
ZSBhcmd1bWVudCByZWdpc3RlcnMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlPgot
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09
IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJp
dHkoKSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncyArIGV4dHJhUG9rZSwgIkNoZWNrIHRoZSBD
Q2FsbCBhcml0eSIpOworI2lmIENQVShKU1ZBTFVFNjQpCisgICAgICAgIHN0YXRpY19hc3NlcnQo
RnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBudW1HUFJBcmdz
ICsgbnVtRlBSQXJncyArIGV4dHJhR1BSQXJncyArIGV4dHJhUG9rZSwgIkNoZWNrIHRoZSBDQ2Fs
bCBhcml0eSIpOworI2VuZGlmCiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVtR1BSU291cmNlcywg
R1BSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNl
UmVncy5ncHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQ
UlJlZz4oYXJnU291cmNlUmVncy5ncHJTb3VyY2VzKSk7Ci0KKyNpZiBDUFUoTUlQUykKKyAgICAg
ICAgc2V0dXBTdHViQ3Jvc3NBcmdzKGNsYW1wQXJyYXlUb1NpemU8bnVtQ3Jvc3NTb3VyY2VzLCBH
UFJSZWc+KGFyZ1NvdXJjZVJlZ3MuY3Jvc3NEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXpl
PG51bUNyb3NzU291cmNlcywgRlBSUmVnPihhcmdTb3VyY2VSZWdzLmNyb3NzU291cmNlcykpOwor
I2VuZGlmCiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVtRlBSU291cmNlcywgRlBSUmVnPihjbGFt
cEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJEZXN0
aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291
cmNlUmVncy5mcHJTb3VyY2VzKSk7CiAgICAgfQogCkBAIC00NTksNyArNjYzLDcgQEAgcHVibGlj
OgogICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2
YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQuLi4KICAgICAgICAgc3RhdGljX2Fz
c2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVv
Zi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKICNlbmRpZgotICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVj
dGlvbjwwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4u
Lik7CisgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAw
LCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtNDY5LDcgKzY3Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNp
bmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCiAgICAgICAgIHN0
YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9
PSBzaXplb2YuLi4oQXJncyksICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKICNlbmRpZgotICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29s
bGVjdGlvbjwwLCAwLCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248
MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAjdW5kZWYgRklSU1Rf
QVJHVU1FTlRfVFlQRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAppbmRleCA2ZmY4MjQ5
Yjg0NTNkZTVjNjJkZWIyZTc3NjBkNmRmMDNkOGEyNGVhLi4xNjgxOTk2ZWU2NGViYmNmOTg2ZTE0
MDdjMzQ2YmI5NzFiZDMwYTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaApAQCAt
MTA3LDcgKzEwNywxMiBAQCBjbGFzcyBGUFJJbmZvIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEZQ
UlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVn
aXN0ZXJzID0gNjsKKworI2lmIENQVShBUk1fSEFSREZQKQorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gODsKKyNlbHNlCiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSAwOworI2VuZGlmCiAKICAg
ICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIC8vIGQ3IGlzIHVzZSBieSB0aGUgTWFjcm9B
c3NlbWJsZXIgYXMgZnBUZW1wUmVnaXN0ZXIuCkBAIC0xNDMsNiArMTQ4LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQpcmVnOwogICAgIH0KKyAgICBzdGF0aWMg
RlBSUmVnIHRvQXJndW1lbnRSZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChpbmRleCA8IG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RlBSUmVnPihpbmRleCk7CisgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQogICAgIHsKQEAgLTI4MSw2ICsyOTEsMTUgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CiAgICAgfQog
CisgICAgc3RhdGljIEZQUlJlZyB0b0FyZ3VtZW50UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBpbmRleEZvclJlZ2lzdGVyWzJdID0geworICAg
ICAgICAgICAgYXJndW1lbnRGUFIwLCBhcmd1bWVudEZQUjEKKyAgICAgICAgfTsKKyAgICAgICAg
cmV0dXJuIGluZGV4Rm9yUmVnaXN0ZXJbaW5kZXhdOworICAgIH0KKwogICAgIHN0YXRpYyB1bnNp
Z25lZCB0b0luZGV4KEZQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRGUFJSZWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCAyY2EzMDZh
YTNhOTAxZDc5ZGQ1NWExYzM0YjgzM2U0MTlkMmRkNTFiLi4wMzRhMmU5NTMzMmFkNTVlM2EzOTEx
YTYwYTM5NmJlNDk1YTA1MzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAt
MzQwLDYgKzM0MCw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlM7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgYWxpZ242NEJpdEFy
Z3VtZW50c09uU3RhY2sgPSBmYWxzZTsKIAogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAtNTM1
LDYgKzUzNiw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gOTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlM7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgYWxpZ242NEJpdEFyZ3Vt
ZW50c09uU3RhY2sgPSB0cnVlOwogCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gQVJNUmVnaXN0ZXJzOjpyMDsKQEAgLTcyOSw2ICs3
MzEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDc7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1F
TlRfUkVHSVNURVJTOworICAgIHN0YXRpYyBjb25zdCBib29sIGFsaWduNjRCaXRBcmd1bWVudHNP
blN0YWNrID0gdHJ1ZTsKIAogICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBh
IDMyLWJpdCB2YWx1ZS4KICAgICAvLyByZWdUMSBtdXN0IGJlIHYxIGZvciByZXR1cm5pbmcgYSBw
YWlyIG9mIDMyLWJpdCB2YWx1ZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336644</attachid>
            <date>2018-03-28 00:13:01 -0700</date>
            <delta_ts>2018-04-16 07:26:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183786-20180328091259.patch</filename>
            <type>text/plain</type>
            <size>45716</size>
            <attacher name="Dominik Inführ">dominik.infuehr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MzQyZDQ3ZTFiMzBjYzk1ODNlNjc4NGIyMzI2NzA4NTRlZjY5NjkzLi4wM2M4ZjFiMTIwOWZhYjdl
ZjE4YjJmNDYxZjgyYmRkMzEzYWI4NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOC0wMy0yOCAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2V0dXBBcmd1bWVudHNJbXBsIGZvciBBUk0gYW5k
IE1JUFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBzZXR1cEFyZ3VtZW50c0ltcGwgZm9yIEFSTSAoaGFyZGZwIGFuZCBzb2Z0ZnApIGFu
ZCBNSVBTIGNhbGxpbmcgY29udmVudGlvbi4gQWRkZWQKKyAgICAgICAgbnVtQ3Jvc3NTb3VyY2Vz
IGFuZCBleHRyYUdQUkFyZ3MgdG8gQXJnQ29sbGVjdGlvbiB0byBrZWVwIHRyYWNrIG9mIGV4dHJh
CisgICAgICAgIHJlZ2lzdGVycyB1c2VkIGZvciA2NC1iaXQgdmFsdWVzIG9uIDMyLWJpdCBhcmNo
aXRlY3R1cmVzLiBudW1Dcm9zc1NvdXJjZXMKKyAgICAgICAga2VlcHMgdHJhY2sgb2YgYXNzaWdu
bWVudHMgZnJvbSBGUFIgdG8gR1BSIHJlZ2lzdGVycyBhcyBoYXBwZW5zIGUuZy4gb24gTUlQUy4K
KworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om1vdmVEb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojptb3ZlRG91YmxlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQ3Jvc3NBcmdzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphcmdDb3VudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6Y2xhbXBBcnJheVRvU2l6ZSk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVy
czo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlQWxp
Z25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ltcGwpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmFsaWduMik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHMpOgorICAgICAgICAqIGppdC9GUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkZQUkluZm86OnRv
QXJndW1lbnRSZWdpc3Rlcik6CisKIDIwMTgtMDMtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQWRkIExvYWQxNlogZm9yIEIzIGFuZCB1c2UgaXQg
aW4gV2ViQXNzZW1ibHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggYWM1YzBlMjdjZTdkNGQxYjVhMmQ1NTk4YzA5
ZWE2NWRmY2ExYjQyMy4uZTY3ZDYwZTFhMDg0N2FmNDIyYzRkNTI1ZDdiMTg5NzE5YzFkY2E5YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmgKQEAgLTk2NCw2ICs5NjQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgbV9h
c3NlbWJsZXIudm1vdihkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgbW92ZURvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci52bW92KGRlc3QsIFJlZ2lzdGVySUQoZGVzdCsxKSwgc3JjKTsKKyAgICB9CisKICAgICB2
b2lkIG1vdmVaZXJvVG9Eb3VibGUoRlBSZWdpc3RlcklEIHJlZykKICAgICB7CiAgICAgICAgIHN0
YXRpYyBkb3VibGUgemVyb0NvbnN0YW50ID0gMC47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBhMjZlNmJiNmQyMTRh
NjRhMjU2ZmRhNjMwNDQ1OGNhZDliY2IyMjM1Li5hYTY2ODg2YTQ1NzYxZjNlMTQ2NWVmMTNiYmQy
MDQ5YWVlNzg5ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTI5MjAsNiArMjkyMCwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZkKGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9p
ZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bWZjMShSZWdpc3RlcklEKGRlc3QrMSksIEZQUmVnaXN0ZXJJRChzcmMrMSkpOworICAgIH0KKwog
ICAgIHZvaWQgbW92ZVplcm9Ub0RvdWJsZShGUFJlZ2lzdGVySUQgcmVnKQogICAgIHsKICAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGUoTUlQU1JlZ2lzdGVyczo6emVybywgcmVnKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IGQ4ZDdiM2ExZDRmZjZhY2Q5
MWUxY2IwOTVhZjA4MzY2NzQwODRlOWYuLjY4M2Q0YmI2MGNiZmE4YjgzN2Y0ZDVhMzA3MzcwYjE2
ODM4ODYyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAt
MTc3LDExICsxNzcsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorI2lmIENQVShN
SVBTKSB8fCAoQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKSkKKyAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBOdW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIE51bWJlck9mUmVnaXN0ZXJzPgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cFN0dWJDcm9zc0FyZ3Moc3RkOjphcnJheTxHUFJSZWcsIE51
bWJlck9mUmVnaXN0ZXJzPiBkZXN0aW5hdGlvbnMsIHN0ZDo6YXJyYXk8RlBSUmVnLCBOdW1iZXJP
ZlJlZ2lzdGVycz4gc291cmNlcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
TnVtQ3Jvc3NTb3VyY2VzOyBpKyspIHsKKyAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gZGVzdGlu
YXRpb25zW2ldOworICAgICAgICAgICAgRlBSUmVnIHNvdXJjZSA9IHNvdXJjZXNbaV07CisKKyAg
ICAgICAgICAgIG1vdmVEb3VibGUoc291cmNlLCBkZXN0KTsKKyAgICAgICAgfQorICAgIH0KKyNl
bmRpZgorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUmVnVHlwZT4KICAgICB1c2luZyBJbmZvVHlw
ZUZvclJlZyA9IGRlY2x0eXBlKHRvSW5mb0Zyb21SZWcoUmVnVHlwZSgtMSkpKTsKIAorICAgIC8v
IGV4dHJhR1BSQXJncyBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNz
ZWQgaW4gcmVnaXN0ZXIKICAgICAvLyBleHRyYVBva2UgaXMgdXNlZCB0byB0cmFjayA2NC1iaXQg
YXJndW1lbnQgdHlwZXMgcGFzc2VkIG9uIHRoZSBzdGFjay4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2U+CisgICAgdGVtcGxh
dGU8dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KICAgICBzdHJ1
Y3QgQXJnQ29sbGVjdGlvbiB7CiAgICAgICAgIEFyZ0NvbGxlY3Rpb24oKQogICAgICAgICB7CkBA
IC0xODksNzMgKzIwMiwxMDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9u
cy5maWxsKEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgZnByU291cmNlcy5maWxsKEludmFs
aWRGUFJSZWcpOwogICAgICAgICAgICAgZnByRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEZQUlJl
Zyk7CisgICAgICAgICAgICBjcm9zc1NvdXJjZXMuZmlsbChJbnZhbGlkRlBSUmVnKTsKKyAgICAg
ICAgICAgIGNyb3NzRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIH0K
IAotICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1bnNpZ25lZCBiLCB1bnNpZ25lZCBjLCB1
bnNpZ25lZCBkLCB1bnNpZ25lZCBlPgotICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rp
b248YSwgYiwgYywgZCwgZT4mIG90aGVyKQorICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBhLCB1
bnNpZ25lZCBiLCB1bnNpZ25lZCBjLCB1bnNpZ25lZCBkLCB1bnNpZ25lZCBlLCB1bnNpZ25lZCBm
LCB1bnNpZ25lZCBnPgorICAgICAgICBBcmdDb2xsZWN0aW9uKEFyZ0NvbGxlY3Rpb248YSwgYiwg
YywgZCwgZSwgZiwgZz4mIG90aGVyKQogICAgICAgICB7CiAgICAgICAgICAgICBncHJTb3VyY2Vz
ID0gb3RoZXIuZ3ByU291cmNlczsKICAgICAgICAgICAgIGdwckRlc3RpbmF0aW9ucyA9IG90aGVy
LmdwckRlc3RpbmF0aW9uczsKICAgICAgICAgICAgIGZwclNvdXJjZXMgPSBvdGhlci5mcHJTb3Vy
Y2VzOwogICAgICAgICAgICAgZnByRGVzdGluYXRpb25zID0gb3RoZXIuZnByRGVzdGluYXRpb25z
OworICAgICAgICAgICAgY3Jvc3NTb3VyY2VzID0gb3RoZXIuY3Jvc3NTb3VyY2VzOworICAgICAg
ICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMgPSBvdGhlci5jcm9zc0Rlc3RpbmF0aW9uczsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJj
ZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IHB1c2hSZWdBcmco
R1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVn
QXJnKEdQUlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworICAg
ICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CiAKICAgICAgICAgICAgIHJlc3VsdC5ncHJTb3Vy
Y2VzW251bUdQUlNvdXJjZXNdID0gYXJndW1lbnQ7CiAgICAgICAgICAgICByZXN1bHQuZ3ByRGVz
dGluYXRpb25zW251bUdQUlNvdXJjZXNdID0gZGVzdGluYXRpb247CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIGV4dHJh
UG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKKyAg
ICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
ICsgMSwgbnVtRlBSU291cmNlcyArIDEsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBGUFJSZWcgZGVzdGluYXRpb24p
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBleHRyYVBva2U+IHJl
c3VsdCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAg
ICAgcmVzdWx0LmZwclNvdXJjZXNbbnVtRlBSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAg
ICAgIHJlc3VsdC5mcHJEZXN0aW5hdGlvbnNbbnVtRlBSU291cmNlc10gPSBkZXN0aW5hdGlvbjsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQ
UlJlZyBhcmd1bWVudCwgR1BSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICB7CisgICAgICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAx
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMgKyAxLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gcmVzdWx0KCp0aGlzKTsKKworICAgICAgICAgICAgcmVzdWx0LmNyb3NzU291cmNlc1tu
dW1Dcm9zc1NvdXJjZXNdID0gYXJndW1lbnQ7CisgICAgICAgICAgICByZXN1bHQuY3Jvc3NEZXN0
aW5hdGlvbnNbbnVtQ3Jvc3NTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmcoR1BS
UmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQ
b2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1H
UFJTb3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9u
c1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZEdQUkFyZygpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAg
IHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPigqdGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRy
YVBva2U+IGFkZFN0YWNrQXJnKEdQUlJlZykKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPigqdGhp
cyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhGUFJSZWcpCisgICAgICAgIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFkZFN0
YWNrQXJnKEdQUlJlZykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJj
ZXMsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyAr
IDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFkZFN0YWNrQXJnKEZQUlJlZykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgZXh0cmFQb2tlICsgMT4oKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQ
UlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+KCp0aGlz
KTsKKyAgICAgICAgfQorCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSArIDE+IGFkZFBva2UoKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlICsgMT4oKnRoaXMpOwogICAgICAgICB9CiAKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQogICAgICAgICB1bnNpZ25lZCBhcmdDb3VudChHUFJSZWcpIHsgcmV0dXJuIG51bUdQUkFy
Z3MgKyBudW1GUFJBcmdzOyB9CiAgICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50KEZQUlJlZykgeyBy
ZXR1cm4gbnVtR1BSQXJncyArIG51bUZQUkFyZ3M7IH0KICNlbHNlCi0gICAgICAgIHVuc2lnbmVk
IGFyZ0NvdW50KEdQUlJlZykgeyByZXR1cm4gbnVtR1BSQXJnczsgfQorICAgICAgICB1bnNpZ25l
ZCBhcmdDb3VudChHUFJSZWcpIHsgcmV0dXJuIG51bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7IH0K
ICAgICAgICAgdW5zaWduZWQgYXJnQ291bnQoRlBSUmVnKSB7IHJldHVybiBudW1GUFJBcmdzOyB9
CiAjZW5kaWYKIAorICAgICAgICAvLyBzdG9yZSBHUFIgLT4gR1BSIGFzc2lnbm1lbnRzCiAgICAg
ICAgIHN0ZDo6YXJyYXk8R1BSUmVnLCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycz4gZ3ByU291
cmNlczsKICAgICAgICAgc3RkOjphcnJheTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzPiBncHJEZXN0aW5hdGlvbnM7CisKKyAgICAgICAgLy8gc3RvcmUgRlBSIC0+IEZQUiBhc3Np
Z25tZW50cwogICAgICAgICBzdGQ6OmFycmF5PEZQUlJlZywgRlBSSW5mbzo6bnVtYmVyT2ZSZWdp
c3RlcnM+IGZwclNvdXJjZXM7CiAgICAgICAgIHN0ZDo6YXJyYXk8RlBSUmVnLCBGUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVycz4gZnByRGVzdGluYXRpb25zOworCisgICAgICAgIC8vIHN0b3JlIEZQ
UiAtPiBHUFIgYXNzaWdubWVudHMKKyAgICAgICAgc3RkOjphcnJheTxGUFJSZWcsIEdQUkluZm86
Om51bWJlck9mUmVnaXN0ZXJzPiBjcm9zc1NvdXJjZXM7CisgICAgICAgIHN0ZDo6YXJyYXk8R1BS
UmVnLCBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycz4gY3Jvc3NEZXN0aW5hdGlvbnM7CiAgICAg
fTsKIAogICAgIHRlbXBsYXRlPHVuc2lnbmVkIFRhcmdldFNpemUsIHR5cGVuYW1lIFJlZ1R5cGU+
CiAgICAgc3RkOjphcnJheTxSZWdUeXBlLCBUYXJnZXRTaXplPiBjbGFtcEFycmF5VG9TaXplKHN0
ZDo6YXJyYXk8UmVnVHlwZSwgSW5mb1R5cGVGb3JSZWc8UmVnVHlwZT46Om51bWJlck9mUmVnaXN0
ZXJzPiBzb3VyY2VBcnJheSkKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoVGFyZ2V0U2l6
ZSA8PSBzb3VyY2VBcnJheS5zaXplKCksICJUYXJnZXRTaXplIGlzIGJpZ2dlciB0aGFuIHNvdXJj
ZS5zaXplKCkiKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoVGFyZ2V0U2l6ZSA8PSBzb3VyY2VB
cnJheS5zaXplKCkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChUYXJnZXRTaXplIDw9IEluZm9U
eXBlRm9yUmVnPFJlZ1R5cGU+OjpudW1iZXJPZlJlZ2lzdGVycyk7CiAKICAgICAgICAgc3RkOjph
cnJheTxSZWdUeXBlLCBUYXJnZXRTaXplPiByZXN1bHQgeyB9OwpAQCAtMjY4LDIwICszMTUsMzUg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBBcmdUeXBlPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwb2tlRm9yQXJndW1l
bnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3Vy
cmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgQUxXQVlTX0lOTElORSB1
bnNpZ25lZCBjYWxjdWxhdGVQb2tlT2Zmc2V0KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwg
dW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQogICAgIHsKICAgICAgICAg
Ly8gQ2xhbmcgY2xhaW1zIHRoYXQgaXQgY2Fubm90IGZpbmQgdGhlIHN5bWJvbCBmb3IgRlBSUmVn
L0dQUlJlZzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB3aGVuIHRoZXkgYXJlIHBhc3NlZCBk
aXJlY3RseSB0byBzdGQ6Om1heC4uLiBzZWVtcyBsaWtlIGEgYnVnCiAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnM7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9
IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisKKyAgICAgICAgY3VycmVudEdQ
UkFyZ3VtZW50ICs9IGV4dHJhR1BSQXJnczsKKyAgICAgICAgY3VycmVudEZQUkFyZ3VtZW50IC09
IG51bUNyb3NzU291cmNlczsKICAgICAgICAgQVNTRVJUKGN1cnJlbnRHUFJBcmd1bWVudCA+PSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzIHx8IGN1cnJlbnRGUFJBcmd1bWVudCA+
PSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKIAogICAgICAgICB1bnNpZ25l
ZCBwb2tlT2Zmc2V0ID0gUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyBleHRyYVBva2U7CiAgICAgICAg
IHBva2VPZmZzZXQgKz0gc3RkOjptYXgoY3VycmVudEdQUkFyZ3VtZW50LCBudW1iZXJPZkdQQXJn
dW1lbnRSZWdpc3RlcnMpIC0gbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICBw
b2tlT2Zmc2V0ICs9IHN0ZDo6bWF4KGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtYmVyT2ZGUEFyZ3Vt
ZW50UmVnaXN0ZXJzKSAtIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgcmV0
dXJuIHBva2VPZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNp
Z25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQ
b2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKICAgICAgICAgcG9rZShhcmcsIHBv
a2VPZmZzZXQpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBwb2tlQWxpZ25lZCh1
bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxh
dGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcmV0dXJuICEo
cG9rZU9mZnNldCAmIDEpOworICAgIH0KKwogICAgIC8vIEluIHRoZSBhdXRvLWNhbGxpbmcgY29u
dmVudGlvbiBjb2RlIGJlbG93IHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGlzOgogICAgIC8vICAg
IDEpIHNwaWxsIGFyZ3VtZW50cyB0byBzdGFjayBzbG90cwogICAgIC8vICAgIDIpIHNodWZmbGUg
aW5jb21taW5nIGFyZ3VtZW50IHZhbHVlcyBpbiByZWdpc3RlcnMgdG8gYXJndW1lbnQgcmVnaXN0
ZXJzCkBAIC0yOTUsOCArMzU3LDggQEAgcHJpdmF0ZToKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVu
YW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdp
c3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgUmVnVHlwZSBhcmcsIEFy
Z3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBSZWdUeXBlLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtYXJzaGFsbEFyZ3VtZW50
UmVnaXN0ZXIoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQ
b2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgdXNpbmcgSW5mb1R5cGUgPSBJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjsKICAgICAgICAg
dW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gSW5mb1R5cGU6Om51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnM7CkBAIC0zMTEsODMgKzM3MywyNDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3Ms
IG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91Ymxl
Pjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUi
KTsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIGFyZywgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJl
ZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFy
Z3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4u
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4u
IEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFy
Z3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3Mg
YXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0
ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLmdwcigpLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCisjZWxpZiBDUFUoWDg2KQogCi0gICAgLy8g
VGhlc2UgZnVuY3Rpb25zIGFyZSBhIGhhY2sgZm9yIFg4NiBzaW5jZSBpdCBoYXMgbm8gYXJndW1l
bnQgZ3Bycy4uLgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdz
Li4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJS
RU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFz
c2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1
bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxX
QVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUp
IDw9IDQ+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKLSAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsK
KyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdz
Li4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAg
ICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJH
VU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWU6OkpTQ2VsbFRh
ZywgR1BSUmVnIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBKU1ZhbHVlOjpKU0NlbGxUYWcsIEdQUlJlZyBwYXlsb2FkLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQocGF5bG9hZCwgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tl
ICsgMSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChwYXlsb2FkLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSArIDEpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNW
YWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZTo6SlNDZWxsVGFnLCBUcnVzdGVkSW1tUHRyIHBheWxv
YWQsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1Zh
bHVlOjpKU0NlbGxUYWcsIFRydXN0ZWRJbW1QdHIgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQogICAg
IHsKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KHBheWxvYWQsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVudChUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZyksIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOwor
ICAgICAgICBwb2tlRm9yQXJndW1lbnQocGF5bG9hZCwgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VG
b3JBcmd1bWVudChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsK
ICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3Mu
YWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lm
X3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2
YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1Nv
dXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1l
bnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsK
LSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZy5wYXlsb2FkR1BSKCksIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcudGFnR1BS
KCksIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoYXJnLnBheWxvYWRHUFIoKSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JB
cmd1bWVudChhcmcudGFnR1BSKCksIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgp
LCBhcmdzLi4uKTsKICAgICB9CiAKKyNlbGlmIENQVShBUk0pIHx8IENQVShNSVBTKQorCisgICAg
QUxXQVlTX0lOTElORSB1bnNpZ25lZCBhbGlnbjIodW5zaWduZWQgdmFsKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICh2YWwgKyAxKSAmICh+MSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHN0YXRpY19h
c3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUs
ICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKKworI2lm
IENQVShNSVBTKQorICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMg
PSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25lZCBj
dXJyZW50RlBBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKKworICAgICAg
ICBpZiAoY3VycmVudEZQQXJnQ291bnQgPCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgJiYg
IW51bUdQUkFyZ3MpIHsKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlZEFyZ1NvdXJjZVJlZ3MgPSBh
cmdTb3VyY2VSZWdzLnB1c2hSZWdBcmcoYXJnLCBGUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIo
Y3VycmVudEZQQXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4
dHJhQXJnKCksIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZWxp
ZiBDUFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZG
UEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsK
KyAgICAgICAgdW5zaWduZWQgY3VycmVudEZQQXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0Nv
dW50KGFyZyk7CisKKyAgICAgICAgaWYgKGN1cnJlbnRGUEFyZ0NvdW50IDwgbnVtYmVyT2ZGUEFy
Z3VtZW50UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBhdXRvIHVwZGF0ZWRBcmdTb3VyY2VSZWdz
ID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKGFyZywgRlBSSW5mbzo6dG9Bcmd1bWVudFJlZ2lz
dGVyKGN1cnJlbnRGUEFyZ0NvdW50KSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworI2lmIENQVShNSVBTKSB8fCAoQ1BVKEFS
TSkgJiYgIUNQVShBUk1fSEFSREZQKSkKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFyZ3Vt
ZW50UmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAg
ICAgdW5zaWduZWQgY3VycmVudEdQQXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQ
UkluZm86OnJlZ1QwKTsKKyAgICAgICAgdW5zaWduZWQgYWxpZ25lZEdQQXJnQ291bnQgPSBhbGln
bjIoY3VycmVudEdQQXJnQ291bnQpOworCisgICAgICAgIGlmIChhbGlnbmVkR1BBcmdDb3VudCAr
IDEgPCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIGF1dG8gdXBk
YXRlZEFyZ1NvdXJjZVJlZ3MgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdBcmcoYXJnLCBHUFJJbmZv
Ojp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxpZ25lZEdQQXJnQ291bnQpKTsKKworICAgICAgICAgICAg
aWYgKGFsaWduZWRHUEFyZ0NvdW50ID4gY3VycmVudEdQQXJnQ291bnQpCisgICAgICAgICAgICAg
ICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VSZWdz
LmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLCBhcmdz
Li4uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5h
ZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGN1cnJlbnRHUEFyZ0NvdW50IDwgbnVtYmVyT2ZHUEFyZ3VtZW50
UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncysxLCBleHRyYVBva2Up
OworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4u
Lik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlm
IChwb2tlQWxpZ25lZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
KzEpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBF
KSA8PSA0PgorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFy
Z3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKKyAgICAgICAgaWYgKGN1
cnJlbnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRh
dGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEdQUkluZm86
OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncywgYXJncy4u
Lik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlw
ZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJn
Q291bnQoR1BSSW5mbzo6cmVnVDApOworCisgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAx
ID09IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsg
MSwgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJh
UG9rZSArIDEpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOworCisgICAgICAgIH0gZWxzZSBpZiAocG9rZUFsaWduZWQobnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKKyAg
ICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tl
KCksIGFyZ3MuLi4pOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFy
ZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UgKyAyKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5U
X0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+CisgICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZTo6SlNDZWxsVGFnLCBHUFJSZWcgcGF5bG9hZCwgQXJn
cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BS
SW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVu
dEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChwYXlsb2FkKTsKKyAgICAgICAgdW5z
aWduZWQgYWxpZ25lZEFyZ0NvdW50ID0gYWxpZ24yKGN1cnJlbnRBcmdDb3VudCk7CisKKyAgICAg
ICAgaWYgKGFsaWduZWRBcmdDb3VudCArIDEgPCBudW1BcmdSZWdpc3RlcnMpIHsKKyAgICAgICAg
ICAgIGF1dG8gdXBkYXRlZEFyZ1NvdXJjZVJlZ3MgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdBcmco
cGF5bG9hZCwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGFsaWduZWRBcmdDb3VudCkpOwor
CisgICAgICAgICAgICBpZiAoYWxpZ25lZEFyZ0NvdW50ID4gY3VycmVudEFyZ0NvdW50KQorICAg
ICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJn
U291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4u
KTsKKworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEdQ
UkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQrMSkpOworCisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0FsaWduZWQ8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncywgcGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBh
cmdzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRf
VFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBKU1ZhbHVlOjpKU0NlbGxUYWcsIFRydXN0ZWRJbW1QdHIgcGF5bG9hZCwgQXJncy4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEFy
Z0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
IHVuc2lnbmVkIGFsaWduZWRBcmdDb3VudCA9IGFsaWduMihjdXJyZW50QXJnQ291bnQpOworCisg
ICAgICAgIGlmIChhbGlnbmVkQXJnQ291bnQgKyAxIDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAg
ICAgICAgICBpZiAoYWxpZ25lZEFyZ0NvdW50ID4gY3VycmVudEFyZ0NvdW50KQorICAgICAgICAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFk
ZEdQUkFyZygpLmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BSRXh0cmFBcmcoKSwgYXJncy4uLik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJh
dGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkR1BSRXh0cmFBcmcoKSwgYXJn
cy4uLik7CisKKyAgICAgICAgICAgIG1vdmUocGF5bG9hZCwgR1BSSW5mbzo6dG9Bcmd1bWVudFJl
Z2lzdGVyKGFsaWduZWRBcmdDb3VudCkpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZyksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJn
Q291bnQrMSkpOworCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0Fs
aWduZWQ8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZCwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpLCBhcmdzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19z
YW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KKyAgICBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51
bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3Vu
dCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnLnRhZ0dQUigpKTsKKyAgICAgICAgdW5zaWdu
ZWQgYWxpZ25lZEFyZ0NvdW50ID0gYWxpZ24yKGN1cnJlbnRBcmdDb3VudCk7CisKKyAgICAgICAg
aWYgKGFsaWduZWRBcmdDb3VudCArIDEgPCBudW1BcmdSZWdpc3RlcnMpIHsKKyAgICAgICAgICAg
IGF1dG8gdXBkYXRlZEFyZ1NvdXJjZVJlZ3MxID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKGFy
Zy5wYXlsb2FkR1BSKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291
bnQpKTsKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlZEFyZ1NvdXJjZVJlZ3MyID0gdXBkYXRlZEFy
Z1NvdXJjZVJlZ3MxLnB1c2hFeHRyYVJlZ0FyZyhhcmcudGFnR1BSKCksIEdQUkluZm86OnRvQXJn
dW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQrMSkpOworCisgICAgICAgICAgICBpZiAoYWxp
Z25lZEFyZ0NvdW50ID4gY3VycmVudEFyZ0NvdW50KQorICAgICAgICAgICAgICAgIHNldHVwQXJn
dW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVnczIuYWRkR1BSRXh0
cmFBcmcoKSwgYXJncy4uLik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0
dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VSZWdzMiwgYXJn
cy4uLik7CisKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25l
ZDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcucGF5bG9hZEdQUigpLCBhcmcudGFn
R1BSKCksIGFyZ3MuLi4pOworICAgIH0KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6
OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwgQXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19j
b252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJbW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNl
IERGR1NwZWN1bGF0aXZlSklUIGhhcyBpdCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVk
SW1tUHRyCi0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgLy8gUmln
aHQgbm93IHRoaXMgb25seSBzdXBwb3J0cyBub24tZmxvYXRpbmcgcG9pbnQgaW1tZWRpYXRlIGFy
Z3VtZW50cyBzaW5jZSB3ZSBuZXZlciBjYWxsIG9wZXJhdGlvbnMgd2l0aCBub24tcmVnaXN0ZXIg
dmFsdWVzLgogICAgICAgICAvLyBJZiB3ZSBldmVyIG5lZWRlZCB0byBzdXBwb3J0IGltbWVkaWF0
ZSBmbG9hdGluZyBwb2ludCBhcmd1bWVudHMgd2Ugd291bGQgbmVlZCB0byBkdXBsaWNhdGUgdGhp
cyBsb2dpYyBmb3IgYm90aCB0eXBlcywgd2hpY2ggc291bmRzCkBAIC0zOTcsNyArNjI0LDcgQEAg
cHJpdmF0ZToKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBhdXRvIGN1
cnJlbnRBcmdDb3VudCA9IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzICsgKHN0ZDo6aXNfc2FtZTxS
RVNVTFRfVFlQRSwgU2xvd1BhdGhSZXR1cm5UeXBlPjo6dmFsdWUgPyAxIDogMCk7CiAjZWxzZQot
ICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51bUdQUkFyZ3M7CisgICAgICAgIGF1dG8g
Y3VycmVudEFyZ0NvdW50ID0gbnVtR1BSQXJncyArIGV4dHJhR1BSQXJnczsKICNlbmRpZgogICAg
ICAgICBpZiAoY3VycmVudEFyZ0NvdW50IDwgbnVtQXJnUmVnaXN0ZXJzKSB7CiAgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJB
cmcoKSwgYXJncy4uLik7CkBAIC00MDUsNjEgKzYzMiw2NiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50
KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3Nh
bWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6Omlz
X2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXpl
b2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJn
cykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFy
Z3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncywgVHJ1c3RlZEltbTMyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJn
cz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNf
c2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6
aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNp
emVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4g
YXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tNjQoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFy
Z3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BS
QXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWdu
ZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBB
cmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjpp
c19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmICgoc3Rk
Ojppc19wb2ludGVyPEFyZz46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1v
dmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9wb2ludGVyX3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSkKICAgICAgICAgICAgIHx8IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVs
bHB0cl90Pjo6dmFsdWUpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVz
dGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2FzZSBE
Rkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0byBk
ZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlw
ZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQg
bnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0
eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwg
U3RydWN0dXJlKj46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfc2FtZTxBcmcsIERGRzo6UmVn
aXN0ZXJlZFN0cnVjdHVyZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3MuLi4pOwogICAgIH0KIAogI3VuZGVm
IENVUlJFTlRfQVJHVU1FTlRfVFlQRQotI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNl
IGNhc2U7IHNldCB1cCB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhUG9rZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBs
KEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVt
RlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2U+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlv
blR5cGU+Ojphcml0eSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0IHNhbml0
eSBjaGVjayIpOworI2lmIENQVShKU1ZBTFVFNjQpCiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVu
Y3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBudW1HUFJBcmdzICsg
bnVtRlBSQXJncyArIGV4dHJhUG9rZSwgIkNoZWNrIHRoZSBDQ2FsbCBhcml0eSIpOworI2VuZGlm
CiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVtR1BSU291cmNlcywgR1BSUmVnPihjbGFtcEFycmF5
VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVncy5ncHJEZXN0aW5hdGlv
bnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVn
cy5ncHJTb3VyY2VzKSk7Ci0KKyNpZiBDUFUoTUlQUykgfHwgKENQVShBUk0pICYmICFDUFUoQVJN
X0hBUkRGUCkpCisgICAgICAgIHNldHVwU3R1YkNyb3NzQXJnczxudW1Dcm9zc1NvdXJjZXM+KGFy
Z1NvdXJjZVJlZ3MuY3Jvc3NEZXN0aW5hdGlvbnMsIGFyZ1NvdXJjZVJlZ3MuY3Jvc3NTb3VyY2Vz
KTsKKyNlbHNlCisgICAgICAgIHN0YXRpY19hc3NlcnQoIW51bUNyb3NzU291cmNlcywgInNob3Vs
ZG4ndCBiZSB1c2VkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiIpOworI2VuZGlmCiAgICAgICAgIHNl
dHVwU3R1YkFyZ3M8bnVtRlBSU291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQ
UlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFy
cmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2Vz
KSk7CiAgICAgfQogCkBAIC00NzQsNyArNzA2LDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGlz
IG9ubHkgcmVhbGx5IHdvcmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhp
bmdzIHVwIGZvciAzMi1iaXQuLi4KICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0
czxPcGVyYXRpb25UeXBlPjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJC
YXNpYyBzYW5pdHkgY2hlY2siKTsKICNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAw
PigpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xs
ZWN0aW9uPDAsIDAsIDAsIDAsIDAsIDAsIDA+KCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBhcmdzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgpAQCAtNDg0LDcgKzcxNiw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gVGhpcyBvbmx5IHJlYWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBt
ZXNzIHRoaW5ncyB1cCBmb3IgMzItYml0Li4uCiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rp
b25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyks
ICJCYXNpYyBzYW5pdHkgY2hlY2siKTsKICNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAw
LCAwPigpLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwg
MD4oKSwgYXJncy4uLik7CiAgICAgfQogCiAjdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAppbmRleCA2ZmY4MjQ5Yjg0NTNkZTVjNjJkZWIyZTc3
NjBkNmRmMDNkOGEyNGVhLi5lYTQ3MTk3OTYzZWY3NDBjNDUwYTUyOTA5MmQ3M2U1YjU5M2U0Yjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaApAQCAtMTA3LDcgKzEwNywxMiBAQCBj
bGFzcyBGUFJJbmZvIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworI2lm
IENQVShBUk1fSEFSREZQKQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzID0gODsKKyNlbHNlCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJl
ck9mQXJndW1lbnRSZWdpc3RlcnMgPSAwOworI2VuZGlmCiAKICAgICAvLyBUZW1wb3JhcnkgcmVn
aXN0ZXJzLgogICAgIC8vIGQ3IGlzIHVzZSBieSB0aGUgTWFjcm9Bc3NlbWJsZXIgYXMgZnBUZW1w
UmVnaXN0ZXIuCkBAIC0xNDQsNiArMTQ5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICh1
bnNpZ25lZClyZWc7CiAgICAgfQogCisjaWYgQ1BVKEFSTV9IQVJERlApCisgICAgc3RhdGljIEZQ
UlJlZyB0b0FyZ3VtZW50UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBB
U1NFUlQoaW5kZXggPCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEZQUlJlZz4oaW5kZXgpOworICAgIH0KKyNlbmRpZgorCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJU
KHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKQEAgLTI4MSw2ICsyOTQsMTUgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CiAgICAgfQogCisgICAgc3RhdGlj
IEZQUlJlZyB0b0FyZ3VtZW50UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAg
ICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBpbmRleEZvclJlZ2lzdGVyWzJdID0geworICAgICAgICAgICAgYXJn
dW1lbnRGUFIwLCBhcmd1bWVudEZQUjEKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIGluZGV4
Rm9yUmVnaXN0ZXJbaW5kZXhdOworICAgIH0KKwogICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4
KEZQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337996</attachid>
            <date>2018-04-16 07:26:20 -0700</date>
            <delta_ts>2018-04-17 02:10:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183786-20180416162619.patch</filename>
            <type>text/plain</type>
            <size>43991</size>
            <attacher name="Dominik Inführ">dominik.infuehr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YzViNTRiM2U2MWE1ZDI1NGI4Y2RhYzhiZDliZjEwYmYxZjNjMzE0Li5iMTQ4ZmQyZDNiMzUyOGQ3
NGY0MWRlN2VhMTU3N2M0MTRjMmMyNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOC0wNC0xMyAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2V0dXBBcmd1bWVudHNJbXBsIGZvciBBUk0gYW5k
IE1JUFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBzZXR1cEFyZ3VtZW50c0ltcGwgZm9yIEFSTSAoaGFyZGZwIGFuZCBzb2Z0ZnApIGFu
ZCBNSVBTIGNhbGxpbmcgY29udmVudGlvbi4gQWRkZWQKKyAgICAgICAgbnVtQ3Jvc3NTb3VyY2Vz
IGFuZCBleHRyYUdQUkFyZ3MgdG8gQXJnQ29sbGVjdGlvbiB0byBrZWVwIHRyYWNrIG9mIGV4dHJh
CisgICAgICAgIHJlZ2lzdGVycyB1c2VkIGZvciA2NC1iaXQgdmFsdWVzIG9uIDMyLWJpdCBhcmNo
aXRlY3R1cmVzLiBudW1Dcm9zc1NvdXJjZXMKKyAgICAgICAga2VlcHMgdHJhY2sgb2YgYXNzaWdu
bWVudHMgZnJvbSBGUFIgdG8gR1BSIHJlZ2lzdGVycyBhcyBoYXBwZW5zIGUuZy4gb24gTUlQUy4K
KworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om1vdmVEb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojptb3ZlRG91YmxlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQ3Jvc3NBcmdzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphcmdDb3VudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6Y2xhbXBBcnJheVRvU2l6ZSk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVy
czo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlQWxp
Z25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ltcGwpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmFsaWduMik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHMpOgorICAgICAgICAqIGppdC9GUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkZQUkluZm86OnRv
QXJndW1lbnRSZWdpc3Rlcik6CisKIDIwMTgtMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IGZvciAzMmJp
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuaAppbmRleCBhYzVjMGUyN2NlN2Q0ZDFiNWEyZDU1OThjMDllYTY1ZGZjYTFiNDIz
Li5mZTc5MjU3N2Y3Njk0MTgyN2NlNmY4ZDdkNDc4NGRjZDk3MWY2ZGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaApA
QCAtOTY0LDYgKzk2NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci52bW92
KGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVz
dCwgUmVnaXN0ZXJJRChkZXN0ICsgMSksIHNyYyk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlWmVy
b1RvRG91YmxlKEZQUmVnaXN0ZXJJRCByZWcpCiAgICAgewogICAgICAgICBzdGF0aWMgZG91Ymxl
IHplcm9Db25zdGFudCA9IDAuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggM2M4ZTljNGIxMjEyNzc0MTE0ZDg0NGQ5
NDRhOWQ4ODA2ZDY4OThhYS4uM2I0M2I2ZmUyNzcxYjA3MjIzODI5Y2ZlMWExOTk2ODEyZGVjZmMy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCkBAIC0zMDYxLDYgKzMwNjEsMTIgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92ZChkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgbW92ZURvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5tZmMxKGRlc3QsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoUmVnaXN0
ZXJJRChkZXN0ICsgMSksIEZQUmVnaXN0ZXJJRChzcmMgKyAxKSk7CisgICAgfQorCiAgICAgdm9p
ZCBtb3ZlWmVyb1RvRG91YmxlKEZQUmVnaXN0ZXJJRCByZWcpCiAgICAgewogICAgICAgICBjb252
ZXJ0SW50MzJUb0RvdWJsZShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCByZWcpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggMWVmMmI2NDQzMjJmYzQ1NGExY2VjNDc3
YjdiZjAyZTFlZmIyNjBjZi4uNmI2NDEyMDlhZmMzYmY2YmZiOTlmYWI0OWE5NTYzODJhYzNlNGZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC0xNzcsMTEg
KzE3NywyNCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisjaWYgQ1BVKE1JUFMpIHx8
IChDUFUoQVJNKSAmJiAhQ1BVKEFSTV9IQVJERlApKQorICAgIHRlbXBsYXRlPHVuc2lnbmVkIE51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgTnVtYmVyT2ZSZWdpc3RlcnM+CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwU3R1YkNyb3NzQXJncyhzdGQ6OmFycmF5PEdQUlJlZywgTnVtYmVyT2ZS
ZWdpc3RlcnM+IGRlc3RpbmF0aW9ucywgc3RkOjphcnJheTxGUFJSZWcsIE51bWJlck9mUmVnaXN0
ZXJzPiBzb3VyY2VzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1Dcm9z
c1NvdXJjZXM7IGkrKykgeworICAgICAgICAgICAgR1BSUmVnIGRlc3QgPSBkZXN0aW5hdGlvbnNb
aV07CisgICAgICAgICAgICBGUFJSZWcgc291cmNlID0gc291cmNlc1tpXTsKKworICAgICAgICAg
ICAgbW92ZURvdWJsZShzb3VyY2UsIGRlc3QpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgogICAgIHVzaW5nIEluZm9UeXBlRm9yUmVn
ID0gZGVjbHR5cGUodG9JbmZvRnJvbVJlZyhSZWdUeXBlKC0xKSkpOwogCisgICAgLy8gZXh0cmFH
UFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3VtZW50IHR5cGVzIHBhc3NlZCBpbiBy
ZWdpc3RlcgogICAgIC8vIGV4dHJhUG9rZSBpcyB1c2VkIHRvIHRyYWNrIDY0LWJpdCBhcmd1bWVu
dCB0eXBlcyBwYXNzZWQgb24gdGhlIHN0YWNrLgotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlPgogICAgIHN0cnVjdCBBcmdD
b2xsZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAgICAgICAgIHsKQEAgLTE4OSw2
NyArMjAyLDEwMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zLmZpbGwo
SW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICBmcHJTb3VyY2VzLmZpbGwoSW52YWxpZEZQUlJl
Zyk7CiAgICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkRlBSUmVnKTsKKyAg
ICAgICAgICAgIGNyb3NzU291cmNlcy5maWxsKEludmFsaWRGUFJSZWcpOworICAgICAgICAgICAg
Y3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVk
IGQsIHVuc2lnbmVkIGU+Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBi
LCBjLCBkLCBlPiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVk
IGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUsIHVuc2lnbmVkIGYsIHVuc2ln
bmVkIGc+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBl
LCBmLCBnPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdwclNvdXJjZXMgPSBvdGhl
ci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRpb25zID0gb3RoZXIuZ3ByRGVz
dGluYXRpb25zOwogICAgICAgICAgICAgZnByU291cmNlcyA9IG90aGVyLmZwclNvdXJjZXM7CiAg
ICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMgPSBvdGhlci5mcHJEZXN0aW5hdGlvbnM7CisgICAg
ICAgICAgICBjcm9zc1NvdXJjZXMgPSBvdGhlci5jcm9zc1NvdXJjZXM7CisgICAgICAgICAgICBj
cm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRpb25zOwogICAgICAgICB9CiAK
LSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhHUFJSZWcg
YXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoR1BS
UmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMgKyAxLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IHJlc3VsdCgqdGhpcyk7CisgICAgICAgICAg
ICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzICsgMSwgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVzdWx0LmdwclNvdXJjZXNbbnVt
R1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJlc3VsdC5ncHJEZXN0aW5hdGlv
bnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgZXh0cmFQb2tlPiBw
dXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3RpbmF0aW9uKQorICAgICAgICBB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBu
dW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBkZXN0aW5hdGlvbikKICAgICAg
ICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIGV4dHJhUG9rZT4gcmVzdWx0KCp0
aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNl
cywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwogCiAgICAgICAgICAgICByZXN1
bHQuZnByU291cmNlc1tudW1GUFJTb3VyY2VzXSA9IGFyZ3VtZW50OwogICAgICAgICAgICAgcmVz
dWx0LmZwckRlc3RpbmF0aW9uc1tudW1GUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NT
b3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1c2hSZWdBcmcoRlBSUmVnIGFy
Z3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1
bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuY3Jvc3NTb3VyY2VzW251bUNyb3NzU291
cmNlc10gPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHJlc3VsdC5jcm9zc0Rlc3RpbmF0aW9uc1tu
dW1Dcm9zc1NvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhZGRTdGFj
a0FyZyhHUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0
cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdBcmcoR1BSUmVnIGFyZ3VtZW50
LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiByZXN1bHQoKnRo
aXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tudW1HUFJTb3VyY2VzXSA9IGFy
Z3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0aW9uc1tudW1HUFJTb3VyY2Vz
XSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncyArIDEsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQor
ICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhZGRHUFJBcmcoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBS
U291cmNlcywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2UgKyAxPiBhZGRQb2tlKCkK
KyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4
dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4oKnRo
aXMpOworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoR1BSUmVnKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3Rh
Y2tBcmcoRlBSUmVnKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAg
ICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAx
PigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCiAg
ICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50KEdQUlJlZykgeyByZXR1cm4gbnVtR1BSQXJncyArIG51
bUZQUkFyZ3M7IH0KICAgICAgICAgdW5zaWduZWQgYXJnQ291bnQoRlBSUmVnKSB7IHJldHVybiBu
dW1HUFJBcmdzICsgbnVtRlBSQXJnczsgfQogI2Vsc2UKLSAgICAgICAgdW5zaWduZWQgYXJnQ291
bnQoR1BSUmVnKSB7IHJldHVybiBudW1HUFJBcmdzOyB9CisgICAgICAgIHVuc2lnbmVkIGFyZ0Nv
dW50KEdQUlJlZykgeyByZXR1cm4gbnVtR1BSQXJncyArIGV4dHJhR1BSQXJnczsgfQogICAgICAg
ICB1bnNpZ25lZCBhcmdDb3VudChGUFJSZWcpIHsgcmV0dXJuIG51bUZQUkFyZ3M7IH0KICNlbmRp
ZgogCisgICAgICAgIC8vIHN0b3JlIEdQUiAtPiBHUFIgYXNzaWdubWVudHMKICAgICAgICAgc3Rk
OjphcnJheTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBncHJTb3VyY2VzOwog
ICAgICAgICBzdGQ6OmFycmF5PEdQUlJlZywgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM+IGdw
ckRlc3RpbmF0aW9uczsKKworICAgICAgICAvLyBzdG9yZSBGUFIgLT4gRlBSIGFzc2lnbm1lbnRz
CiAgICAgICAgIHN0ZDo6YXJyYXk8RlBSUmVnLCBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycz4g
ZnByU291cmNlczsKICAgICAgICAgc3RkOjphcnJheTxGUFJSZWcsIEZQUkluZm86Om51bWJlck9m
UmVnaXN0ZXJzPiBmcHJEZXN0aW5hdGlvbnM7CisKKyAgICAgICAgLy8gc3RvcmUgRlBSIC0+IEdQ
UiBhc3NpZ25tZW50cworICAgICAgICBzdGQ6OmFycmF5PEZQUlJlZywgR1BSSW5mbzo6bnVtYmVy
T2ZSZWdpc3RlcnM+IGNyb3NzU291cmNlczsKKyAgICAgICAgc3RkOjphcnJheTxHUFJSZWcsIEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBjcm9zc0Rlc3RpbmF0aW9uczsKICAgICB9OwogCiAg
ICAgdGVtcGxhdGU8dW5zaWduZWQgVGFyZ2V0U2l6ZSwgdHlwZW5hbWUgUmVnVHlwZT4KQEAgLTI2
OCwyMCArMzE1LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQs
IHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIEFM
V0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNldCh1bnNpZ25lZCBjdXJyZW50
R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAg
ICB7CiAgICAgICAgIC8vIENsYW5nIGNsYWltcyB0aGF0IGl0IGNhbm5vdCBmaW5kIHRoZSBzeW1i
b2wgZm9yIEZQUlJlZy9HUFJSZWc6Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgd2hlbiB0aGV5
IGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gc3RkOjptYXguLi4gc2VlbXMgbGlrZSBhIGJ1ZwogICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkdQQXJndW1l
bnRSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworCisgICAg
ICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7CisgICAgICAgIGN1cnJlbnRG
UFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAgIEFTU0VSVChjdXJyZW50R1BS
QXJndW1lbnQgPj0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyB8fCBjdXJyZW50
RlBSQXJndW1lbnQgPj0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyk7CiAKICAg
ICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgZXh0cmFQ
b2tlOwogICAgICAgICBwb2tlT2Zmc2V0ICs9IHN0ZDo6bWF4KGN1cnJlbnRHUFJBcmd1bWVudCwg
bnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSAtIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVy
czsKICAgICAgICAgcG9rZU9mZnNldCArPSBzdGQ6Om1heChjdXJyZW50RlBSQXJndW1lbnQsIG51
bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycykgLSBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnM7
CisgICAgICAgIHJldHVybiBwb2tlT2Zmc2V0OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEFyZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1bWVudChBcmdU
eXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBjdXJyZW50RlBS
QXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgeworICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0
ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1
bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAgICAg
IHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
c3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVu
dEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BS
QXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcG9rZU9m
ZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBS
QXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAg
ICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYgMSk7CisgICAgfQorCiAgICAgLy8gSW4gdGhlIGF1
dG8tY2FsbGluZyBjb252ZW50aW9uIGNvZGUgYmVsb3cgdGhlIG9yZGVyIG9mIG9wZXJhdGlvbnMg
aXM6CiAgICAgLy8gICAgMSkgc3BpbGwgYXJndW1lbnRzIHRvIHN0YWNrIHNsb3RzCiAgICAgLy8g
ICAgMikgc2h1ZmZsZSBpbmNvbW1pbmcgYXJndW1lbnQgdmFsdWVzIGluIHJlZ2lzdGVycyB0byBh
cmd1bWVudCByZWdpc3RlcnMKQEAgLTI5Niw4ICszNTgsOCBAQCBwcml2YXRlOgogI2lmIFVTRShK
U1ZBTFVFNjQpCiAKICAgICAvLyBBdm9pZCBNU1ZDIG9wdGltaXphdGlvbiB0aW1lIGV4cGxvc2lv
biBhc3NvY2lhdGVkIHdpdGggX19mb3JjZWlubGluZSBpbiByZWN1cnNpdmUgdGVtcGxhdGVzLgot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgUmVnVHlwZSwgdHlwZW5h
bWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9NU1ZDIHZvaWQgbWFyc2hhbGxB
cmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBSZWdU
eXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
IFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORV9FWENFUFRfTVNW
QyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIFJlZ1R5cGUgYXJnLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZvVHlwZSA9IEluZm9UeXBlRm9y
UmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBJbmZvVHlw
ZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTMxMiw4MyArMzc0LDIyMSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9rZUZvckFy
Z3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAg
cG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1w
bDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4p
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVk
IG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3Ms
IHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4g
QXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgRlBSUmVnIGFyZywgQXJncy4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8Q1VSUkVO
VF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNob3VsZCBvbmx5IGJlIHBhc3Np
bmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAgICAgICBtYXJzaGFsbEFyZ3VtZW50UmVnaXN0
ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBhcmdzLi4uKTsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdz
LCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBu
dW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1Zh
bHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAg
IG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBh
cmcuZ3ByKCksIGFyZ3MuLi4pOwogICAgIH0KIAogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKKyNp
ZiBDUFUoWDg2KQogCi0gICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSBhIGhhY2sgZm9yIFg4NiBz
aW5jZSBpdCBoYXMgbm8gYXJndW1lbnQgZ3Bycy4uLgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJl
ZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAi
V2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdzIHRvIGEgZG91YmxlIik7Ci0gICAgICAg
IHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7
CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOwogICAgICAgICBzZXR1cEFy
Z3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcp
LmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3Nz
U291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihD
VVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9IDQ+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQogICAgIHsKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Bl
cmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4K
LSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEpTVmFsdWU6OkpTQ2VsbFRhZywgR1BSUmVnIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlOjpKU0NlbGxUYWcsIEdQUlJl
ZyBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQo
cGF5bG9hZCwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgbnVtR1BSQXJncywg
bnVtRlBSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChwYXls
b2FkLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSArIDEpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUu
Li4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAg
IEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdV
TUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZTo6SlNDZWxsVGFn
LCBUcnVzdGVkSW1tUHRyIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlOjpKU0NlbGxUYWcsIFRydXN0ZWRJbW1QdHIgcGF5bG9h
ZCwgQXJncy4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KHBheWxvYWQs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHBva2VGb3JBcmd1
bWVudChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQocGF5bG9hZCwgbnVt
R1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZyksIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UgKyAxKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1H
UFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNp
Z25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNf
SU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51
bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywg
ZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywg
QXJncy4uLiBhcmdzKQogICAgIHsKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZy5wYXlsb2Fk
R1BSKCksIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHBva2VG
b3JBcmd1bWVudChhcmcudGFnR1BSKCksIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIGV4dHJhUG9r
ZSArIDEpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLnBheWxvYWRHUFIoKSwgbnVtR1BS
QXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcudGFnR1BSKCksIG51bUdQUkFyZ3MsIG51
bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsK
ICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3Mu
YWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICB9CiAKKyNlbGlmIENQVShBUk0p
IHx8IENQVShNSVBTKQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFy
Z3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENV
UlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBw
YXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsKKworI2lmIENQVShNSVBTKQorICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFy
Z3VtZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25lZCBjdXJyZW50RlBBcmdDb3VudCA9IGFy
Z1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKKworICAgICAgICBpZiAoY3VycmVudEZQQXJnQ291
bnQgPCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3RlcnMgJiYgIW51bUdQUkFyZ3MpIHsKKyAgICAg
ICAgICAgIGF1dG8gdXBkYXRlZEFyZ1NvdXJjZVJlZ3MgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdB
cmcoYXJnLCBGUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoY3VycmVudEZQQXJnQ291bnQpKTsK
KyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJn
U291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZWxpZiBDUFUoQVJNKSAmJiBDUFUoQVJN
X0hBUkRGUCkKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0g
RlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEZQQXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7CisKKyAgICAgICAg
aWYgKGN1cnJlbnRGUEFyZ0NvdW50IDwgbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzKSB7Cisg
ICAgICAgICAgICBhdXRvIHVwZGF0ZWRBcmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVncy5wdXNo
UmVnQXJnKGFyZywgRlBSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGN1cnJlbnRGUEFyZ0NvdW50
KSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRl
ZEFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisjZW5kaWYKKworI2lmIENQVShNSVBTKSB8fCAoQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQ
KSkKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzID0gR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEdQ
QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgdW5zaWduZWQgYWxpZ25lZEdQQXJnQ291bnQgPSByb3VuZFVwVG9NdWx0aXBsZU9mPDI+KGN1
cnJlbnRHUEFyZ0NvdW50KTsKKworICAgICAgICBpZiAoYWxpZ25lZEdQQXJnQ291bnQgKyAxIDwg
bnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBhdXRvIHVwZGF0ZWRB
cmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKGFyZywgR1BSSW5mbzo6dG9B
cmd1bWVudFJlZ2lzdGVyKGFsaWduZWRHUEFyZ0NvdW50KSk7CisKKyAgICAgICAgICAgIGlmIChh
bGlnbmVkR1BBcmdDb3VudCA+IGN1cnJlbnRHUEFyZ0NvdW50KQorICAgICAgICAgICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncy5hZGRH
UFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BSRXh0cmFBcmcoKSwgYXJncy4uLik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VSZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BS
RXh0cmFBcmcoKSwgYXJncy4uLik7CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChjdXJyZW50R1BBcmdDb3VudCA8IG51bWJlck9mR1BBcmd1bWVudFJlZ2lz
dGVycykgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UpOwor
ICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChz
dGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSAr
IDEpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBF
KSA8PSA0PgorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFy
Z3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQ
UkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJl
bnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnKTsKKyAgICAgICAgaWYgKGN1
cnJlbnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRh
dGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEdQUkluZm86
OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncywgYXJncy4u
Lik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBwb2tlRm9yQXJn
dW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkU3RhY2tBcmcoYXJnKSwgYXJncy4uLik7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdHlwZW5hbWUgQXJnMSwgdHlw
ZW5hbWUgQXJnMiwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywg
dW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHBva2VBcmd1bWVudHNBbGlnbmVkKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgQXJnMSBhcmcxLCBBcmcyIGFyZzIsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3Rl
cnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJlZ3MuYXJn
Q291bnQoR1BSSW5mbzo6cmVnVDApOworCisgICAgICAgIGlmIChjdXJyZW50QXJnQ291bnQgKyAx
ID09IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsg
MSwgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJh
UG9rZSArIDEpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFy
Z3MuLi4pOworICAgICAgICB9IGVsc2UgaWYgKHN0YWNrQWxpZ25lZChudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKSkgeworICAg
ICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2Uo
KSwgYXJncy4uLik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UgKyAyKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFyZ3Mu
Li4pOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUuLi4gQXJncz4KKyAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FS
R1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFsdWU+CisgICAgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgSlNWYWx1ZTo6SlNDZWxsVGFnLCBHUFJSZWcgcGF5bG9hZCwgQXJncy4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5m
bzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEFy
Z0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChwYXlsb2FkKTsKKyAgICAgICAgdW5zaWdu
ZWQgYWxpZ25lZEFyZ0NvdW50ID0gcm91bmRVcFRvTXVsdGlwbGVPZjwyPihjdXJyZW50QXJnQ291
bnQpOworCisgICAgICAgIGlmIChhbGlnbmVkQXJnQ291bnQgKyAxIDwgbnVtQXJnUmVnaXN0ZXJz
KSB7CisgICAgICAgICAgICBhdXRvIHVwZGF0ZWRBcmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVn
cy5wdXNoUmVnQXJnKHBheWxvYWQsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVk
QXJnQ291bnQpKTsKKworICAgICAgICAgICAgaWYgKGFsaWduZWRBcmdDb3VudCA+IGN1cnJlbnRB
cmdDb3VudCkKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygp
LCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFB
cmcoKSwgYXJncy4uLik7CisKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxpZ25lZEFyZ0NvdW50ICsg
MSkpOworCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0FsaWduZWQ8
T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgcGF5bG9hZCwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpLCBhcmdzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENV
UlJFTlRfQVJHVU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KKyAgICBzZXR1cEFy
Z3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAg
ICB7CisgICAgICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFy
Z1NvdXJjZVJlZ3MuYXJnQ291bnQoYXJnLnRhZ0dQUigpKTsKKyAgICAgICAgdW5zaWduZWQgYWxp
Z25lZEFyZ0NvdW50ID0gcm91bmRVcFRvTXVsdGlwbGVPZjwyPihjdXJyZW50QXJnQ291bnQpOwor
CisgICAgICAgIGlmIChhbGlnbmVkQXJnQ291bnQgKyAxIDwgbnVtQXJnUmVnaXN0ZXJzKSB7Cisg
ICAgICAgICAgICBhdXRvIHVwZGF0ZWRBcmdTb3VyY2VSZWdzMSA9IGFyZ1NvdXJjZVJlZ3MucHVz
aFJlZ0FyZyhhcmcucGF5bG9hZEdQUigpLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxp
Z25lZEFyZ0NvdW50KSk7CisgICAgICAgICAgICBhdXRvIHVwZGF0ZWRBcmdTb3VyY2VSZWdzMiA9
IHVwZGF0ZWRBcmdTb3VyY2VSZWdzMS5wdXNoRXh0cmFSZWdBcmcoYXJnLnRhZ0dQUigpLCBHUFJJ
bmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxpZ25lZEFyZ0NvdW50ICsgMSkpOworCisgICAgICAg
ICAgICBpZiAoYWxpZ25lZEFyZ0NvdW50ID4gY3VycmVudEFyZ0NvdW50KQorICAgICAgICAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVn
czIuYWRkR1BSRXh0cmFBcmcoKSwgYXJncy4uLik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3Vy
Y2VSZWdzMiwgYXJncy4uLik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcG9rZUFyZ3Vt
ZW50c0FsaWduZWQ8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLnBheWxvYWRHUFIo
KSwgYXJnLnRhZ0dQUigpLCBhcmdzLi4uKTsKKyAgICB9CisKKyNlbmRpZiAvLyBDUFUoQVJNKSB8
fCBDUFUoTUlQUykKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFM
V0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19iYXNlX29mPFRy
dXN0ZWRJbW0sIEFyZz46OnZhbHVlCiAgICAgICAgIHx8IHN0ZDo6aXNfY29udmVydGlibGU8QXJn
LCBUcnVzdGVkSW1tPjo6dmFsdWU+IC8vIFdlIGhhdmUgdGhpcyBzaW5jZSBERkdTcGVjdWxhdGl2
ZUpJVCBoYXMgaXQncyBvd24gaW1wbGVtZW50YXRpb24gb2YgVHJ1c3RlZEltbVB0cgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
IGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFy
ZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGlzIG9u
bHkgc3VwcG9ydHMgbm9uLWZsb2F0aW5nIHBvaW50IGltbWVkaWF0ZSBhcmd1bWVudHMgc2luY2Ug
d2UgbmV2ZXIgY2FsbCBvcGVyYXRpb25zIHdpdGggbm9uLXJlZ2lzdGVyIHZhbHVlcy4KICAgICAg
ICAgLy8gSWYgd2UgZXZlciBuZWVkZWQgdG8gc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRpbmcgcG9p
bnQgYXJndW1lbnRzIHdlIHdvdWxkIG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgbG9naWMgZm9yIGJv
dGggdHlwZXMsIHdoaWNoIHNvdW5kcwpAQCAtMzk4LDcgKzU5OCw3IEBAIHByaXZhdGU6CiAjaWYg
T1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkKICAgICAgICAgYXV0byBjdXJyZW50QXJnQ291bnQg
PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncyArIChzdGQ6OmlzX3NhbWU8UkVTVUxUX1RZUEUsIFNs
b3dQYXRoUmV0dXJuVHlwZT46OnZhbHVlID8gMSA6IDApOwogI2Vsc2UKLSAgICAgICAgYXV0byBj
dXJyZW50QXJnQ291bnQgPSBudW1HUFJBcmdzOworICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3Vu
dCA9IG51bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7CiAjZW5kaWYKICAgICAgICAgaWYgKGN1cnJl
bnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lzdGVycykgewogICAgICAgICAgICAgc2V0dXBBcmd1bWVu
dHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4p
OwpAQCAtNDA2LDQ2ICs2MDYsNDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFy
Z3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2Up
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19J
TkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENVUlJFTlRfQVJH
VU1FTlRfVFlQRSwgQXJnPjo6dmFsdWUKICAgICAgICAgJiYgc3RkOjppc19pbnRlZ3JhbDxDVVJS
RU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoc2l6ZW9mKENVUlJFTlRfQVJH
VU1FTlRfVFlQRSkgPD0gNCk+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRy
dXN0ZWRJbW0zMihhcmcpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlT
X0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9B
UkdVTUVOVF9UWVBFLCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENV
UlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9B
UkdVTUVOVF9UWVBFKSA9PSA4KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBl
eHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1
cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewog
ICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywg
VHJ1c3RlZEltbTY0KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdB
WVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfcG9pbnRlcjxDVVJS
RU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZQogICAgICAgICAmJiAoKHN0ZDo6aXNfcG9pbnRlcjxB
cmc+Ojp2YWx1ZSAmJiBzdGQ6OmlzX2NvbnZlcnRpYmxlPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3Rk
OjpyZW1vdmVfcG9pbnRlcl90PEFyZz4+KiwgQ1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUp
CiAgICAgICAgICAgICB8fCBzdGQ6OmlzX3NhbWU8QXJnLCBzdGQ6Om51bGxwdHJfdD46OnZhbHVl
KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJT
b3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcp
LCBhcmdzLi4uKTsKICAgICB9CiAKICAgICAvLyBTcGVjaWFsIGNhc2UgREZHOjpSZWdpc3RlcmVk
U3RydWN0dXJlIGJlY2F1c2UgaXQncyByZWFsbHkgYW5ub3lpbmcgdG8gZGVhbCB3aXRoIG90aGVy
d2lzZS4uLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0
eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywg
dHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8CiAg
ICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIFN0cnVjdHVyZSo+Ojp2
YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX3NhbWU8QXJnLCBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1
cmU+Ojp2YWx1ZT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZElt
bVB0cihhcmcuZ2V0KCkpLCBhcmdzLi4uKTsKICAgICB9CkBAIC00NTQsMTMgKzY1NCwxOSBAQCBw
cml2YXRlOgogI3VuZGVmIFJFU1VMVF9UWVBFCiAKICAgICAvLyBCYXNlIGNhc2U7IHNldCB1cCB0
aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZT4K
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2U+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MpCiAgICAgewogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+Ojphcml0eSA9
PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncywgIk9uZSBsYXN0IHNhbml0eSBjaGVjayIpOworI2lm
IENQVShKU1ZBTFVFNjQpCiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3Bl
cmF0aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBudW1HUFJBcmdzICsgbnVtRlBSQXJncyArIGV4
dHJhUG9rZSwgIkNoZWNrIHRoZSBDQ2FsbCBhcml0eSIpOworI2VuZGlmCiAgICAgICAgIHNldHVw
U3R1YkFyZ3M8bnVtR1BSU291cmNlcywgR1BSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUdQUlNv
dXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVncy5ncHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5
VG9TaXplPG51bUdQUlNvdXJjZXMsIEdQUlJlZz4oYXJnU291cmNlUmVncy5ncHJTb3VyY2VzKSk7
Ci0KKyNpZiBDUFUoTUlQUykgfHwgKENQVShBUk0pICYmICFDUFUoQVJNX0hBUkRGUCkpCisgICAg
ICAgIHNldHVwU3R1YkNyb3NzQXJnczxudW1Dcm9zc1NvdXJjZXM+KGFyZ1NvdXJjZVJlZ3MuY3Jv
c3NEZXN0aW5hdGlvbnMsIGFyZ1NvdXJjZVJlZ3MuY3Jvc3NTb3VyY2VzKTsKKyNlbHNlCisgICAg
ICAgIHN0YXRpY19hc3NlcnQoIW51bUNyb3NzU291cmNlcywgInNob3VsZG4ndCBiZSB1c2VkIG9u
IHRoaXMgYXJjaGl0ZWN0dXJlLiIpOworI2VuZGlmCiAgICAgICAgIHNldHVwU3R1YkFyZ3M8bnVt
RlBSU291cmNlcywgRlBSUmVnPihjbGFtcEFycmF5VG9TaXplPG51bUZQUlNvdXJjZXMsIEZQUlJl
Zz4oYXJnU291cmNlUmVncy5mcHJEZXN0aW5hdGlvbnMpLCBjbGFtcEFycmF5VG9TaXplPG51bUZQ
UlNvdXJjZXMsIEZQUlJlZz4oYXJnU291cmNlUmVncy5mcHJTb3VyY2VzKSk7CiAgICAgfQogCkBA
IC00NzUsNyArNjgxLDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdv
cmtzIGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1i
aXQuLi4KICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSArIDEsICJCYXNpYyBzYW5pdHkgY2hl
Y2siKTsKICNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwg
MCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwPigpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgYXJncy4uLik7CisgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlLCAwLCAwLCAwLCAwLCAwLCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAs
IDAsIDAsIDAsIDA+KCksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBhcmdzLi4uKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZS4uLiBB
cmdzPgpAQCAtNDg1LDcgKzY5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gVGhpcyBvbmx5IHJl
YWxseSB3b3JrcyBmb3IgNjQtYml0IHNpbmNlIGpzdmFsdWUgcmVncyBtZXNzIHRoaW5ncyB1cCBm
b3IgMzItYml0Li4uCiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0
aW9uVHlwZT46OmNDYWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJCYXNpYyBzYW5pdHkg
Y2hlY2siKTsKICNlbmRpZgotICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZSwgMCwgMCwgMCwgMCwgMD4oQXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwPigpLCBhcmdzLi4u
KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGUsIDAsIDAsIDAsIDAs
IDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwgMD4oKSwgYXJncy4uLik7
CiAgICAgfQogCiAjdW5kZWYgRklSU1RfQVJHVU1FTlRfVFlQRQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0ZQUkluZm8uaAppbmRleCA2ZmY4MjQ5Yjg0NTNkZTVjNjJkZWIyZTc3NjBkNmRmMDNkOGEyNGVh
Li5lYTQ3MTk3OTYzZWY3NDBjNDUwYTUyOTA5MmQ3M2U1YjU5M2U0YjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ZQUkluZm8uaApAQCAtMTA3LDcgKzEwNywxMiBAQCBjbGFzcyBGUFJJbmZvIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworI2lmIENQVShBUk1fSEFSREZQ
KQorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0g
ODsKKyNlbHNlCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnMgPSAwOworI2VuZGlmCiAKICAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIC8v
IGQ3IGlzIHVzZSBieSB0aGUgTWFjcm9Bc3NlbWJsZXIgYXMgZnBUZW1wUmVnaXN0ZXIuCkBAIC0x
NDQsNiArMTQ5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZClyZWc7CiAg
ICAgfQogCisjaWYgQ1BVKEFSTV9IQVJERlApCisgICAgc3RhdGljIEZQUlJlZyB0b0FyZ3VtZW50
UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZQ
UlJlZz4oaW5kZXgpOworICAgIH0KKyNlbmRpZgorCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShGUFJSZWcgcmVnKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
RlBSUmVnKTsKQEAgLTI4MSw2ICsyOTQsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVn
aXN0ZXJGb3JJbmRleFtpbmRleF07CiAgICAgfQogCisgICAgc3RhdGljIEZQUlJlZyB0b0FyZ3Vt
ZW50UmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXgg
PCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyBpbmRleEZvclJlZ2lzdGVyWzJdID0geworICAgICAgICAgICAgYXJndW1lbnRGUFIwLCBhcmd1
bWVudEZQUjEKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIGluZGV4Rm9yUmVnaXN0ZXJbaW5k
ZXhdOworICAgIH0KKwogICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCiAg
ICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338093</attachid>
            <date>2018-04-17 02:10:36 -0700</date>
            <delta_ts>2018-04-17 07:41:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183786-20180417111034.patch</filename>
            <type>text/plain</type>
            <size>43468</size>
            <attacher name="Dominik Inführ">dominik.infuehr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjFkMzhhOWJmMGRjOTYxNjEzMzNlODQ4MGE1NWVlM2ZmOTg0NTAyLi42ZjNjOTc2OWMxYjBmOTBi
YWFjOTIxZjM0OTQ0YzU1OTRmOTQ2MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxOC0wNC0xNyAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2V0dXBBcmd1bWVudHNJbXBsIGZvciBBUk0gYW5k
IE1JUFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBzZXR1cEFyZ3VtZW50c0ltcGwgZm9yIEFSTSAoaGFyZGZwIGFuZCBzb2Z0ZnApIGFu
ZCBNSVBTIGNhbGxpbmcgY29udmVudGlvbi4gQWRkZWQKKyAgICAgICAgbnVtQ3Jvc3NTb3VyY2Vz
IGFuZCBleHRyYUdQUkFyZ3MgdG8gQXJnQ29sbGVjdGlvbiB0byBrZWVwIHRyYWNrIG9mIGV4dHJh
CisgICAgICAgIHJlZ2lzdGVycyB1c2VkIGZvciA2NC1iaXQgdmFsdWVzIG9uIDMyLWJpdCBhcmNo
aXRlY3R1cmVzLiBudW1Dcm9zc1NvdXJjZXMKKyAgICAgICAga2VlcHMgdHJhY2sgb2YgYXNzaWdu
bWVudHMgZnJvbSBGUFIgdG8gR1BSIHJlZ2lzdGVycyBhcyBoYXBwZW5zIGUuZy4gb24gTUlQUy4K
KworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om1vdmVEb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojptb3ZlRG91YmxlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQ3Jvc3NBcmdzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphcmdDb3VudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6Y2xhbXBBcnJheVRvU2l6ZSk6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVy
czo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlQWxp
Z25lZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6bWFyc2hhbGxBcmd1bWVudFJlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c0ltcGwpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OmFsaWduMik6CisgICAgICAgIChKU0M6OkNDYWxs
SGVscGVyczo6cG9rZUFyZ3VtZW50c0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBl
cnM6OnN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUpOgorICAg
ICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnN0ZDo6aXNfcG9pbnRlcjxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHMpOgorICAgICAgICAqIGppdC9GUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkZQUkluZm86OnRv
QXJndW1lbnRSZWdpc3Rlcik6CisKIDIwMTgtMDQtMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbGVyIHNob3VsZG4ndCBy
ZXR1cm4gZ2VuZXJhdG9yIGJvZGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAppbmRleCA5OWY1NjU5ODNhOGQxYTQ2MWVm
YzVkMjAxZWJhMzE5NzVjN2FlYjVmLi44NjZmODBlZGY5ODUwMGExMGI4MzNkMTdiYWM2ZTI2MGMx
NzMxY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuaApAQCAtOTY0LDYgKzk2NCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci52bW92KGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBtb3Zl
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnZtb3YoZGVzdCwgUmVnaXN0ZXJJRChkZXN0ICsgMSksIHNyYyk7CisgICAg
fQorCiAgICAgdm9pZCBtb3ZlWmVyb1RvRG91YmxlKEZQUmVnaXN0ZXJJRCByZWcpCiAgICAgewog
ICAgICAgICBzdGF0aWMgZG91YmxlIHplcm9Db25zdGFudCA9IDAuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggMjg1
ODAxNmQwNDY2ODZhMGY4YmQ2YzhlOWM5OGQ4OGRlMDRjMmIzYS4uYmFlZTM2ZjE5NjhmZGE4ZDBh
NGRjYmZhZTQyODIzMDJjY2VhNjkzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0zMDYxLDYgKzMwNjEsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZChkZXN0LCBzcmMpOwogICAgIH0K
IAorICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIHNyYyk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1mYzEoUmVnaXN0ZXJJRChkZXN0ICsgMSksIEZQUmVnaXN0ZXJJRChzcmMgKyAx
KSk7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlWmVyb1RvRG91YmxlKEZQUmVnaXN0ZXJJRCByZWcp
CiAgICAgewogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCByZWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNDk1
Y2JjZTEwODhlZDUwNTk1ZjE0ZjNjZDJhYzRjMzQyZDc2ZTkyNi4uN2NkNDcwMTBkZmE2MTdmMWE0
NjVmZDRkOTY2YzM2OWNkMzQ2ZTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCkBAIC0xOTEsMTEgKzE5MSwyNCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
fQogCisjaWYgQ1BVKE1JUFMpIHx8IChDUFUoQVJNKSAmJiAhQ1BVKEFSTV9IQVJERlApKQorICAg
IHRlbXBsYXRlPHVuc2lnbmVkIE51bUNyb3NzU291cmNlcywgdW5zaWduZWQgTnVtYmVyT2ZSZWdp
c3RlcnM+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwU3R1YkNyb3NzQXJncyhzdGQ6OmFy
cmF5PEdQUlJlZywgTnVtYmVyT2ZSZWdpc3RlcnM+IGRlc3RpbmF0aW9ucywgc3RkOjphcnJheTxG
UFJSZWcsIE51bWJlck9mUmVnaXN0ZXJzPiBzb3VyY2VzKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBOdW1Dcm9zc1NvdXJjZXM7IGkrKykgeworICAgICAgICAgICAgR1BSUmVn
IGRlc3QgPSBkZXN0aW5hdGlvbnNbaV07CisgICAgICAgICAgICBGUFJSZWcgc291cmNlID0gc291
cmNlc1tpXTsKKworICAgICAgICAgICAgbW92ZURvdWJsZShzb3VyY2UsIGRlc3QpOworICAgICAg
ICB9CisgICAgfQorI2VuZGlmCisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWdUeXBlPgogICAg
IHVzaW5nIEluZm9UeXBlRm9yUmVnID0gZGVjbHR5cGUodG9JbmZvRnJvbVJlZyhSZWdUeXBlKC0x
KSkpOwogCisgICAgLy8gZXh0cmFHUFJBcmdzIGlzIHVzZWQgdG8gdHJhY2sgNjQtYml0IGFyZ3Vt
ZW50IHR5cGVzIHBhc3NlZCBpbiByZWdpc3RlcgogICAgIC8vIGV4dHJhUG9rZSBpcyB1c2VkIHRv
IHRyYWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgb24gdGhlIHN0YWNrLgotICAgIHRl
bXBsYXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9r
ZT4KKyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQ
b2tlPgogICAgIHN0cnVjdCBBcmdDb2xsZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigp
CiAgICAgICAgIHsKQEAgLTIwMyw2NyArMjE2LDEwMSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Z3ByRGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICBmcHJTb3Vy
Y2VzLmZpbGwoSW52YWxpZEZQUlJlZyk7CiAgICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMuZmls
bChJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgICAgIGNyb3NzU291cmNlcy5maWxsKEludmFsaWRG
UFJSZWcpOworICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVn
KTsKICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIs
IHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGU+Ci0gICAgICAgIEFyZ0NvbGxlY3Rp
b24oQXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlPiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRl
PHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVk
IGUsIHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29s
bGVjdGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGlu
YXRpb25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwogICAgICAgICAgICAgZnByU291cmNlcyA9
IG90aGVyLmZwclNvdXJjZXM7CiAgICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMgPSBvdGhlci5m
cHJEZXN0aW5hdGlvbnM7CisgICAgICAgICAgICBjcm9zc1NvdXJjZXMgPSBvdGhlci5jcm9zc1Nv
dXJjZXM7CisgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGlu
YXRpb25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsg
MSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9r
ZT4gcHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAg
ICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQ
UlNvdXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IHJlc3Vs
dCgqdGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1H
UFJTb3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2Vz
LCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAg
cmVzdWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAg
IHJlc3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0
aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3Vy
Y2VzICsgMSwgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRl
c3RpbmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJl
ZyBkZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEs
IGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAx
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMp
OwogCiAgICAgICAgICAgICByZXN1bHQuZnByU291cmNlc1tudW1GUFJTb3VyY2VzXSA9IGFyZ3Vt
ZW50OwogICAgICAgICAgICAgcmVzdWx0LmZwckRlc3RpbmF0aW9uc1tudW1GUFJTb3VyY2VzXSA9
IGRlc3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0g
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgQXJn
Q29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVt
RlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IHB1c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsK
KyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuY3Jv
c3NTb3VyY2VzW251bUNyb3NzU291cmNlc10gPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHJlc3Vs
dC5jcm9zc0Rlc3RpbmF0aW9uc1tudW1Dcm9zc1NvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248
bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMs
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFS
ZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAg
ICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwg
ZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNl
c1tudW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRlc3Rp
bmF0aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4g
YWRkU3RhY2tBcmcoRlBSUmVnKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAx
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywg
bnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRy
YVBva2UgKyAxPiBhZGRQb2tlKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7Cisg
ICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cyArIDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tB
cmcoR1BSUmVnKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAg
ICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFy
Z3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJB
cmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4oKnRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFH
UFJBcmdzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRP
V1MpICYmIENQVShYODZfNjQpCiAgICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50KEdQUlJlZykgeyBy
ZXR1cm4gbnVtR1BSQXJncyArIG51bUZQUkFyZ3M7IH0KICAgICAgICAgdW5zaWduZWQgYXJnQ291
bnQoRlBSUmVnKSB7IHJldHVybiBudW1HUFJBcmdzICsgbnVtRlBSQXJnczsgfQogI2Vsc2UKLSAg
ICAgICAgdW5zaWduZWQgYXJnQ291bnQoR1BSUmVnKSB7IHJldHVybiBudW1HUFJBcmdzOyB9Cisg
ICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50KEdQUlJlZykgeyByZXR1cm4gbnVtR1BSQXJncyArIGV4
dHJhR1BSQXJnczsgfQogICAgICAgICB1bnNpZ25lZCBhcmdDb3VudChGUFJSZWcpIHsgcmV0dXJu
IG51bUZQUkFyZ3M7IH0KICNlbmRpZgogCisgICAgICAgIC8vIHN0b3JlIEdQUiAtPiBHUFIgYXNz
aWdubWVudHMKICAgICAgICAgc3RkOjphcnJheTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzPiBncHJTb3VyY2VzOwogICAgICAgICBzdGQ6OmFycmF5PEdQUlJlZywgR1BSSW5mbzo6
bnVtYmVyT2ZSZWdpc3RlcnM+IGdwckRlc3RpbmF0aW9uczsKKworICAgICAgICAvLyBzdG9yZSBG
UFIgLT4gRlBSIGFzc2lnbm1lbnRzCiAgICAgICAgIHN0ZDo6YXJyYXk8RlBSUmVnLCBGUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycz4gZnByU291cmNlczsKICAgICAgICAgc3RkOjphcnJheTxGUFJS
ZWcsIEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBmcHJEZXN0aW5hdGlvbnM7CisKKyAgICAg
ICAgLy8gc3RvcmUgRlBSIC0+IEdQUiBhc3NpZ25tZW50cworICAgICAgICBzdGQ6OmFycmF5PEZQ
UlJlZywgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM+IGNyb3NzU291cmNlczsKKyAgICAgICAg
c3RkOjphcnJheTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBjcm9zc0Rlc3Rp
bmF0aW9uczsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dW5zaWduZWQgVGFyZ2V0U2l6ZSwgdHlw
ZW5hbWUgUmVnVHlwZT4KQEAgLTI4MiwyMCArMzI5LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25l
ZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWdu
ZWQgZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9m
ZnNldCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1
bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAgICAgIC8vIENsYW5nIGNsYWltcyB0aGF0IGl0
IGNhbm5vdCBmaW5kIHRoZSBzeW1ib2wgZm9yIEZQUlJlZy9HUFJSZWc6Om51bWJlck9mQXJndW1l
bnRSZWdpc3RlcnMgd2hlbiB0aGV5IGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gc3RkOjptYXguLi4g
c2VlbXMgbGlrZSBhIGJ1ZwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdp
c3RlcnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3Vt
ZW50UmVnaXN0ZXJzOworCisgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFy
Z3M7CisgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAg
ICAgIEFTU0VSVChjdXJyZW50R1BSQXJndW1lbnQgPj0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVycyB8fCBjdXJyZW50RlBSQXJndW1lbnQgPj0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1
bWVudFJlZ2lzdGVycyk7CiAKICAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IFBPS0VfQVJH
VU1FTlRfT0ZGU0VUICsgZXh0cmFQb2tlOwogICAgICAgICBwb2tlT2Zmc2V0ICs9IHN0ZDo6bWF4
KGN1cnJlbnRHUFJBcmd1bWVudCwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSAtIG51bWJl
ck9mR1BBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgcG9rZU9mZnNldCArPSBzdGQ6Om1heChj
dXJyZW50RlBSQXJndW1lbnQsIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycykgLSBudW1iZXJP
ZkZQQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHJldHVybiBwb2tlT2Zmc2V0OworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50
LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgeworICAgICAg
ICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJn
dW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZSk7CiAgICAgICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAKKyAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1
bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQ
UkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UpOworICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYgMSk7CisgICAg
fQorCiAgICAgLy8gSW4gdGhlIGF1dG8tY2FsbGluZyBjb252ZW50aW9uIGNvZGUgYmVsb3cgdGhl
IG9yZGVyIG9mIG9wZXJhdGlvbnMgaXM6CiAgICAgLy8gICAgMSkgc3BpbGwgYXJndW1lbnRzIHRv
IHN0YWNrIHNsb3RzCiAgICAgLy8gICAgMikgc2h1ZmZsZSBpbmNvbW1pbmcgYXJndW1lbnQgdmFs
dWVzIGluIHJlZ2lzdGVycyB0byBhcmd1bWVudCByZWdpc3RlcnMKQEAgLTMxMCw4ICszNzIsOCBA
QCBwcml2YXRlOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAKICAgICAvLyBBdm9pZCBNU1ZDIG9wdGlt
aXphdGlvbiB0aW1lIGV4cGxvc2lvbiBhc3NvY2lhdGVkIHdpdGggX19mb3JjZWlubGluZSBpbiBy
ZWN1cnNpdmUgdGVtcGxhdGVzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQ
VF9NU1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25l
ZCBleHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxX
QVlTX0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJ
bmZvVHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1B
cmdSZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTMy
Niw4MCArMzg4LDIxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
ZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0
YWNrQXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcg
YXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwg
dW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVt
RlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxl
Y3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldl
IHNob3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAgICAgICBt
YXJzaGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJn
LCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4u
LiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51
bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVu
c2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3Rl
cjxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3Ms
IHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51
bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tl
PiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25l
ZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3Vy
Y2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4g
YXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4
dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQogICAg
IHsKICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQogCiAjZWxzZSAvLyBVU0UoSlNW
QUxVRTY0KQorI2lmIENQVShYODYpCiAKLSAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGEgaGFj
ayBmb3IgWDg2IHNpbmNlIGl0IGhhcyBubyBhcmd1bWVudCBncHJzLi4uCi0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
ZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMs
IHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAg
IHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91Ymxl
Pjo6dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUi
KTsKLSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywg
ZXh0cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0
YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lm
X3Q8c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFy
Z3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJn
LCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1H
UFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQo
YXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+
KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQg
ZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1
ZT46OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykK
ICAgICB7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcucGF5bG9hZEdQUigpLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LnRhZ0dQUigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KHBheWxvYWQuZ3ByKCksIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3Ms
IG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tl
Rm9yQXJndW1lbnQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBudW1HUFJBcmdzLCBu
dW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7
CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6
dmFsdWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywg
bnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdT
b3VyY2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9r
ZT4gYXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewot
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLmdwcigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdz
LCBleHRyYVBva2UpOwotICAgICAgICBwb2tlRm9yQXJndW1lbnQoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZy5wYXlsb2FkR1BSKCksIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAg
ICBwb2tlRm9yQXJndW1lbnQoYXJnLnRhZ0dQUigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygp
LmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgfQogCisjZWxpZiBDUFUoQVJNKSB8fCBDUFUoTUlQ
UykKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VN
RU5UX1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJS
ZWdzIHRvIGEgZG91YmxlIik7CisKKyNpZiBDUFUoTUlQUykKKyAgICAgICAgdW5zaWduZWQgbnVt
YmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lz
dGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEZQQXJnQ291bnQgPSBhcmdTb3VyY2VSZWdz
LmFyZ0NvdW50KGFyZyk7CisKKyAgICAgICAgaWYgKGN1cnJlbnRGUEFyZ0NvdW50IDwgbnVtYmVy
T2ZGUEFyZ3VtZW50UmVnaXN0ZXJzICYmICFudW1HUFJBcmdzKSB7CisgICAgICAgICAgICBhdXRv
IHVwZGF0ZWRBcmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKGFyZywgRlBS
SW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGN1cnJlbnRGUEFyZ0NvdW50KSk7CisgICAgICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3Mu
YWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorI2VsaWYgQ1BVKEFSTSkgJiYgQ1BVKEFSTV9IQVJERlApCisg
ICAgICAgIHVuc2lnbmVkIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51
bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRGUEFyZ0Nv
dW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcpOworCisgICAgICAgIGlmIChjdXJyZW50
RlBBcmdDb3VudCA8IG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycykgeworICAgICAgICAgICAg
YXV0byB1cGRhdGVkQXJnU291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcs
IEZQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50RlBBcmdDb3VudCkpOworICAgICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VS
ZWdzLCBhcmdzLi4uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisK
KyNpZiBDUFUoTUlQUykgfHwgKENQVShBUk0pICYmICFDUFUoQVJNX0hBUkRGUCkpCisgICAgICAg
IHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRHUEFyZ0NvdW50ID0g
YXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIHVuc2lnbmVk
IGFsaWduZWRHUEFyZ0NvdW50ID0gcm91bmRVcFRvTXVsdGlwbGVPZjwyPihjdXJyZW50R1BBcmdD
b3VudCk7CisKKyAgICAgICAgaWYgKGFsaWduZWRHUEFyZ0NvdW50ICsgMSA8IG51bWJlck9mR1BB
cmd1bWVudFJlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJnU291cmNlUmVn
cyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEdQUkluZm86OnRvQXJndW1lbnRSZWdp
c3RlcihhbGlnbmVkR1BBcmdDb3VudCkpOworCisgICAgICAgICAgICBpZiAoYWxpZ25lZEdQQXJn
Q291bnQgPiBjdXJyZW50R1BBcmdDb3VudCkKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmco
KS5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
Pih1cGRhdGVkQXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCks
IGFyZ3MuLi4pOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoY3VycmVudEdQQXJnQ291bnQgPCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMpIHsKKyAg
ICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlKTsKKyAgICAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkV4
dHJhQXJnKCkuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAoc3RhY2tBbGlnbmVk
KG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UpKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsK
KyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFk
ZFN0YWNrQXJnKGFyZykuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBu
dW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1
bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVk
IGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3Mp
CisgICAgeworICAgICAgICB1bnNpZ25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1i
ZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQg
PSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KGFyZyk7CisgICAgICAgIGlmIChjdXJyZW50QXJnQ291
bnQgPCBudW1BcmdSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlZEFyZ1NvdXJj
ZVJlZ3MgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdBcmcoYXJnLCBHUFJJbmZvOjp0b0FyZ3VtZW50
UmVnaXN0ZXIoY3VycmVudEFyZ0NvdW50KSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywg
bnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZSk7CisgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdT
b3VyY2VSZWdzLmFkZFN0YWNrQXJnKGFyZyksIGFyZ3MuLi4pOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIs
IHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51
bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNl
cywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdm9pZCBwb2tlQXJndW1lbnRzQWxpZ25lZChBcmdDb2xsZWN0aW9uPG51bUdQ
UkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZzEgYXJn
MSwgQXJnMiBhcmcyLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1bnNpZ25lZCBudW1B
cmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworICAgICAg
ICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0NvdW50KEdQUklu
Zm86OnJlZ1QwKTsKKworICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50ICsgMSA9PSBudW1BcmdS
ZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyArIDEsIGV4dHJhUG9r
ZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBS
QXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBva2UgKyAxKTsK
KyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLmFkZEdQUkV4dHJhQXJnKCkuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChzdGFja0FsaWduZWQobnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSkpIHsKKyAgICAgICAgICAgIHBv
a2VGb3JBcmd1bWVudChhcmcxLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVu
dChhcmcyLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgZXh0cmFQb2tlICsgMSk7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCksIGFyZ3MuLi4p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzEsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRy
YVBva2UgKyAxKTsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcyLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsg
Mik7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncy5hZGRHUFJBcmcoKS5hZGRQb2tlKCkuYWRkUG9rZSgpLCBhcmdzLi4uKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+
CisgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBF
LCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIENlbGxWYWx1ZSBwYXlsb2FkLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICB1bnNp
Z25lZCBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJz
OworICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXJnQ291bnQgPSBhcmdTb3VyY2VSZWdzLmFyZ0Nv
dW50KHBheWxvYWQuZ3ByKCkpOworICAgICAgICB1bnNpZ25lZCBhbGlnbmVkQXJnQ291bnQgPSBy
b3VuZFVwVG9NdWx0aXBsZU9mPDI+KGN1cnJlbnRBcmdDb3VudCk7CisKKyAgICAgICAgaWYgKGFs
aWduZWRBcmdDb3VudCArIDEgPCBudW1BcmdSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIGF1dG8g
dXBkYXRlZEFyZ1NvdXJjZVJlZ3MgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdBcmcocGF5bG9hZC5n
cHIoKSwgR1BSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKGFsaWduZWRBcmdDb3VudCkpOworCisg
ICAgICAgICAgICBpZiAoYWxpZ25lZEFyZ0NvdW50ID4gY3VycmVudEFyZ0NvdW50KQorICAgICAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291
cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRp
b25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsK
KworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEdQUklu
Zm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQgKyAxKSk7CisKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25UeXBlPihh
cmdTb3VyY2VSZWdzLCBwYXlsb2FkLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZyksIGFyZ3MuLi4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
Li4uIEFyZ3M+CisgICAgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdV
TUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46OnZhbHVlPgorICAgIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEpTVmFsdWVSZWdzIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVn
cy5hcmdDb3VudChhcmcudGFnR1BSKCkpOworICAgICAgICB1bnNpZ25lZCBhbGlnbmVkQXJnQ291
bnQgPSByb3VuZFVwVG9NdWx0aXBsZU9mPDI+KGN1cnJlbnRBcmdDb3VudCk7CisKKyAgICAgICAg
aWYgKGFsaWduZWRBcmdDb3VudCArIDEgPCBudW1BcmdSZWdpc3RlcnMpIHsKKyAgICAgICAgICAg
IGF1dG8gdXBkYXRlZEFyZ1NvdXJjZVJlZ3MxID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKGFy
Zy5wYXlsb2FkR1BSKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291
bnQpKTsKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlZEFyZ1NvdXJjZVJlZ3MyID0gdXBkYXRlZEFy
Z1NvdXJjZVJlZ3MxLnB1c2hFeHRyYVJlZ0FyZyhhcmcudGFnR1BSKCksIEdQUkluZm86OnRvQXJn
dW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQgKyAxKSk7CisKKyAgICAgICAgICAgIGlmIChh
bGlnbmVkQXJnQ291bnQgPiBjdXJyZW50QXJnQ291bnQpCisgICAgICAgICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VSZWdzMi5hZGRHUFJF
eHRyYUFyZygpLCBhcmdzLi4uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBz
ZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MyLCBh
cmdzLi4uKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25l
ZDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcucGF5bG9hZEdQUigpLCBhcmcudGFn
R1BSKCksIGFyZ3MuLi4pOworICAgIH0KKworI2VuZGlmIC8vIENQVShBUk0pIHx8IENQVShNSVBT
KQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVy
YXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1
bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElO
RSBzdGQ6OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwg
QXJnPjo6dmFsdWUKICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJ
bW0+Ojp2YWx1ZT4gLy8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBp
dCdzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJn
cy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgb25seSBzdXBwb3J0
cyBub24tZmxvYXRpbmcgcG9pbnQgaW1tZWRpYXRlIGFyZ3VtZW50cyBzaW5jZSB3ZSBuZXZlciBj
YWxsIG9wZXJhdGlvbnMgd2l0aCBub24tcmVnaXN0ZXIgdmFsdWVzLgogICAgICAgICAvLyBJZiB3
ZSBldmVyIG5lZWRlZCB0byBzdXBwb3J0IGltbWVkaWF0ZSBmbG9hdGluZyBwb2ludCBhcmd1bWVu
dHMgd2Ugd291bGQgbmVlZCB0byBkdXBsaWNhdGUgdGhpcyBsb2dpYyBmb3IgYm90aCB0eXBlcywg
d2hpY2ggc291bmRzCkBAIC00MDksNyArNjA5LDcgQEAgcHJpdmF0ZToKICNpZiBPUyhXSU5ET1dT
KSAmJiBDUFUoWDg2XzY0KQogICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51bUdQUkFy
Z3MgKyBudW1GUFJBcmdzICsgKHN0ZDo6aXNfc2FtZTxSRVNVTFRfVFlQRSwgU2xvd1BhdGhSZXR1
cm5UeXBlPjo6dmFsdWUgPyAxIDogMCk7CiAjZWxzZQotICAgICAgICBhdXRvIGN1cnJlbnRBcmdD
b3VudCA9IG51bUdQUkFyZ3M7CisgICAgICAgIGF1dG8gY3VycmVudEFyZ0NvdW50ID0gbnVtR1BS
QXJncyArIGV4dHJhR1BSQXJnczsKICNlbmRpZgogICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50
IDwgbnVtQXJnUmVnaXN0ZXJzKSB7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3Bl
cmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CkBAIC00MTcs
NDYgKzYxNyw0NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0
cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBS
QXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFy
ZygpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2Us
IHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
LCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6
OmVuYWJsZV9pZl90PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBF
LCBBcmc+Ojp2YWx1ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1F
TlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBF
KSA8PSA0KT4KLSAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTMy
KGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2ln
bmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0
ZDo6ZW5hYmxlX2lmX3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZ
UEUsIEFyZz46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdV
TUVOVF9UWVBFPjo6dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZ
UEUpID09IDgpPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+
IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNl
dHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1t
NjQoYXJnKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0
aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5z
aWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQ
b2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUg
c3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1F
TlRfVFlQRT46OnZhbHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2ludGVyPEFyZz46OnZhbHVl
ICYmIHN0ZDo6aXNfY29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9w
b2ludGVyX3Q8QXJnPj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSkKICAgICAgICAg
ICAgIHx8IHN0ZDo6aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUpPgotICAgIHNl
dHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJn
IGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFy
ZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4p
OwogICAgIH0KIAogICAgIC8vIFNwZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
YmVjYXVzZSBpdCdzIHJlYWxseSBhbm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywg
dW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVt
RlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3Rk
Ojppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgU3RydWN0dXJlKj46OnZhbHVlCiAgICAg
ICAgICYmIHN0ZDo6aXNfc2FtZTxBcmcsIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZT46OnZhbHVl
PgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQ
UlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNl
UmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdD
b2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNv
dXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJj
ZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5n
ZXQoKSksIGFyZ3MuLi4pOwogICAgIH0KQEAgLTQ2NSwxMyArNjY1LDE5IEBAIHByaXZhdGU6CiAj
dW5kZWYgUkVTVUxUX1RZUEUKIAogICAgIC8vIEJhc2UgY2FzZTsgc2V0IHVwIHRoZSBhcmd1bWVu
dCByZWdpc3RlcnMuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlPgotICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWdu
ZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJn
cywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BS
U291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFy
Z3MgKyBudW1GUFJBcmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CisjaWYgQ1BVKEpTVkFM
VUU2NCkKICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6Y0NhbGxBcml0eSgpID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzICsgZXh0cmFQb2tlLCAi
Q2hlY2sgdGhlIENDYWxsIGFyaXR5Iik7CisjZW5kaWYKICAgICAgICAgc2V0dXBTdHViQXJnczxu
dW1HUFJTb3VyY2VzLCBHUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtR1BSU291cmNlcywgR1BS
UmVnPihhcmdTb3VyY2VSZWdzLmdwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJyYXlUb1NpemU8bnVt
R1BSU291cmNlcywgR1BSUmVnPihhcmdTb3VyY2VSZWdzLmdwclNvdXJjZXMpKTsKLQorI2lmIENQ
VShNSVBTKSB8fCAoQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKSkKKyAgICAgICAgc2V0dXBT
dHViQ3Jvc3NBcmdzPG51bUNyb3NzU291cmNlcz4oYXJnU291cmNlUmVncy5jcm9zc0Rlc3RpbmF0
aW9ucywgYXJnU291cmNlUmVncy5jcm9zc1NvdXJjZXMpOworI2Vsc2UKKyAgICAgICAgc3RhdGlj
X2Fzc2VydCghbnVtQ3Jvc3NTb3VyY2VzLCAic2hvdWxkbid0IGJlIHVzZWQgb24gdGhpcyBhcmNo
aXRlY3R1cmUuIik7CisjZW5kaWYKICAgICAgICAgc2V0dXBTdHViQXJnczxudW1GUFJTb3VyY2Vz
LCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBSUmVnPihhcmdTb3Vy
Y2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywg
RlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNvdXJjZXMpKTsKICAgICB9CiAKQEAgLTQ4Niw3ICs2
OTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0
LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFy
aXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOwogI2Vu
ZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAw
LCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDA+KCksIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwg
MD4oKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC00
OTYsNyArNzAyLDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtz
IGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQu
Li4KICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOwog
I2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAw
LCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4o
QXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKICAgICB9CiAK
ICN1bmRlZiBGSVJTVF9BUkdVTUVOVF9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ZQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRlBSSW5mby5o
CmluZGV4IDZmZjgyNDliODQ1M2RlNWM2MmRlYjJlNzc2MGQ2ZGYwM2Q4YTI0ZWEuLmVhNDcxOTc5
NjNlZjc0MGM0NTBhNTI5MDkyZDczZTViNTkzZTRiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRlBSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
RlBSSW5mby5oCkBAIC0xMDcsNyArMTA3LDEyIEBAIGNsYXNzIEZQUkluZm8gewogcHVibGljOgog
ICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisjaWYgQ1BVKEFSTV9IQVJERlApCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSA4OworI2Vsc2UK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IDA7
CisjZW5kaWYKIAogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgLy8gZDcgaXMgdXNl
IGJ5IHRoZSBNYWNyb0Fzc2VtYmxlciBhcyBmcFRlbXBSZWdpc3Rlci4KQEAgLTE0NCw2ICsxNDks
MTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKICAgICB9CiAKKyNp
ZiBDUFUoQVJNX0hBUkRGUCkKKyAgICBzdGF0aWMgRlBSUmVnIHRvQXJndW1lbnRSZWdpc3Rlcih1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RlBSUmVnPihpbmRl
eCk7CisgICAgfQorI2VuZGlmCisKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQ
UlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwpA
QCAtMjgxLDYgKzI5NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWdpc3RlckZvcklu
ZGV4W2luZGV4XTsKICAgICB9CiAKKyAgICBzdGF0aWMgRlBSUmVnIHRvQXJndW1lbnRSZWdpc3Rl
cih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGluZGV4Rm9y
UmVnaXN0ZXJbMl0gPSB7CisgICAgICAgICAgICBhcmd1bWVudEZQUjAsIGFyZ3VtZW50RlBSMQor
ICAgICAgICB9OworICAgICAgICByZXR1cm4gaW5kZXhGb3JSZWdpc3RlcltpbmRleF07CisgICAg
fQorCiAgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Cg==
</data>
<flag name="review"
          id="356390"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="356406"
          type_id="3"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338115</attachid>
            <date>2018-04-17 08:37:06 -0700</date>
            <delta_ts>2018-04-17 10:05:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183786-20180417173705.patch</filename>
            <type>text/plain</type>
            <size>43981</size>
            <attacher name="Dominik Inführ">dominik.infuehr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjFkMzhhOWJmMGRjOTYxNjEzMzNlODQ4MGE1NWVlM2ZmOTg0NTAyLi5jZTQ0NjRmYWVhNWRhZDJh
ZTg2MTlmY2VhODdjNGE0MzU1NDYzOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOC0wNC0xNyAgRG9taW5payBJbmZ1ZWhyICA8ZGluZnVlaHJAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2V0dXBBcmd1bWVudHNJbXBsIGZvciBBUk0gYW5k
IE1JUFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
Mzc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudCBzZXR1cEFyZ3VtZW50c0ltcGwgZm9yIEFSTSAoaGFyZGZwIGFuZCBzb2Z0ZnApIGFu
ZCBNSVBTIGNhbGxpbmcgY29udmVudGlvbi4gQWRkZWQKKyAgICAgICAgbnVtQ3Jvc3NTb3VyY2Vz
IGFuZCBleHRyYUdQUkFyZ3MgdG8gQXJnQ29sbGVjdGlvbiB0byBrZWVwIHRyYWNrIG9mIGV4dHJh
CisgICAgICAgIHJlZ2lzdGVycyB1c2VkIGZvciA2NC1iaXQgdmFsdWVzIG9uIDMyLWJpdCBhcmNo
aXRlY3R1cmVzLiBudW1Dcm9zc1NvdXJjZXMKKyAgICAgICAga2VlcHMgdHJhY2sgb2YgYXNzaWdu
bWVudHMgZnJvbSBGUFIgdG8gR1BSIHJlZ2lzdGVycyBhcyBoYXBwZW5zIGUuZy4gb24gTUlQUy4K
KworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om1vdmVEb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojptb3ZlRG91YmxlKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQ3Jvc3NBcmdzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpBcmdDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoUmVnQXJnKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjpwdXNoRXh0cmFSZWdBcmcpOgorICAgICAgICAo
SlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZEdQUkFyZyk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6QXJnQ29sbGVjdGlvbjo6YWRkR1BSRXh0cmFBcmcpOgorICAgICAg
ICAoSlNDOjpDQ2FsbEhlbHBlcnM6OkFyZ0NvbGxlY3Rpb246OmFkZFN0YWNrQXJnKToKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphZGRQb2tlKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpBcmdDb2xsZWN0aW9uOjphcmdDb3VudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6Y2FsY3VsYXRlUG9rZU9mZnNldCk6CisgICAgICAgIChKU0M6OkND
YWxsSGVscGVyczo6cG9rZUZvckFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJz
OjpzdGFja0FsaWduZWQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6Om1hcnNoYWxsQXJn
dW1lbnRSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVu
dHNJbXBsKToKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlQXJndW1lbnRzQWxpZ25l
ZCk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3RkOjppc19pbnRlZ3JhbDxDVVJSRU5U
X0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c3Rk
Ojppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlKToKKyAgICAgICAgKEpT
Qzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50cyk6CisgICAgICAgICogaml0L0ZQUkluZm8u
aDoKKyAgICAgICAgKEpTQzo6RlBSSW5mbzo6dG9Bcmd1bWVudFJlZ2lzdGVyKToKKwogMjAxOC0w
NC0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEZ1bmN0aW9u
LnByb3RvdHlwZS5jYWxsZXIgc2hvdWxkbid0IHJldHVybiBnZW5lcmF0b3IgYm9kaWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12
Ny5oCmluZGV4IDk5ZjU2NTk4M2E4ZDFhNDYxZWZjNWQyMDFlYmEzMTk3NWM3YWViNWYuLjg2NmY4
MGVkZjk4NTAwYTEwYjgzM2QxN2JhYzZlMjYwYzE3MzFjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC05NjQs
NiArOTY0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdCwg
c3JjKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBSZWdp
c3RlcklEKGRlc3QgKyAxKSwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIG1vdmVaZXJvVG9Eb3Vi
bGUoRlBSZWdpc3RlcklEIHJlZykKICAgICB7CiAgICAgICAgIHN0YXRpYyBkb3VibGUgemVyb0Nv
bnN0YW50ID0gMC47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCAyODU4MDE2ZDA0NjY4NmEwZjhiZDZjOGU5Yzk4ZDg4
ZGUwNGMyYjNhLi5iYWVlMzZmMTk2OGZkYThkMGE0ZGNiZmFlNDI4MjMwMmNjZWE2OTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQ
Uy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKQEAgLTMwNjEsNiArMzA2MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZkKGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm1mYzEoZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShSZWdpc3RlcklEKGRl
c3QgKyAxKSwgRlBSZWdpc3RlcklEKHNyYyArIDEpKTsKKyAgICB9CisKICAgICB2b2lkIG1vdmVa
ZXJvVG9Eb3VibGUoRlBSZWdpc3RlcklEIHJlZykKICAgICB7CiAgICAgICAgIGNvbnZlcnRJbnQz
MlRvRG91YmxlKE1JUFNSZWdpc3RlcnM6Onplcm8sIHJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA0OTVjYmNlMTA4OGVkNTA1OTVmMTRmM2NkMmFjNGMz
NDJkNzZlOTI2Li5jZTdjYjJmNzNmMGJkNGMyODhmOGIyNzMzMWZmOTFmZDQxMTdkZWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTE5MSwxMSArMTkxLDI0
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBDUFUoTUlQUykgfHwgKENQVShB
Uk0pICYmICFDUFUoQVJNX0hBUkRGUCkpCisgICAgdGVtcGxhdGU8dW5zaWduZWQgTnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBOdW1iZXJPZlJlZ2lzdGVycz4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBTdHViQ3Jvc3NBcmdzKHN0ZDo6YXJyYXk8R1BSUmVnLCBOdW1iZXJPZlJlZ2lzdGVy
cz4gZGVzdGluYXRpb25zLCBzdGQ6OmFycmF5PEZQUlJlZywgTnVtYmVyT2ZSZWdpc3RlcnM+IHNv
dXJjZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bUNyb3NzU291cmNl
czsgaSsrKSB7CisgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IGRlc3RpbmF0aW9uc1tpXTsKKyAg
ICAgICAgICAgIEZQUlJlZyBzb3VyY2UgPSBzb3VyY2VzW2ldOworCisgICAgICAgICAgICBtb3Zl
RG91YmxlKHNvdXJjZSwgZGVzdCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlZ1R5cGU+CiAgICAgdXNpbmcgSW5mb1R5cGVGb3JSZWcgPSBkZWNs
dHlwZSh0b0luZm9Gcm9tUmVnKFJlZ1R5cGUoLTEpKSk7CiAKKyAgICAvLyBleHRyYUdQUkFyZ3Mg
aXMgdXNlZCB0byB0cmFjayA2NC1iaXQgYXJndW1lbnQgdHlwZXMgcGFzc2VkIGluIHJlZ2lzdGVy
IG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLgogICAgIC8vIGV4dHJhUG9rZSBpcyB1c2VkIHRvIHRy
YWNrIDY0LWJpdCBhcmd1bWVudCB0eXBlcyBwYXNzZWQgb24gdGhlIHN0YWNrLgotICAgIHRlbXBs
YXRlPHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZT4K
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tl
PgogICAgIHN0cnVjdCBBcmdDb2xsZWN0aW9uIHsKICAgICAgICAgQXJnQ29sbGVjdGlvbigpCiAg
ICAgICAgIHsKQEAgLTIwMyw2NyArMjE2LDEwMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgZ3By
RGVzdGluYXRpb25zLmZpbGwoSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICBmcHJTb3VyY2Vz
LmZpbGwoSW52YWxpZEZQUlJlZyk7CiAgICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMuZmlsbChJ
bnZhbGlkRlBSUmVnKTsKKyAgICAgICAgICAgIGNyb3NzU291cmNlcy5maWxsKEludmFsaWRGUFJS
ZWcpOworICAgICAgICAgICAgY3Jvc3NEZXN0aW5hdGlvbnMuZmlsbChJbnZhbGlkR1BSUmVnKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVu
c2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGU+Ci0gICAgICAgIEFyZ0NvbGxlY3Rpb24o
QXJnQ29sbGVjdGlvbjxhLCBiLCBjLCBkLCBlPiYgb3RoZXIpCisgICAgICAgIHRlbXBsYXRlPHVu
c2lnbmVkIGEsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGMsIHVuc2lnbmVkIGQsIHVuc2lnbmVkIGUs
IHVuc2lnbmVkIGYsIHVuc2lnbmVkIGc+CisgICAgICAgIEFyZ0NvbGxlY3Rpb24oQXJnQ29sbGVj
dGlvbjxhLCBiLCBjLCBkLCBlLCBmLCBnPiYgb3RoZXIpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGdwclNvdXJjZXMgPSBvdGhlci5ncHJTb3VyY2VzOwogICAgICAgICAgICAgZ3ByRGVzdGluYXRp
b25zID0gb3RoZXIuZ3ByRGVzdGluYXRpb25zOwogICAgICAgICAgICAgZnByU291cmNlcyA9IG90
aGVyLmZwclNvdXJjZXM7CiAgICAgICAgICAgICBmcHJEZXN0aW5hdGlvbnMgPSBvdGhlci5mcHJE
ZXN0aW5hdGlvbnM7CisgICAgICAgICAgICBjcm9zc1NvdXJjZXMgPSBvdGhlci5jcm9zc1NvdXJj
ZXM7CisgICAgICAgICAgICBjcm9zc0Rlc3RpbmF0aW9ucyA9IG90aGVyLmNyb3NzRGVzdGluYXRp
b25zOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwg
bnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4g
cHVzaFJlZ0FyZyhHUFJSZWcgYXJndW1lbnQsIEdQUlJlZyBkZXN0aW5hdGlvbikKKyAgICAgICAg
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBv
a2U+IHB1c2hSZWdBcmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNv
dXJjZXMgKyAxLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IHJlc3VsdCgq
dGhpcyk7CisgICAgICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzICsgMSwgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBl
eHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKIAogICAgICAgICAgICAgcmVz
dWx0LmdwclNvdXJjZXNbbnVtR1BSU291cmNlc10gPSBhcmd1bWVudDsKICAgICAgICAgICAgIHJl
c3VsdC5ncHJEZXN0aW5hdGlvbnNbbnVtR1BSU291cmNlc10gPSBkZXN0aW5hdGlvbjsKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBBcmdDb2xsZWN0aW9u
PG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2Vz
ICsgMSwgZXh0cmFQb2tlPiBwdXNoUmVnQXJnKEZQUlJlZyBhcmd1bWVudCwgRlBSUmVnIGRlc3Rp
bmF0aW9uKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMs
IG51bUZQUkFyZ3MgKyAxLCBudW1GUFJTb3VyY2VzICsgMSwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIGV4dHJhUG9rZT4gcHVzaFJlZ0FyZyhGUFJSZWcgYXJndW1lbnQsIEZQUlJlZyBk
ZXN0aW5hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBSU291cmNlcyArIDEsIGV4
dHJhUG9rZT4gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BS
QXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMgKyAxLCBu
dW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOwog
CiAgICAgICAgICAgICByZXN1bHQuZnByU291cmNlc1tudW1GUFJTb3VyY2VzXSA9IGFyZ3VtZW50
OwogICAgICAgICAgICAgcmVzdWx0LmZwckRlc3RpbmF0aW9uc1tudW1GUFJTb3VyY2VzXSA9IGRl
c3RpbmF0aW9uOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncyArIDEsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYWRkR1BSQXJnKCkKKyAgICAgICAgQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzICsgMSwgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzICsgMSwgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IHB1
c2hSZWdBcmcoRlBSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAg
ICAgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncyArIDEsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcyArIDEsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuY3Jvc3NT
b3VyY2VzW251bUNyb3NzU291cmNlc10gPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHJlc3VsdC5j
cm9zc0Rlc3RpbmF0aW9uc1tudW1Dcm9zc1NvdXJjZXNdID0gZGVzdGluYXRpb247CisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxu
dW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
ZXh0cmFQb2tlPiBhZGRTdGFja0FyZyhHUFJSZWcpCisgICAgICAgIEFyZ0NvbGxlY3Rpb248bnVt
R1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlPiBwdXNoRXh0cmFSZWdB
cmcoR1BSUmVnIGFyZ3VtZW50LCBHUFJSZWcgZGVzdGluYXRpb24pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+KCp0aGlzKTsKKyAgICAgICAg
ICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcyArIDEsIG51bUZQUkFy
Z3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0
cmFQb2tlPiByZXN1bHQoKnRoaXMpOworCisgICAgICAgICAgICByZXN1bHQuZ3ByU291cmNlc1tu
dW1HUFJTb3VyY2VzXSA9IGFyZ3VtZW50OworICAgICAgICAgICAgcmVzdWx0LmdwckRlc3RpbmF0
aW9uc1tudW1HUFJTb3VyY2VzXSA9IGRlc3RpbmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncyArIDEsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYWRk
U3RhY2tBcmcoRlBSUmVnKQorICAgICAgICBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MgKyAxLCBu
dW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMs
IGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhZGRHUFJBcmcoKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPigqdGhpcyk7CisgICAgICAgICAg
ICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4oKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBv
a2UgKyAxPiBhZGRQb2tlKCkKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1H
UFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncyArIDEsIGV4dHJhUG9rZT4gYWRkR1BSRXh0cmFBcmcoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CisgICAg
ICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBu
dW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncyAr
IDEsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlv
bjxudW1HUFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNl
cywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYWRkU3RhY2tBcmco
R1BSUmVnKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzICsgMSwgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVt
Q3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4oKnRoaXMpOworICAgICAgICB9
CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1G
UFJBcmdzICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3Ms
IGV4dHJhUG9rZT4gYWRkU3RhY2tBcmcoRlBSUmVnKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
ICsgMSwgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4oKnRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgQXJnQ29sbGVjdGlvbjxudW1HUFJB
cmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1Nv
dXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMT4gYWRkUG9rZSgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJj
ZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJB
cmdzLCBleHRyYVBva2UgKyAxPigqdGhpcyk7CiAgICAgICAgIH0KIAogI2lmIE9TKFdJTkRPV1Mp
ICYmIENQVShYODZfNjQpCiAgICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50KEdQUlJlZykgeyByZXR1
cm4gbnVtR1BSQXJncyArIG51bUZQUkFyZ3M7IH0KICAgICAgICAgdW5zaWduZWQgYXJnQ291bnQo
RlBSUmVnKSB7IHJldHVybiBudW1HUFJBcmdzICsgbnVtRlBSQXJnczsgfQogI2Vsc2UKLSAgICAg
ICAgdW5zaWduZWQgYXJnQ291bnQoR1BSUmVnKSB7IHJldHVybiBudW1HUFJBcmdzOyB9CisgICAg
ICAgIHVuc2lnbmVkIGFyZ0NvdW50KEdQUlJlZykgeyByZXR1cm4gbnVtR1BSQXJncyArIGV4dHJh
R1BSQXJnczsgfQogICAgICAgICB1bnNpZ25lZCBhcmdDb3VudChGUFJSZWcpIHsgcmV0dXJuIG51
bUZQUkFyZ3M7IH0KICNlbmRpZgogCisgICAgICAgIC8vIHN0b3JlIEdQUiAtPiBHUFIgYXNzaWdu
bWVudHMKICAgICAgICAgc3RkOjphcnJheTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzPiBncHJTb3VyY2VzOwogICAgICAgICBzdGQ6OmFycmF5PEdQUlJlZywgR1BSSW5mbzo6bnVt
YmVyT2ZSZWdpc3RlcnM+IGdwckRlc3RpbmF0aW9uczsKKworICAgICAgICAvLyBzdG9yZSBGUFIg
LT4gRlBSIGFzc2lnbm1lbnRzCiAgICAgICAgIHN0ZDo6YXJyYXk8RlBSUmVnLCBGUFJJbmZvOjpu
dW1iZXJPZlJlZ2lzdGVycz4gZnByU291cmNlczsKICAgICAgICAgc3RkOjphcnJheTxGUFJSZWcs
IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBmcHJEZXN0aW5hdGlvbnM7CisKKyAgICAgICAg
Ly8gc3RvcmUgRlBSIC0+IEdQUiBhc3NpZ25tZW50cworICAgICAgICBzdGQ6OmFycmF5PEZQUlJl
ZywgR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM+IGNyb3NzU291cmNlczsKKyAgICAgICAgc3Rk
OjphcnJheTxHUFJSZWcsIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzPiBjcm9zc0Rlc3RpbmF0
aW9uczsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dW5zaWduZWQgVGFyZ2V0U2l6ZSwgdHlwZW5h
bWUgUmVnVHlwZT4KQEAgLTI4MiwyMCArMzI5LDM1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnVHlwZT4KLSAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBj
dXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQg
ZXh0cmFQb2tlKQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgY2FsY3VsYXRlUG9rZU9mZnNl
dCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVu
dCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2ln
bmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAgICAgIC8vIENsYW5nIGNsYWltcyB0aGF0IGl0IGNh
bm5vdCBmaW5kIHRoZSBzeW1ib2wgZm9yIEZQUlJlZy9HUFJSZWc6Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMgd2hlbiB0aGV5IGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gc3RkOjptYXguLi4gc2Vl
bXMgbGlrZSBhIGJ1ZwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkZQQXJndW1lbnRSZWdpc3Rl
cnMgPSBGUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwogICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50
UmVnaXN0ZXJzOworCisgICAgICAgIGN1cnJlbnRHUFJBcmd1bWVudCArPSBleHRyYUdQUkFyZ3M7
CisgICAgICAgIGN1cnJlbnRGUFJBcmd1bWVudCAtPSBudW1Dcm9zc1NvdXJjZXM7CiAgICAgICAg
IEFTU0VSVChjdXJyZW50R1BSQXJndW1lbnQgPj0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJl
Z2lzdGVycyB8fCBjdXJyZW50RlBSQXJndW1lbnQgPj0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVycyk7CiAKICAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IFBPS0VfQVJHVU1F
TlRfT0ZGU0VUICsgZXh0cmFQb2tlOwogICAgICAgICBwb2tlT2Zmc2V0ICs9IHN0ZDo6bWF4KGN1
cnJlbnRHUFJBcmd1bWVudCwgbnVtYmVyT2ZHUEFyZ3VtZW50UmVnaXN0ZXJzKSAtIG51bWJlck9m
R1BBcmd1bWVudFJlZ2lzdGVyczsKICAgICAgICAgcG9rZU9mZnNldCArPSBzdGQ6Om1heChjdXJy
ZW50RlBSQXJndW1lbnQsIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycykgLSBudW1iZXJPZkZQ
QXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHJldHVybiBwb2tlT2Zmc2V0OworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ1R5cGU+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBv
a2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1
bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UpCisgICAgeworICAgICAgICB1
bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJyZW50R1BSQXJndW1l
bnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZSk7CiAgICAgICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVu
dCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlKQorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBva2VPZmZzZXQoY3VycmVudEdQUkFy
Z3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdz
LCBleHRyYVBva2UpOworICAgICAgICByZXR1cm4gIShwb2tlT2Zmc2V0ICYgMSk7CisgICAgfQor
CiAgICAgLy8gSW4gdGhlIGF1dG8tY2FsbGluZyBjb252ZW50aW9uIGNvZGUgYmVsb3cgdGhlIG9y
ZGVyIG9mIG9wZXJhdGlvbnMgaXM6CiAgICAgLy8gICAgMSkgc3BpbGwgYXJndW1lbnRzIHRvIHN0
YWNrIHNsb3RzCiAgICAgLy8gICAgMikgc2h1ZmZsZSBpbmNvbW1pbmcgYXJndW1lbnQgdmFsdWVz
IGluIHJlZ2lzdGVycyB0byBhcmd1bWVudCByZWdpc3RlcnMKQEAgLTMxMCw4ICszNzIsOCBAQCBw
cml2YXRlOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAKICAgICAvLyBBdm9pZCBNU1ZDIG9wdGltaXph
dGlvbiB0aW1lIGV4cGxvc2lvbiBhc3NvY2lhdGVkIHdpdGggX19mb3JjZWlubGluZSBpbiByZWN1
cnNpdmUgdGVtcGxhdGVzLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVu
c2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQ
UkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgUmVnVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FX0VYQ0VQVF9N
U1ZDIHZvaWQgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBSZWdUeXBlIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBl
eHRyYVBva2UsIHR5cGVuYW1lIFJlZ1R5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlT
X0lOTElORV9FWENFUFRfTVNWQyB2b2lkIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcihBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIFJlZ1R5cGUgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICB1c2luZyBJbmZv
VHlwZSA9IEluZm9UeXBlRm9yUmVnPFJlZ1R5cGU+OwogICAgICAgICB1bnNpZ25lZCBudW1BcmdS
ZWdpc3RlcnMgPSBJbmZvVHlwZTo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKQEAgLTMyNiw4
MCArMzg4LDIyNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0
cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBS
QXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNr
QXJnKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJn
LCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rp
b248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywg
bnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywg
RlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBkb3VibGU+Ojp2YWx1ZSwgIldlIHNo
b3VsZCBvbmx5IGJlIHBhc3NpbmcgRlBSUmVncyB0byBhIGRvdWJsZSIpOwogICAgICAgICBtYXJz
aGFsbEFyZ3VtZW50UmVnaXN0ZXI8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgYXJnLCBh
cmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChB
cmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQ
UlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBh
cmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQ
UkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2ln
bmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFy
Z3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcs
IEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxP
cGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBhcmcsIGFyZ3MuLi4pOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJn
cywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBu
dW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2Vz
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJn
cykKICAgICB7CiAgICAgICAgIG1hcnNoYWxsQXJndW1lbnRSZWdpc3RlcjxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLCBhcmcuZ3ByKCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVk
IG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291
cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWdu
ZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJh
UG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIGFyZywgQXJncy4uLiBhcmdzKQogICAgIHsK
ICAgICAgICAgbWFyc2hhbGxBcmd1bWVudFJlZ2lzdGVyPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MsIGFyZy5ncHIoKSwgYXJncy4uLik7CiAgICAgfQogCiAjZWxzZSAvLyBVU0UoSlNWQUxV
RTY0KQorI2lmIENQVShYODYpCiAKLSAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIGEgaGFjayBm
b3IgWDg2IHNpbmNlIGl0IGhhcyBubyBhcmd1bWVudCBncHJzLi4uCi0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1H
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1
bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgRlBSUmVnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJh
dGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNy
b3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzSW1w
bChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51
bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFy
Z1NvdXJjZVJlZ3MsIEZQUlJlZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQRSwgZG91YmxlPjo6
dmFsdWUsICJXZSBzaG91bGQgb25seSBiZSBwYXNzaW5nIEZQUlJlZ3MgdG8gYSBkb3VibGUiKTsK
LSAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0
cmFQb2tlKTsKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBS
QXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZFN0YWNr
QXJnKGFyZykuYWRkUG9rZSgpLCBhcmdzLi4uKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9r
ZSwgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8
c2l6ZW9mKENVUlJFTlRfQVJHVU1FTlRfVFlQRSkgPD0gND4KLSAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEdQUlJlZyBhcmcsIEFyZ3Mu
Li4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdz
LCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBHUFJSZWcgYXJnLCBB
cmdzLi4uIGFyZ3MpCiAgICAgewotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJB
cmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJn
LCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFy
Z1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51
bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJT
b3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0
cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBFbmNvZGVkSlNWYWx1ZT46
OnZhbHVlPgotICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJn
U291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQ2VsbFZhbHVlIHBheWxvYWQsIEFyZ3MuLi4gYXJncykKICAg
ICB7Ci0gICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcucGF5bG9hZEdQUigpLCBudW1HUFJBcmdz
LCBudW1GUFJBcmdzLCBleHRyYVBva2UpOwotICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLnRh
Z0dQUigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAgICAg
cG9rZUZvckFyZ3VtZW50KHBheWxvYWQuZ3ByKCksIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBwb2tlRm9y
QXJndW1lbnQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFk
ZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BS
U291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5z
aWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJj
ZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBv
a2UsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEVuY29kZWRKU1ZhbHVlPjo6dmFs
dWU+Ci0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVt
R1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgZXh0cmFQb2tlPiBhcmdTb3Vy
Y2VSZWdzLCBDZWxsVmFsdWUgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgc2V0dXBBcmd1bWVudHNJ
bXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywg
bnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZT4g
YXJnU291cmNlUmVncywgSlNWYWx1ZVJlZ3MgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewotICAg
ICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLmdwcigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBl
eHRyYVBva2UpOwotICAgICAgICBwb2tlRm9yQXJndW1lbnQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBleHRyYVBva2UgKyAxKTsKKyAgICAg
ICAgcG9rZUZvckFyZ3VtZW50KGFyZy5wYXlsb2FkR1BSKCksIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpOworICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnLnRhZ0dQUigpLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLmFk
ZFBva2UoKSwgYXJncy4uLik7CiAgICAgfQogCisjZWxpZiBDUFUoQVJNKSB8fCBDUFUoTUlQUykK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFy
Z3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVk
IG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFH
UFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBz
ZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2Vz
LCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBGUFJSZWcgYXJnLCBBcmdzLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5U
X1RZUEUsIGRvdWJsZT46OnZhbHVlLCAiV2Ugc2hvdWxkIG9ubHkgYmUgcGFzc2luZyBGUFJSZWdz
IHRvIGEgZG91YmxlIik7CisKKyAgICAgICAgLy8gTUlQUyBhbmQgQVJNLWhhcmRmcCBwYXNzIEZQ
IGFyZ3VtZW50cyBpbiBGUCByZWdpc3RlcnMuCisjaWYgQ1BVKE1JUFMpCisgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mRlBBcmd1bWVudFJlZ2lzdGVycyA9IEZQUkluZm86Om51bWJlck9mQXJndW1l
bnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRGUEFyZ0NvdW50ID0gYXJnU291
cmNlUmVncy5hcmdDb3VudChhcmcpOworCisgICAgICAgIC8vIE1JUFMgY2FuIG9ubHkgdXNlIEZQ
IGFyZ3VtZW50IHJlZ2lzdGVycyBpZiBpdCBpc24ndCBwcmVjZWVkZWQgYnkgYW55IEdQIGFyZ3Vt
ZW50LgorICAgICAgICBpZiAoY3VycmVudEZQQXJnQ291bnQgPCBudW1iZXJPZkZQQXJndW1lbnRS
ZWdpc3RlcnMgJiYgIW51bUdQUkFyZ3MpIHsKKyAgICAgICAgICAgIGF1dG8gdXBkYXRlZEFyZ1Nv
dXJjZVJlZ3MgPSBhcmdTb3VyY2VSZWdzLnB1c2hSZWdBcmcoYXJnLCBGUFJJbmZvOjp0b0FyZ3Vt
ZW50UmVnaXN0ZXIoY3VycmVudEZQQXJnQ291bnQpKTsKKyAgICAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFy
ZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisjZWxpZiBDUFUoQVJNKSAmJiBDUFUoQVJNX0hBUkRGUCkKKyAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzID0gRlBSSW5mbzo6bnVtYmVyT2ZBcmd1bWVu
dFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEZQQXJnQ291bnQgPSBhcmdTb3Vy
Y2VSZWdzLmFyZ0NvdW50KGFyZyk7CisKKyAgICAgICAgaWYgKGN1cnJlbnRGUEFyZ0NvdW50IDwg
bnVtYmVyT2ZGUEFyZ3VtZW50UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBhdXRvIHVwZGF0ZWRB
cmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKGFyZywgRlBSSW5mbzo6dG9B
cmd1bWVudFJlZ2lzdGVyKGN1cnJlbnRGUEFyZ0NvdW50KSk7CisgICAgICAgICAgICBzZXR1cEFy
Z3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MsIGFyZ3MuLi4p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworI2lmIENQVShNSVBT
KSB8fCAoQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKSkKKyAgICAgICAgLy8gT24gTUlQUyBh
bmQgQVJNLXNvZnRmcCBGUCBhcmd1bWVudHMgY2FuIGJlIHBhc3NlZCBpbiBHUCByZWdpc3RlcnMu
CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycyA9IEdQUkluZm86
Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRHUEFy
Z0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJbmZvOjpyZWdUMCk7CisgICAgICAg
IHVuc2lnbmVkIGFsaWduZWRHUEFyZ0NvdW50ID0gcm91bmRVcFRvTXVsdGlwbGVPZjwyPihjdXJy
ZW50R1BBcmdDb3VudCk7CisKKyAgICAgICAgaWYgKGFsaWduZWRHUEFyZ0NvdW50ICsgMSA8IG51
bWJlck9mR1BBcmd1bWVudFJlZ2lzdGVycykgeworICAgICAgICAgICAgYXV0byB1cGRhdGVkQXJn
U291cmNlUmVncyA9IGFyZ1NvdXJjZVJlZ3MucHVzaFJlZ0FyZyhhcmcsIEdQUkluZm86OnRvQXJn
dW1lbnRSZWdpc3RlcihhbGlnbmVkR1BBcmdDb3VudCkpOworCisgICAgICAgICAgICBpZiAoYWxp
Z25lZEdQQXJnQ291bnQgPiBjdXJyZW50R1BBcmdDb3VudCkKKyAgICAgICAgICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BS
RXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4dHJhQXJnKCksIGFyZ3MuLi4pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPih1cGRhdGVkQXJnU291cmNlUmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkV4
dHJhQXJnKCksIGFyZ3MuLi4pOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoY3VycmVudEdQQXJnQ291bnQgPCBudW1iZXJPZkdQQXJndW1lbnRSZWdpc3Rl
cnMpIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlKTsKKyAg
ICAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdz
LmFkZEdQUkV4dHJhQXJnKCkuYWRkU3RhY2tBcmcoYXJnKS5hZGRQb2tlKCksIGFyZ3MuLi4pOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICAvLyBPdGhl
cndpc2UgcGFzcyBGUCBhcmd1bWVudCBvbiBzdGFjay4KKyAgICAgICAgaWYgKHN0YWNrQWxpZ25l
ZChudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywg
ZXh0cmFQb2tlKSkgeworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7
CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNl
UmVncy5hZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlICsgMSk7CisgICAg
ICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5h
ZGRTdGFja0FyZyhhcmcpLmFkZFBva2UoKS5hZGRQb2tlKCksIGFyZ3MuLi4pOworICAgICAgICB9
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAg
ICBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpIDw9IDQ+Cisg
ICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgR1BSUmVnIGFyZywgQXJncy4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVt
YmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50
ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChhcmcpOworICAgICAgICBpZiAoY3VycmVudEFyZ0Nv
dW50IDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBhdXRvIHVwZGF0ZWRBcmdTb3Vy
Y2VSZWdzID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKGFyZywgR1BSSW5mbzo6dG9Bcmd1bWVu
dFJlZ2lzdGVyKGN1cnJlbnRBcmdDb3VudCkpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJ
bXBsPE9wZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VSZWdzLCBhcmdzLi4uKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcs
IG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBl
eHRyYVBva2UpOworICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJn
U291cmNlUmVncy5hZGRTdGFja0FyZyhhcmcpLCBhcmdzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcy
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgcG9rZUFyZ3VtZW50c0FsaWduZWQoQXJnQ29sbGVjdGlvbjxudW1H
UFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9z
c1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcxIGFy
ZzEsIEFyZzIgYXJnMiwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbnVt
QXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyAgICAg
ICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdDb3VudChHUFJJ
bmZvOjpyZWdUMCk7CisKKyAgICAgICAgaWYgKGN1cnJlbnRBcmdDb3VudCArIDEgPT0gbnVtQXJn
UmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MgKyAxLCBleHRyYVBv
a2UpOworICAgICAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZzIsIG51bUdQUkFyZ3MsIG51bUZQ
UkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzICsgMSwgZXh0cmFQb2tlICsgMSk7
CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNl
UmVncy5hZGRHUFJFeHRyYUFyZygpLmFkZEdQUkFyZygpLmFkZFBva2UoKSwgYXJncy4uLik7Cisg
ICAgICAgIH0gZWxzZSBpZiAoc3RhY2tBbGlnbmVkKG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2UpKSB7CisgICAgICAgICAgICBw
b2tlRm9yQXJndW1lbnQoYXJnMSwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1l
bnQoYXJnMiwgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZSArIDEpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9w
ZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLCBhcmdzLi4u
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcxLCBu
dW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0
cmFQb2tlICsgMSk7CisgICAgICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnMiwgbnVtR1BSQXJn
cywgbnVtRlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSAr
IDIpOworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSQXJnKCkuYWRkUG9rZSgpLmFkZFBva2UoKSwgYXJncy4uLik7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNp
Z25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJB
cmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVu
c2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJHVU1FTlRfVFlQ
RSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29s
bGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3Vy
Y2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VS
ZWdzLCBDZWxsVmFsdWUgcGF5bG9hZCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgbnVtQXJnUmVnaXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVy
czsKKyAgICAgICAgdW5zaWduZWQgY3VycmVudEFyZ0NvdW50ID0gYXJnU291cmNlUmVncy5hcmdD
b3VudChwYXlsb2FkLmdwcigpKTsKKyAgICAgICAgdW5zaWduZWQgYWxpZ25lZEFyZ0NvdW50ID0g
cm91bmRVcFRvTXVsdGlwbGVPZjwyPihjdXJyZW50QXJnQ291bnQpOworCisgICAgICAgIGlmIChh
bGlnbmVkQXJnQ291bnQgKyAxIDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBhdXRv
IHVwZGF0ZWRBcmdTb3VyY2VSZWdzID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKHBheWxvYWQu
Z3ByKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQpKTsKKwor
ICAgICAgICAgICAgaWYgKGFsaWduZWRBcmdDb3VudCA+IGN1cnJlbnRBcmdDb3VudCkKKyAgICAg
ICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1Nv
dXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKS5hZGRHUFJFeHRyYUFyZygpLCBhcmdzLi4uKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MuYWRkR1BSRXh0cmFBcmcoKSwgYXJncy4uLik7
CisKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBHUFJJ
bmZvOjp0b0FyZ3VtZW50UmVnaXN0ZXIoYWxpZ25lZEFyZ0NvdW50ICsgMSkpOworCisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcG9rZUFyZ3VtZW50c0FsaWduZWQ8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncywgcGF5bG9hZC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpLCBhcmdzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25U
eXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25l
ZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1Nv
dXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZS4uLiBBcmdzPgorICAgIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19zYW1lPENVUlJFTlRfQVJH
VU1FTlRfVFlQRSwgRW5jb2RlZEpTVmFsdWU+Ojp2YWx1ZT4KKyAgICBzZXR1cEFyZ3VtZW50c0lt
cGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBu
dW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBKU1ZhbHVlUmVncyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAg
ICAgIHVuc2lnbmVkIG51bUFyZ1JlZ2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnM7CisgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBcmdDb3VudCA9IGFyZ1NvdXJjZVJl
Z3MuYXJnQ291bnQoYXJnLnRhZ0dQUigpKTsKKyAgICAgICAgdW5zaWduZWQgYWxpZ25lZEFyZ0Nv
dW50ID0gcm91bmRVcFRvTXVsdGlwbGVPZjwyPihjdXJyZW50QXJnQ291bnQpOworCisgICAgICAg
IGlmIChhbGlnbmVkQXJnQ291bnQgKyAxIDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgICAg
ICAvLyBKU1ZhbHVlUmVncyBpcyBwYXNzZWQgaW4gdHdvIDMyLWJpdCByZWdpc3RlcnMgb24gdGhl
c2UgYXJjaGl0ZWN0dXJlcy4gSW5jcmVhc2UgYm90aCBudW1HUFJBcmdzIGFuZCBleHRyYUdQUkFy
Z3MgYnkgMS4KKyAgICAgICAgICAgIC8vIFdlIGNhbid0IGp1c3QgYWRkIDIgdG8gbnVtR1BSQXJn
cywgc2luY2UgaXQgaXMgdXNlZCBmb3IgQ1VSUkVOVF9BUkdVTUVOVF9UWVBFLiBBZGRpbmcgMiB3
b3VsZCBsZWFkIHRvIGEgc2tpcHBlZCBhcmd1bWVudC4KKyAgICAgICAgICAgIGF1dG8gdXBkYXRl
ZEFyZ1NvdXJjZVJlZ3MxID0gYXJnU291cmNlUmVncy5wdXNoUmVnQXJnKGFyZy5wYXlsb2FkR1BS
KCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihhbGlnbmVkQXJnQ291bnQpKTsKKyAgICAg
ICAgICAgIGF1dG8gdXBkYXRlZEFyZ1NvdXJjZVJlZ3MyID0gdXBkYXRlZEFyZ1NvdXJjZVJlZ3Mx
LnB1c2hFeHRyYVJlZ0FyZyhhcmcudGFnR1BSKCksIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rl
cihhbGlnbmVkQXJnQ291bnQgKyAxKSk7CisKKyAgICAgICAgICAgIGlmIChhbGlnbmVkQXJnQ291
bnQgPiBjdXJyZW50QXJnQ291bnQpCisgICAgICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KHVwZGF0ZWRBcmdTb3VyY2VSZWdzMi5hZGRHUFJFeHRyYUFyZygpLCBh
cmdzLi4uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50
c0ltcGw8T3BlcmF0aW9uVHlwZT4odXBkYXRlZEFyZ1NvdXJjZVJlZ3MyLCBhcmdzLi4uKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBwb2tlQXJndW1lbnRzQWxpZ25lZDxPcGVyYXRpb25U
eXBlPihhcmdTb3VyY2VSZWdzLCBhcmcucGF5bG9hZEdQUigpLCBhcmcudGFnR1BSKCksIGFyZ3Mu
Li4pOworICAgIH0KKworI2VuZGlmIC8vIENQVShBUk0pIHx8IENQVShNSVBTKQogI2VuZGlmIC8v
IFVTRShKU1ZBTFVFNjQpCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1
bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1G
UFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVu
YW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRp
b25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNp
Z25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9z
c1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBl
bmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJs
ZV9pZl90PAogICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8VHJ1c3RlZEltbSwgQXJnPjo6dmFsdWUK
ICAgICAgICAgfHwgc3RkOjppc19jb252ZXJ0aWJsZTxBcmcsIFRydXN0ZWRJbW0+Ojp2YWx1ZT4g
Ly8gV2UgaGF2ZSB0aGlzIHNpbmNlIERGR1NwZWN1bGF0aXZlSklUIGhhcyBpdCdzIG93biBpbXBs
ZW1lbnRhdGlvbiBvZiBUcnVzdGVkSW1tUHRyCi0gICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0Nv
bGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291
cmNlcywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisg
ICAgc2V0dXBBcmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291
cmNlcywgbnVtRlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQ
UkFyZ3MsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQog
ICAgIHsKICAgICAgICAgLy8gUmlnaHQgbm93IHRoaXMgb25seSBzdXBwb3J0cyBub24tZmxvYXRp
bmcgcG9pbnQgaW1tZWRpYXRlIGFyZ3VtZW50cyBzaW5jZSB3ZSBuZXZlciBjYWxsIG9wZXJhdGlv
bnMgd2l0aCBub24tcmVnaXN0ZXIgdmFsdWVzLgogICAgICAgICAvLyBJZiB3ZSBldmVyIG5lZWRl
ZCB0byBzdXBwb3J0IGltbWVkaWF0ZSBmbG9hdGluZyBwb2ludCBhcmd1bWVudHMgd2Ugd291bGQg
bmVlZCB0byBkdXBsaWNhdGUgdGhpcyBsb2dpYyBmb3IgYm90aCB0eXBlcywgd2hpY2ggc291bmRz
CkBAIC00MDksNyArNjE1LDcgQEAgcHJpdmF0ZToKICNpZiBPUyhXSU5ET1dTKSAmJiBDUFUoWDg2
XzY0KQogICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51bUdQUkFyZ3MgKyBudW1GUFJB
cmdzICsgKHN0ZDo6aXNfc2FtZTxSRVNVTFRfVFlQRSwgU2xvd1BhdGhSZXR1cm5UeXBlPjo6dmFs
dWUgPyAxIDogMCk7CiAjZWxzZQotICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51bUdQ
UkFyZ3M7CisgICAgICAgIGF1dG8gY3VycmVudEFyZ0NvdW50ID0gbnVtR1BSQXJncyArIGV4dHJh
R1BSQXJnczsKICNlbmRpZgogICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50IDwgbnVtQXJnUmVn
aXN0ZXJzKSB7CiAgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4o
YXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CkBAIC00MTcsNDYgKzYyMyw0NiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcG9r
ZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgZXh0cmFQb2tlKTsKKyAg
ICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVtRlBSQXJncywgbnVtQ3Jv
c3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4dHJhUG9rZSk7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4u
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25l
ZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdz
LCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFy
ZywgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBl
LCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBu
dW1GUFJBcmdzLCB1bnNpZ25lZCBudW1GUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBB
cmcsIHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90
PAogICAgICAgICBzdGQ6OmlzX3NhbWU8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFLCBBcmc+Ojp2YWx1
ZQogICAgICAgICAmJiBzdGQ6OmlzX2ludGVncmFsPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZh
bHVlCiAgICAgICAgICYmIChzaXplb2YoQ1VSUkVOVF9BUkdVTUVOVF9UWVBFKSA8PSA0KT4KLSAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Ms
IEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdz
LCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncywgVHJ1c3RlZEltbTMyKGFyZyksIGFyZ3Mu
Li4pOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2ln
bmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFy
Z3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUg
QXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5
cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVk
IG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291
cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1l
IEFyZywgdHlwZW5hbWUuLi4gQXJncz4KICAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lm
X3Q8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxDVVJSRU5UX0FSR1VNRU5UX1RZUEUsIEFyZz46OnZh
bHVlCiAgICAgICAgICYmIHN0ZDo6aXNfaW50ZWdyYWw8Q1VSUkVOVF9BUkdVTUVOVF9UWVBFPjo6
dmFsdWUKICAgICAgICAgJiYgKHNpemVvZihDVVJSRU5UX0FSR1VNRU5UX1RZUEUpID09IDgpPgot
ICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNv
dXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVn
cywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xs
ZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJj
ZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJl
Z3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
SW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tNjQoYXJnKSwgYXJn
cy4uLik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5z
aWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBS
QXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFt
ZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9u
VHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWdu
ZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NT
b3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5h
bWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVf
aWZfdDwKICAgICAgICAgc3RkOjppc19wb2ludGVyPENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZh
bHVlCiAgICAgICAgICYmICgoc3RkOjppc19wb2ludGVyPEFyZz46OnZhbHVlICYmIHN0ZDo6aXNf
Y29udmVydGlibGU8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9wb2ludGVyX3Q8QXJn
Pj4qLCBDVVJSRU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSkKICAgICAgICAgICAgIHx8IHN0ZDo6
aXNfc2FtZTxBcmcsIHN0ZDo6bnVsbHB0cl90Pjo6dmFsdWUpPgotICAgIHNldHVwQXJndW1lbnRz
SW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3Ms
IG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4u
LiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3Ms
IG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNl
cywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3Mu
Li4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBl
PihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZyksIGFyZ3MuLi4pOwogICAgIH0KIAog
ICAgIC8vIFNwZWNpYWwgY2FzZSBERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYmVjYXVzZSBpdCdz
IHJlYWxseSBhbm5veWluZyB0byBkZWFsIHdpdGggb3RoZXJ3aXNlLi4uCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5z
aWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBS
U291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgogICAg
IEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDwKICAgICAgICAgc3RkOjppc19zYW1lPENV
UlJFTlRfQVJHVU1FTlRfVFlQRSwgU3RydWN0dXJlKj46OnZhbHVlCiAgICAgICAgICYmIHN0ZDo6
aXNfc2FtZTxBcmcsIERGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZT46OnZhbHVlPgotICAgIHNldHVw
QXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51
bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFy
ZywgQXJncy4uLiBhcmdzKQorICAgIHNldHVwQXJndW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51
bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQUkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNy
b3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBh
cmcsIEFyZ3MuLi4gYXJncykKICAgICB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVy
YXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3Mu
Li4pOwogICAgIH0KQEAgLTQ2NSwxMyArNjcxLDE5IEBAIHByaXZhdGU6CiAjdW5kZWYgUkVTVUxU
X1RZUEUKIAogICAgIC8vIEJhc2UgY2FzZTsgc2V0IHVwIHRoZSBhcmd1bWVudCByZWdpc3RlcnMu
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgZXh0cmFQb2tlPgotICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3Mp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJn
cywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQg
bnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQ
UkFyZ3MsIHVuc2lnbmVkIGV4dHJhUG9rZT4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVt
RlBSQXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIGV4
dHJhUG9rZT4gYXJnU291cmNlUmVncykKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoRnVu
Y3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmFyaXR5ID09IG51bUdQUkFyZ3MgKyBudW1GUFJB
cmdzLCAiT25lIGxhc3Qgc2FuaXR5IGNoZWNrIik7CisjaWYgQ1BVKEpTVkFMVUU2NCkgfHwgQ1BV
KFg4NikKICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBl
Pjo6Y0NhbGxBcml0eSgpID09IG51bUdQUkFyZ3MgKyBudW1GUFJBcmdzICsgZXh0cmFQb2tlLCAi
Q2hlY2sgdGhlIENDYWxsIGFyaXR5Iik7CisjZW5kaWYKICAgICAgICAgc2V0dXBTdHViQXJnczxu
dW1HUFJTb3VyY2VzLCBHUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtR1BSU291cmNlcywgR1BS
UmVnPihhcmdTb3VyY2VSZWdzLmdwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJyYXlUb1NpemU8bnVt
R1BSU291cmNlcywgR1BSUmVnPihhcmdTb3VyY2VSZWdzLmdwclNvdXJjZXMpKTsKLQorI2lmIENQ
VShNSVBTKSB8fCAoQ1BVKEFSTSkgJiYgIUNQVShBUk1fSEFSREZQKSkKKyAgICAgICAgc2V0dXBT
dHViQ3Jvc3NBcmdzPG51bUNyb3NzU291cmNlcz4oYXJnU291cmNlUmVncy5jcm9zc0Rlc3RpbmF0
aW9ucywgYXJnU291cmNlUmVncy5jcm9zc1NvdXJjZXMpOworI2Vsc2UKKyAgICAgICAgc3RhdGlj
X2Fzc2VydCghbnVtQ3Jvc3NTb3VyY2VzLCAic2hvdWxkbid0IGJlIHVzZWQgb24gdGhpcyBhcmNo
aXRlY3R1cmUuIik7CisjZW5kaWYKICAgICAgICAgc2V0dXBTdHViQXJnczxudW1GUFJTb3VyY2Vz
LCBGUFJSZWc+KGNsYW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywgRlBSUmVnPihhcmdTb3Vy
Y2VSZWdzLmZwckRlc3RpbmF0aW9ucyksIGNsYW1wQXJyYXlUb1NpemU8bnVtRlBSU291cmNlcywg
RlBSUmVnPihhcmdTb3VyY2VSZWdzLmZwclNvdXJjZXMpKTsKICAgICB9CiAKQEAgLTQ4Niw3ICs2
OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFRoaXMgb25seSByZWFsbHkgd29ya3MgZm9yIDY0
LWJpdCBzaW5jZSBqc3ZhbHVlIHJlZ3MgbWVzcyB0aGluZ3MgdXAgZm9yIDMyLWJpdC4uLgogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KEZ1bmN0aW9uVHJhaXRzPE9wZXJhdGlvblR5cGU+OjpjQ2FsbEFy
aXR5KCkgPT0gc2l6ZW9mLi4uKEFyZ3MpICsgMSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOwogI2Vu
ZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAwLCAw
LCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDA+KCksIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBhcmdzLi4uKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGUsIDAsIDAsIDAsIDAsIDAsIDAsIDA+KEFyZ0NvbGxlY3Rpb248MCwgMCwgMCwgMCwgMCwgMCwg
MD4oKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3MuLi4pOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CkBAIC00
OTYsNyArNzA4LDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGlzIG9ubHkgcmVhbGx5IHdvcmtz
IGZvciA2NC1iaXQgc2luY2UganN2YWx1ZSByZWdzIG1lc3MgdGhpbmdzIHVwIGZvciAzMi1iaXQu
Li4KICAgICAgICAgc3RhdGljX2Fzc2VydChGdW5jdGlvblRyYWl0czxPcGVyYXRpb25UeXBlPjo6
Y0NhbGxBcml0eSgpID09IHNpemVvZi4uLihBcmdzKSwgIkJhc2ljIHNhbml0eSBjaGVjayIpOwog
I2VuZGlmCi0gICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlLCAwLCAwLCAw
LCAwLCAwPihBcmdDb2xsZWN0aW9uPDAsIDAsIDAsIDAsIDA+KCksIGFyZ3MuLi4pOworICAgICAg
ICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZSwgMCwgMCwgMCwgMCwgMCwgMCwgMD4o
QXJnQ29sbGVjdGlvbjwwLCAwLCAwLCAwLCAwLCAwLCAwPigpLCBhcmdzLi4uKTsKICAgICB9CiAK
ICN1bmRlZiBGSVJTVF9BUkdVTUVOVF9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0ZQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRlBSSW5mby5o
CmluZGV4IDZmZjgyNDliODQ1M2RlNWM2MmRlYjJlNzc2MGQ2ZGYwM2Q4YTI0ZWEuLmVhNDcxOTc5
NjNlZjc0MGM0NTBhNTI5MDkyZDczZTViNTkzZTRiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRlBSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
RlBSSW5mby5oCkBAIC0xMDcsNyArMTA3LDEyIEBAIGNsYXNzIEZQUkluZm8gewogcHVibGljOgog
ICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisjaWYgQ1BVKEFSTV9IQVJERlApCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSA4OworI2Vsc2UK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IDA7
CisjZW5kaWYKIAogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgLy8gZDcgaXMgdXNl
IGJ5IHRoZSBNYWNyb0Fzc2VtYmxlciBhcyBmcFRlbXBSZWdpc3Rlci4KQEAgLTE0NCw2ICsxNDks
MTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKHVuc2lnbmVkKXJlZzsKICAgICB9CiAKKyNp
ZiBDUFUoQVJNX0hBUkRGUCkKKyAgICBzdGF0aWMgRlBSUmVnIHRvQXJndW1lbnRSZWdpc3Rlcih1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mQXJn
dW1lbnRSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RlBSUmVnPihpbmRl
eCk7CisgICAgfQorI2VuZGlmCisKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQ
UlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwpA
QCAtMjgxLDYgKzI5NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWdpc3RlckZvcklu
ZGV4W2luZGV4XTsKICAgICB9CiAKKyAgICBzdGF0aWMgRlBSUmVnIHRvQXJndW1lbnRSZWdpc3Rl
cih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9m
QXJndW1lbnRSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGluZGV4Rm9y
UmVnaXN0ZXJbMl0gPSB7CisgICAgICAgICAgICBhcmd1bWVudEZQUjAsIGFyZ3VtZW50RlBSMQor
ICAgICAgICB9OworICAgICAgICByZXR1cm4gaW5kZXhGb3JSZWdpc3RlcltpbmRleF07CisgICAg
fQorCiAgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>