<?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>184600</bug_id>
          
          <creation_ts>2018-04-13 11:50:25 -0700</creation_ts>
          <short_desc>[WebAssembly][Modules] Prototype wasm import</short_desc>
          <delta_ts>2021-06-15 11:15:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184689</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=184703</see_also>
          <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>184717</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>chi187</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jfbastien</cc>
    
    <cc>jlewis3</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philip.chimento</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1414489</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-13 11:50:25 -0700</bug_when>
    <thetext>https://github.com/WebAssembly/esm-integration/tree/master/proposals/esm-integration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414657</commentid>
    <comment_count>1</comment_count>
      <attachid>337963</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-14 15:06:53 -0700</bug_when>
    <thetext>Created attachment 337963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414658</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-14 15:09:01 -0700</bug_when>
    <thetext>Initial WIP patch. It does not handle well `import` right now. But module pipeline and `export` Just Work (TM).

The test like,



JS: wasm.js

import {sum} from &quot;./sum.wasm&quot;

print(sum(2, 3));


WASM: sum.rs =&gt; sum.wasm (compiled by nightly rust wasm backend)

#[no_mangle]
pub fn sum(a: i32, b: i32) -&gt; i32 {
    a + b
}


Then, you can run

jsc -m wasm.js

And it works :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414659</commentid>
    <comment_count>3</comment_count>
      <attachid>337964</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-14 15:19:56 -0700</bug_when>
    <thetext>Created attachment 337964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414660</commentid>
    <comment_count>4</comment_count>
      <attachid>337965</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-14 15:23:23 -0700</bug_when>
    <thetext>Created attachment 337965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414752</commentid>
    <comment_count>5</comment_count>
      <attachid>337993</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-16 04:33:49 -0700</bug_when>
    <thetext>Created attachment 337993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414831</commentid>
    <comment_count>6</comment_count>
      <attachid>337993</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-16 11:23:18 -0700</bug_when>
    <thetext>Comment on attachment 337993
Patch

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

Very cool!

No need for a runtime flag because this only works in the shell, right?

r=me otherwise

&gt; Source/JavaScriptCore/jsc.cpp:978
&gt; +    Vector&lt;uint8_t&gt; utf8;

Rename it to something else than utf8, since it&apos;s just bytes in wasm.

&gt; Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp:795
&gt; +}

lol &quot;virtual&quot; ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415008</commentid>
    <comment_count>7</comment_count>
      <attachid>337993</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-16 19:37:50 -0700</bug_when>
    <thetext>Comment on attachment 337993
Patch

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

Yes. Since WebAssemblySourceProvider is only used in the jsc shell, this is only enabled under the jsc shell right now :)

&gt;&gt; Source/JavaScriptCore/jsc.cpp:978
&gt;&gt; +    Vector&lt;uint8_t&gt; utf8;
&gt; 
&gt; Rename it to something else than utf8, since it&apos;s just bytes in wasm.

Yeah, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp:795
&gt;&gt; +}
&gt; 
&gt; lol &quot;virtual&quot; ;-)

;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415009</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-16 19:39:05 -0700</bug_when>
    <thetext>Committed r230697: &lt;https://trac.webkit.org/changeset/230697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415011</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-16 19:40:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/39478891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415328</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-04-17 16:23:51 -0700</bug_when>
    <thetext>This revision caused many failures on the Sierra Debug Test262 tester:

https://build.webkit.org/builders/Apple%20Sierra%20Debug%20Test262%20%28Tests%29/builds/1696/steps/test262-test/logs/stdio
https://build.webkit.org/builders/Apple%20Sierra%20Debug%20Test262%20%28Tests%29/builds/1696


Most of the failures are running into assertion failures such as:
ASSERTION FAILED: !m_needExceptionCheck
./runtime/VM.cpp(1134) : void JSC::VM::verifyExceptionCheckNeedIsSatisfied(unsigned int, JSC::ExceptionEventLocation &amp;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415349</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-17 17:01:30 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 184717</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415508</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-18 02:47:24 -0700</bug_when>
    <thetext>Committed r230759: &lt;https://trac.webkit.org/changeset/230759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415760</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-18 15:51:35 -0700</bug_when>
    <thetext>There are still crashes on the Debug JSC bot after re-landing:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20JSC%20%28Tests%29/builds/899

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   jsc                                 0x00000001034e18dc JSC::JSGlobalObject::vm() const + 12
1   jsc                                 0x0000000103520401 checkException(JSC::ExecState*, GlobalObject*, bool, bool, JSC::JSValue, CommandLine&amp;, bool&amp;) + 65
2   jsc                                 0x0000000103527074 runWithOptions(GlobalObject*, CommandLine&amp;)::$_8::operator()(JSC::ExecState*) const + 132
3   jsc                                 0x0000000103526fe0 long long std::__1::__invoke_void_return_wrapper&lt;long long&gt;::__call&lt;runWithOptions(GlobalObject*, CommandLine&amp;)::$_8&amp;, JSC::ExecState*&gt;(runWithOptions(GlobalObject*, CommandLine&amp;)::$_8&amp;&amp;&amp;, JSC::ExecState*&amp;&amp;) + 80
4   jsc                                 0x0000000103526f69 std::__1::__function::__func&lt;runWithOptions(GlobalObject*, CommandLine&amp;)::$_8, std::__1::allocator&lt;runWithOptions(GlobalObject*, CommandLine&amp;)::$_8&gt;, long long (JSC::ExecState*)&gt;::operator()(JSC::ExecState*&amp;&amp;) + 57
5   com.apple.JavaScriptCore            0x00000001048bf7e3 std::__1::function&lt;long long (JSC::ExecState*)&gt;::operator()(JSC::ExecState*) const + 83 (functional:1921)
6   com.apple.JavaScriptCore            0x00000001048a4ee2 JSC::runStdFunction(JSC::ExecState*) + 114 (JSNativeStdFunction.cpp:64)
7   ???                                 0x000001851edb5185 0 + 1671259967877
8   com.apple.JavaScriptCore            0x00000001036da058 llint_entry + 34231
9   com.apple.JavaScriptCore            0x00000001036d1882 vmEntryToJavaScript + 343
10  com.apple.JavaScriptCore            0x000000010453bc6a JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 186 (JITCode.cpp:75)
11  com.apple.JavaScriptCore            0x00000001044dc958 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 1272 (Interpreter.cpp:1028)
12  com.apple.JavaScriptCore            0x000000010475964a JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 202 (CallData.cpp:41)
13  com.apple.JavaScriptCore            0x00000001047598da JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 106 (CallData.cpp:61)
14  com.apple.JavaScriptCore            0x0000000104896c47 JSC::JSJobMicrotask::run(JSC::ExecState*) + 647 (JSJob.cpp:81)
15  com.apple.JavaScriptCore            0x0000000104a17673 JSC::QueuedTask::run() + 83 (VM.cpp:1059)
16  com.apple.JavaScriptCore            0x0000000104a17257 JSC::VM::drainMicrotasks() + 135 (VM.cpp:1053)
17  com.apple.JavaScriptCore            0x0000000104978730 JSC::PromiseDeferredTimer::doWork() + 1184 (PromiseDeferredTimer.cpp:71)
18  com.apple.JavaScriptCore            0x00000001048d132e JSC::JSRunLoopTimer::timerDidFire() + 174 (JSRunLoopTimer.cpp:65)
19  com.apple.JavaScriptCore            0x00000001048d176c JSC::JSRunLoopTimer::timerDidFireCallback(__CFRunLoopTimer*, void*) + 28 (JSRunLoopTimer.cpp:105)
20  com.apple.CoreFoundation            0x00007fff46495704 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
21  com.apple.CoreFoundation            0x00007fff46495384 __CFRunLoopDoTimer + 1108
22  com.apple.CoreFoundation            0x00007fff46494e7a __CFRunLoopDoTimers + 346
23  com.apple.CoreFoundation            0x00007fff4648c61b __CFRunLoopRun + 2427
24  com.apple.CoreFoundation            0x00007fff4648ba07 CFRunLoopRunSpecific + 487
25  com.apple.CoreFoundation            0x00007fff464c9e73 CFRunLoopRun + 99
26  com.apple.JavaScriptCore            0x0000000104978a12 JSC::PromiseDeferredTimer::runRunLoop() + 210 (PromiseDeferredTimer.cpp:100)
27  jsc                                 0x00000001034e54e4 int runJSC&lt;jscmain(int, char**)::$_3&gt;(CommandLine, bool, jscmain(int, char**)::$_3 const&amp;) + 1508
28  jsc                                 0x00000001034e3f5f jscmain(int, char**) + 143
29  jsc                                 0x00000001034e3ebe main + 46
30  libdyld.dylib                       0x00007fff6e830015 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415898</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-19 05:35:45 -0700</bug_when>
    <thetext>Committed r230798: &lt;https://trac.webkit.org/changeset/230798&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337963</attachid>
            <date>2018-04-14 15:06:53 -0700</date>
            <delta_ts>2018-04-14 15:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184600-20180415070652.patch</filename>
            <type>text/plain</type>
            <size>49624</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmU4YThhOWJiMmIxMGI0YzI0M2FkNzEzN2Q5YTFjMjg1ZDhhNTIzLi40ZDMyNWUzM2QwZGY3MjZk
OGY4YzI5ZjczNThmMTEzNzAwNmY1YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOC0wNC0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIFByb3RvdHlwZSB3YXNtIGlt
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0
NjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBi
dWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanM6CisgICAgICAgIChyZXF1ZXN0SW5zdGFu
dGlhdGUpOgorICAgICAgICAobGluayk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGNv
bnZlcnRTaGViYW5nVG9KU0NvbW1lbnQpOgorICAgICAgICAoZmlsbEJ1ZmZlcldpdGhDb250ZW50
c09mRmlsZSk6CisgICAgICAgIChmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0pOgorICAg
ICAgICAoR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgICogcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5U291cmNlUHJvdmlk
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5U291cmNlUHJvdmlkZXI6Oldl
YkFzc2VtYmx5U291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJl
c29sdmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3Jk
OjpsaW5rKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToK
KyAgICAgICAgKEpTQzo6aWRlbnRpZmllclRvSlNWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlUGFyc2VNb2R1bGUpOgorICAgICAgICAoSlNDOjptb2R1
bGVMb2FkZXJQcm90b3R5cGVSZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyUHJvdG90eXBlTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OmdldFdhc21C
dWZmZXJGcm9tVmFsdWUpOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFs
dWUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KToK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6cHJl
cGFyZUxpbmspOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZl
KToKKyAgICAgICAgKEpTQzo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5k
SW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVByb3RvdHlwZTo6aW5zdGFu
dGlhdGUpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKToKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5UHJvdG90eXBlLmg6CisKIDIwMTgtMDQtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10gUmVtb3ZlIGR1cGxpY2F0ZSAzMmJp
dCBQcm9maWxlVHlwZSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMKaW5kZXggOTNmMjIyNTZk
NjczZDYxMjIwODBlMGViMWY0NmU2ZGMzMTViY2U0Yi4uNDJhMDA4ZGE3Zjk1MWFiYzAyZjIxNzkz
YjRhNWNkODdkN2JhNDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzCkBAIC0xOTcsMjIgKzE5NywyMyBAQCBm
dW5jdGlvbiByZXF1ZXN0SW5zdGFudGlhdGUoZW50cnksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAg
ICAgICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gaW5zdGFudGlhdGVQcm9taXNlOwogCiAgICAgICAg
IHZhciBrZXkgPSBlbnRyeS5rZXk7Ci0gICAgICAgIHZhciBtb2R1bGVSZWNvcmQgPSB0aGlzLnBh
cnNlTW9kdWxlKGtleSwgc291cmNlKTsKLSAgICAgICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG1v
ZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7Ci0gICAgICAgIHZhciByZXF1ZXN0ZWRNb2R1bGVz
ID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7Ci0gICAgICAgIHZhciBkZXBl
bmRlbmNpZXMgPSBAbmV3QXJyYXlXaXRoU2l6ZShyZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aCk7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZGVwTmFtZSA9IHJlcXVlc3RlZE1v
ZHVsZXNbaV07Ci0gICAgICAgICAgICB2YXIgZGVwS2V5ID0gdGhpcy5yZXNvbHZlU3luYyhkZXBO
YW1lLCBrZXksIGZldGNoZXIpOwotICAgICAgICAgICAgdmFyIGRlcEVudHJ5ID0gdGhpcy5lbnN1
cmVSZWdpc3RlcmVkKGRlcEtleSk7Ci0gICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwZW5k
ZW5jaWVzLCBpLCBkZXBFbnRyeSk7Ci0gICAgICAgICAgICBkZXBlbmRlbmNpZXNNYXAuQHNldChk
ZXBOYW1lLCBkZXBFbnRyeSk7Ci0gICAgICAgIH0KLSAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVz
ID0gZGVwZW5kZW5jaWVzOwotICAgICAgICBlbnRyeS5kZXBlbmRlbmNpZXNNYXAgPSBkZXBlbmRl
bmNpZXNNYXA7Ci0gICAgICAgIGVudHJ5Lm1vZHVsZSA9IG1vZHVsZVJlY29yZDsKLSAgICAgICAg
QHNldFN0YXRlVG9NYXgoZW50cnksIEBNb2R1bGVTYXRpc2Z5KTsKLSAgICAgICAgcmV0dXJuIGVu
dHJ5OworICAgICAgICByZXR1cm4gdGhpcy5wYXJzZU1vZHVsZShrZXksIHNvdXJjZSkudGhlbigo
bW9kdWxlUmVjb3JkKSA9PiB7CisgICAgICAgICAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbW9k
dWxlUmVjb3JkLmRlcGVuZGVuY2llc01hcDsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ZWRNb2R1
bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CisgICAgICAgICAgICB2
YXIgZGVwZW5kZW5jaWVzID0gQG5ld0FycmF5V2l0aFNpemUocmVxdWVzdGVkTW9kdWxlcy5sZW5n
dGgpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVs
ZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGVwTmFt
ZSA9IHJlcXVlc3RlZE1vZHVsZXNbaV07CisgICAgICAgICAgICAgICAgdmFyIGRlcEtleSA9IHRo
aXMucmVzb2x2ZVN5bmMoZGVwTmFtZSwga2V5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgICAgICB2
YXIgZGVwRW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoZGVwS2V5KTsKKyAgICAgICAgICAg
ICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwZW5kZW5jaWVzLCBpLCBkZXBFbnRyeSk7CisgICAgICAg
ICAgICAgICAgZGVwZW5kZW5jaWVzTWFwLkBzZXQoZGVwTmFtZSwgZGVwRW50cnkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzOwor
ICAgICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5kZW5jaWVzTWFwOworICAg
ICAgICAgICAgZW50cnkubW9kdWxlID0gbW9kdWxlUmVjb3JkOworICAgICAgICAgICAgQHNldFN0
YXRlVG9NYXgoZW50cnksIEBNb2R1bGVTYXRpc2Z5KTsKKyAgICAgICAgICAgIHJldHVybiBlbnRy
eTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGluc3RhbnRpYXRlUHJvbWlzZTsK
IH0KQEAgLTI4OCw3ICsyODksNyBAQCBmdW5jdGlvbiBsaW5rKGVudHJ5LCBmZXRjaGVyKQogICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxl
bmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5saW5rKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hl
cik7CiAKLSAgICAgICAgdGhpcy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnku
bW9kdWxlLCBlbnRyeS5rZXksIGZldGNoZXIpOworICAgICAgICB0aGlzLm1vZHVsZURlY2xhcmF0
aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1bGUsIGZldGNoZXIpOwogICAgIH0gY2F0Y2ggKGVy
cm9yKSB7CiAgICAgICAgIGVudHJ5LmxpbmtTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgZW50
cnkubGlua0Vycm9yID0gZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwYzdlZGM4ZjZl
NzBiMGEzNmE5Yjc5NTc1NWI2Njc2ODUyZjlkYjIuLjM2MDIzZmM0ZTc3ZTc1ZWViMTUxNmY0Mzk0
OTViM2Q4ZDk5Nzk0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xODYsNyArMTg2LDggQEAg
c3RhdGljIHVuc2lnbmVkIGFzeW5jVGVzdEV4cGVjdGVkUGFzc2VzIHsgMCB9OwogCiB9CiAKLXN0
YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpOwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yPgor
c3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBWZWN0b3ImIGJ1ZmZlcik7CiBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxC
dWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CiAKIGNsYXNz
IENvbW1hbmRMaW5lOwpAQCAtODQ0LDcgKzg0NSw4IEBAIElkZW50aWZpZXIgR2xvYmFsT2JqZWN0
Ojptb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNT
CiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZXNvbHZlUGF0aChkaXJl
Y3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKTsKIH0KIAotc3RhdGlj
IHZvaWQgY29udmVydFNoZWJhbmdUb0pTQ29tbWVudChWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KK3N0YXRpYyB2b2lkIGNvbnZlcnRTaGViYW5nVG9KU0Nv
bW1lbnQoVmVjdG9yJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPj0gMikgewog
ICAgICAgICBpZiAoYnVmZmVyWzBdID09ICcjJyAmJiBidWZmZXJbMV0gPT0gJyEnKQpAQCAtODgy
LDcgKzg4NCw4IEBAIHN0YXRpYyBSZWZQdHI8VWludDhBcnJheT4gZmlsbEJ1ZmZlcldpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRklMRSogZmlsZSwg
VmVjdG9yPGNoYXI+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3I+CitzdGF0aWMg
Ym9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKEZJTEUqIGZpbGUsIFZlY3RvciYgYnVm
ZmVyKQogewogICAgIC8vIFdlIG1pZ2h0IGhhdmUgaW5qZWN0ZWQgInVzZSBzdHJpY3QiOyBhdCB0
aGUgdG9wLgogICAgIHNpemVfdCBpbml0aWFsU2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC05MjAs
NyArOTIzLDggQEAgc3RhdGljIGJvb2wgZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgVmVj
dG9yPgorc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIFZlY3RvciYgYnVmZmVyKQogewogICAgIC8vIFdlIGFzc3VtZSB0aGF0
IGZpbGVOYW1lIGlzIGFsd2F5cyBhbiBhYnNvbHV0ZSBwYXRoLgogI2lmIE9TKFdJTkRPV1MpCkBA
IC05NzEsMTMgKzk3NSwyMiBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIH0KIAogICAg
IC8vIEhlcmUsIG5vdyB3ZSBjb25zaWRlciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgotICAg
IFZlY3RvcjxjaGFyPiB1dGY4OworICAgIFZlY3Rvcjx1aW50OF90PiB1dGY4OwogICAgIGlmICgh
ZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKG1vZHVsZUtleSwgdXRmOCkpIHsKICAgICAg
ICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJyIsIG1vZHVsZUtleSwgIicuIikpKTsK
ICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisgICAgLy8gRmlsZVN5c3RlbSBkb2VzIG5vdCBoYXZlIG1pbWUt
dHlwZSBoZWFkZXIuIFRoZSBKU0Mgc2hlbGwgcmVjb2duaXplcyBXZWJBc3NlbWJseSdzIG1hZ2lj
IGhlYWRlci4KKyAgICBpZiAodXRmOC5zaXplKCkgPj0gNCkgeworICAgICAgICBpZiAodXRmOFsw
XSA9PSAnXDAnICYmIHV0ZjhbMV0gPT0gJ2EnICYmIHV0ZjhbMl0gPT0gJ3MnICYmIHV0ZjhbM10g
PT0gJ20nKSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4
ZWMsIEpTU291cmNlQ29kZTo6Y3JlYXRlKHZtLCBTb3VyY2VDb2RlKFdlYkFzc2VtYmx5U291cmNl
UHJvdmlkZXI6OmNyZWF0ZShXVEZNb3ZlKHV0ZjgpLCBTb3VyY2VPcmlnaW4geyBtb2R1bGVLZXkg
fSwgbW9kdWxlS2V5KSkpKTsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2Vw
dGlvbigpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgSlNTb3VyY2VDb2RlOjpj
cmVhdGUodm0sIG1ha2VTb3VyY2Uoc3RyaW5nRnJvbVVURih1dGY4KSwgU291cmNlT3JpZ2luIHsg
bW9kdWxlS2V5IH0sIG1vZHVsZUtleSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291
cmNlVHlwZTo6TW9kdWxlKSkpOwogICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigp
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmgKaW5kZXggMmU2OGU4MjAyN2RiMjg1ODlmMzdiNGYwMGY2Y2Y4ODBiNGVh
ZmM4Mi4uMGQwYzJmYzg0Y2QwNWE1OGEzMTIxMmEzNjlhZjc1YTU4MWEwMTIyZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtMTIwLDkgKzEy
MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBjbGFz
cyBXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyIDogcHVibGljIFNvdXJjZVByb3ZpZGVyIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcj4g
Y3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgU291cmNlT3JpZ2luJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICBzdGF0aWMgUmVmPFdlYkFz
c2VtYmx5U291cmNlUHJvdmlkZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25z
dCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFzc2VtYmx5U291cmNlUHJv
dmlkZXIoZGF0YSwgc291cmNlT3JpZ2luLCB1cmwpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoV1RGTW92ZShkYXRhKSwgc291cmNl
T3JpZ2luLCB1cmwpKTsKICAgICAgICAgfQogCiAgICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dCBvdmVycmlkZQpAQCAtMTQxLDEwICsxNDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdp
biwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4s
IGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICAgICAgOiBTb3VyY2VQcm92aWRlcihzb3VyY2VP
cmlnaW4sIHVybCwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6V2Vi
QXNzZW1ibHkpCiAgICAgICAgICAgICAsIG1fc291cmNlKCJbV2ViQXNzZW1ibHkgc291cmNlXSIp
Ci0gICAgICAgICAgICAsIG1fZGF0YShkYXRhKQorICAgICAgICAgICAgLCBtX2RhdGEoV1RGTW92
ZShkYXRhKSkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCAzMzI1M2Rm
NTk2ZjcwOTI1MjI0YjM4NjhiZjg4MzNmZDA5ZGNjNDgxLi41ODM5MGU5OWExZGVjZmQwODViOTU5
ZmY1NjBiMmRhNTM4YTEyODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5j
bHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVk
ZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5o
IgogI2luY2x1ZGUgIlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNl
IEFic3RyYWN0TW9kdWxlUmVjb3JkSW50ZXJuYWwgewpAQCAtMTM3LDE5ICsxMzksMTEgQEAgYXV0
byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6YW1iaWd1b3VzKCkgLT4gUmVzb2x1
dGlvbgogICAgIHJldHVybiBSZXNvbHV0aW9uIHsgVHlwZTo6QW1iaWd1b3VzLCBudWxscHRyLCBJ
ZGVudGlmaWVyKCkgfTsKIH0KIAotc3RhdGljIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCi17Ci0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKLSAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKQotICAgICAg
ICByZXR1cm4gU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRl
bnRpZmllci5pbXBsKCkpKTsKLSAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBpZGVudGlmaWVyLmlt
cGwoKSk7Ci19Ci0KIEFic3RyYWN0TW9kdWxlUmVjb3JkKiBBYnN0cmFjdE1vZHVsZVJlY29yZDo6
aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNWYWx1ZSBtb2R1bGVOYW1lVmFs
dWUgPSBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMsIG1vZHVsZU5hbWUpOworICAgIEpTVmFsdWUg
bW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmllclRvSlNWYWx1ZSh2bSwgbW9kdWxlTmFtZSk7CiAg
ICAgSlNWYWx1ZSBlbnRyeSA9IG1fZGVwZW5kZW5jaWVzTWFwLT5KU01hcDo6Z2V0KGV4ZWMsIG1v
ZHVsZU5hbWVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtNzc1LDYgKzc2OSwyNyBAQCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdCogQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZShFeGVj
U3RhdGUqIGV4ZQogICAgIHJldHVybiBtb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiB9CiAKK3ZvaWQg
QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAoYXV0byoganNN
b2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQor
ICAgICAgICByZXR1cm4ganNNb2R1bGVSZWNvcmQtPmxpbmsoZXhlYywgc2NyaXB0RmV0Y2hlcik7
CisgICAgaWYgKGF1dG8qIHdhc21Nb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQorICAgICAgICByZXR1cm4gd2FzbU1vZHVsZVJl
Y29yZC0+bGluayhleGVjLCBzY3JpcHRGZXRjaGVyKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEFic3RyYWN0TW9kdWxl
UmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEpTTW9k
dWxlUmVjb3JkKj4odm0sIHRoaXMpKQorICAgICAgICByZXR1cm4ganNNb2R1bGVSZWNvcmQtPmV2
YWx1YXRlKGV4ZWMpOworICAgIGlmIChhdXRvKiB3YXNtTW9kdWxlUmVjb3JkID0ganNEeW5hbWlj
Q2FzdDxXZWJBc3NlbWJseU1vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkKKyAgICAgICAgcmV0dXJu
IHdhc21Nb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIHN0YXRpYyBTdHJp
bmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCiB7
CiAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCmluZGV4IDU5Mjk5NWI1MDYxOWNiZmU2
Y2MyZmFkYTI4YjdlNmM0YWIyODBjYjQuLjU1ODhiMmYwMzg3NGU4ZjRjMzViNTZiOGExN2VkZmQ3
Njg4NmQ4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3Ry
YWN0TW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJz
dHJhY3RNb2R1bGVSZWNvcmQuaApAQCAtMTE5LDYgKzExOSw5IEBAIGNsYXNzIEFic3RyYWN0TW9k
dWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJu
IG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7CiAgICAgfQogCisgICAgdm9pZCBsaW5rKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqKTsKKwogcHJvdGVjdGVkOgogICAgIEFic3RyYWN0TW9k
dWxlUmVjb3JkKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCAxYmUzYzdhYzM4NmZiYjE3ZTY1
NjlmOThlOWY4Zjg0NDg1NzZiNWQwLi45MDg1OTFkOTI4MGM4ZGY4ZDMzZjY1Y2YzMzk3OGIzMjc4
YzAwZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVM
b2FkZXIuY3BwCkBAIC0yNzUsMTAgKzI3NSw5IEBAIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjCiAg
ICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9h
ZGVyRXZhbHVhdGUpCiAgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRlKGdsb2JhbE9iamVjdCwgZXhlYywgdGhp
cywga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7CiAKLSAgICBKU01vZHVs
ZVJlY29yZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4
ZWMtPnZtKCksIG1vZHVsZVJlY29yZFZhbHVlKTsKLSAgICBpZiAoIW1vZHVsZVJlY29yZCkKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIG1vZHVsZVJlY29yZC0+ZXZh
bHVhdGUoZXhlYyk7CisgICAgaWYgKGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8
QWJzdHJhY3RNb2R1bGVSZWNvcmQqPihleGVjLT52bSgpLCBtb2R1bGVSZWNvcmRWYWx1ZSkpCisg
ICAgICAgIHJldHVybiBtb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQogCiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVMb2Fk
ZXI6OmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9k
dWxlUmVjb3JkVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZVJlY29yZC5jcHAKaW5kZXggNmZhMmY3MmVhMmU3MjhlY2I0ODFlYmJiZDYyMjJmZTQzZjUy
OWFkOS4uYTdjOTlkY2M0ODMzMDYwYTljMzI2NWJmMzRiNWIxZmUyNTk4YmIwOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtNzgs
NyArNzgsNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiB9CiAKLXZvaWQgSlNNb2R1bGVSZWNvcmQ6Omxp
bmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQor
dm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIEpTTW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcikKICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0
YWJsZSwga2V5LCBzY3JpcHRGZXRjaGVyKTsKKyAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhl
eGVjLCBleGVjdXRhYmxlLCBzY3JpcHRGZXRjaGVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KHZtLCB0
aGlzLCBleGVjdXRhYmxlKTsKIH0KIAotdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVE
ZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
Cit2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSwg
SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjA4LDcgKzIwOCw3IEBA
IHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSog
ZXhlYywgTW9kdWxlUHJvZ3JhbUV4ZWN1CiAgICAgfQogCiAgICAgewotICAgICAgICBKU09iamVj
dCogbWV0YVByb3BlcnRpZXMgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZUxv
YWRlcigpLT5jcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhleGVjLCBrZXksIHRoaXMsIHNjcmlw
dEZldGNoZXIpOworICAgICAgICBKU09iamVjdCogbWV0YVByb3BlcnRpZXMgPSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5jcmVhdGVJbXBvcnRNZXRhUHJvcGVy
dGllcyhleGVjLCBpZGVudGlmaWVyVG9KU1ZhbHVlKHZtLCBtb2R1bGVLZXkoKSksIHRoaXMsIHNj
cmlwdEZldGNoZXIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICBzeW1ib2xUYWJsZVB1
dFRvdWNoV2F0Y2hwb2ludFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkubWV0YVByaXZhdGVOYW1lKCksIG1ldGFQcm9wZXJ0aWVzLCAv
KiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJy
b3JzICovIHRydWUsIHB1dFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCBjZGZjYzQwZWU1ODI5ZTcyNTc1MTRmOTgxN2U5OTM2
ODA3MDk0OWJjLi5hYzJkY2ZhNmM1Mjk4YmQ3M2U0ZmRjMmNmNTFmMGNjMTU0MDdiY2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RN
b2R1bGVSZWNvcmQgewogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBj
cmVhdGUoRXhlY1N0YXRlKiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgU291cmNlQ29kZSYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50Jik7CiAKLSAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXks
IEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0
ZShFeGVjU3RhdGUqKTsKIAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0KQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgSlNNb2R1
bGVSZWNvcmQgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RNb2R1bGVSZWNvcmQgewogICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCi0gICAgdm9pZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9u
cyhFeGVjU3RhdGUqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTVmFsdWUga2V5LCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpOworICAgIHZvaWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhl
Y1N0YXRlKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
OwogCiAgICAgU291cmNlQ29kZSBtX3NvdXJjZUNvZGU7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVu
dCBtX2RlY2xhcmVkVmFyaWFibGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKaW5kZXggM2Q0ZjQ0YTE0NTk3ZWMx
Y2MwNWJjZjJjNzI2NGFhMmViNTQ3ZmFlNC4uNmFjNzQxZDljOWUyNzY1MTc1MDg1YTFlZGMyNTEx
YzEzYzRkYzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9k
dWxlTG9hZGVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
Tm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgor
I2luY2x1ZGUgIldlYkFzc2VtYmx5UHJvdG90eXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBA
IC03Niw3ICs3Nyw3IEBAIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sCiAgICAgcmVxdWVzdEluc3Rh
bnRpYXRlICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgcmVxdWVzdFNhdGlzZnkgICAg
ICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgbGluayAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAyCi0gICAgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9u
IG1vZHVsZUxvYWRlclByb3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBEb250
RW51bXxGdW5jdGlvbiAzCisgICAgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIG1vZHVs
ZUxvYWRlclByb3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBEb250RW51bXxG
dW5jdGlvbiAyCiAgICAgbW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAgICAgIEpTQnVpbHRpbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCiAgICAgZXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3Rv
dHlwZUV2YWx1YXRlICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAg
ICAgcHJvdmlkZUZldGNoICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCkBAIC0xMDMs
MTUgKzEwNCwyNiBAQCBNb2R1bGVMb2FkZXJQcm90b3R5cGU6Ok1vZHVsZUxvYWRlclByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwor
CisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
KyAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKKworICAgIGF1dG8gcmVqZWN0
ID0gWyZdIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKTsK
KyAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbikpOworICAgIH07CiAKICAg
ICBjb25zdCBJZGVudGlmaWVyIG1vZHVsZUtleSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVy
dHlLZXkoZXhlYyk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0
dXJuIHJlamVjdCgpOwogCi0gICAgYXV0byoganNTb3VyY2VDb2RlID0ganNEeW5hbWljQ2FzdDxK
U1NvdXJjZUNvZGUqPih2bSwgZXhlYy0+YXJndW1lbnQoMSkpOwotICAgIGlmICghanNTb3VyY2VD
b2RlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAg
SlNWYWx1ZSBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBhdXRvKiBqc1NvdXJjZUNv
ZGUgPSBqc0Nhc3Q8SlNTb3VyY2VDb2RlKj4oc291cmNlKTsKICAgICBTb3VyY2VDb2RlIHNvdXJj
ZUNvZGUgPSBqc1NvdXJjZUNvZGUtPnNvdXJjZUNvZGUoKTsKKyAgICBpZiAoc291cmNlQ29kZS5w
cm92aWRlcigpLT5zb3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpXZWJB
c3NlbWJseSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXZWJBc3NlbWJseVByb3Rv
dHlwZTo6aW5zdGFudGlhdGUoZXhlYywgZGVmZXJyZWQsIG1vZHVsZUtleSwganNTb3VyY2VDb2Rl
KSk7CiAKICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlQ29kZSk7CiAKQEAgLTExOSwy
NSArMTMxLDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJv
dG90eXBlUGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxN
b2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFt
Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmlj
dCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5h
bHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7Ci0KLSAgICBpZiAoZXJy
b3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgZXJyb3Iu
dG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9Cisg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSkpOwogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9k
ZSk7CiAKICAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVLZXks
IHNvdXJjZUNvZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxl
UHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCA9IG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKTsKKyAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gcmVqZWN0KCk7
CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZVJlY29yZCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBtb2R1bGVBbmFseXplci5h
bmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0g
anNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29y
ZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpIHsKICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpOwpAQCAtMTU3LDE0ICsxNjYsMTQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVNb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24KIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCBleGVj
LT5hcmd1bWVudCgwKSk7CisgICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxB
YnN0cmFjdE1vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFt
b2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQogICAgICAg
ICBkYXRhTG9nKCJMb2FkZXIgW2xpbmtdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCksICJc
biIpOwogCi0gICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCBl
eGVjLT5hcmd1bWVudCgyKSk7CisgICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMu
aAppbmRleCBiZDA2ZDNjOWMyNTE2NWVjZGYwYjdiODQyYTIwOTE0ZDZlZDU5ZGE3Li5jNTEyODZi
N2RhOTYwYzczZWFhZTFmMjg3N2ZlNjI5MzkzNDdlNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgiCiAKQEAgLTQ5
LDEwICs1MCwxNiBAQCBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvTm9uV3JhcHBpbmdVaW50MzIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZG91YmxlVmFsdWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjx1aW50
OF90Kiwgc2l6ZV90PiBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3Q+IGdldFdhc21CdWZmZXJGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoYXV0byogc291cmNlID0ganNEeW5hbWlj
Q2FzdDxKU1NvdXJjZUNvZGUqPih2bSwgdmFsdWUpKSB7CisgICAgICAgIGF1dG8qIHByb3ZpZGVy
ID0gc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcio+KHNvdXJjZS0+c291cmNl
Q29kZSgpLnByb3ZpZGVyKCkpOworICAgICAgICByZXR1cm4geyBwcm92aWRlci0+ZGF0YSgpLmRh
dGEoKSwgcHJvdmlkZXItPmRhdGEoKS5zaXplKCkgfTsKKyAgICB9CisKICAgICAvLyBJZiB0aGUg
Z2l2ZW4gYnl0ZXMgYXJndW1lbnQgaXMgbm90IGEgQnVmZmVyU291cmNlLCBhIFR5cGVFcnJvciBl
eGNlcHRpb24gaXMgdGhyb3duLgogICAgIEpTQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdmFs
dWUuZ2V0T2JqZWN0KCkgPyBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgdmFsdWUu
Z2V0T2JqZWN0KCkpIDogbnVsbHB0cjsKICAgICBKU0FycmF5QnVmZmVyVmlldyogYXJyYXlCdWZm
ZXJWaWV3ID0gdmFsdWUuZ2V0T2JqZWN0KCkgPyBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJW
aWV3Kj4odm0sIHZhbHVlLmdldE9iamVjdCgpKSA6IG51bGxwdHI7CkBAIC03Niw3ICs4Myw3IEBA
IEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPHVpbnQ4X3QqLCBzaXplX3Q+IGdldFdhc21CdWZmZXJG
cm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjCiBBTFdBWVNfSU5MSU5FIFZlY3Rvcjx1aW50OF90PiBj
cmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgdWludDhfdCogZGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBkYXRhOwogICAgIHNp
emVfdCBieXRlU2l6ZTsKICAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6ZSkgPSBnZXRXYXNtQnVm
ZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDc3MWE2NDBhMzJi
ODU5OWEwNWEzZGY0NTM2MzdkZDZiNTNhOWM5MDcuLjIzNzk5OGM2OWQ5NGQxNTNiMTEzNjI5Yjlm
ZDhiNzQxMTNiNGI5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFu
Y2UoKS5pbXBvcnRGdW5jdGlvbjxQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRo
aXMgYWxzbyBrZWVwcyB0aGUgZnVuY3Rpb25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUu
CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2RlQmxvY2sp
Cit2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYywgUmVmPFdhc206OkNvZGVCbG9jaz4mJiB3YXNtQ29kZUJsb2NrLCBNb2R1
bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCiB7CiAgICAgbV9pbnN0YW5jZS0+ZmluYWxpemVDcmVh
dGlvbih0aGlzLCB3YXNtQ29kZUJsb2NrLmNvcHlSZWYoKSk7CiAKQEAgLTEyNywxNSArMTI3LDI0
IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6CiAgICAgfQogCiAgICAgYXV0byogbW9kdWxlUmVj
b3JkID0ganNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4obV9tb2R1bGVOYW1lc3BhY2VP
YmplY3QtPm1vZHVsZVJlY29yZCgpKTsKLSAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZXhlYywgbV9t
b2R1bGUuZ2V0KCksIHRoaXMpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgbW9kdWxlUmVjb3JkLT5wcmVwYXJlTGluayh2bSwgdGhpcyk7CiAKLSAgICBKU1Zh
bHVlIHN0YXJ0UmVzdWx0ID0gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShleGVjKTsKLSAgICBVTlVT
RURfUEFSQU0oc3RhcnRSZXN1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisgICAgaWYgKG1vZHVsZVJ1bk1vZGUgPT0gTW9kdWxlUnVuTW9kZTo6UnVuKSB7Cisg
ICAgICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBqc051bGwoKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAgSlNWYWx1ZSBzdGFydFJl
c3VsdCA9IG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7CisgICAgICAgIFVOVVNFRF9QQVJB
TShzdGFydFJlc3VsdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgfQorfQorCitJZGVudGlmaWVyIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRl
UHJpdmF0ZU1vZHVsZUtleSgpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21VaWQoUHJp
dmF0ZU5hbWUoUHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCAiV2ViQXNzZW1ibHlJbnN0YW5jZSIp
KTsKIH0KIAotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1
bGUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUs
IFJlZjxXYXNtOjpNb2R1bGU+JiYgbW9kdWxlKQorSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBqc01vZHVsZSwgSlNP
YmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdh
c206Ok1vZHVsZT4mJiBtb2R1bGUpCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwpAQCAtMTU4LDcgKzE2Nyw2IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
CiAgICAgaWYgKG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydHMuc2l6ZSgpICYmICFpbXBvcnRPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiY2FuJ3QgbWFrZSBXZWJBc3NlbWJseS5JbnN0YW5jZSBiZWNhdXNlIHRoZXJlIGlz
IG5vIGltcG9ydHMgT2JqZWN0IGFuZCB0aGUgV2ViQXNzZW1ibHkuTW9kdWxlIHJlcXVpcmVzIGlt
cG9ydHMiKSkpOwogCi0gICAgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKFByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgIldlYkFzc2VtYmx5SW5z
dGFuY2UiKSk7CiAgICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+d2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSwgbW9kdWxlS2V5LCBtb2R1bGVJbmZvcm1h
dGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaAppbmRleCBlZDliMmIxMThiZmQzYTBiN2VhOWQyYzQzMTFlNWFlMTkxNTZmZGYyLi4w
MzJiNTY1ZjA4MWUwZTA3MWJmY2RiM2FiZTc5Yjk5ZTc4OTEzZjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAt
NTAsMTIgKzUwLDE1IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBmaW5hbCA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0
aWJsZU9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3Jl
YXRlKFZNJiwgRXhlY1N0YXRlKiwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBv
cnRPYmplY3QsIFN0cnVjdHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOworICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKTsKKworICAgIHN0YXRpYyBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGNyZWF0ZShWTSYsIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFN0cnVjdHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgdm9pZCBmaW5hbGl6ZUNyZWF0aW9uKFZNJiwgRXhl
Y1N0YXRlKiwgUmVmPFdhc206OkNvZGVCbG9jaz4mJik7CisgICAgZW51bSBjbGFzcyBNb2R1bGVS
dW5Nb2RlIHsgUnVuLCBOb25lIH07CisgICAgdm9pZCBmaW5hbGl6ZUNyZWF0aW9uKFZNJiwgRXhl
Y1N0YXRlKiwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiwgTW9kdWxlUnVuTW9kZSk7CiAgICAgCiAg
ICAgV2FzbTo6SW5zdGFuY2UmIGluc3RhbmNlKCkgeyByZXR1cm4gbV9pbnN0YW5jZS5nZXQoKTsg
fQogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QoKSB7
IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsgfQpAQCAtNzYsNiArNzksOCBA
QCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogICAgICAgICBpbnN0YW5jZSgpLnNldFRhYmxlKG1ha2VSZWYoKnRhYmxlKCkt
PnRhYmxlKCkpKTsKICAgICB9CiAKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBj
b25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQorCiAgICAgc3RhdGljIHNpemVfdCBvZmZz
ZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3Nl
bWJseUluc3RhbmNlLCBtX2luc3RhbmNlKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQ
b2lzb25lZENhbGxlZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5z
dGFuY2UsIG1fY2FsbGVlKTsgfQogCkBAIC04OSw4ICs5NCw2IEBAIGNsYXNzIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSBmaW5hbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiBwcml2YXRl
OgotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlLmdldCgpOyB9Ci0KICAgICBQb2lzb25lZFJlZjxKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lz
b24sIFdhc206Okluc3RhbmNlPiBtX2luc3RhbmNlOwogCiAgICAgUG9pc29uZWRCYXJyaWVyPEpT
V2ViQXNzZW1ibHlNb2R1bGU+IG1fbW9kdWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggYjY3ODhmYTUwYzY0NTRhMjBkMzU3NTBkMjMwZjNlYmFjMDMyYzg4Yy4uNDk2MDk4
OTNhZTI1ZmU4ZjEyNzBmZGE2MWM1NmNjODEwMDMwZjExNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3IuY3BwCkBAIC03NywxMCArNzcsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgK
ICAgICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+
KG1vZHVsZS0+bW9kdWxlKCkpKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
ID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBtb2R1bGUsIGltcG9ydE9iamVjdCwg
aW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaW5zdGFuY2UtPmZp
bmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZt
Lndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dh
c21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pKTsKKyAgICBpbnN0YW5jZS0+Zmlu
YWxpemVDcmVhdGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0u
d2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2Fz
bVdyYXBwZXIsICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwCmluZGV4IGUzNDY0NmM2ZGI4MWQ4NmU2N2Y4MjA3N2FmODkzYTZkZGYyY2YzNmIuLjBl
NDg0NzU4YTRjMWQ2MTBkYjJhODhhZmQ3YzZjOWY2YmE1M2E0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKQEAgLTg2LDE0ICs4NiwyMyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKIH0KIAotdm9pZCBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIG1vZHVsZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKK3ZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OnByZXBhcmVMaW5rKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YW5jZSk7CisgICAg
bV9pbnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKK30KKwordm9pZCBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAKLSAgICBXYXNtOjpDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGluc3RhbmNlLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpOworICAgIFJFTEVBU0VfQVNT
RVJUKG1faW5zdGFuY2UpOworCisgICAgV2FzbTo6Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lu
c3RhbmNlLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUq
IG1vZHVsZSA9IG1faW5zdGFuY2UtPm1vZHVsZSgpOwogICAgIGNvbnN0IFdhc206Ok1vZHVsZUlu
Zm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24o
KTsKIAogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9IG1vZHVsZS0+ZXhwb3J0
U3ltYm9sVGFibGUoKTsKQEAgLTExMCwxMiArMTE5LDEyIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUsCiAgICAgICAgICAgICAvLyAgIGlpLiAoTm90ZTogQXQgbW9zdCBvbmUgd3JhcHBlciBpcyBj
cmVhdGVkIGZvciBhbnkgY2xvc3VyZSwgc28gZnVuYyBpcyB1bmlxdWUsIGV2ZW4gaWYgdGhlcmUg
YXJlIG11bHRpcGxlIG9jY3VycmFuY2VzIGluIHRoZSBsaXN0LiBNb3Jlb3ZlciwgaWYgdGhlIGl0
ZW0gd2FzIGFuIGltcG9ydCB0aGF0IGlzIGFscmVhZHkgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhv
dGljIE9iamVjdCwgdGhlbiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0IHdpbGwgYmUgZm91
bmQuIEZvciBpbXBvcnRzIHRoYXQgYXJlIHJlZ3VsYXIgSlMgZnVuY3Rpb25zLCBhIG5ldyB3cmFw
cGVyIHdpbGwgYmUgY3JlYXRlZC4pCiAgICAgICAgICAgICBpZiAoZXhwLmtpbmRJbmRleCA8IGZ1
bmN0aW9uSW1wb3J0Q291bnQpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdW5jdGlvbklu
ZGV4ID0gZXhwLmtpbmRJbmRleDsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25J
bXBvcnQgPSBpbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6OlBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQo
KTsKKyAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29u
ZWRCYXJyaWVyPEpTT2JqZWN0Pj4oZnVuY3Rpb25JbmRleCktPmdldCgpOwogICAgICAgICAgICAg
ICAgIGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBmdW5jdGlvbkltcG9ydCkpCiAg
ICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbkltcG9ydDsKICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5k
ZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5k
ZXhTcGFjZShmdW5jdGlvbkluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1
ZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIGluc3RhbmNlLCBzaWduYXR1cmVJbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBXZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uSW1wb3J0LCBmdW5jdGlv
bkluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyAgIGlpaS4gT3Ro
ZXJ3aXNlOgpAQCAtMTI2LDIzICsxMzUsMjMgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAg
ICAgICAgICAgICAgICBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9j
YXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNvZGVCbG9jay0+ZW50cnlwb2ludExvYWRM
b2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAg
ICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25h
dHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKICAgICAgICAg
ICAgICAgICBjb25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwotICAgICAgICAgICAgICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZzo6ZnJvbVVU
RjgoZXhwLmZpZWxkKSwgaW5zdGFuY2UsIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlw
b2ludExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZzo6ZnJvbVVU
RjgoZXhwLmZpZWxkKSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVl
LCBlbnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICAg
ICAgZXhwb3J0ZWRWYWx1ZSA9IGZ1bmN0aW9uOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxl
OiB7CiAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG1vZHVsZSB2
ZXJpZmljYXRpb24uCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnN0YW5jZS0+dGFibGUo
KSk7IAorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFibGUoKSk7IAog
ICAgICAgICAgICAgQVNTRVJUKGV4cC5raW5kSW5kZXggPT0gMCk7CiAKLSAgICAgICAgICAgIGV4
cG9ydGVkVmFsdWUgPSBpbnN0YW5jZS0+dGFibGUoKTsKKyAgICAgICAgICAgIGV4cG9ydGVkVmFs
dWUgPSBtX2luc3RhbmNlLT50YWJsZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogewogICAgICAgICAgICAg
QVNTRVJUKGV4cC5raW5kSW5kZXggPT0gMCk7CiAKLSAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUg
PSBpbnN0YW5jZS0+bWVtb3J5KCk7CisgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gbV9pbnN0
YW5jZS0+bWVtb3J5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFdhc206OkV4dGVybmFsS2luZDo6R2xvYmFsOiB7CkBAIC0xNTIsNyArMTYxLDcgQEAgdm9p
ZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNz
ZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgICAgIC8vIFJldHVybiBUb0pTVmFsdWUodiku
CiAgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbC50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFdh
c206OkkzMjoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShpbnN0YW5j
ZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKKyAgICAgICAgICAg
ICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJ
MzJHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgICAgICBjYXNlIFdhc206Okk2NDoKQEAgLTE2MCwxMSArMTY5LDExIEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9k
dWxlKiBtb2R1bGUsCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNl
IFdhc206OkYzMjoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShpbnN0
YW5jZS0+aW5zdGFuY2UoKS5sb2FkRjMyR2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKKyAgICAgICAg
ICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxv
YWRGMzJHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgICAgICBjYXNlIFdhc206OkY2NDoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVl
ID0gSlNWYWx1ZShpbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkRjY0R2xvYmFsKGV4cC5raW5kSW5k
ZXgpKTsKKyAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmxvYWRGNjRHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMTkxLDE4ICsyMDAsMTUgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2Vi
QXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgQVNTRVJUKCFzaWduYXR1cmUuYXJndW1l
bnRDb3VudCgpKTsKICAgICAgICAgQVNTRVJUKHNpZ25hdHVyZS5yZXR1cm5UeXBlKCkgPT0gV2Fz
bTo6Vm9pZCk7CiAgICAgICAgIGlmIChzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA8IGNvZGVCbG9j
ay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogc3RhcnRG
dW5jdGlvbiA9IGluc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oc3RhcnRGdW5jdGlvbkluZGV4
U3BhY2UpLT5nZXQoKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzdGFydEZ1bmN0aW9uID0gbV9p
bnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OlBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+KHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKS0+Z2V0
KCk7CiAgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBzdGFydEZ1bmN0
aW9uKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFdhc206OkNhbGxlZSYgZW1iZWRk
ZXJFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5lbWJlZGRlckVudHJ5cG9pbnRDYWxsZWVG
cm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAg
ICAgIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRMb2NhdGlvbiBlbnRy
eXBvaW50TG9hZExvY2F0aW9uID0gY29kZUJsb2NrLT5lbnRyeXBvaW50TG9hZExvY2F0aW9uRnJv
bUZ1bmN0aW9uSW5kZXhTcGFjZShzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSk7Ci0gICAgICAgICAg
ICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAic3RhcnQi
LCBpbnN0YW5jZSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0
aW9uLCBzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBm
dW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAic3RhcnQiLCBtX2luc3RhbmNlLmdldCgpLCBlbWJl
ZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUlu
ZGV4KTsKICAgICAgICAgICAgIG1fc3RhcnRGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGZ1bmN0aW9u
KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2luc3RhbmNlKTsK
LSAgICBtX2luc3RhbmNlLnNldCh2bSwgdGhpcywgaW5zdGFuY2UpOwogICAgIG1fbW9kdWxlRW52
aXJvbm1lbnQuc2V0KHZtLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5oCmluZGV4IGZjZTFkNjQ2MzkwMzU3MjA2MGM5ZDk5N2MxMGNlYmYwZGFjZGQ5ZDguLjQxN2Ew
YzYwODM3ZDQ1Y2ViNTYzMWY0YjBmNDc1ZGIzYjVmYjM4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaApAQCAt
NDgsNyArNDgsOCBAQCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCBmaW5hbCA6IHB1Ymxp
YyBBYnN0cmFjdE1vZHVsZVJlY29yZCB7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogCi0gICAg
dm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqKTsKKyAgICB2b2lkIHByZXBhcmVMaW5rKFZNJiwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKik7CisgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmNwcAppbmRleCA0NjQ0MWQzZDIyZjZhNmIyYTBkZGY1OTlhZWM1NGY2
M2YyZDRiMjZkLi5jZGQ0YmUwYThkNWIwMjBhODQzOTI2NjNiNWRkZWRhZTljNmNiNTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90
b3R5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIkpTVG9XYXNtLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhl
bHBlcnMuaCIKQEAgLTEyMCwxNSArMTIxLDE3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQogICAgIH0K
IH0KIAotZW51bSBjbGFzcyBSZXNvbHZlIHsgV2l0aEluc3RhbmNlLCBXaXRoTW9kdWxlQW5kSW5z
dGFuY2UgfTsKLXN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY29k
ZUJsb2NrLCBSZXNvbHZlIHJlc29sdmVLaW5kKQorZW51bSBjbGFzcyBSZXNvbHZlIHsgV2l0aElu
c3RhbmNlLCBXaXRoTW9kdWxlUmVjb3JkLCBXaXRoTW9kdWxlQW5kSW5zdGFuY2UgfTsKK3N0YXRp
YyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVk
KiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBtb2R1bGUsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY29kZUJsb2NrLCBSZXNvbHZl
IHJlc29sdmVLaW5kLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGUgbW9kdWxl
UnVuTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0g
ICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29kZUJsb2Nr
KSk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29k
ZUJsb2NrKSwgbW9kdWxlUnVuTW9kZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
cmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKSk7CiAKICAgICBpZiAocmVzb2x2ZUtpbmQgPT0g
UmVzb2x2ZTo6V2l0aEluc3RhbmNlKQogICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGlu
c3RhbmNlKTsKKyAgICBlbHNlIGlmIChyZXNvbHZlS2luZCA9PSBSZXNvbHZlOjpXaXRoTW9kdWxl
UmVjb3JkKQorICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGluc3RhbmNlLT5tb2R1bGVO
YW1lc3BhY2VPYmplY3QoKS0+bW9kdWxlUmVjb3JkKCkpOwogICAgIGVsc2UgewogICAgICAgICBK
U09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRl
cmFsKCJtb2R1bGUiKSksIG1vZHVsZSk7CkBAIC0xMzgsMTEgKzE0MSwxMSBAQCBzdGF0aWMgdm9p
ZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJv
bWlzZSwgSlNXZWJBcwogICAgIENMRUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogfQogCi1zdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1v
ZHVsZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgUmVzb2x2ZSByZXNvbHZlS2luZCkKK3N0YXRp
YyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1w
b3J0T2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIFJlc29sdmUgcmVzb2x2ZUtp
bmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1bGVSdW5Nb2RlKQog
ewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAvLyBJbiBv
cmRlciB0byBhdm9pZCBwb3RlbnRpYWxseSByZWNvbXBpbGluZyBhIG1vZHVsZS4gV2UgZmlyc3Qg
Z2F0aGVyIGFsbCB0aGUgaW1wb3J0L21lbW9yeSBpbmZvcm1hdGlvbiBwcmlvciB0byBjb21waWxp
bmcgY29kZS4KLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwg
UmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUoKSkpOworICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhl
YywgbW9kdWxlS2V5LCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCksIFJlZjxXYXNtOjpNb2R1bGU+
KG1vZHVsZS0+bW9kdWxlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWpl
Y3QoZXhlYywgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4g
ZGVwZW5kZW5jaWVzOwpAQCAtMTUwLDQxICsxNTMsNTQgQEAgc3RhdGljIHZvaWQgaW5zdGFudGlh
dGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBK
U1cKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbnN0YW5jZSkp
OwogICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNl
LCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogICAgIC8vIE5vdGU6IFRoaXMgY29tcGxldGlvbiB0
YXNrIG1heSBvciBtYXkgbm90IGdldCBjYWxsZWQgaW1tZWRpYXRlbHkuCi0gICAgbW9kdWxlLT5t
b2R1bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9k
ZSgpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihbcHJv
bWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgcmVzb2x2ZUtpbmQsICZ2bV0gKFJlZjxXYXNtOjpDb2Rl
QmxvY2s+JiYgcmVmQ29kZUJsb2NrKSBtdXRhYmxlIHsKKyAgICBtb2R1bGUtPm1vZHVsZSgpLmNv
bXBpbGVBc3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksIGNyZWF0
ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJsb2NrOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbnN0
YW5jZSwgbW9kdWxlLCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoUmVmPFdhc206
OkNvZGVCbG9jaz4mJiByZWZDb2RlQmxvY2spIG11dGFibGUgewogICAgICAgICBSZWZQdHI8V2Fz
bTo6Q29kZUJsb2NrPiBjb2RlQmxvY2sgPSBXVEZNb3ZlKHJlZkNvZGVCbG9jayk7Ci0gICAgICAg
IHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9t
aXNlLCBpbnN0YW5jZSwgbW9kdWxlLCByZXNvbHZlS2luZCwgJnZtLCBjb2RlQmxvY2sgPSBXVEZN
b3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5wcm9taXNlRGVmZXJyZWRU
aW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVs
ZSwgcmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShj
b2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGlu
c3RhbmNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICAgICAgcmVzb2x2
ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgY29kZUJsb2NrLnJlbGVhc2VO
b25OdWxsKCksIHJlc29sdmVLaW5kKTsKKyAgICAgICAgICAgIHJlc29sdmUodm0sIGV4ZWMsIHBy
b21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNv
bHZlS2luZCwgbW9kdWxlUnVuTW9kZSk7CiAgICAgICAgIH0pOwogICAgIH0pLCAmV2FzbTo6Y3Jl
YXRlSlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pOwogfQogCi1zdGF0
aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3QqIGltcG9y
dE9iamVjdCkKK3N0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgSlNWYWx1ZSBidWZmZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFJlc29s
dmUgcmVzb2x2ZUtpbmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1
bGVSdW5Nb2RlKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
IAogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
IAorICAgIEpTQ2VsbCogbW9kdWxlS2V5Q2VsbCA9IGpzQ2FzdDxKU0NlbGwqPihpZGVudGlmaWVy
VG9KU1ZhbHVlKHZtLCBtb2R1bGVLZXkpKTsKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRl
cGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBp
bXBvcnRPYmplY3QpKTsKKyAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZt
LCBtb2R1bGVLZXlDZWxsKSk7CiAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPmFkZFBlbmRp
bmdQcm9taXNlKHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBWZWN0b3I8
dWludDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVjLCBi
dWZmZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChleGVjLCBzY29w
ZSwgcHJvbWlzZSkpOwogCi0gICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNt
Q29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6
Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsICZ2bV0g
KFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtw
cm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpLCAmdm1dICgpIG11dGFibGUgeworICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygm
dm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpN
b2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2Vs
bCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoV2FzbTo6
TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgdm0u
cHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2Us
IGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZN
b3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm1dICgpIG11dGFibGUg
ewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAg
ICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9k
dWxlOjpjcmVhdGVTdHViKHZtLCBleGVjLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TW9kdWxl
U3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywg
c2NvcGUsIHByb21pc2UpOwogCi0gICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJv
bWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJbnN0YW5j
ZSk7CisgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyIG1vZHVsZUtleSA9IEpTVmFsdWUobW9k
dWxlS2V5Q2VsbCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVj
LCBzY29wZSwgcHJvbWlzZSk7CisKKyAgICAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBw
cm9taXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5LCByZXNvbHZlS2luZCwgbW9k
dWxlUnVuTW9kZSk7CiAgICAgICAgIH0pOwogICAgIH0pKTsKIH0KIAorSlNWYWx1ZSBXZWJBc3Nl
bWJseVByb3RvdHlwZTo6aW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIGFyZ3Vt
ZW50KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgY29tcGlsZUFuZEluc3RhbnRp
YXRlKHZtLCBleGVjLCBwcm9taXNlLCBtb2R1bGVLZXksIGFyZ3VtZW50LCBudWxscHRyLCBSZXNv
bHZlOjpXaXRoTW9kdWxlUmVjb3JkLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1v
ZGU6Ok5vbmUpOworICAgIHJldHVybiBwcm9taXNlLT5wcm9taXNlKCk7Cit9CisKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMjA2LDkgKzIy
Miw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5z
dGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgZmlyc3RBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgICAgICAg
ICAgaWYgKGF1dG8qIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+
KHZtLCBmaXJzdEFyZ3VtZW50KSkKLSAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhl
YywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhJbnN0YW5jZSk7
CisgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZSwg
aW1wb3J0T2JqZWN0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVL
ZXkoKSwgUmVzb2x2ZTo6V2l0aEluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVs
ZVJ1bk1vZGU6OlJ1bik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29tcGls
ZUFuZEluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBmaXJzdEFyZ3VtZW50LCBpbXBvcnRP
YmplY3QpOworICAgICAgICAgICAgICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywg
cHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCks
IGZpcnN0QXJndW1lbnQsIGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3Rh
bmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGU6OlJ1bik7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7
CkBAIC0yMjAsNyArMjM2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgdWludDhfdCogYmFzZTsKKyAgICBjb25zdCB1aW50OF90KiBiYXNlOwogICAgIHNpemVfdCBi
eXRlU2l6ZTsKICAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6ZSkgPSBnZXRXYXNtQnVmZmVyRnJv
bVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5oCmluZGV4IGQ1ZDBkNmNiZGVmN2IyYzlm
MjU3OTVlNWEwZGI1YmEwNWRjNDJkY2MuLmJiYjIyNmRiY2M2OTllM2YwZjBiOGFmMWM5NTQ3MDU1
OWM2OTU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlQcm90b3R5cGUuaApAQCAtNDIsNiArNDIsOCBAQCBjbGFzcyBXZWJBc3NlbWJseVBy
b3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVf
SU5GTzsKIAorICAgIHN0YXRpYyBKU1ZhbHVlIGluc3RhbnRpYXRlKEV4ZWNTdGF0ZSosIEpTUHJv
bWlzZURlZmVycmVkKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpOworCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337964</attachid>
            <date>2018-04-14 15:19:56 -0700</date>
            <delta_ts>2018-04-14 15:23:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184600-20180415071955.patch</filename>
            <type>text/plain</type>
            <size>49681</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmU4YThhOWJiMmIxMGI0YzI0M2FkNzEzN2Q5YTFjMjg1ZDhhNTIzLi40ZDMyNWUzM2QwZGY3MjZk
OGY4YzI5ZjczNThmMTEzNzAwNmY1YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOC0wNC0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIFByb3RvdHlwZSB3YXNtIGlt
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0
NjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBi
dWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanM6CisgICAgICAgIChyZXF1ZXN0SW5zdGFu
dGlhdGUpOgorICAgICAgICAobGluayk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGNv
bnZlcnRTaGViYW5nVG9KU0NvbW1lbnQpOgorICAgICAgICAoZmlsbEJ1ZmZlcldpdGhDb250ZW50
c09mRmlsZSk6CisgICAgICAgIChmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0pOgorICAg
ICAgICAoR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgICogcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5U291cmNlUHJvdmlk
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5U291cmNlUHJvdmlkZXI6Oldl
YkFzc2VtYmx5U291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJl
c29sdmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3Jk
OjpsaW5rKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToK
KyAgICAgICAgKEpTQzo6aWRlbnRpZmllclRvSlNWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlUGFyc2VNb2R1bGUpOgorICAgICAgICAoSlNDOjptb2R1
bGVMb2FkZXJQcm90b3R5cGVSZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyUHJvdG90eXBlTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OmdldFdhc21C
dWZmZXJGcm9tVmFsdWUpOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFs
dWUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KToK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6cHJl
cGFyZUxpbmspOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZl
KToKKyAgICAgICAgKEpTQzo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5k
SW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVByb3RvdHlwZTo6aW5zdGFu
dGlhdGUpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKToKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5UHJvdG90eXBlLmg6CisKIDIwMTgtMDQtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10gUmVtb3ZlIGR1cGxpY2F0ZSAzMmJp
dCBQcm9maWxlVHlwZSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMKaW5kZXggOTNmMjIyNTZk
NjczZDYxMjIwODBlMGViMWY0NmU2ZGMzMTViY2U0Yi4uNDJhMDA4ZGE3Zjk1MWFiYzAyZjIxNzkz
YjRhNWNkODdkN2JhNDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzCkBAIC0xOTcsMjIgKzE5NywyMyBAQCBm
dW5jdGlvbiByZXF1ZXN0SW5zdGFudGlhdGUoZW50cnksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAg
ICAgICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gaW5zdGFudGlhdGVQcm9taXNlOwogCiAgICAgICAg
IHZhciBrZXkgPSBlbnRyeS5rZXk7Ci0gICAgICAgIHZhciBtb2R1bGVSZWNvcmQgPSB0aGlzLnBh
cnNlTW9kdWxlKGtleSwgc291cmNlKTsKLSAgICAgICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG1v
ZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7Ci0gICAgICAgIHZhciByZXF1ZXN0ZWRNb2R1bGVz
ID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7Ci0gICAgICAgIHZhciBkZXBl
bmRlbmNpZXMgPSBAbmV3QXJyYXlXaXRoU2l6ZShyZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aCk7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZGVwTmFtZSA9IHJlcXVlc3RlZE1v
ZHVsZXNbaV07Ci0gICAgICAgICAgICB2YXIgZGVwS2V5ID0gdGhpcy5yZXNvbHZlU3luYyhkZXBO
YW1lLCBrZXksIGZldGNoZXIpOwotICAgICAgICAgICAgdmFyIGRlcEVudHJ5ID0gdGhpcy5lbnN1
cmVSZWdpc3RlcmVkKGRlcEtleSk7Ci0gICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwZW5k
ZW5jaWVzLCBpLCBkZXBFbnRyeSk7Ci0gICAgICAgICAgICBkZXBlbmRlbmNpZXNNYXAuQHNldChk
ZXBOYW1lLCBkZXBFbnRyeSk7Ci0gICAgICAgIH0KLSAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVz
ID0gZGVwZW5kZW5jaWVzOwotICAgICAgICBlbnRyeS5kZXBlbmRlbmNpZXNNYXAgPSBkZXBlbmRl
bmNpZXNNYXA7Ci0gICAgICAgIGVudHJ5Lm1vZHVsZSA9IG1vZHVsZVJlY29yZDsKLSAgICAgICAg
QHNldFN0YXRlVG9NYXgoZW50cnksIEBNb2R1bGVTYXRpc2Z5KTsKLSAgICAgICAgcmV0dXJuIGVu
dHJ5OworICAgICAgICByZXR1cm4gdGhpcy5wYXJzZU1vZHVsZShrZXksIHNvdXJjZSkudGhlbigo
bW9kdWxlUmVjb3JkKSA9PiB7CisgICAgICAgICAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbW9k
dWxlUmVjb3JkLmRlcGVuZGVuY2llc01hcDsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ZWRNb2R1
bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CisgICAgICAgICAgICB2
YXIgZGVwZW5kZW5jaWVzID0gQG5ld0FycmF5V2l0aFNpemUocmVxdWVzdGVkTW9kdWxlcy5sZW5n
dGgpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVs
ZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGVwTmFt
ZSA9IHJlcXVlc3RlZE1vZHVsZXNbaV07CisgICAgICAgICAgICAgICAgdmFyIGRlcEtleSA9IHRo
aXMucmVzb2x2ZVN5bmMoZGVwTmFtZSwga2V5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgICAgICB2
YXIgZGVwRW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoZGVwS2V5KTsKKyAgICAgICAgICAg
ICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwZW5kZW5jaWVzLCBpLCBkZXBFbnRyeSk7CisgICAgICAg
ICAgICAgICAgZGVwZW5kZW5jaWVzTWFwLkBzZXQoZGVwTmFtZSwgZGVwRW50cnkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzOwor
ICAgICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5kZW5jaWVzTWFwOworICAg
ICAgICAgICAgZW50cnkubW9kdWxlID0gbW9kdWxlUmVjb3JkOworICAgICAgICAgICAgQHNldFN0
YXRlVG9NYXgoZW50cnksIEBNb2R1bGVTYXRpc2Z5KTsKKyAgICAgICAgICAgIHJldHVybiBlbnRy
eTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGluc3RhbnRpYXRlUHJvbWlzZTsK
IH0KQEAgLTI4OCw3ICsyODksNyBAQCBmdW5jdGlvbiBsaW5rKGVudHJ5LCBmZXRjaGVyKQogICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxl
bmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5saW5rKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hl
cik7CiAKLSAgICAgICAgdGhpcy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnku
bW9kdWxlLCBlbnRyeS5rZXksIGZldGNoZXIpOworICAgICAgICB0aGlzLm1vZHVsZURlY2xhcmF0
aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1bGUsIGZldGNoZXIpOwogICAgIH0gY2F0Y2ggKGVy
cm9yKSB7CiAgICAgICAgIGVudHJ5LmxpbmtTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgZW50
cnkubGlua0Vycm9yID0gZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwYzdlZGM4ZjZl
NzBiMGEzNmE5Yjc5NTc1NWI2Njc2ODUyZjlkYjIuLjRlNTA0MzJiNjhiYWY5ZjQyMDhiOWM1NmJj
NWQ2YmIzMjNhMGZmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xODYsNyArMTg2LDggQEAg
c3RhdGljIHVuc2lnbmVkIGFzeW5jVGVzdEV4cGVjdGVkUGFzc2VzIHsgMCB9OwogCiB9CiAKLXN0
YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpOwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yPgor
c3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBWZWN0b3ImIGJ1ZmZlcik7CiBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxC
dWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CiAKIGNsYXNz
IENvbW1hbmRMaW5lOwpAQCAtODQ0LDcgKzg0NSw4IEBAIElkZW50aWZpZXIgR2xvYmFsT2JqZWN0
Ojptb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNT
CiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZXNvbHZlUGF0aChkaXJl
Y3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKTsKIH0KIAotc3RhdGlj
IHZvaWQgY29udmVydFNoZWJhbmdUb0pTQ29tbWVudChWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KK3N0YXRpYyB2b2lkIGNvbnZlcnRTaGViYW5nVG9KU0Nv
bW1lbnQoVmVjdG9yJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPj0gMikgewog
ICAgICAgICBpZiAoYnVmZmVyWzBdID09ICcjJyAmJiBidWZmZXJbMV0gPT0gJyEnKQpAQCAtODgy
LDcgKzg4NCw4IEBAIHN0YXRpYyBSZWZQdHI8VWludDhBcnJheT4gZmlsbEJ1ZmZlcldpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRklMRSogZmlsZSwg
VmVjdG9yPGNoYXI+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3I+CitzdGF0aWMg
Ym9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKEZJTEUqIGZpbGUsIFZlY3RvciYgYnVm
ZmVyKQogewogICAgIC8vIFdlIG1pZ2h0IGhhdmUgaW5qZWN0ZWQgInVzZSBzdHJpY3QiOyBhdCB0
aGUgdG9wLgogICAgIHNpemVfdCBpbml0aWFsU2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC05MjAs
NyArOTIzLDggQEAgc3RhdGljIGJvb2wgZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgVmVj
dG9yPgorc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIFZlY3RvciYgYnVmZmVyKQogewogICAgIC8vIFdlIGFzc3VtZSB0aGF0
IGZpbGVOYW1lIGlzIGFsd2F5cyBhbiBhYnNvbHV0ZSBwYXRoLgogI2lmIE9TKFdJTkRPV1MpCkBA
IC05NzEsMTMgKzk3NSwyNCBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIH0KIAogICAg
IC8vIEhlcmUsIG5vdyB3ZSBjb25zaWRlciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgotICAg
IFZlY3RvcjxjaGFyPiB1dGY4OworICAgIFZlY3Rvcjx1aW50OF90PiB1dGY4OwogICAgIGlmICgh
ZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKG1vZHVsZUtleSwgdXRmOCkpIHsKICAgICAg
ICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJyIsIG1vZHVsZUtleSwgIicuIikpKTsK
ICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIC8vIEZpbGVT
eXN0ZW0gZG9lcyBub3QgaGF2ZSBtaW1lLXR5cGUgaGVhZGVyLiBUaGUgSlNDIHNoZWxsIHJlY29n
bml6ZXMgV2ViQXNzZW1ibHkncyBtYWdpYyBoZWFkZXIuCisgICAgaWYgKHV0Zjguc2l6ZSgpID49
IDQpIHsKKyAgICAgICAgaWYgKHV0ZjhbMF0gPT0gJ1wwJyAmJiB1dGY4WzFdID09ICdhJyAmJiB1
dGY4WzJdID09ICdzJyAmJiB1dGY4WzNdID09ICdtJykgeworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBKU1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwgU291
cmNlQ29kZShXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoV1RGTW92ZSh1dGY4KSwg
U291cmNlT3JpZ2luIHsgbW9kdWxlS2V5IH0sIG1vZHVsZUtleSkpKSk7CisgICAgICAgICAgICBz
Y29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJy
ZWQtPnJlc29sdmUoZXhlYywgSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIG1ha2VTb3VyY2Uoc3Ry
aW5nRnJvbVVURih1dGY4KSwgU291cmNlT3JpZ2luIHsgbW9kdWxlS2V5IH0sIG1vZHVsZUtleSwg
VGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSkpOwogICAg
IHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKaW5kZXggMmU2
OGU4MjAyN2RiMjg1ODlmMzdiNGYwMGY2Y2Y4ODBiNGVhZmM4Mi4uMGQwYzJmYzg0Y2QwNWE1OGEz
MTIxMmEzNjlhZjc1YTU4MWEwMTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXIuaApAQCAtMTIwLDkgKzEyMCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBjbGFzcyBXZWJBc3NlbWJseVNvdXJjZVByb3Zp
ZGVyIDogcHVibGljIFNvdXJjZVByb3ZpZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBSZWY8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgdXJsKQorICAgICAgICBzdGF0aWMgUmVmPFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXI+IGNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9y
aWdpbiwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoZGF0YSwgc291cmNlT3JpZ2lu
LCB1cmwpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFzc2VtYmx5U291
cmNlUHJvdmlkZXIoV1RGTW92ZShkYXRhKSwgc291cmNlT3JpZ2luLCB1cmwpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZQpAQCAtMTQxLDEwICsx
NDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
LCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwpCisg
ICAgICAgIFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwg
Y29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsKQogICAg
ICAgICAgICAgOiBTb3VyY2VQcm92aWRlcihzb3VyY2VPcmlnaW4sIHVybCwgVGV4dFBvc2l0aW9u
KCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6V2ViQXNzZW1ibHkpCiAgICAgICAgICAgICAs
IG1fc291cmNlKCJbV2ViQXNzZW1ibHkgc291cmNlXSIpCi0gICAgICAgICAgICAsIG1fZGF0YShk
YXRhKQorICAgICAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAgICAgewogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3Ry
YWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3Ry
YWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCAzMzI1M2RmNTk2ZjcwOTI1MjI0YjM4NjhiZjg4MzNm
ZDA5ZGNjNDgxLi4yYzgwNDJkZmVkM2RlZDRhYTkxMThiZDA5YmIxYjc0MWIwZDUwNmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29y
ZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVS
ZWNvcmQuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRl
ICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIlVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEFic3RyYWN0TW9kdWxlUmVjb3JkSW50
ZXJuYWwgewpAQCAtMTM3LDE5ICsxMzksMTEgQEAgYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6
UmVzb2x1dGlvbjo6YW1iaWd1b3VzKCkgLT4gUmVzb2x1dGlvbgogICAgIHJldHVybiBSZXNvbHV0
aW9uIHsgVHlwZTo6QW1iaWd1b3VzLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKIH0KIAotc3Rh
dGljIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBp
ZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gU3ltYm9sOjpjcmVhdGUo
dm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKTsKLSAgICBy
ZXR1cm4ganNTdHJpbmcoJnZtLCBpZGVudGlmaWVyLmltcGwoKSk7Ci19Ci0KIEFic3RyYWN0TW9k
dWxlUmVjb3JkKiBBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSBtb2R1bGVOYW1lVmFsdWUgPSBpZGVudGlmaWVyVG9KU1ZhbHVl
KGV4ZWMsIG1vZHVsZU5hbWUpOworICAgIEpTVmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRp
ZmllclRvSlNWYWx1ZSh2bSwgbW9kdWxlTmFtZSk7CiAgICAgSlNWYWx1ZSBlbnRyeSA9IG1fZGVw
ZW5kZW5jaWVzTWFwLT5KU01hcDo6Z2V0KGV4ZWMsIG1vZHVsZU5hbWVWYWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwpA
QCAtNzc1LDYgKzc2OSwzMSBAQCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZShFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBt
b2R1bGVOYW1lc3BhY2VPYmplY3Q7CiB9CiAKK3ZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6Omxp
bmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWND
YXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQorICAgICAgICByZXR1cm4ganNNb2R1bGVS
ZWNvcmQtPmxpbmsoZXhlYywgc2NyaXB0RmV0Y2hlcik7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQorICAgIGlmIChhdXRvKiB3YXNtTW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkKKyAgICAgICAgcmV0dXJuIHdhc21Nb2R1bGVS
ZWNvcmQtPmxpbmsoZXhlYywgc2NyaXB0RmV0Y2hlcik7CisjZW5kaWYKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEFic3Ry
YWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWND
YXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQorICAgICAgICByZXR1cm4ganNNb2R1bGVS
ZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBpZiAo
YXV0byogd2FzbU1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQqPih2bSwgdGhpcykpCisgICAgICAgIHJldHVybiB3YXNtTW9kdWxlUmVjb3JkLT5ldmFs
dWF0ZShleGVjKTsKKyNlbmRpZgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFt
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCiB7CiAgICAgaWYgKHVpZC0+
aXNTeW1ib2woKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fi
c3RyYWN0TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5oCmluZGV4IDU5Mjk5NWI1MDYxOWNiZmU2Y2MyZmFkYTI4YjdlNmM0
YWIyODBjYjQuLjU1ODhiMmYwMzg3NGU4ZjRjMzViNTZiOGExN2VkZmQ3Njg4NmQ4OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3Jk
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNv
cmQuaApAQCAtMTE5LDYgKzExOSw5IEBAIGNsYXNzIEFic3RyYWN0TW9kdWxlUmVjb3JkIDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlRW52aXJv
bm1lbnQuZ2V0KCk7CiAgICAgfQogCisgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2NyaXB0RmV0Y2hlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShF
eGVjU3RhdGUqKTsKKwogcHJvdGVjdGVkOgogICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKFZNJiwg
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmNwcAppbmRleCAxYmUzYzdhYzM4NmZiYjE3ZTY1NjlmOThlOWY4Zjg0NDg1
NzZiNWQwLi45MDg1OTFkOTI4MGM4ZGY4ZDMzZjY1Y2YzMzk3OGIzMjc4YzAwZjA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC0y
NzUsMTAgKzI3NSw5IEBAIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjCiAgICAgaWYgKGdsb2JhbE9i
amVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRXZhbHVhdGUpCiAg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1v
ZHVsZUxvYWRlckV2YWx1YXRlKGdsb2JhbE9iamVjdCwgZXhlYywgdGhpcywga2V5LCBtb2R1bGVS
ZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7CiAKLSAgICBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPnZtKCksIG1vZHVs
ZVJlY29yZFZhbHVlKTsKLSAgICBpZiAoIW1vZHVsZVJlY29yZCkKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7Cisg
ICAgaWYgKGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVS
ZWNvcmQqPihleGVjLT52bSgpLCBtb2R1bGVSZWNvcmRWYWx1ZSkpCisgICAgICAgIHJldHVybiBt
b2R1bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
fQogCiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVMb2FkZXI6OmdldE1vZHVsZU5h
bWVzcGFjZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAK
aW5kZXggNmZhMmY3MmVhMmU3MjhlY2I0ODFlYmJiZDYyMjJmZTQzZjUyOWFkOS4uYTdjOTlkY2M0
ODMzMDYwYTljMzI2NWJmMzRiNWIxZmUyNTk4YmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSk7CiB9CiAKLXZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQordm9pZCBKU01vZHVsZVJl
Y29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKICAgICAg
ICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSwga2V5LCBzY3Jp
cHRGZXRjaGVyKTsKKyAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVjLCBleGVjdXRhYmxl
LCBzY3JpcHRGZXRjaGVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KHZtLCB0aGlzLCBleGVjdXRhYmxl
KTsKIH0KIAotdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhl
Y1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCit2b2lkIEpTTW9kdWxl
UmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgSlNNb2R1bGVS
ZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJv
Z3JhbUV4ZWN1CiAgICAgfQogCiAgICAgewotICAgICAgICBKU09iamVjdCogbWV0YVByb3BlcnRp
ZXMgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5jcmVhdGVJ
bXBvcnRNZXRhUHJvcGVydGllcyhleGVjLCBrZXksIHRoaXMsIHNjcmlwdEZldGNoZXIpOworICAg
ICAgICBKU09iamVjdCogbWV0YVByb3BlcnRpZXMgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPm1vZHVsZUxvYWRlcigpLT5jcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhleGVjLCBpZGVu
dGlmaWVyVG9KU1ZhbHVlKHZtLCBtb2R1bGVLZXkoKSksIHRoaXMsIHNjcmlwdEZldGNoZXIpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICBib29s
IHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2lu
dFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkubWV0YVByaXZhdGVOYW1lKCksIG1ldGFQcm9wZXJ0aWVzLCAvKiBzaG91bGRUaHJvd1Jl
YWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1
dFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuaAppbmRleCBjZGZjYzQwZWU1ODI5ZTcyNTc1MTRmOTgxN2U5OTM2ODA3MDk0OWJjLi5hYzJk
Y2ZhNmM1Mjk4YmQ3M2U0ZmRjMmNmNTFmMGNjMTU0MDdiY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xh
c3MgSlNNb2R1bGVSZWNvcmQgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RNb2R1bGVSZWNvcmQgewog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRl
KiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Jik7
CiAKLSAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcik7CisgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2NyaXB0RmV0Y2hl
cik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqKTsK
IAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZUNvZGU7IH0KQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgZmluYWwg
OiBwdWJsaWMgQWJzdHJhY3RNb2R1bGVSZWNvcmQgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOwogCi0gICAgdm9pZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqLCBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOworICAgIHZvaWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiAgICAgU291cmNl
Q29kZSBtX3NvdXJjZUNvZGU7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFy
aWFibGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAKaW5kZXggM2Q0ZjQ0YTE0NTk3ZWMxY2MwNWJjZjJjNzI2NGFh
MmViNTQ3ZmFlNC4uNGUwOTNlMTBhYTVkZTRjNjIxMjU3Njg3NWJmZjE4Njk1ZThkMzFhNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQ
cm90b3R5cGUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNs
dWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgorI2luY2x1ZGUgIldlYkFz
c2VtYmx5UHJvdG90eXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03Niw3ICs3Nyw3IEBA
IGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1vZHVs
ZUxvYWRlciIsICZCYXNlOjpzX2luZm8sCiAgICAgcmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAg
ICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAzCiAgICAgcmVxdWVzdFNhdGlzZnkgICAgICAgICAgICAgICAgIEpT
QnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAzCiAgICAgbGluayAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRp
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCi0gICAgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIG1vZHVsZUxvYWRlclBy
b3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBEb250RW51bXxGdW5jdGlvbiAz
CisgICAgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIG1vZHVsZUxvYWRlclByb3RvdHlw
ZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBEb250RW51bXxGdW5jdGlvbiAyCiAgICAg
bW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgZXZhbHVh
dGUgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUV2YWx1YXRlICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgcHJvdmlkZUZldGNo
ICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCkBAIC0xMDMsNDEgKzEwNCw1MiBAQCBN
b2R1bGVMb2FkZXJQcm90b3R5cGU6Ok1vZHVsZUxvYWRlclByb3RvdHlwZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJQcm90b3R5cGVQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpj
cmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBzY29wZS5yZWxl
YXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKKworICAgIGF1dG8gcmVqZWN0ID0gWyZdIHsKKyAgICAg
ICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKTsKKyAgICAgICAgc2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWZlcnJl
ZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbikpOworICAgIH07CiAKICAgICBjb25zdCBJZGVudGlm
aWVyIG1vZHVsZUtleSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdCgpOwog
Ci0gICAgYXV0byoganNTb3VyY2VDb2RlID0ganNEeW5hbWljQ2FzdDxKU1NvdXJjZUNvZGUqPih2
bSwgZXhlYy0+YXJndW1lbnQoMSkpOwotICAgIGlmICghanNTb3VyY2VDb2RlKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgSlNWYWx1ZSBzb3VyY2Ug
PSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBhdXRvKiBqc1NvdXJjZUNvZGUgPSBqc0Nhc3Q8SlNT
b3VyY2VDb2RlKj4oc291cmNlKTsKICAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBqc1NvdXJj
ZUNvZGUtPnNvdXJjZUNvZGUoKTsKIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBpZiAo
c291cmNlQ29kZS5wcm92aWRlcigpLT5zb3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpXZWJBc3NlbWJseSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXZWJB
c3NlbWJseVByb3RvdHlwZTo6aW5zdGFudGlhdGUoZXhlYywgZGVmZXJyZWQsIG1vZHVsZUtleSwg
anNTb3VyY2VDb2RlKSk7CisjZW5kaWYKKwogICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3Vy
Y2VDb2RlKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxN
b2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFt
Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmlj
dCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5h
bHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7Ci0KLSAgICBpZiAoZXJy
b3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgZXJyb3Iu
dG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9Cisg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSkpOwogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9k
ZSk7CiAKICAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVLZXks
IHNvdXJjZUNvZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxl
UHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCA9IG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKTsKKyAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gcmVqZWN0KCk7
CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZVJlY29yZCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBtb2R1bGVBbmFseXplci5h
bmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0g
anNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29y
ZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpIHsKICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpOwpAQCAtMTU3LDE0ICsxNjksMTQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVNb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24KIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCBleGVj
LT5hcmd1bWVudCgwKSk7CisgICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxB
YnN0cmFjdE1vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFt
b2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQogICAgICAg
ICBkYXRhTG9nKCJMb2FkZXIgW2xpbmtdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCksICJc
biIpOwogCi0gICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCBl
eGVjLT5hcmd1bWVudCgyKSk7CisgICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMu
aAppbmRleCBiZDA2ZDNjOWMyNTE2NWVjZGYwYjdiODQyYTIwOTE0ZDZlZDU5ZGE3Li5jNTEyODZi
N2RhOTYwYzczZWFhZTFmMjg3N2ZlNjI5MzkzNDdlNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgiCiAKQEAgLTQ5
LDEwICs1MCwxNiBAQCBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvTm9uV3JhcHBpbmdVaW50MzIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZG91YmxlVmFsdWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjx1aW50
OF90Kiwgc2l6ZV90PiBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3Q+IGdldFdhc21CdWZmZXJGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoYXV0byogc291cmNlID0ganNEeW5hbWlj
Q2FzdDxKU1NvdXJjZUNvZGUqPih2bSwgdmFsdWUpKSB7CisgICAgICAgIGF1dG8qIHByb3ZpZGVy
ID0gc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcio+KHNvdXJjZS0+c291cmNl
Q29kZSgpLnByb3ZpZGVyKCkpOworICAgICAgICByZXR1cm4geyBwcm92aWRlci0+ZGF0YSgpLmRh
dGEoKSwgcHJvdmlkZXItPmRhdGEoKS5zaXplKCkgfTsKKyAgICB9CisKICAgICAvLyBJZiB0aGUg
Z2l2ZW4gYnl0ZXMgYXJndW1lbnQgaXMgbm90IGEgQnVmZmVyU291cmNlLCBhIFR5cGVFcnJvciBl
eGNlcHRpb24gaXMgdGhyb3duLgogICAgIEpTQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdmFs
dWUuZ2V0T2JqZWN0KCkgPyBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgdmFsdWUu
Z2V0T2JqZWN0KCkpIDogbnVsbHB0cjsKICAgICBKU0FycmF5QnVmZmVyVmlldyogYXJyYXlCdWZm
ZXJWaWV3ID0gdmFsdWUuZ2V0T2JqZWN0KCkgPyBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJW
aWV3Kj4odm0sIHZhbHVlLmdldE9iamVjdCgpKSA6IG51bGxwdHI7CkBAIC03Niw3ICs4Myw3IEBA
IEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPHVpbnQ4X3QqLCBzaXplX3Q+IGdldFdhc21CdWZmZXJG
cm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjCiBBTFdBWVNfSU5MSU5FIFZlY3Rvcjx1aW50OF90PiBj
cmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgdWludDhfdCogZGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBkYXRhOwogICAgIHNp
emVfdCBieXRlU2l6ZTsKICAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6ZSkgPSBnZXRXYXNtQnVm
ZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDc3MWE2NDBhMzJi
ODU5OWEwNWEzZGY0NTM2MzdkZDZiNTNhOWM5MDcuLjIzNzk5OGM2OWQ5NGQxNTNiMTEzNjI5Yjlm
ZDhiNzQxMTNiNGI5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFu
Y2UoKS5pbXBvcnRGdW5jdGlvbjxQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRo
aXMgYWxzbyBrZWVwcyB0aGUgZnVuY3Rpb25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUu
CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2RlQmxvY2sp
Cit2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYywgUmVmPFdhc206OkNvZGVCbG9jaz4mJiB3YXNtQ29kZUJsb2NrLCBNb2R1
bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCiB7CiAgICAgbV9pbnN0YW5jZS0+ZmluYWxpemVDcmVh
dGlvbih0aGlzLCB3YXNtQ29kZUJsb2NrLmNvcHlSZWYoKSk7CiAKQEAgLTEyNywxNSArMTI3LDI0
IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6CiAgICAgfQogCiAgICAgYXV0byogbW9kdWxlUmVj
b3JkID0ganNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4obV9tb2R1bGVOYW1lc3BhY2VP
YmplY3QtPm1vZHVsZVJlY29yZCgpKTsKLSAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZXhlYywgbV9t
b2R1bGUuZ2V0KCksIHRoaXMpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgbW9kdWxlUmVjb3JkLT5wcmVwYXJlTGluayh2bSwgdGhpcyk7CiAKLSAgICBKU1Zh
bHVlIHN0YXJ0UmVzdWx0ID0gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShleGVjKTsKLSAgICBVTlVT
RURfUEFSQU0oc3RhcnRSZXN1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisgICAgaWYgKG1vZHVsZVJ1bk1vZGUgPT0gTW9kdWxlUnVuTW9kZTo6UnVuKSB7Cisg
ICAgICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBqc051bGwoKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAgSlNWYWx1ZSBzdGFydFJl
c3VsdCA9IG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7CisgICAgICAgIFVOVVNFRF9QQVJB
TShzdGFydFJlc3VsdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgfQorfQorCitJZGVudGlmaWVyIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRl
UHJpdmF0ZU1vZHVsZUtleSgpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21VaWQoUHJp
dmF0ZU5hbWUoUHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCAiV2ViQXNzZW1ibHlJbnN0YW5jZSIp
KTsKIH0KIAotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1
bGUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUs
IFJlZjxXYXNtOjpNb2R1bGU+JiYgbW9kdWxlKQorSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBqc01vZHVsZSwgSlNP
YmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdh
c206Ok1vZHVsZT4mJiBtb2R1bGUpCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwpAQCAtMTU4LDcgKzE2Nyw2IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
CiAgICAgaWYgKG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydHMuc2l6ZSgpICYmICFpbXBvcnRPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiY2FuJ3QgbWFrZSBXZWJBc3NlbWJseS5JbnN0YW5jZSBiZWNhdXNlIHRoZXJlIGlz
IG5vIGltcG9ydHMgT2JqZWN0IGFuZCB0aGUgV2ViQXNzZW1ibHkuTW9kdWxlIHJlcXVpcmVzIGlt
cG9ydHMiKSkpOwogCi0gICAgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKFByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgIldlYkFzc2VtYmx5SW5z
dGFuY2UiKSk7CiAgICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+d2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSwgbW9kdWxlS2V5LCBtb2R1bGVJbmZvcm1h
dGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaAppbmRleCBlZDliMmIxMThiZmQzYTBiN2VhOWQyYzQzMTFlNWFlMTkxNTZmZGYyLi4w
MzJiNTY1ZjA4MWUwZTA3MWJmY2RiM2FiZTc5Yjk5ZTc4OTEzZjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAt
NTAsMTIgKzUwLDE1IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBmaW5hbCA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0
aWJsZU9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3Jl
YXRlKFZNJiwgRXhlY1N0YXRlKiwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBv
cnRPYmplY3QsIFN0cnVjdHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOworICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKTsKKworICAgIHN0YXRpYyBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGNyZWF0ZShWTSYsIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFN0cnVjdHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgdm9pZCBmaW5hbGl6ZUNyZWF0aW9uKFZNJiwgRXhl
Y1N0YXRlKiwgUmVmPFdhc206OkNvZGVCbG9jaz4mJik7CisgICAgZW51bSBjbGFzcyBNb2R1bGVS
dW5Nb2RlIHsgUnVuLCBOb25lIH07CisgICAgdm9pZCBmaW5hbGl6ZUNyZWF0aW9uKFZNJiwgRXhl
Y1N0YXRlKiwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiwgTW9kdWxlUnVuTW9kZSk7CiAgICAgCiAg
ICAgV2FzbTo6SW5zdGFuY2UmIGluc3RhbmNlKCkgeyByZXR1cm4gbV9pbnN0YW5jZS5nZXQoKTsg
fQogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QoKSB7
IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsgfQpAQCAtNzYsNiArNzksOCBA
QCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogICAgICAgICBpbnN0YW5jZSgpLnNldFRhYmxlKG1ha2VSZWYoKnRhYmxlKCkt
PnRhYmxlKCkpKTsKICAgICB9CiAKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBj
b25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQorCiAgICAgc3RhdGljIHNpemVfdCBvZmZz
ZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3Nl
bWJseUluc3RhbmNlLCBtX2luc3RhbmNlKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQ
b2lzb25lZENhbGxlZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5z
dGFuY2UsIG1fY2FsbGVlKTsgfQogCkBAIC04OSw4ICs5NCw2IEBAIGNsYXNzIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSBmaW5hbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiBwcml2YXRl
OgotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlLmdldCgpOyB9Ci0KICAgICBQb2lzb25lZFJlZjxKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lz
b24sIFdhc206Okluc3RhbmNlPiBtX2luc3RhbmNlOwogCiAgICAgUG9pc29uZWRCYXJyaWVyPEpT
V2ViQXNzZW1ibHlNb2R1bGU+IG1fbW9kdWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggYjY3ODhmYTUwYzY0NTRhMjBkMzU3NTBkMjMwZjNlYmFjMDMyYzg4Yy4uNDk2MDk4
OTNhZTI1ZmU4ZjEyNzBmZGE2MWM1NmNjODEwMDMwZjExNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3IuY3BwCkBAIC03NywxMCArNzcsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgK
ICAgICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+
KG1vZHVsZS0+bW9kdWxlKCkpKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
ID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBtb2R1bGUsIGltcG9ydE9iamVjdCwg
aW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaW5zdGFuY2UtPmZp
bmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZt
Lndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dh
c21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pKTsKKyAgICBpbnN0YW5jZS0+Zmlu
YWxpemVDcmVhdGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0u
d2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2Fz
bVdyYXBwZXIsICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwCmluZGV4IGUzNDY0NmM2ZGI4MWQ4NmU2N2Y4MjA3N2FmODkzYTZkZGYyY2YzNmIuLjBl
NDg0NzU4YTRjMWQ2MTBkYjJhODhhZmQ3YzZjOWY2YmE1M2E0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKQEAgLTg2LDE0ICs4NiwyMyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKIH0KIAotdm9pZCBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIG1vZHVsZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKK3ZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OnByZXBhcmVMaW5rKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YW5jZSk7CisgICAg
bV9pbnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKK30KKwordm9pZCBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAKLSAgICBXYXNtOjpDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGluc3RhbmNlLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpOworICAgIFJFTEVBU0VfQVNT
RVJUKG1faW5zdGFuY2UpOworCisgICAgV2FzbTo6Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lu
c3RhbmNlLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUq
IG1vZHVsZSA9IG1faW5zdGFuY2UtPm1vZHVsZSgpOwogICAgIGNvbnN0IFdhc206Ok1vZHVsZUlu
Zm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24o
KTsKIAogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9IG1vZHVsZS0+ZXhwb3J0
U3ltYm9sVGFibGUoKTsKQEAgLTExMCwxMiArMTE5LDEyIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUsCiAgICAgICAgICAgICAvLyAgIGlpLiAoTm90ZTogQXQgbW9zdCBvbmUgd3JhcHBlciBpcyBj
cmVhdGVkIGZvciBhbnkgY2xvc3VyZSwgc28gZnVuYyBpcyB1bmlxdWUsIGV2ZW4gaWYgdGhlcmUg
YXJlIG11bHRpcGxlIG9jY3VycmFuY2VzIGluIHRoZSBsaXN0LiBNb3Jlb3ZlciwgaWYgdGhlIGl0
ZW0gd2FzIGFuIGltcG9ydCB0aGF0IGlzIGFscmVhZHkgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhv
dGljIE9iamVjdCwgdGhlbiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0IHdpbGwgYmUgZm91
bmQuIEZvciBpbXBvcnRzIHRoYXQgYXJlIHJlZ3VsYXIgSlMgZnVuY3Rpb25zLCBhIG5ldyB3cmFw
cGVyIHdpbGwgYmUgY3JlYXRlZC4pCiAgICAgICAgICAgICBpZiAoZXhwLmtpbmRJbmRleCA8IGZ1
bmN0aW9uSW1wb3J0Q291bnQpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdW5jdGlvbklu
ZGV4ID0gZXhwLmtpbmRJbmRleDsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25J
bXBvcnQgPSBpbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6OlBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQo
KTsKKyAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29u
ZWRCYXJyaWVyPEpTT2JqZWN0Pj4oZnVuY3Rpb25JbmRleCktPmdldCgpOwogICAgICAgICAgICAg
ICAgIGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBmdW5jdGlvbkltcG9ydCkpCiAg
ICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbkltcG9ydDsKICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5k
ZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5k
ZXhTcGFjZShmdW5jdGlvbkluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1
ZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIGluc3RhbmNlLCBzaWduYXR1cmVJbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBXZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uSW1wb3J0LCBmdW5jdGlv
bkluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyAgIGlpaS4gT3Ro
ZXJ3aXNlOgpAQCAtMTI2LDIzICsxMzUsMjMgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAg
ICAgICAgICAgICAgICBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9j
YXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNvZGVCbG9jay0+ZW50cnlwb2ludExvYWRM
b2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAg
ICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25h
dHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKICAgICAgICAg
ICAgICAgICBjb25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwotICAgICAgICAgICAgICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZzo6ZnJvbVVU
RjgoZXhwLmZpZWxkKSwgaW5zdGFuY2UsIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlw
b2ludExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZzo6ZnJvbVVU
RjgoZXhwLmZpZWxkKSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVl
LCBlbnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICAg
ICAgZXhwb3J0ZWRWYWx1ZSA9IGZ1bmN0aW9uOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxl
OiB7CiAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG1vZHVsZSB2
ZXJpZmljYXRpb24uCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnN0YW5jZS0+dGFibGUo
KSk7IAorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFibGUoKSk7IAog
ICAgICAgICAgICAgQVNTRVJUKGV4cC5raW5kSW5kZXggPT0gMCk7CiAKLSAgICAgICAgICAgIGV4
cG9ydGVkVmFsdWUgPSBpbnN0YW5jZS0+dGFibGUoKTsKKyAgICAgICAgICAgIGV4cG9ydGVkVmFs
dWUgPSBtX2luc3RhbmNlLT50YWJsZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogewogICAgICAgICAgICAg
QVNTRVJUKGV4cC5raW5kSW5kZXggPT0gMCk7CiAKLSAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUg
PSBpbnN0YW5jZS0+bWVtb3J5KCk7CisgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gbV9pbnN0
YW5jZS0+bWVtb3J5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFdhc206OkV4dGVybmFsS2luZDo6R2xvYmFsOiB7CkBAIC0xNTIsNyArMTYxLDcgQEAgdm9p
ZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNz
ZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgICAgIC8vIFJldHVybiBUb0pTVmFsdWUodiku
CiAgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbC50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFdh
c206OkkzMjoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShpbnN0YW5j
ZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKKyAgICAgICAgICAg
ICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJ
MzJHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgICAgICBjYXNlIFdhc206Okk2NDoKQEAgLTE2MCwxMSArMTY5LDExIEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9k
dWxlKiBtb2R1bGUsCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNl
IFdhc206OkYzMjoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShpbnN0
YW5jZS0+aW5zdGFuY2UoKS5sb2FkRjMyR2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKKyAgICAgICAg
ICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxv
YWRGMzJHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgICAgICBjYXNlIFdhc206OkY2NDoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVl
ID0gSlNWYWx1ZShpbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkRjY0R2xvYmFsKGV4cC5raW5kSW5k
ZXgpKTsKKyAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmxvYWRGNjRHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMTkxLDE4ICsyMDAsMTUgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2Vi
QXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgQVNTRVJUKCFzaWduYXR1cmUuYXJndW1l
bnRDb3VudCgpKTsKICAgICAgICAgQVNTRVJUKHNpZ25hdHVyZS5yZXR1cm5UeXBlKCkgPT0gV2Fz
bTo6Vm9pZCk7CiAgICAgICAgIGlmIChzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA8IGNvZGVCbG9j
ay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogc3RhcnRG
dW5jdGlvbiA9IGluc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oc3RhcnRGdW5jdGlvbkluZGV4
U3BhY2UpLT5nZXQoKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzdGFydEZ1bmN0aW9uID0gbV9p
bnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OlBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+KHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKS0+Z2V0
KCk7CiAgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBzdGFydEZ1bmN0
aW9uKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFdhc206OkNhbGxlZSYgZW1iZWRk
ZXJFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5lbWJlZGRlckVudHJ5cG9pbnRDYWxsZWVG
cm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAg
ICAgIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRMb2NhdGlvbiBlbnRy
eXBvaW50TG9hZExvY2F0aW9uID0gY29kZUJsb2NrLT5lbnRyeXBvaW50TG9hZExvY2F0aW9uRnJv
bUZ1bmN0aW9uSW5kZXhTcGFjZShzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSk7Ci0gICAgICAgICAg
ICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAic3RhcnQi
LCBpbnN0YW5jZSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0
aW9uLCBzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBm
dW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAic3RhcnQiLCBtX2luc3RhbmNlLmdldCgpLCBlbWJl
ZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUlu
ZGV4KTsKICAgICAgICAgICAgIG1fc3RhcnRGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGZ1bmN0aW9u
KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2luc3RhbmNlKTsK
LSAgICBtX2luc3RhbmNlLnNldCh2bSwgdGhpcywgaW5zdGFuY2UpOwogICAgIG1fbW9kdWxlRW52
aXJvbm1lbnQuc2V0KHZtLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5oCmluZGV4IGZjZTFkNjQ2MzkwMzU3MjA2MGM5ZDk5N2MxMGNlYmYwZGFjZGQ5ZDguLjQxN2Ew
YzYwODM3ZDQ1Y2ViNTYzMWY0YjBmNDc1ZGIzYjVmYjM4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaApAQCAt
NDgsNyArNDgsOCBAQCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCBmaW5hbCA6IHB1Ymxp
YyBBYnN0cmFjdE1vZHVsZVJlY29yZCB7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogCi0gICAg
dm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqKTsKKyAgICB2b2lkIHByZXBhcmVMaW5rKFZNJiwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKik7CisgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmNwcAppbmRleCA0NjQ0MWQzZDIyZjZhNmIyYTBkZGY1OTlhZWM1NGY2
M2YyZDRiMjZkLi5jZGQ0YmUwYThkNWIwMjBhODQzOTI2NjNiNWRkZWRhZTljNmNiNTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90
b3R5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIkpTVG9XYXNtLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhl
bHBlcnMuaCIKQEAgLTEyMCwxNSArMTIxLDE3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQogICAgIH0K
IH0KIAotZW51bSBjbGFzcyBSZXNvbHZlIHsgV2l0aEluc3RhbmNlLCBXaXRoTW9kdWxlQW5kSW5z
dGFuY2UgfTsKLXN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY29k
ZUJsb2NrLCBSZXNvbHZlIHJlc29sdmVLaW5kKQorZW51bSBjbGFzcyBSZXNvbHZlIHsgV2l0aElu
c3RhbmNlLCBXaXRoTW9kdWxlUmVjb3JkLCBXaXRoTW9kdWxlQW5kSW5zdGFuY2UgfTsKK3N0YXRp
YyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVk
KiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBtb2R1bGUsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY29kZUJsb2NrLCBSZXNvbHZl
IHJlc29sdmVLaW5kLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGUgbW9kdWxl
UnVuTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0g
ICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29kZUJsb2Nr
KSk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29k
ZUJsb2NrKSwgbW9kdWxlUnVuTW9kZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
cmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKSk7CiAKICAgICBpZiAocmVzb2x2ZUtpbmQgPT0g
UmVzb2x2ZTo6V2l0aEluc3RhbmNlKQogICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGlu
c3RhbmNlKTsKKyAgICBlbHNlIGlmIChyZXNvbHZlS2luZCA9PSBSZXNvbHZlOjpXaXRoTW9kdWxl
UmVjb3JkKQorICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGluc3RhbmNlLT5tb2R1bGVO
YW1lc3BhY2VPYmplY3QoKS0+bW9kdWxlUmVjb3JkKCkpOwogICAgIGVsc2UgewogICAgICAgICBK
U09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRl
cmFsKCJtb2R1bGUiKSksIG1vZHVsZSk7CkBAIC0xMzgsMTEgKzE0MSwxMSBAQCBzdGF0aWMgdm9p
ZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJv
bWlzZSwgSlNXZWJBcwogICAgIENMRUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogfQogCi1zdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1v
ZHVsZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgUmVzb2x2ZSByZXNvbHZlS2luZCkKK3N0YXRp
YyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1w
b3J0T2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIFJlc29sdmUgcmVzb2x2ZUtp
bmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1bGVSdW5Nb2RlKQog
ewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAvLyBJbiBv
cmRlciB0byBhdm9pZCBwb3RlbnRpYWxseSByZWNvbXBpbGluZyBhIG1vZHVsZS4gV2UgZmlyc3Qg
Z2F0aGVyIGFsbCB0aGUgaW1wb3J0L21lbW9yeSBpbmZvcm1hdGlvbiBwcmlvciB0byBjb21waWxp
bmcgY29kZS4KLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwg
UmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUoKSkpOworICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhl
YywgbW9kdWxlS2V5LCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCksIFJlZjxXYXNtOjpNb2R1bGU+
KG1vZHVsZS0+bW9kdWxlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWpl
Y3QoZXhlYywgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4g
ZGVwZW5kZW5jaWVzOwpAQCAtMTUwLDQxICsxNTMsNTQgQEAgc3RhdGljIHZvaWQgaW5zdGFudGlh
dGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBK
U1cKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbnN0YW5jZSkp
OwogICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNl
LCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogICAgIC8vIE5vdGU6IFRoaXMgY29tcGxldGlvbiB0
YXNrIG1heSBvciBtYXkgbm90IGdldCBjYWxsZWQgaW1tZWRpYXRlbHkuCi0gICAgbW9kdWxlLT5t
b2R1bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9k
ZSgpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihbcHJv
bWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgcmVzb2x2ZUtpbmQsICZ2bV0gKFJlZjxXYXNtOjpDb2Rl
QmxvY2s+JiYgcmVmQ29kZUJsb2NrKSBtdXRhYmxlIHsKKyAgICBtb2R1bGUtPm1vZHVsZSgpLmNv
bXBpbGVBc3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksIGNyZWF0
ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJsb2NrOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbnN0
YW5jZSwgbW9kdWxlLCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoUmVmPFdhc206
OkNvZGVCbG9jaz4mJiByZWZDb2RlQmxvY2spIG11dGFibGUgewogICAgICAgICBSZWZQdHI8V2Fz
bTo6Q29kZUJsb2NrPiBjb2RlQmxvY2sgPSBXVEZNb3ZlKHJlZkNvZGVCbG9jayk7Ci0gICAgICAg
IHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9t
aXNlLCBpbnN0YW5jZSwgbW9kdWxlLCByZXNvbHZlS2luZCwgJnZtLCBjb2RlQmxvY2sgPSBXVEZN
b3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5wcm9taXNlRGVmZXJyZWRU
aW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVs
ZSwgcmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShj
b2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGlu
c3RhbmNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICAgICAgcmVzb2x2
ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgY29kZUJsb2NrLnJlbGVhc2VO
b25OdWxsKCksIHJlc29sdmVLaW5kKTsKKyAgICAgICAgICAgIHJlc29sdmUodm0sIGV4ZWMsIHBy
b21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNv
bHZlS2luZCwgbW9kdWxlUnVuTW9kZSk7CiAgICAgICAgIH0pOwogICAgIH0pLCAmV2FzbTo6Y3Jl
YXRlSlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pOwogfQogCi1zdGF0
aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3QqIGltcG9y
dE9iamVjdCkKK3N0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgSlNWYWx1ZSBidWZmZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFJlc29s
dmUgcmVzb2x2ZUtpbmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1
bGVSdW5Nb2RlKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
IAogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
IAorICAgIEpTQ2VsbCogbW9kdWxlS2V5Q2VsbCA9IGpzQ2FzdDxKU0NlbGwqPihpZGVudGlmaWVy
VG9KU1ZhbHVlKHZtLCBtb2R1bGVLZXkpKTsKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRl
cGVuZGVuY2llczsKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBp
bXBvcnRPYmplY3QpKTsKKyAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZt
LCBtb2R1bGVLZXlDZWxsKSk7CiAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPmFkZFBlbmRp
bmdQcm9taXNlKHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CiAKICAgICBWZWN0b3I8
dWludDhfdD4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVjLCBi
dWZmZXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChleGVjLCBzY29w
ZSwgcHJvbWlzZSkpOwogCi0gICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNt
Q29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6
Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsICZ2bV0g
KFdhc206Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtw
cm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpLCAmdm1dICgpIG11dGFibGUgeworICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygm
dm0ud2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpN
b2R1bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2Vs
bCwgZ2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoV2FzbTo6
TW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgdm0u
cHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2Us
IGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZN
b3ZlKHJlc3VsdCksIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm1dICgpIG11dGFibGUg
ewogICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAg
ICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBKU1dlYkFzc2VtYmx5TW9k
dWxlOjpjcmVhdGVTdHViKHZtLCBleGVjLCBnbG9iYWxPYmplY3QtPldlYkFzc2VtYmx5TW9kdWxl
U3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywg
c2NvcGUsIHByb21pc2UpOwogCi0gICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJv
bWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJbnN0YW5j
ZSk7CisgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyIG1vZHVsZUtleSA9IEpTVmFsdWUobW9k
dWxlS2V5Q2VsbCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVj
LCBzY29wZSwgcHJvbWlzZSk7CisKKyAgICAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBw
cm9taXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5LCByZXNvbHZlS2luZCwgbW9k
dWxlUnVuTW9kZSk7CiAgICAgICAgIH0pOwogICAgIH0pKTsKIH0KIAorSlNWYWx1ZSBXZWJBc3Nl
bWJseVByb3RvdHlwZTo6aW5zdGFudGlhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1ZhbHVlIGFyZ3Vt
ZW50KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgY29tcGlsZUFuZEluc3RhbnRp
YXRlKHZtLCBleGVjLCBwcm9taXNlLCBtb2R1bGVLZXksIGFyZ3VtZW50LCBudWxscHRyLCBSZXNv
bHZlOjpXaXRoTW9kdWxlUmVjb3JkLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1v
ZGU6Ok5vbmUpOworICAgIHJldHVybiBwcm9taXNlLT5wcm9taXNlKCk7Cit9CisKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMjA2LDkgKzIy
Miw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5z
dGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgZmlyc3RBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgICAgICAg
ICAgaWYgKGF1dG8qIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+
KHZtLCBmaXJzdEFyZ3VtZW50KSkKLSAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhl
YywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhJbnN0YW5jZSk7
CisgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZSwg
aW1wb3J0T2JqZWN0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVL
ZXkoKSwgUmVzb2x2ZTo6V2l0aEluc3RhbmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVs
ZVJ1bk1vZGU6OlJ1bik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29tcGls
ZUFuZEluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBmaXJzdEFyZ3VtZW50LCBpbXBvcnRP
YmplY3QpOworICAgICAgICAgICAgICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZXhlYywg
cHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCks
IGZpcnN0QXJndW1lbnQsIGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3Rh
bmNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGU6OlJ1bik7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7
CkBAIC0yMjAsNyArMjM2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgdWludDhfdCogYmFzZTsKKyAgICBjb25zdCB1aW50OF90KiBiYXNlOwogICAgIHNpemVfdCBi
eXRlU2l6ZTsKICAgICBzdGQ6OnRpZShiYXNlLCBieXRlU2l6ZSkgPSBnZXRXYXNtQnVmZmVyRnJv
bVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5oCmluZGV4IGQ1ZDBkNmNiZGVmN2IyYzlm
MjU3OTVlNWEwZGI1YmEwNWRjNDJkY2MuLmJiYjIyNmRiY2M2OTllM2YwZjBiOGFmMWM5NTQ3MDU1
OWM2OTU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlQcm90b3R5cGUuaApAQCAtNDIsNiArNDIsOCBAQCBjbGFzcyBXZWJBc3NlbWJseVBy
b3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVf
SU5GTzsKIAorICAgIHN0YXRpYyBKU1ZhbHVlIGluc3RhbnRpYXRlKEV4ZWNTdGF0ZSosIEpTUHJv
bWlzZURlZmVycmVkKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUpOworCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337965</attachid>
            <date>2018-04-14 15:23:23 -0700</date>
            <delta_ts>2018-04-16 04:33:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184600-20180415072321.patch</filename>
            <type>text/plain</type>
            <size>49673</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmU4YThhOWJiMmIxMGI0YzI0M2FkNzEzN2Q5YTFjMjg1ZDhhNTIzLi40ZDMyNWUzM2QwZGY3MjZk
OGY4YzI5ZjczNThmMTEzNzAwNmY1YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOC0wNC0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIFByb3RvdHlwZSB3YXNtIGlt
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0
NjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBi
dWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanM6CisgICAgICAgIChyZXF1ZXN0SW5zdGFu
dGlhdGUpOgorICAgICAgICAobGluayk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGNv
bnZlcnRTaGViYW5nVG9KU0NvbW1lbnQpOgorICAgICAgICAoZmlsbEJ1ZmZlcldpdGhDb250ZW50
c09mRmlsZSk6CisgICAgICAgIChmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0pOgorICAg
ICAgICAoR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaCk6CisgICAgICAgICogcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5U291cmNlUHJvdmlk
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5U291cmNlUHJvdmlkZXI6Oldl
YkFzc2VtYmx5U291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJl
c29sdmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3Jk
OjpsaW5rKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToK
KyAgICAgICAgKEpTQzo6aWRlbnRpZmllclRvSlNWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50
aWF0ZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlUGFyc2VNb2R1bGUpOgorICAgICAgICAoSlNDOjptb2R1
bGVMb2FkZXJQcm90b3R5cGVSZXF1ZXN0ZWRNb2R1bGVzKToKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyUHJvdG90eXBlTW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OmdldFdhc21C
dWZmZXJGcm9tVmFsdWUpOgorICAgICAgICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFs
dWUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KToK
KyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAq
IHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RK
U1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6cHJl
cGFyZUxpbmspOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZl
KToKKyAgICAgICAgKEpTQzo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5k
SW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVByb3RvdHlwZTo6aW5zdGFu
dGlhdGUpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyk6CisgICAg
ICAgIChKU0M6OndlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKToKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5UHJvdG90eXBlLmg6CisKIDIwMTgtMDQtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10gUmVtb3ZlIGR1cGxpY2F0ZSAzMmJp
dCBQcm9maWxlVHlwZSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuanMKaW5kZXggOTNmMjIyNTZk
NjczZDYxMjIwODBlMGViMWY0NmU2ZGMzMTViY2U0Yi4uNDJhMDA4ZGE3Zjk1MWFiYzAyZjIxNzkz
YjRhNWNkODdkN2JhNDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzCkBAIC0xOTcsMjIgKzE5NywyMyBAQCBm
dW5jdGlvbiByZXF1ZXN0SW5zdGFudGlhdGUoZW50cnksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAg
ICAgICAgIGVudHJ5Lmluc3RhbnRpYXRlID0gaW5zdGFudGlhdGVQcm9taXNlOwogCiAgICAgICAg
IHZhciBrZXkgPSBlbnRyeS5rZXk7Ci0gICAgICAgIHZhciBtb2R1bGVSZWNvcmQgPSB0aGlzLnBh
cnNlTW9kdWxlKGtleSwgc291cmNlKTsKLSAgICAgICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG1v
ZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7Ci0gICAgICAgIHZhciByZXF1ZXN0ZWRNb2R1bGVz
ID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7Ci0gICAgICAgIHZhciBkZXBl
bmRlbmNpZXMgPSBAbmV3QXJyYXlXaXRoU2l6ZShyZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aCk7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZGVwTmFtZSA9IHJlcXVlc3RlZE1v
ZHVsZXNbaV07Ci0gICAgICAgICAgICB2YXIgZGVwS2V5ID0gdGhpcy5yZXNvbHZlU3luYyhkZXBO
YW1lLCBrZXksIGZldGNoZXIpOwotICAgICAgICAgICAgdmFyIGRlcEVudHJ5ID0gdGhpcy5lbnN1
cmVSZWdpc3RlcmVkKGRlcEtleSk7Ci0gICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwZW5k
ZW5jaWVzLCBpLCBkZXBFbnRyeSk7Ci0gICAgICAgICAgICBkZXBlbmRlbmNpZXNNYXAuQHNldChk
ZXBOYW1lLCBkZXBFbnRyeSk7Ci0gICAgICAgIH0KLSAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVz
ID0gZGVwZW5kZW5jaWVzOwotICAgICAgICBlbnRyeS5kZXBlbmRlbmNpZXNNYXAgPSBkZXBlbmRl
bmNpZXNNYXA7Ci0gICAgICAgIGVudHJ5Lm1vZHVsZSA9IG1vZHVsZVJlY29yZDsKLSAgICAgICAg
QHNldFN0YXRlVG9NYXgoZW50cnksIEBNb2R1bGVTYXRpc2Z5KTsKLSAgICAgICAgcmV0dXJuIGVu
dHJ5OworICAgICAgICByZXR1cm4gdGhpcy5wYXJzZU1vZHVsZShrZXksIHNvdXJjZSkudGhlbigo
bW9kdWxlUmVjb3JkKSA9PiB7CisgICAgICAgICAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbW9k
dWxlUmVjb3JkLmRlcGVuZGVuY2llc01hcDsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ZWRNb2R1
bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CisgICAgICAgICAgICB2
YXIgZGVwZW5kZW5jaWVzID0gQG5ld0FycmF5V2l0aFNpemUocmVxdWVzdGVkTW9kdWxlcy5sZW5n
dGgpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlcXVlc3RlZE1vZHVs
ZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgZGVwTmFt
ZSA9IHJlcXVlc3RlZE1vZHVsZXNbaV07CisgICAgICAgICAgICAgICAgdmFyIGRlcEtleSA9IHRo
aXMucmVzb2x2ZVN5bmMoZGVwTmFtZSwga2V5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgICAgICB2
YXIgZGVwRW50cnkgPSB0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoZGVwS2V5KTsKKyAgICAgICAgICAg
ICAgICBAcHV0QnlWYWxEaXJlY3QoZGVwZW5kZW5jaWVzLCBpLCBkZXBFbnRyeSk7CisgICAgICAg
ICAgICAgICAgZGVwZW5kZW5jaWVzTWFwLkBzZXQoZGVwTmFtZSwgZGVwRW50cnkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzID0gZGVwZW5kZW5jaWVzOwor
ICAgICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5kZW5jaWVzTWFwOworICAg
ICAgICAgICAgZW50cnkubW9kdWxlID0gbW9kdWxlUmVjb3JkOworICAgICAgICAgICAgQHNldFN0
YXRlVG9NYXgoZW50cnksIEBNb2R1bGVTYXRpc2Z5KTsKKyAgICAgICAgICAgIHJldHVybiBlbnRy
eTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGluc3RhbnRpYXRlUHJvbWlzZTsK
IH0KQEAgLTI4OCw3ICsyODksNyBAQCBmdW5jdGlvbiBsaW5rKGVudHJ5LCBmZXRjaGVyKQogICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxl
bmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5saW5rKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hl
cik7CiAKLSAgICAgICAgdGhpcy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnku
bW9kdWxlLCBlbnRyeS5rZXksIGZldGNoZXIpOworICAgICAgICB0aGlzLm1vZHVsZURlY2xhcmF0
aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1bGUsIGZldGNoZXIpOwogICAgIH0gY2F0Y2ggKGVy
cm9yKSB7CiAgICAgICAgIGVudHJ5LmxpbmtTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgZW50
cnkubGlua0Vycm9yID0gZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDQwYzdlZGM4ZjZl
NzBiMGEzNmE5Yjc5NTc1NWI2Njc2ODUyZjlkYjIuLjRlNTA0MzJiNjhiYWY5ZjQyMDhiOWM1NmJj
NWQ2YmIzMjNhMGZmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xODYsNyArMTg2LDggQEAg
c3RhdGljIHVuc2lnbmVkIGFzeW5jVGVzdEV4cGVjdGVkUGFzc2VzIHsgMCB9OwogCiB9CiAKLXN0
YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpOwordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yPgor
c3RhdGljIGJvb2wgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBWZWN0b3ImIGJ1ZmZlcik7CiBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxC
dWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CiAKIGNsYXNz
IENvbW1hbmRMaW5lOwpAQCAtODQ0LDcgKzg0NSw4IEBAIElkZW50aWZpZXIgR2xvYmFsT2JqZWN0
Ojptb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEV4ZWNT
CiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZXNvbHZlUGF0aChkaXJl
Y3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKTsKIH0KIAotc3RhdGlj
IHZvaWQgY29udmVydFNoZWJhbmdUb0pTQ29tbWVudChWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KK3N0YXRpYyB2b2lkIGNvbnZlcnRTaGViYW5nVG9KU0Nv
bW1lbnQoVmVjdG9yJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPj0gMikgewog
ICAgICAgICBpZiAoYnVmZmVyWzBdID09ICcjJyAmJiBidWZmZXJbMV0gPT0gJyEnKQpAQCAtODgy
LDcgKzg4NCw4IEBAIHN0YXRpYyBSZWZQdHI8VWludDhBcnJheT4gZmlsbEJ1ZmZlcldpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXN0YXRpYyBib29sIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRklMRSogZmlsZSwg
VmVjdG9yPGNoYXI+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3I+CitzdGF0aWMg
Ym9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKEZJTEUqIGZpbGUsIFZlY3RvciYgYnVm
ZmVyKQogewogICAgIC8vIFdlIG1pZ2h0IGhhdmUgaW5qZWN0ZWQgInVzZSBzdHJpY3QiOyBhdCB0
aGUgdG9wLgogICAgIHNpemVfdCBpbml0aWFsU2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC05MjAs
NyArOTIzLDggQEAgc3RhdGljIGJvb2wgZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgVmVj
dG9yPgorc3RhdGljIGJvb2wgZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIFZlY3RvciYgYnVmZmVyKQogewogICAgIC8vIFdlIGFzc3VtZSB0aGF0
IGZpbGVOYW1lIGlzIGFsd2F5cyBhbiBhYnNvbHV0ZSBwYXRoLgogI2lmIE9TKFdJTkRPV1MpCkBA
IC05NzEsMTMgKzk3NSwyNCBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIH0KIAogICAg
IC8vIEhlcmUsIG5vdyB3ZSBjb25zaWRlciBtb2R1bGVLZXkgYXMgdGhlIGZpbGVOYW1lLgotICAg
IFZlY3RvcjxjaGFyPiB1dGY4OworICAgIFZlY3Rvcjx1aW50OF90PiB1dGY4OwogICAgIGlmICgh
ZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKG1vZHVsZUtleSwgdXRmOCkpIHsKICAgICAg
ICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJyIsIG1vZHVsZUtleSwgIicuIikpKTsK
ICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQorICAgIC8vIEZpbGVT
eXN0ZW0gZG9lcyBub3QgaGF2ZSBtaW1lLXR5cGUgaGVhZGVyLiBUaGUgSlNDIHNoZWxsIHJlY29n
bml6ZXMgV2ViQXNzZW1ibHkncyBtYWdpYyBoZWFkZXIuCisgICAgaWYgKHV0Zjguc2l6ZSgpID49
IDQpIHsKKyAgICAgICAgaWYgKHV0ZjhbMF0gPT0gJ1wwJyAmJiB1dGY4WzFdID09ICdhJyAmJiB1
dGY4WzJdID09ICdzJyAmJiB1dGY4WzNdID09ICdtJykgeworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBKU1NvdXJjZUNvZGU6OmNyZWF0ZSh2bSwgU291
cmNlQ29kZShXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyOjpjcmVhdGUoV1RGTW92ZSh1dGY4KSwg
U291cmNlT3JpZ2luIHsgbW9kdWxlS2V5IH0sIG1vZHVsZUtleSkpKSk7CisgICAgICAgICAgICBz
Y29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJy
ZWQtPnJlc29sdmUoZXhlYywgSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIG1ha2VTb3VyY2Uoc3Ry
aW5nRnJvbVVURih1dGY4KSwgU291cmNlT3JpZ2luIHsgbW9kdWxlS2V5IH0sIG1vZHVsZUtleSwg
VGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSkpOwogICAg
IHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKaW5kZXggMmU2
OGU4MjAyN2RiMjg1ODlmMzdiNGYwMGY2Y2Y4ODBiNGVhZmM4Mi4uMGQwYzJmYzg0Y2QwNWE1OGEz
MTIxMmEzNjlhZjc1YTU4MWEwMTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXIuaApAQCAtMTIwLDkgKzEyMCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBjbGFzcyBXZWJBc3NlbWJseVNvdXJjZVByb3Zp
ZGVyIDogcHVibGljIFNvdXJjZVByb3ZpZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBSZWY8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgdXJsKQorICAgICAgICBzdGF0aWMgUmVmPFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXI+IGNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9y
aWdpbiwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoZGF0YSwgc291cmNlT3JpZ2lu
LCB1cmwpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFzc2VtYmx5U291
cmNlUHJvdmlkZXIoV1RGTW92ZShkYXRhKSwgc291cmNlT3JpZ2luLCB1cmwpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCBvdmVycmlkZQpAQCAtMTQxLDEwICsx
NDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
LCBjb25zdCBTb3VyY2VPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwpCisg
ICAgICAgIFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwg
Y29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsKQogICAg
ICAgICAgICAgOiBTb3VyY2VQcm92aWRlcihzb3VyY2VPcmlnaW4sIHVybCwgVGV4dFBvc2l0aW9u
KCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6V2ViQXNzZW1ibHkpCiAgICAgICAgICAgICAs
IG1fc291cmNlKCJbV2ViQXNzZW1ibHkgc291cmNlXSIpCi0gICAgICAgICAgICAsIG1fZGF0YShk
YXRhKQorICAgICAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAgICAgewogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3Ry
YWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3Ry
YWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCAzMzI1M2RmNTk2ZjcwOTI1MjI0YjM4NjhiZjg4MzNm
ZDA5ZGNjNDgxLi4yYzgwNDJkZmVkM2RlZDRhYTkxMThiZDA5YmIxYjc0MWIwZDUwNmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29y
ZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVS
ZWNvcmQuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRl
ICJKU01vZHVsZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIlVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jay5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogbmFtZXNwYWNlIEFic3RyYWN0TW9kdWxlUmVjb3JkSW50
ZXJuYWwgewpAQCAtMTM3LDE5ICsxMzksMTEgQEAgYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6
UmVzb2x1dGlvbjo6YW1iaWd1b3VzKCkgLT4gUmVzb2x1dGlvbgogICAgIHJldHVybiBSZXNvbHV0
aW9uIHsgVHlwZTo6QW1iaWd1b3VzLCBudWxscHRyLCBJZGVudGlmaWVyKCkgfTsKIH0KIAotc3Rh
dGljIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBp
ZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gU3ltYm9sOjpjcmVhdGUo
dm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKTsKLSAgICBy
ZXR1cm4ganNTdHJpbmcoJnZtLCBpZGVudGlmaWVyLmltcGwoKSk7Ci19Ci0KIEFic3RyYWN0TW9k
dWxlUmVjb3JkKiBBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNWYWx1ZSBtb2R1bGVOYW1lVmFsdWUgPSBpZGVudGlmaWVyVG9KU1ZhbHVl
KGV4ZWMsIG1vZHVsZU5hbWUpOworICAgIEpTVmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRp
ZmllclRvSlNWYWx1ZSh2bSwgbW9kdWxlTmFtZSk7CiAgICAgSlNWYWx1ZSBlbnRyeSA9IG1fZGVw
ZW5kZW5jaWVzTWFwLT5KU01hcDo6Z2V0KGV4ZWMsIG1vZHVsZU5hbWVWYWx1ZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwpA
QCAtNzc1LDYgKzc2OSwzMSBAQCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZShFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBt
b2R1bGVOYW1lc3BhY2VPYmplY3Q7CiB9CiAKK3ZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6Omxp
bmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWND
YXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQorICAgICAgICByZXR1cm4ganNNb2R1bGVS
ZWNvcmQtPmxpbmsoZXhlYywgc2NyaXB0RmV0Y2hlcik7CisjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQorICAgIGlmIChhdXRvKiB3YXNtTW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkKKyAgICAgICAgcmV0dXJuIHdhc21Nb2R1bGVS
ZWNvcmQtPmxpbmsoZXhlYywgc2NyaXB0RmV0Y2hlcik7CisjZW5kaWYKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEFic3Ry
YWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWND
YXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQorICAgICAgICByZXR1cm4ganNNb2R1bGVS
ZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBpZiAo
YXV0byogd2FzbU1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQqPih2bSwgdGhpcykpCisgICAgICAgIHJldHVybiB3YXNtTW9kdWxlUmVjb3JkLT5ldmFs
dWF0ZShleGVjKTsKKyNlbmRpZgorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIHN0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFt
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiB1aWQpCiB7CiAgICAgaWYgKHVpZC0+
aXNTeW1ib2woKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fi
c3RyYWN0TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5oCmluZGV4IDU5Mjk5NWI1MDYxOWNiZmU2Y2MyZmFkYTI4YjdlNmM0
YWIyODBjYjQuLjU1ODhiMmYwMzg3NGU4ZjRjMzViNTZiOGExN2VkZmQ3Njg4NmQ4OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3Jk
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNv
cmQuaApAQCAtMTE5LDYgKzExOSw5IEBAIGNsYXNzIEFic3RyYWN0TW9kdWxlUmVjb3JkIDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlRW52aXJv
bm1lbnQuZ2V0KCk7CiAgICAgfQogCisgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
c2NyaXB0RmV0Y2hlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShF
eGVjU3RhdGUqKTsKKwogcHJvdGVjdGVkOgogICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkKFZNJiwg
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
RXhlY1N0YXRlKiwgVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmNwcAppbmRleCAxYmUzYzdhYzM4NmZiYjE3ZTY1NjlmOThlOWY4Zjg0NDg1
NzZiNWQwLi45MDg1OTFkOTI4MGM4ZGY4ZDMzZjY1Y2YzMzk3OGIzMjc4YzAwZjA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC0y
NzUsMTAgKzI3NSw5IEBAIEpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjCiAgICAgaWYgKGdsb2JhbE9i
amVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRXZhbHVhdGUpCiAg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1v
ZHVsZUxvYWRlckV2YWx1YXRlKGdsb2JhbE9iamVjdCwgZXhlYywgdGhpcywga2V5LCBtb2R1bGVS
ZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7CiAKLSAgICBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KGV4ZWMtPnZtKCksIG1vZHVs
ZVJlY29yZFZhbHVlKTsKLSAgICBpZiAoIW1vZHVsZVJlY29yZCkKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7Cisg
ICAgaWYgKGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVS
ZWNvcmQqPihleGVjLT52bSgpLCBtb2R1bGVSZWNvcmRWYWx1ZSkpCisgICAgICAgIHJldHVybiBt
b2R1bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
fQogCiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVMb2FkZXI6OmdldE1vZHVsZU5h
bWVzcGFjZU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAK
aW5kZXggNmZhMmY3MmVhMmU3MjhlY2I0ODFlYmJiZDYyMjJmZTQzZjUyOWFkOS4uYTdjOTlkY2M0
ODMzMDYwYTljMzI2NWJmMzRiNWIxZmUyNTk4YmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSk7CiB9CiAKLXZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQordm9pZCBKU01vZHVsZVJl
Y29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKICAgICAg
ICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSwga2V5LCBzY3Jp
cHRGZXRjaGVyKTsKKyAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVjLCBleGVjdXRhYmxl
LCBzY3JpcHRGZXRjaGVyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwogICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KHZtLCB0aGlzLCBleGVjdXRhYmxl
KTsKIH0KIAotdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhl
Y1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCit2b2lkIEpTTW9kdWxl
UmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgSlNNb2R1bGVS
ZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJv
Z3JhbUV4ZWN1CiAgICAgfQogCiAgICAgewotICAgICAgICBKU09iamVjdCogbWV0YVByb3BlcnRp
ZXMgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm1vZHVsZUxvYWRlcigpLT5jcmVhdGVJ
bXBvcnRNZXRhUHJvcGVydGllcyhleGVjLCBrZXksIHRoaXMsIHNjcmlwdEZldGNoZXIpOworICAg
ICAgICBKU09iamVjdCogbWV0YVByb3BlcnRpZXMgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPm1vZHVsZUxvYWRlcigpLT5jcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhleGVjLCBpZGVu
dGlmaWVyVG9KU1ZhbHVlKHZtLCBtb2R1bGVLZXkoKSksIHRoaXMsIHNjcmlwdEZldGNoZXIpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICBib29s
IHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2lu
dFNldChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkubWV0YVByaXZhdGVOYW1lKCksIG1ldGFQcm9wZXJ0aWVzLCAvKiBzaG91bGRUaHJvd1Jl
YWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUsIHB1
dFJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuaAppbmRleCBjZGZjYzQwZWU1ODI5ZTcyNTc1MTRmOTgxN2U5OTM2ODA3MDk0OWJjLi5hYzJk
Y2ZhNmM1Mjk4YmQ3M2U0ZmRjMmNmNTFmMGNjMTU0MDdiY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xh
c3MgSlNNb2R1bGVSZWNvcmQgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RNb2R1bGVSZWNvcmQgewog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTTW9kdWxlUmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRl
KiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Jik7
CiAKLSAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcik7CisgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2NyaXB0RmV0Y2hl
cik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqKTsK
IAogICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZUNvZGU7IH0KQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgZmluYWwg
OiBwdWJsaWMgQWJzdHJhY3RNb2R1bGVSZWNvcmQgewogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOwogCi0gICAgdm9pZCBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqLCBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOworICAgIHZvaWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgTW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiAgICAgU291cmNl
Q29kZSBtX3NvdXJjZUNvZGU7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2RlY2xhcmVkVmFy
aWFibGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAKaW5kZXggM2Q0ZjQ0YTE0NTk3ZWMxY2MwNWJjZjJjNzI2NGFh
MmViNTQ3ZmFlNC4uNGUwOTNlMTBhYTVkZTRjNjIxMjU3Njg3NWJmZjE4Njk1ZThkMzFhNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQ
cm90b3R5cGUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNs
dWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgorI2luY2x1ZGUgIldlYkFz
c2VtYmx5UHJvdG90eXBlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC03Niw3ICs3Nyw3IEBA
IGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2FkZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1vZHVs
ZUxvYWRlciIsICZCYXNlOjpzX2luZm8sCiAgICAgcmVxdWVzdEluc3RhbnRpYXRlICAgICAgICAg
ICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAzCiAgICAgcmVxdWVzdFNhdGlzZnkgICAgICAgICAgICAgICAgIEpT
QnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAzCiAgICAgbGluayAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQnVpbHRp
biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAyCi0gICAgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIG1vZHVsZUxvYWRlclBy
b3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBEb250RW51bXxGdW5jdGlvbiAz
CisgICAgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIG1vZHVsZUxvYWRlclByb3RvdHlw
ZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBEb250RW51bXxGdW5jdGlvbiAyCiAgICAg
bW9kdWxlRXZhbHVhdGlvbiAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgZXZhbHVh
dGUgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUV2YWx1YXRlICAg
ICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAzCiAgICAgcHJvdmlkZUZldGNo
ICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCkBAIC0xMDMsNDEgKzEwNCw1MiBAQCBN
b2R1bGVMb2FkZXJQcm90b3R5cGU6Ok1vZHVsZUxvYWRlclByb3RvdHlwZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJQcm90b3R5cGVQYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworCisgICAgSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpj
cmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBzY29wZS5yZWxl
YXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKKworICAgIGF1dG8gcmVqZWN0ID0gWyZdIHsKKyAgICAg
ICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKTsKKyAgICAgICAgc2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZWZlcnJl
ZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbikpOworICAgIH07CiAKICAgICBjb25zdCBJZGVudGlm
aWVyIG1vZHVsZUtleSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdCgpOwog
Ci0gICAgYXV0byoganNTb3VyY2VDb2RlID0ganNEeW5hbWljQ2FzdDxKU1NvdXJjZUNvZGUqPih2
bSwgZXhlYy0+YXJndW1lbnQoMSkpOwotICAgIGlmICghanNTb3VyY2VDb2RlKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CisgICAgSlNWYWx1ZSBzb3VyY2Ug
PSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBhdXRvKiBqc1NvdXJjZUNvZGUgPSBqc0Nhc3Q8SlNT
b3VyY2VDb2RlKj4oc291cmNlKTsKICAgICBTb3VyY2VDb2RlIHNvdXJjZUNvZGUgPSBqc1NvdXJj
ZUNvZGUtPnNvdXJjZUNvZGUoKTsKIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBpZiAo
c291cmNlQ29kZS5wcm92aWRlcigpLT5zb3VyY2VUeXBlKCkgPT0gU291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpXZWJBc3NlbWJseSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXZWJB
c3NlbWJseVByb3RvdHlwZTo6aW5zdGFudGlhdGUoZXhlYywgZGVmZXJyZWQsIG1vZHVsZUtleSwg
anNTb3VyY2VDb2RlKSk7CisjZW5kaWYKKwogICAgIENvZGVQcm9maWxpbmcgcHJvZmlsZShzb3Vy
Y2VDb2RlKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxN
b2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxNb2R1bGVQcm9ncmFt
Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmlj
dCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5h
bHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7Ci0KLSAgICBpZiAoZXJy
b3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgZXJyb3Iu
dG9FcnJvck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9Cisg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSkpOwogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9k
ZSk7CiAKICAgICBNb2R1bGVBbmFseXplciBtb2R1bGVBbmFseXplcihleGVjLCBtb2R1bGVLZXks
IHNvdXJjZUNvZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSwgbW9kdWxl
UHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCA9IG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1Ob2RlKTsKKyAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gcmVqZWN0KCk7
CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZVJlY29yZCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBtb2R1bGVBbmFseXplci5h
bmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVSZXF1ZXN0ZWRNb2R1bGVzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0g
anNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFjdE1vZHVsZVJlY29y
ZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFtb2R1bGVSZWNvcmQpIHsKICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0cikpOwpAQCAtMTU3LDE0ICsxNjksMTQgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVNb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24KIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU01vZHVsZVJlY29y
ZCogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCBleGVj
LT5hcmd1bWVudCgwKSk7CisgICAgYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxB
YnN0cmFjdE1vZHVsZVJlY29yZCo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFt
b2R1bGVSZWNvcmQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQogICAgICAg
ICBkYXRhTG9nKCJMb2FkZXIgW2xpbmtdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCksICJc
biIpOwogCi0gICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCBl
eGVjLT5hcmd1bWVudCgyKSk7CisgICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMu
aAppbmRleCBiZDA2ZDNjOWMyNTE2NWVjZGYwYjdiODQyYTIwOTE0ZDZlZDU5ZGE3Li5jNTEyODZi
N2RhOTYwYzczZWFhZTFmMjg3N2ZlNjI5MzkzNDdlNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiSlNTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgiCiAKQEAgLTQ5
LDEwICs1MCwxNiBAQCBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IHRvTm9uV3JhcHBpbmdVaW50MzIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZG91YmxlVmFsdWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjx1aW50
OF90Kiwgc2l6ZV90PiBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgc3RkOjpwYWlyPGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3Q+IGdldFdhc21CdWZmZXJGcm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoYXV0byogc291cmNlID0ganNEeW5hbWlj
Q2FzdDxKU1NvdXJjZUNvZGUqPih2bSwgdmFsdWUpKSB7CisgICAgICAgIGF1dG8qIHByb3ZpZGVy
ID0gc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlcio+KHNvdXJjZS0+c291cmNl
Q29kZSgpLnByb3ZpZGVyKCkpOworICAgICAgICByZXR1cm4geyBwcm92aWRlci0+ZGF0YSgpLmRh
dGEoKSwgcHJvdmlkZXItPmRhdGEoKS5zaXplKCkgfTsKKyAgICB9CisKICAgICAvLyBJZiB0aGUg
Z2l2ZW4gYnl0ZXMgYXJndW1lbnQgaXMgbm90IGEgQnVmZmVyU291cmNlLCBhIFR5cGVFcnJvciBl
eGNlcHRpb24gaXMgdGhyb3duLgogICAgIEpTQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdmFs
dWUuZ2V0T2JqZWN0KCkgPyBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgdmFsdWUu
Z2V0T2JqZWN0KCkpIDogbnVsbHB0cjsKICAgICBKU0FycmF5QnVmZmVyVmlldyogYXJyYXlCdWZm
ZXJWaWV3ID0gdmFsdWUuZ2V0T2JqZWN0KCkgPyBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJW
aWV3Kj4odm0sIHZhbHVlLmdldE9iamVjdCgpKSA6IG51bGxwdHI7CkBAIC03Niw3ICs4Myw3IEBA
IEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPHVpbnQ4X3QqLCBzaXplX3Q+IGdldFdhc21CdWZmZXJG
cm9tVmFsdWUoRXhlY1N0YXRlKiBleGVjCiBBTFdBWVNfSU5MSU5FIFZlY3Rvcjx1aW50OF90PiBj
cmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7Ci0gICAgdWludDhfdCogZGF0YTsKKyAgICBjb25zdCB1aW50OF90KiBkYXRhOwogICAgIHNp
emVfdCBieXRlU2l6ZTsKICAgICBzdGQ6OnRpZShkYXRhLCBieXRlU2l6ZSkgPSBnZXRXYXNtQnVm
ZmVyRnJvbVZhbHVlKGV4ZWMsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIFZlY3Rvcjx1aW50OF90PigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCmluZGV4IDc3MWE2NDBhMzJi
ODU5OWEwNWEzZGY0NTM2MzdkZDZiNTNhOWM5MDcuLjIzNzk5OGM2OWQ5NGQxNTNiMTEzNjI5Yjlm
ZDhiNzQxMTNiNGI5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgqdGhpc09iamVjdC0+aW5zdGFu
Y2UoKS5pbXBvcnRGdW5jdGlvbjxQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihpKSk7IC8vIFRo
aXMgYWxzbyBrZWVwcyB0aGUgZnVuY3Rpb25zJyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgYWxpdmUu
CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2
bSwgRXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIHdhc21Db2RlQmxvY2sp
Cit2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4
ZWNTdGF0ZSogZXhlYywgUmVmPFdhc206OkNvZGVCbG9jaz4mJiB3YXNtQ29kZUJsb2NrLCBNb2R1
bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCiB7CiAgICAgbV9pbnN0YW5jZS0+ZmluYWxpemVDcmVh
dGlvbih0aGlzLCB3YXNtQ29kZUJsb2NrLmNvcHlSZWYoKSk7CiAKQEAgLTEyNywxNSArMTI3LDI0
IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBSZWY8V2FzbTo6CiAgICAgfQogCiAgICAgYXV0byogbW9kdWxlUmVj
b3JkID0ganNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4obV9tb2R1bGVOYW1lc3BhY2VP
YmplY3QtPm1vZHVsZVJlY29yZCgpKTsKLSAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZXhlYywgbV9t
b2R1bGUuZ2V0KCksIHRoaXMpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgbW9kdWxlUmVjb3JkLT5wcmVwYXJlTGluayh2bSwgdGhpcyk7CiAKLSAgICBKU1Zh
bHVlIHN0YXJ0UmVzdWx0ID0gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShleGVjKTsKLSAgICBVTlVT
RURfUEFSQU0oc3RhcnRSZXN1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisgICAgaWYgKG1vZHVsZVJ1bk1vZGUgPT0gTW9kdWxlUnVuTW9kZTo6UnVuKSB7Cisg
ICAgICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBqc051bGwoKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICAgICAgSlNWYWx1ZSBzdGFydFJl
c3VsdCA9IG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7CisgICAgICAgIFVOVVNFRF9QQVJB
TShzdGFydFJlc3VsdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisgICAgfQorfQorCitJZGVudGlmaWVyIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRl
UHJpdmF0ZU1vZHVsZUtleSgpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21VaWQoUHJp
dmF0ZU5hbWUoUHJpdmF0ZU5hbWU6OkRlc2NyaXB0aW9uLCAiV2ViQXNzZW1ibHlJbnN0YW5jZSIp
KTsKIH0KIAotSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1
bGUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUs
IFJlZjxXYXNtOjpNb2R1bGU+JiYgbW9kdWxlKQorSlNXZWJBc3NlbWJseUluc3RhbmNlKiBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlS2V5LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBqc01vZHVsZSwgSlNP
YmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSwgUmVmPFdh
c206Ok1vZHVsZT4mJiBtb2R1bGUpCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpOwpAQCAtMTU4LDcgKzE2Nyw2IEBAIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
SlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
CiAgICAgaWYgKG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydHMuc2l6ZSgpICYmICFpbXBvcnRPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiY2FuJ3QgbWFrZSBXZWJBc3NlbWJseS5JbnN0YW5jZSBiZWNhdXNlIHRoZXJlIGlz
IG5vIGltcG9ydHMgT2JqZWN0IGFuZCB0aGUgV2ViQXNzZW1ibHkuTW9kdWxlIHJlcXVpcmVzIGlt
cG9ydHMiKSkpOwogCi0gICAgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKFByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgIldlYkFzc2VtYmx5SW5z
dGFuY2UiKSk7CiAgICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpjcmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdC0+d2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSwgbW9kdWxlS2V5LCBtb2R1bGVJbmZvcm1h
dGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaAppbmRleCBlZDliMmIxMThiZmQzYTBiN2VhOWQyYzQzMTFlNWFlMTkxNTZmZGYyLi4w
MzJiNTY1ZjA4MWUwZTA3MWJmY2RiM2FiZTc5Yjk5ZTc4OTEzZjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaApAQCAt
NTAsMTIgKzUwLDE1IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBmaW5hbCA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0
aWJsZU9iamVjdCBCYXNlOwogCi0gICAgc3RhdGljIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogY3Jl
YXRlKFZNJiwgRXhlY1N0YXRlKiwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBv
cnRPYmplY3QsIFN0cnVjdHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOworICAgIHN0YXRpYyBJ
ZGVudGlmaWVyIGNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKTsKKworICAgIHN0YXRpYyBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGNyZWF0ZShWTSYsIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgSlNXZWJBc3NlbWJseU1vZHVsZSosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFN0cnVjdHVyZSosIFJlZjxXYXNtOjpNb2R1bGU+JiYpOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgdm9pZCBmaW5hbGl6ZUNyZWF0aW9uKFZNJiwgRXhl
Y1N0YXRlKiwgUmVmPFdhc206OkNvZGVCbG9jaz4mJik7CisgICAgZW51bSBjbGFzcyBNb2R1bGVS
dW5Nb2RlIHsgUnVuLCBOb25lIH07CisgICAgdm9pZCBmaW5hbGl6ZUNyZWF0aW9uKFZNJiwgRXhl
Y1N0YXRlKiwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiwgTW9kdWxlUnVuTW9kZSk7CiAgICAgCiAg
ICAgV2FzbTo6SW5zdGFuY2UmIGluc3RhbmNlKCkgeyByZXR1cm4gbV9pbnN0YW5jZS5nZXQoKTsg
fQogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBtb2R1bGVOYW1lc3BhY2VPYmplY3QoKSB7
IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsgfQpAQCAtNzYsNiArNzksOCBA
QCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogICAgICAgICBpbnN0YW5jZSgpLnNldFRhYmxlKG1ha2VSZWYoKnRhYmxlKCkt
PnRhYmxlKCkpKTsKICAgICB9CiAKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBj
b25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQorCiAgICAgc3RhdGljIHNpemVfdCBvZmZz
ZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3Nl
bWJseUluc3RhbmNlLCBtX2luc3RhbmNlKTsgfQogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQ
b2lzb25lZENhbGxlZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1dlYkFzc2VtYmx5SW5z
dGFuY2UsIG1fY2FsbGVlKTsgfQogCkBAIC04OSw4ICs5NCw2IEBAIGNsYXNzIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSBmaW5hbCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiBwcml2YXRl
OgotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlLmdldCgpOyB9Ci0KICAgICBQb2lzb25lZFJlZjxKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lz
b24sIFdhc206Okluc3RhbmNlPiBtX2luc3RhbmNlOwogCiAgICAgUG9pc29uZWRCYXJyaWVyPEpT
V2ViQXNzZW1ibHlNb2R1bGU+IG1fbW9kdWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggYjY3ODhmYTUwYzY0NTRhMjBkMzU3NTBkMjMwZjNlYmFjMDMyYzg4Yy4uNDk2MDk4
OTNhZTI1ZmU4ZjEyNzBmZGE2MWM1NmNjODEwMDMwZjExNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29u
c3RydWN0b3IuY3BwCkBAIC03NywxMCArNzcsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgK
ICAgICBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3Jl
YXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+
KG1vZHVsZS0+bW9kdWxlKCkpKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
ID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBtb2R1bGUsIGltcG9ydE9iamVjdCwg
aW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaW5zdGFuY2UtPmZp
bmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZt
Lndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dh
c21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pKTsKKyAgICBpbnN0YW5jZS0+Zmlu
YWxpemVDcmVhdGlvbih2bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYygmdm0u
d2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksICZXYXNtOjpjcmVhdGVKU1RvV2Fz
bVdyYXBwZXIsICZXYXNtOjp3YXNtVG9KU0V4Y2VwdGlvbiksIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwCmluZGV4IGUzNDY0NmM2ZGI4MWQ4NmU2N2Y4MjA3N2FmODkzYTZkZGYyY2YzNmIuLjBl
NDg0NzU4YTRjMWQ2MTBkYjJhODhhZmQ3YzZjOWY2YmE1M2E0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKQEAgLTg2LDE0ICs4NiwyMyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKIH0KIAotdm9pZCBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIG1vZHVsZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkKK3ZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OnByZXBhcmVMaW5rKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YW5jZSk7CisgICAg
bV9pbnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKK30KKwordm9pZCBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAKLSAgICBXYXNtOjpDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGluc3RhbmNlLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpOworICAgIFJFTEVBU0VfQVNT
RVJUKG1faW5zdGFuY2UpOworCisgICAgV2FzbTo6Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2lu
c3RhbmNlLT5pbnN0YW5jZSgpLmNvZGVCbG9jaygpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUq
IG1vZHVsZSA9IG1faW5zdGFuY2UtPm1vZHVsZSgpOwogICAgIGNvbnN0IFdhc206Ok1vZHVsZUlu
Zm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24o
KTsKIAogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9IG1vZHVsZS0+ZXhwb3J0
U3ltYm9sVGFibGUoKTsKQEAgLTExMCwxMiArMTE5LDEyIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUsCiAgICAgICAgICAgICAvLyAgIGlpLiAoTm90ZTogQXQgbW9zdCBvbmUgd3JhcHBlciBpcyBj
cmVhdGVkIGZvciBhbnkgY2xvc3VyZSwgc28gZnVuYyBpcyB1bmlxdWUsIGV2ZW4gaWYgdGhlcmUg
YXJlIG11bHRpcGxlIG9jY3VycmFuY2VzIGluIHRoZSBsaXN0LiBNb3Jlb3ZlciwgaWYgdGhlIGl0
ZW0gd2FzIGFuIGltcG9ydCB0aGF0IGlzIGFscmVhZHkgYW4gRXhwb3J0ZWQgRnVuY3Rpb24gRXhv
dGljIE9iamVjdCwgdGhlbiB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0IHdpbGwgYmUgZm91
bmQuIEZvciBpbXBvcnRzIHRoYXQgYXJlIHJlZ3VsYXIgSlMgZnVuY3Rpb25zLCBhIG5ldyB3cmFw
cGVyIHdpbGwgYmUgY3JlYXRlZC4pCiAgICAgICAgICAgICBpZiAoZXhwLmtpbmRJbmRleCA8IGZ1
bmN0aW9uSW1wb3J0Q291bnQpIHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmdW5jdGlvbklu
ZGV4ID0gZXhwLmtpbmRJbmRleDsKLSAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25J
bXBvcnQgPSBpbnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6OlBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQo
KTsKKyAgICAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29u
ZWRCYXJyaWVyPEpTT2JqZWN0Pj4oZnVuY3Rpb25JbmRleCktPmdldCgpOwogICAgICAgICAgICAg
ICAgIGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBmdW5jdGlvbkltcG9ydCkpCiAg
ICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbkltcG9ydDsKICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5k
ZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5k
ZXhTcGFjZShmdW5jdGlvbkluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1
ZSA9IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
ZnVuY3Rpb25JbXBvcnQsIGZ1bmN0aW9uSW5kZXgsIGluc3RhbmNlLCBzaWduYXR1cmVJbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBXZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uSW1wb3J0LCBmdW5jdGlv
bkluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyAgIGlpaS4gT3Ro
ZXJ3aXNlOgpAQCAtMTI2LDIzICsxMzUsMjMgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAg
ICAgICAgICAgICAgICBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9j
YXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNvZGVCbG9jay0+ZW50cnlwb2ludExvYWRM
b2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAg
ICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGUtPnNpZ25h
dHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShleHAua2luZEluZGV4KTsKICAgICAgICAg
ICAgICAgICBjb25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwotICAgICAgICAgICAgICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZzo6ZnJvbVVU
RjgoZXhwLmZpZWxkKSwgaW5zdGFuY2UsIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlw
b2ludExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIFN0cmluZzo6ZnJvbVVU
RjgoZXhwLmZpZWxkKSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVl
LCBlbnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICAg
ICAgZXhwb3J0ZWRWYWx1ZSA9IGZ1bmN0aW9uOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6OlRhYmxl
OiB7CiAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IG1vZHVsZSB2
ZXJpZmljYXRpb24uCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbnN0YW5jZS0+dGFibGUo
KSk7IAorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9pbnN0YW5jZS0+dGFibGUoKSk7IAog
ICAgICAgICAgICAgQVNTRVJUKGV4cC5raW5kSW5kZXggPT0gMCk7CiAKLSAgICAgICAgICAgIGV4
cG9ydGVkVmFsdWUgPSBpbnN0YW5jZS0+dGFibGUoKTsKKyAgICAgICAgICAgIGV4cG9ydGVkVmFs
dWUgPSBtX2luc3RhbmNlLT50YWJsZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogewogICAgICAgICAgICAg
QVNTRVJUKGV4cC5raW5kSW5kZXggPT0gMCk7CiAKLSAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUg
PSBpbnN0YW5jZS0+bWVtb3J5KCk7CisgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gbV9pbnN0
YW5jZS0+bWVtb3J5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFdhc206OkV4dGVybmFsS2luZDo6R2xvYmFsOiB7CkBAIC0xNTIsNyArMTYxLDcgQEAgdm9p
ZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNz
ZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgICAgIC8vIFJldHVybiBUb0pTVmFsdWUodiku
CiAgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbC50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFdh
c206OkkzMjoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShpbnN0YW5j
ZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKKyAgICAgICAgICAg
ICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxvYWRJ
MzJHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgICAgICBjYXNlIFdhc206Okk2NDoKQEAgLTE2MCwxMSArMTY5LDExIEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9k
dWxlKiBtb2R1bGUsCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNl
IFdhc206OkYzMjoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShpbnN0
YW5jZS0+aW5zdGFuY2UoKS5sb2FkRjMyR2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKKyAgICAgICAg
ICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNlLT5pbnN0YW5jZSgpLmxv
YWRGMzJHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgICAgICBjYXNlIFdhc206OkY2NDoKLSAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVl
ID0gSlNWYWx1ZShpbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkRjY0R2xvYmFsKGV4cC5raW5kSW5k
ZXgpKTsKKyAgICAgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gSlNWYWx1ZShtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLmxvYWRGNjRHbG9iYWwoZXhwLmtpbmRJbmRleCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMTkxLDE4ICsyMDAsMTUgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMsIEpTV2Vi
QXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwKICAgICAgICAgQVNTRVJUKCFzaWduYXR1cmUuYXJndW1l
bnRDb3VudCgpKTsKICAgICAgICAgQVNTRVJUKHNpZ25hdHVyZS5yZXR1cm5UeXBlKCkgPT0gV2Fz
bTo6Vm9pZCk7CiAgICAgICAgIGlmIChzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA8IGNvZGVCbG9j
ay0+ZnVuY3Rpb25JbXBvcnRDb3VudCgpKSB7Ci0gICAgICAgICAgICBKU09iamVjdCogc3RhcnRG
dW5jdGlvbiA9IGluc3RhbmNlLT5pbnN0YW5jZSgpLmltcG9ydEZ1bmN0aW9uPEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oc3RhcnRGdW5jdGlvbkluZGV4
U3BhY2UpLT5nZXQoKTsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzdGFydEZ1bmN0aW9uID0gbV9p
bnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OlBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+KHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKS0+Z2V0
KCk7CiAgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBzdGFydEZ1bmN0
aW9uKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFdhc206OkNhbGxlZSYgZW1iZWRk
ZXJFbnRyeXBvaW50Q2FsbGVlID0gY29kZUJsb2NrLT5lbWJlZGRlckVudHJ5cG9pbnRDYWxsZWVG
cm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAgICAg
ICAgIFdhc206Oldhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRMb2NhdGlvbiBlbnRy
eXBvaW50TG9hZExvY2F0aW9uID0gY29kZUJsb2NrLT5lbnRyeXBvaW50TG9hZExvY2F0aW9uRnJv
bUZ1bmN0aW9uSW5kZXhTcGFjZShzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSk7Ci0gICAgICAgICAg
ICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAic3RhcnQi
LCBpbnN0YW5jZSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0
aW9uLCBzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBm
dW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBz
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAic3RhcnQiLCBtX2luc3RhbmNlLmdldCgpLCBlbWJl
ZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sIHNpZ25hdHVyZUlu
ZGV4KTsKICAgICAgICAgICAgIG1fc3RhcnRGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGZ1bmN0aW9u
KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2luc3RhbmNlKTsK
LSAgICBtX2luc3RhbmNlLnNldCh2bSwgdGhpcywgaW5zdGFuY2UpOwogICAgIG1fbW9kdWxlRW52
aXJvbm1lbnQuc2V0KHZtLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5oCmluZGV4IGZjZTFkNjQ2MzkwMzU3MjA2MGM5ZDk5N2MxMGNlYmYwZGFjZGQ5ZDguLjQxN2Ew
YzYwODM3ZDQ1Y2ViNTYzMWY0YjBmNDc1ZGIzYjVmYjM4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaApAQCAt
NDgsNyArNDgsOCBAQCBjbGFzcyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCBmaW5hbCA6IHB1Ymxp
YyBBYnN0cmFjdE1vZHVsZVJlY29yZCB7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKICAgICBzdGF0aWMgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQqIGNyZWF0ZShFeGVjU3RhdGUqLCBWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogCi0gICAg
dm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UqKTsKKyAgICB2b2lkIHByZXBhcmVMaW5rKFZNJiwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKik7CisgICAgdm9pZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5UHJvdG90eXBlLmNwcAppbmRleCA0NjQ0MWQzZDIyZjZhNmIyYTBkZGY1OTlhZWM1NGY2
M2YyZDRiMjZkLi5kMTQzNzVmMjBlMThlMWNhOTc2N2UwNzBkMmU4ZjZhY2ZmZmFiYjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90
b3R5cGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKICNpbmNsdWRlICJKU1Byb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIkpTVG9XYXNtLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhl
bHBlcnMuaCIKQEAgLTEyMCwxNSArMTIxLDE3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQogICAgIH0K
IH0KIAotZW51bSBjbGFzcyBSZXNvbHZlIHsgV2l0aEluc3RhbmNlLCBXaXRoTW9kdWxlQW5kSW5z
dGFuY2UgfTsKLXN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNl
LCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY29k
ZUJsb2NrLCBSZXNvbHZlIHJlc29sdmVLaW5kKQorZW51bSBjbGFzcyBSZXNvbHZlIHsgV2l0aElu
c3RhbmNlLCBXaXRoTW9kdWxlUmVjb3JkLCBXaXRoTW9kdWxlQW5kSW5zdGFuY2UgfTsKK3N0YXRp
YyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVk
KiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBtb2R1bGUsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY29kZUJsb2NrLCBSZXNvbHZl
IHJlc29sdmVLaW5kLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGUgbW9kdWxl
UnVuTW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0g
ICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29kZUJsb2Nr
KSk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMsIFdURk1vdmUoY29k
ZUJsb2NrKSwgbW9kdWxlUnVuTW9kZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
cmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKSk7CiAKICAgICBpZiAocmVzb2x2ZUtpbmQgPT0g
UmVzb2x2ZTo6V2l0aEluc3RhbmNlKQogICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGlu
c3RhbmNlKTsKKyAgICBlbHNlIGlmIChyZXNvbHZlS2luZCA9PSBSZXNvbHZlOjpXaXRoTW9kdWxl
UmVjb3JkKQorICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGluc3RhbmNlLT5tb2R1bGVO
YW1lc3BhY2VPYmplY3QoKS0+bW9kdWxlUmVjb3JkKCkpOwogICAgIGVsc2UgewogICAgICAgICBK
U09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CiAgICAgICAgIHJl
c3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRl
cmFsKCJtb2R1bGUiKSksIG1vZHVsZSk7CkBAIC0xMzgsMTEgKzE0MSwxMSBAQCBzdGF0aWMgdm9p
ZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJv
bWlzZSwgSlNXZWJBcwogICAgIENMRUFSX0FORF9SRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwogfQogCi1zdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1v
ZHVsZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgUmVzb2x2ZSByZXNvbHZlS2luZCkKK3N0YXRp
YyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1w
b3J0T2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIFJlc29sdmUgcmVzb2x2ZUtp
bmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1bGVSdW5Nb2RlKQog
ewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAvLyBJbiBv
cmRlciB0byBhdm9pZCBwb3RlbnRpYWxseSByZWNvbXBpbGluZyBhIG1vZHVsZS4gV2UgZmlyc3Qg
Z2F0aGVyIGFsbCB0aGUgaW1wb3J0L21lbW9yeSBpbmZvcm1hdGlvbiBwcmlvciB0byBjb21waWxp
bmcgY29kZS4KLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwg
UmVmPFdhc206Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUoKSkpOworICAgIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhl
YywgbW9kdWxlS2V5LCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCksIFJlZjxXYXNtOjpNb2R1bGU+
KG1vZHVsZS0+bW9kdWxlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWpl
Y3QoZXhlYywgc2NvcGUsIHByb21pc2UpKTsKIAogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4g
ZGVwZW5kZW5jaWVzOwpAQCAtMTUwLDQxICsxNTMsNTQgQEAgc3RhdGljIHZvaWQgaW5zdGFudGlh
dGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBK
U1cKICAgICBkZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbnN0YW5jZSkp
OwogICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNl
LCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogICAgIC8vIE5vdGU6IFRoaXMgY29tcGxldGlvbiB0
YXNrIG1heSBvciBtYXkgbm90IGdldCBjYWxsZWQgaW1tZWRpYXRlbHkuCi0gICAgbW9kdWxlLT5t
b2R1bGUoKS5jb21waWxlQXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9k
ZSgpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihbcHJv
bWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgcmVzb2x2ZUtpbmQsICZ2bV0gKFJlZjxXYXNtOjpDb2Rl
QmxvY2s+JiYgcmVmQ29kZUJsb2NrKSBtdXRhYmxlIHsKKyAgICBtb2R1bGUtPm1vZHVsZSgpLmNv
bXBpbGVBc3luYygmdm0ud2FzbUNvbnRleHQsIGluc3RhbmNlLT5tZW1vcnlNb2RlKCksIGNyZWF0
ZVNoYXJlZFRhc2s8V2FzbTo6Q29kZUJsb2NrOjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbnN0
YW5jZSwgbW9kdWxlLCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoUmVmPFdhc206
OkNvZGVCbG9jaz4mJiByZWZDb2RlQmxvY2spIG11dGFibGUgewogICAgICAgICBSZWZQdHI8V2Fz
bTo6Q29kZUJsb2NrPiBjb2RlQmxvY2sgPSBXVEZNb3ZlKHJlZkNvZGVCbG9jayk7Ci0gICAgICAg
IHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9t
aXNlLCBpbnN0YW5jZSwgbW9kdWxlLCByZXNvbHZlS2luZCwgJnZtLCBjb2RlQmxvY2sgPSBXVEZN
b3ZlKGNvZGVCbG9jayldICgpIG11dGFibGUgeworICAgICAgICB2bS5wcm9taXNlRGVmZXJyZWRU
aW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVs
ZSwgcmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1vZGUsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShj
b2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGlu
c3RhbmNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwotICAgICAgICAgICAgcmVzb2x2
ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgY29kZUJsb2NrLnJlbGVhc2VO
b25OdWxsKCksIHJlc29sdmVLaW5kKTsKKyAgICAgICAgICAgIHJlc29sdmUodm0sIGV4ZWMsIHBy
b21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpLCByZXNv
bHZlS2luZCwgbW9kdWxlUnVuTW9kZSk7CiAgICAgICAgIH0pOwogICAgIH0pLCAmV2FzbTo6Y3Jl
YXRlSlNUb1dhc21XcmFwcGVyLCAmV2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pOwogfQogCi1zdGF0
aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3QqIGltcG9y
dE9iamVjdCkKK3N0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgSlNWYWx1ZSBidWZmZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFJlc29s
dmUgcmVzb2x2ZUtpbmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZSBtb2R1
bGVSdW5Nb2RlKQogewogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsK
IAogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
IAorICAgIEpTQ2VsbCogbW9kdWxlS2V5Q2VsbCA9IGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIG1v
ZHVsZUtleSkuYXNDZWxsKCk7CiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNp
ZXM7CiAgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW1wb3J0T2Jq
ZWN0KSk7CisgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgbW9kdWxl
S2V5Q2VsbCkpOwogICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlz
ZShwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHNvdXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZXhlYywgYnVmZmVyKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZXhlYywgc2NvcGUsIHByb21p
c2UpKTsKIAotICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0ud2FzbUNvbnRleHQs
IFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1bGU6OkNhbGxiYWNr
VHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAmdm1dIChXYXNtOjpN
b2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB2bS5w
cm9taXNlRGVmZXJyZWRUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwg
aW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZt
XSAoKSBtdXRhYmxlIHsKKyAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21D
b250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpD
YWxsYmFja1R5cGU+KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2Jh
bE9iamVjdCwgcmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1vZGUsICZ2bV0gKFdhc206Ok1vZHVsZTo6
VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHZtLnByb21pc2VE
ZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBpbXBvcnRP
YmplY3QsIG1vZHVsZUtleUNlbGwsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpLCByZXNvbHZlS2luZCwgbW9kdWxlUnVuTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKICAgICAgICAgICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgICAgICAg
ICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3Jl
YXRlU3R1Yih2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVy
ZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBw
cm9taXNlKTsKIAotICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1v
ZHVsZSwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoTW9kdWxlQW5kSW5zdGFuY2UpOworICAg
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBKU1ZhbHVlKG1vZHVsZUtleUNl
bGwpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUu
ZXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2NvcGUs
IHByb21pc2UpOworCisgICAgICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwg
bW9kdWxlLCBpbXBvcnRPYmplY3QsIG1vZHVsZUtleSwgcmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1v
ZGUpOwogICAgICAgICB9KTsKICAgICB9KSk7CiB9CiAKK0pTVmFsdWUgV2ViQXNzZW1ibHlQcm90
b3R5cGU6Omluc3RhbnRpYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHBy
b21pc2UsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBhcmd1bWVudCkKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwg
ZXhlYywgcHJvbWlzZSwgbW9kdWxlS2V5LCBhcmd1bWVudCwgbnVsbHB0ciwgUmVzb2x2ZTo6V2l0
aE1vZHVsZVJlY29yZCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlOjpOb25l
KTsKKyAgICByZXR1cm4gcHJvbWlzZS0+cHJvbWlzZSgpOworfQorCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTIwNiw5ICsyMjIsOSBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRl
RnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBKU1Zh
bHVlIGZpcnN0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICAgICAgICAgIGlmIChh
dXRvKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZmly
c3RBcmd1bWVudCkpCi0gICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21p
c2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UpOworICAgICAg
ICAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBtb2R1bGUsIGltcG9ydE9i
amVjdCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIFJl
c29sdmU6OldpdGhJbnN0YW5jZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2Rl
OjpSdW4pOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbXBpbGVBbmRJbnN0
YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgZmlyc3RBcmd1bWVudCwgaW1wb3J0T2JqZWN0KTsK
KyAgICAgICAgICAgICAgICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2Us
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBmaXJzdEFy
Z3VtZW50LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJbnN0YW5jZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlOjpSdW4pOwogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwpAQCAtMjIw
LDcgKzIzNiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5VmFsaWRhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHVpbnQ4
X3QqIGJhc2U7CisgICAgY29uc3QgdWludDhfdCogYmFzZTsKICAgICBzaXplX3QgYnl0ZVNpemU7
CiAgICAgc3RkOjp0aWUoYmFzZSwgYnl0ZVNpemUpID0gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlQcm90b3R5cGUuaAppbmRleCBkNWQwZDZjYmRlZjdiMmM5ZjI1Nzk1ZTVh
MGRiNWJhMDVkYzQyZGNjLi5iYmIyMjZkYmNjNjk5ZTNmMGYwYjhhZjFjOTU0NzA1NTljNjk1NGEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVBy
b3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
UHJvdG90eXBlLmgKQEAgLTQyLDYgKzQyLDggQEAgY2xhc3MgV2ViQXNzZW1ibHlQcm90b3R5cGUg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBERUNMQVJFX0lORk87CiAK
KyAgICBzdGF0aWMgSlNWYWx1ZSBpbnN0YW50aWF0ZShFeGVjU3RhdGUqLCBKU1Byb21pc2VEZWZl
cnJlZCosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlKTsKKwogcHJvdGVjdGVkOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337993</attachid>
            <date>2018-04-16 04:33:49 -0700</date>
            <delta_ts>2018-04-16 11:23:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184600-20180416203348.patch</filename>
            <type>text/plain</type>
            <size>62958</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjFkMzhhOWJmMGRjOTYxNjEzMzNlODQ4MGE1NWVlM2ZmOTg0NTAyLi43ZjZkMzVlZjc1MTkwMWRm
ZWI1OTExMzYyZDUzNjA2YTk4ZGM4YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOC0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIFByb3RvdHlwZSB3YXNtIGlt
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0
NjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpcyBhbiBpbml0aWFsIGF0dGVtcHQgdG8gaW1wbGVtZW50IFdhc20gbG9hZGluZyBp
biBtb2R1bGUgcGlwZWxpbmUuCisgICAgICAgIEN1cnJlbnRseSwKKworICAgICAgICAxLiBXZSBv
bmx5IHN1cHBvcnQgV2FzbSBsb2FkaW5nIGluIHRoZSBKU0Mgc2hlbGwuIE9uY2UgbG9hZGluZyBt
ZWNoYW5pc20gaXMgc3BlY2lmaWVkCisgICAgICAgICAgIGluIHdoYXR3ZyBIVE1MLCB3ZSBzaG91
bGQgaW50ZWdyYXRlIHRoaXMgaW50byBXZWJDb3JlLgorCisgICAgICAgIDIuIFdlIG9ubHkgc3Vw
cG9ydCBleHBvcnRpbmcgdmFsdWVzIGZyb20gV2FzbS4gV2FzbSBtb2R1bGUgY2Fubm90IGltcG9y
dCBhbnl0aGluZyBmcm9tCisgICAgICAgICAgIHRoZSBvdGhlciBtb2R1bGVzIG5vdy4KKworICAg
ICAgICBXaGVuIGxvYWRpbmcgYSBmaWxlLCBKU0Mgc2hlbGwgY2hlY2tzIHdhc20gbWFnaWMuIElm
IHRoZSB3YXNtIG1hZ2ljIGlzIGZvdW5kLCBKU0Mgc2hlbGwKKyAgICAgICAgbG9hZHMgdGhlIGZp
bGUgd2l0aCBXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyLiBJdCBpcyB3cmFwcGVkIGludG8gSlNT
b3VyY2VDb2RlIGFuZAorICAgICAgICBtb2R1bGUgbG9hZGVyIHBpcGVsaW5lIGp1c3QgaGFuZGxl
cyBpdCBhcyB0aGUgc2FtZSB0byBKUy4gV2hlbiBwYXJzaW5nIGEgbW9kdWxlLCB3ZQorICAgICAg
ICBjaGVja3MgdGhlIHR5cGUgb2YgSlNTb3VyY2VDb2RlLiBJZiB0aGUgc291cmNlIGNvZGUgaXMg
V2FzbSBzb3VyY2UgY29kZSwgd2UgY3JlYXRlIGEKKyAgICAgICAgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQgaW5zdGVhZCBvZiBKU01vZHVsZVJlY29yZC4gT3VyIG1vZHVsZSBwaXBlbGluZSBoYW5k
bGVzCisgICAgICAgIEFic3RyYWN0TW9kdWxlUmVjb3JkIGFuZCBXYXNtIG1vZHVsZSBpcyBpbnN0
YW50aWF0ZWQsIGxpbmtlZCwgYW5kIGV2YWx1YXRlZC4KKworICAgICAgICAqIGJ1aWx0aW5zL01v
ZHVsZUxvYWRlclByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubmV3UmVnaXN0
cnlFbnRyeSk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGUpOgorICAgICAgICAobGluayk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGNvbnZlcnRTaGViYW5nVG9KU0NvbW1lbnQp
OgorICAgICAgICAoZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChmZXRj
aE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0pOgorICAgICAgICAoR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJGZXRjaCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5U291cmNlUHJvdmlkZXI6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OldlYkFzc2VtYmx5U291cmNlUHJvdmlkZXI6OldlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAo
SlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6
QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6aWRlbnRpZmll
clRvSlNWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9BYnN0cmFjdE1vZHVsZVJl
Y29yZC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAo
SlNDOjpKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxl
TG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBl
UGFyc2VNb2R1bGUpOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVSZXF1ZXN0
ZWRNb2R1bGVzKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyUHJvdG90eXBlTW9kdWxlRGVj
bGFyYXRpb25JbnN0YW50aWF0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlI
ZWxwZXJzLmg6CisgICAgICAgIChKU0M6OmdldFdhc21CdWZmZXJGcm9tVmFsdWUpOgorICAgICAg
ICAoSlNDOjpjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUpOgorICAgICAgICAqIHdhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpmaW5hbGl6ZUNyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6cHJlcGFyZUxpbmspOgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6aW5zdGFu
dGlhdGUpOgorICAgICAgICAoSlNDOjpjb21waWxlQW5kSW5zdGFudGlhdGUpOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseVByb3RvdHlwZTo6aW5zdGFudGlhdGUpOgorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VmFs
aWRhdGVGdW5jKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmg6CisK
IDIwMTgtMDQtMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBG
dW5jdGlvbi5wcm90b3R5cGUuY2FsbGVyIHNob3VsZG4ndCByZXR1cm4gZ2VuZXJhdG9yIGJvZGll
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRl
clByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuanMKaW5kZXggOTNmMjIyNTZkNjczZDYxMjIwODBlMGViMWY0NmU2ZGMzMTVi
Y2U0Yi4uZWVmOTFlYjg2NTUxZmE5MzE5N2MxNGQ4MDkwOGRkNjlmNTZkYzc0YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlclByb3RvdHlwZS5q
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmpzCkBAIC05NSw3ICs5NSw2IEBAIGZ1bmN0aW9uIG5ld1JlZ2lzdHJ5RW50cnkoa2V5KQog
ICAgICAgICBpbnN0YW50aWF0ZTogQHVuZGVmaW5lZCwKICAgICAgICAgc2F0aXNmeTogQHVuZGVm
aW5lZCwKICAgICAgICAgZGVwZW5kZW5jaWVzOiBbXSwgLy8gVG8ga2VlcCB0aGUgbW9kdWxlIG9y
ZGVyLCB3ZSBzdG9yZSB0aGUgbW9kdWxlIGtleXMgaW4gdGhlIGFycmF5LgotICAgICAgICBkZXBl
bmRlbmNpZXNNYXA6IEB1bmRlZmluZWQsCiAgICAgICAgIG1vZHVsZTogQHVuZGVmaW5lZCwgLy8g
SlNNb2R1bGVSZWNvcmQKICAgICAgICAgbGlua0Vycm9yOiBAdW5kZWZpbmVkLAogICAgICAgICBs
aW5rU3VjY2VlZGVkOiB0cnVlLApAQCAtMTk3LDIyICsxOTYsMjIgQEAgZnVuY3Rpb24gcmVxdWVz
dEluc3RhbnRpYXRlKGVudHJ5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogICAgICAgICBlbnRyeS5p
bnN0YW50aWF0ZSA9IGluc3RhbnRpYXRlUHJvbWlzZTsKIAogICAgICAgICB2YXIga2V5ID0gZW50
cnkua2V5OwotICAgICAgICB2YXIgbW9kdWxlUmVjb3JkID0gdGhpcy5wYXJzZU1vZHVsZShrZXks
IHNvdXJjZSk7Ci0gICAgICAgIHZhciBkZXBlbmRlbmNpZXNNYXAgPSBtb2R1bGVSZWNvcmQuZGVw
ZW5kZW5jaWVzTWFwOwotICAgICAgICB2YXIgcmVxdWVzdGVkTW9kdWxlcyA9IHRoaXMucmVxdWVz
dGVkTW9kdWxlcyhtb2R1bGVSZWNvcmQpOwotICAgICAgICB2YXIgZGVwZW5kZW5jaWVzID0gQG5l
d0FycmF5V2l0aFNpemUocmVxdWVzdGVkTW9kdWxlcy5sZW5ndGgpOwotICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbGVuZ3RoID0gcmVxdWVzdGVkTW9kdWxlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgdmFyIGRlcE5hbWUgPSByZXF1ZXN0ZWRNb2R1bGVzW2ldOwotICAg
ICAgICAgICAgdmFyIGRlcEtleSA9IHRoaXMucmVzb2x2ZVN5bmMoZGVwTmFtZSwga2V5LCBmZXRj
aGVyKTsKLSAgICAgICAgICAgIHZhciBkZXBFbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChk
ZXBLZXkpOwotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVuZGVuY2llcywgaSwgZGVw
RW50cnkpOwotICAgICAgICAgICAgZGVwZW5kZW5jaWVzTWFwLkBzZXQoZGVwTmFtZSwgZGVwRW50
cnkpOwotICAgICAgICB9Ci0gICAgICAgIGVudHJ5LmRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2ll
czsKLSAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5kZW5jaWVzTWFwOwotICAg
ICAgICBlbnRyeS5tb2R1bGUgPSBtb2R1bGVSZWNvcmQ7Ci0gICAgICAgIEBzZXRTdGF0ZVRvTWF4
KGVudHJ5LCBATW9kdWxlU2F0aXNmeSk7Ci0gICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAg
cmV0dXJuIHRoaXMucGFyc2VNb2R1bGUoa2V5LCBzb3VyY2UpLnRoZW4oKG1vZHVsZVJlY29yZCkg
PT4geworICAgICAgICAgICAgdmFyIGRlcGVuZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5kZXBl
bmRlbmNpZXNNYXA7CisgICAgICAgICAgICB2YXIgcmVxdWVzdGVkTW9kdWxlcyA9IHRoaXMucmVx
dWVzdGVkTW9kdWxlcyhtb2R1bGVSZWNvcmQpOworICAgICAgICAgICAgdmFyIGRlcGVuZGVuY2ll
cyA9IEBuZXdBcnJheVdpdGhTaXplKHJlcXVlc3RlZE1vZHVsZXMubGVuZ3RoKTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1bGVzLmxlbmd0aDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGRlcE5hbWUgPSByZXF1ZXN0ZWRN
b2R1bGVzW2ldOworICAgICAgICAgICAgICAgIHZhciBkZXBLZXkgPSB0aGlzLnJlc29sdmVTeW5j
KGRlcE5hbWUsIGtleSwgZmV0Y2hlcik7CisgICAgICAgICAgICAgICAgdmFyIGRlcEVudHJ5ID0g
dGhpcy5lbnN1cmVSZWdpc3RlcmVkKGRlcEtleSk7CisgICAgICAgICAgICAgICAgQHB1dEJ5VmFs
RGlyZWN0KGRlcGVuZGVuY2llcywgaSwgZGVwRW50cnkpOworICAgICAgICAgICAgICAgIGRlcGVu
ZGVuY2llc01hcC5Ac2V0KGRlcE5hbWUsIGRlcEVudHJ5KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVudHJ5LmRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llczsKKyAgICAgICAgICAgIGVu
dHJ5Lm1vZHVsZSA9IG1vZHVsZVJlY29yZDsKKyAgICAgICAgICAgIEBzZXRTdGF0ZVRvTWF4KGVu
dHJ5LCBATW9kdWxlU2F0aXNmeSk7CisgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAg
IH0pOwogICAgIH0pOwogICAgIHJldHVybiBpbnN0YW50aWF0ZVByb21pc2U7CiB9CkBAIC0yODgs
NyArMjg3LDcgQEAgZnVuY3Rpb24gbGluayhlbnRyeSwgZmV0Y2hlcikKICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkK
ICAgICAgICAgICAgIHRoaXMubGluayhkZXBlbmRlbmNpZXNbaV0sIGZldGNoZXIpOwogCi0gICAg
ICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVsZSwgZW50
cnkua2V5LCBmZXRjaGVyKTsKKyAgICAgICAgdGhpcy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRp
YXRpb24oZW50cnkubW9kdWxlLCBmZXRjaGVyKTsKICAgICB9IGNhdGNoIChlcnJvcikgewogICAg
ICAgICBlbnRyeS5saW5rU3VjY2VlZGVkID0gZmFsc2U7CiAgICAgICAgIGVudHJ5LmxpbmtFcnJv
ciA9IGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0MGM3ZWRjOGY2ZTcwYjBhMzZhOWI3
OTU3NTViNjY3Njg1MmY5ZGIyLi40ZTUwNDMyYjY4YmFmOWY0MjA4YjljNTZiYzVkNmJiMzIzYTBm
ZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTg2LDcgKzE4Niw4IEBAIHN0YXRpYyB1bnNp
Z25lZCBhc3luY1Rlc3RFeHBlY3RlZFBhc3NlcyB7IDAgfTsKIAogfQogCi1zdGF0aWMgYm9vbCBm
aWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIFZlY3Rv
cjxjaGFyPiYgYnVmZmVyKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KK3N0YXRpYyBib29s
IGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgVmVj
dG9yJiBidWZmZXIpOwogc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBmaWxsQnVmZmVyV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwogCiBjbGFzcyBDb21tYW5kTGlu
ZTsKQEAgLTg0NCw3ICs4NDUsOCBAQCBJZGVudGlmaWVyIEdsb2JhbE9iamVjdDo6bW9kdWxlTG9h
ZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjUwogICAgIHJldHVy
biBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVzb2x2ZVBhdGgoZGlyZWN0b3J5TmFtZS52
YWx1ZSgpLCBNb2R1bGVOYW1lKGtleS5pbXBsKCkpKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnZl
cnRTaGViYW5nVG9KU0NvbW1lbnQoVmVjdG9yPGNoYXI+JiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBWZWN0b3I+CitzdGF0aWMgdm9pZCBjb252ZXJ0U2hlYmFuZ1RvSlNDb21tZW50KFZlY3Rv
ciYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuc2l6ZSgpID49IDIpIHsKICAgICAgICAgaWYg
KGJ1ZmZlclswXSA9PSAnIycgJiYgYnVmZmVyWzFdID09ICchJykKQEAgLTg4Miw3ICs4ODQsOCBA
QCBzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMg
Ym9vbCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKEZJTEUqIGZpbGUsIFZlY3RvcjxjaGFy
PiYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yPgorc3RhdGljIGJvb2wgZmlsbEJ1
ZmZlcldpdGhDb250ZW50c09mRmlsZShGSUxFKiBmaWxlLCBWZWN0b3ImIGJ1ZmZlcikKIHsKICAg
ICAvLyBXZSBtaWdodCBoYXZlIGluamVjdGVkICJ1c2Ugc3RyaWN0IjsgYXQgdGhlIHRvcC4KICAg
ICBzaXplX3QgaW5pdGlhbFNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtOTIwLDcgKzkyMyw4IEBA
IHN0YXRpYyBib29sIGZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBWZWN0b3I8Y2hhcj4mCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBi
b29sIGZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFZlY3Rvcj4KK3N0YXRp
YyBib29sIGZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBWZWN0b3ImIGJ1ZmZlcikKIHsKICAgICAvLyBXZSBhc3N1bWUgdGhhdCBmaWxlTmFtZSBp
cyBhbHdheXMgYW4gYWJzb2x1dGUgcGF0aC4KICNpZiBPUyhXSU5ET1dTKQpAQCAtOTcxLDEzICs5
NzUsMjQgQEAgSlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0
Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICB9CiAKICAgICAvLyBIZXJlLCBu
b3cgd2UgY29uc2lkZXIgbW9kdWxlS2V5IGFzIHRoZSBmaWxlTmFtZS4KLSAgICBWZWN0b3I8Y2hh
cj4gdXRmODsKKyAgICBWZWN0b3I8dWludDhfdD4gdXRmODsKICAgICBpZiAoIWZldGNoTW9kdWxl
RnJvbUxvY2FsRmlsZVN5c3RlbShtb2R1bGVLZXksIHV0ZjgpKSB7CiAgICAgICAgIGF1dG8gcmVz
dWx0ID0gZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJDb3VsZCBub3Qgb3BlbiBmaWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7CiAgICAgICAgIHNj
b3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICAvLyBGaWxlU3lzdGVtIGRvZXMg
bm90IGhhdmUgbWltZS10eXBlIGhlYWRlci4gVGhlIEpTQyBzaGVsbCByZWNvZ25pemVzIFdlYkFz
c2VtYmx5J3MgbWFnaWMgaGVhZGVyLgorICAgIGlmICh1dGY4LnNpemUoKSA+PSA0KSB7CisgICAg
ICAgIGlmICh1dGY4WzBdID09ICdcMCcgJiYgdXRmOFsxXSA9PSAnYScgJiYgdXRmOFsyXSA9PSAn
cycgJiYgdXRmOFszXSA9PSAnbScpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJy
ZWQtPnJlc29sdmUoZXhlYywgSlNTb3VyY2VDb2RlOjpjcmVhdGUodm0sIFNvdXJjZUNvZGUoV2Vi
QXNzZW1ibHlTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKFdURk1vdmUodXRmOCksIFNvdXJjZU9yaWdp
biB7IG1vZHVsZUtleSB9LCBtb2R1bGVLZXkpKSkpOworICAgICAgICAgICAgc2NvcGUucmVsZWFz
ZUFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9CisgICAgfQorI2VuZGlmCisKICAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZl
KGV4ZWMsIEpTU291cmNlQ29kZTo6Y3JlYXRlKHZtLCBtYWtlU291cmNlKHN0cmluZ0Zyb21VVEYo
dXRmOCksIFNvdXJjZU9yaWdpbiB7IG1vZHVsZUtleSB9LCBtb2R1bGVLZXksIFRleHRQb3NpdGlv
bigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSkpKTsKICAgICBzY29wZS5yZWxl
YXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCmluZGV4IDJlNjhlODIwMjdkYjI4
NTg5ZjM3YjRmMDBmNmNmODgwYjRlYWZjODIuLjBkMGMyZmM4NGNkMDVhNThhMzEyMTJhMzY5YWY3
NWE1ODFhMDEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyLmgKQEAgLTEyMCw5ICsxMjAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgY2xhc3MgV2ViQXNzZW1ibHlTb3VyY2VQcm92aWRlciA6IHB1Ymxp
YyBTb3VyY2VQcm92aWRlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPFdlYkFz
c2VtYmx5U291cmNlUHJvdmlkZXI+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEs
IGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHVybCkKKyAg
ICAgICAgc3RhdGljIFJlZjxXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyPiBjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0
IFN0cmluZyYgdXJsKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyKGRhdGEsIHNvdXJjZU9yaWdpbiwgdXJsKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVy
KFdURk1vdmUoZGF0YSksIHNvdXJjZU9yaWdpbiwgdXJsKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3Qgb3ZlcnJpZGUKQEAgLTE0MSwxMCArMTQxLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBXZWJBc3Nl
bWJseVNvdXJjZVByb3ZpZGVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29uc3QgU291
cmNlT3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICBXZWJB
c3NlbWJseVNvdXJjZVByb3ZpZGVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIGNvbnN0IFNvdXJj
ZU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgICAgIDog
U291cmNlUHJvdmlkZXIoc291cmNlT3JpZ2luLCB1cmwsIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQ
cm92aWRlclNvdXJjZVR5cGU6OldlYkFzc2VtYmx5KQogICAgICAgICAgICAgLCBtX3NvdXJjZSgi
W1dlYkFzc2VtYmx5IHNvdXJjZV0iKQotICAgICAgICAgICAgLCBtX2RhdGEoZGF0YSkKKyAgICAg
ICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgICAgIHsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJl
Y29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJl
Y29yZC5jcHAKaW5kZXggMzMyNTNkZjU5NmY3MDkyNTIyNGIzODY4YmY4ODMzZmQwOWRjYzQ4MS4u
MmM4MDQyZGZlZDNkZWQ0YWE5MTE4YmQwOWJiMWI3NDFiMGQ1MDZmOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcApA
QCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVF
bnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisjaW5j
bHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBBYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsIHsKQEAg
LTEzNywxOSArMTM5LDExIEBAIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246
OmFtYmlndW91cygpIC0+IFJlc29sdXRpb24KICAgICByZXR1cm4gUmVzb2x1dGlvbiB7IFR5cGU6
OkFtYmlndW91cywgbnVsbHB0ciwgSWRlbnRpZmllcigpIH07CiB9CiAKLXN0YXRpYyBKU1ZhbHVl
IGlkZW50aWZpZXJUb0pTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKGlkZW50aWZp
ZXIuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNf
Y2FzdDxTeW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSk7Ci0gICAgcmV0dXJuIGpzU3Ry
aW5nKCZ2bSwgaWRlbnRpZmllci5pbXBsKCkpOwotfQotCiBBYnN0cmFjdE1vZHVsZVJlY29yZCog
QWJzdHJhY3RNb2R1bGVSZWNvcmQ6Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IEpTVmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmllclRvSlNWYWx1ZShleGVjLCBtb2R1
bGVOYW1lKTsKKyAgICBKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSA9IGlkZW50aWZpZXJUb0pTVmFs
dWUodm0sIG1vZHVsZU5hbWUpOwogICAgIEpTVmFsdWUgZW50cnkgPSBtX2RlcGVuZGVuY2llc01h
cC0+SlNNYXA6OmdldChleGVjLCBtb2R1bGVOYW1lVmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTc3NSw2ICs3
NjksMzEgQEAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpn
ZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRlKiBleGUKICAgICByZXR1cm4gbW9kdWxlTmFtZXNw
YWNlT2JqZWN0OwogfQogCit2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgaWYgKGF1dG8qIGpzTW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVs
ZVJlY29yZCo+KHZtLCB0aGlzKSkKKyAgICAgICAgcmV0dXJuIGpzTW9kdWxlUmVjb3JkLT5saW5r
KGV4ZWMsIHNjcmlwdEZldGNoZXIpOworI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKKyAgICBpZiAo
YXV0byogd2FzbU1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQqPih2bSwgdGhpcykpCisgICAgICAgIHJldHVybiB3YXNtTW9kdWxlUmVjb3JkLT5saW5r
KGV4ZWMsIHNjcmlwdEZldGNoZXIpOworI2VuZGlmCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKworSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgaWYgKGF1dG8qIGpzTW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVs
ZVJlY29yZCo+KHZtLCB0aGlzKSkKKyAgICAgICAgcmV0dXJuIGpzTW9kdWxlUmVjb3JkLT5ldmFs
dWF0ZShleGVjKTsKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgaWYgKGF1dG8qIHdhc21N
b2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4odm0s
IHRoaXMpKQorICAgICAgICByZXR1cm4gd2FzbU1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7
CisjZW5kaWYKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworfQorCiBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU5hbWUoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgdWlkKQogewogICAgIGlmICh1aWQtPmlzU3ltYm9sKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVs
ZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVS
ZWNvcmQuaAppbmRleCA1OTI5OTViNTA2MTljYmZlNmNjMmZhZGEyOGI3ZTZjNGFiMjgwY2I0Li41
NTg4YjJmMDM4NzRlOGY0YzM1YjU2YjhhMTdlZGZkNzY4ODZkODk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgKQEAgLTEx
OSw2ICsxMTksOSBAQCBjbGFzcyBBYnN0cmFjdE1vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBtX21vZHVsZUVudmlyb25tZW50LmdldCgp
OwogICAgIH0KIAorICAgIHZvaWQgbGluayhFeGVjU3RhdGUqLCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKik7
CisKIHByb3RlY3RlZDoKICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZChWTSYsIFN0cnVjdHVyZSos
IGNvbnN0IElkZW50aWZpZXImKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSos
IFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRl
ci5jcHAKaW5kZXggMWJlM2M3YWMzODZmYmIxN2U2NTY5Zjk4ZTlmOGY4NDQ4NTc2YjVkMC4uOTA4
NTkxZDkyODBjOGRmOGQzM2Y2NWNmMzM5NzhiMzI3OGMwMGYwNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtMjc1LDEwICsyNzUs
OSBAQCBKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlYwogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRlKQogICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJF
dmFsdWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIHRoaXMsIGtleSwgbW9kdWxlUmVjb3JkVmFsdWUs
IHNjcmlwdEZldGNoZXIpOwogCi0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpz
RHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT52bSgpLCBtb2R1bGVSZWNvcmRWYWx1
ZSk7Ci0gICAgaWYgKCFtb2R1bGVSZWNvcmQpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgIHJldHVybiBtb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworICAgIGlmIChhdXRv
KiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4oZXhl
Yy0+dm0oKSwgbW9kdWxlUmVjb3JkVmFsdWUpKQorICAgICAgICByZXR1cm4gbW9kdWxlUmVjb3Jk
LT5ldmFsdWF0ZShleGVjKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAogSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlTG9hZGVyOjpnZXRNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDZmYTJm
NzJlYTJlNzI4ZWNiNDgxZWJiYmQ2MjIyZmU0M2Y1MjlhZDkuLmE3Yzk5ZGNjNDgzMzA2MGE5YzMy
NjViZjM0YjViMWZlMjU5OGJiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBKU01vZHVsZVJl
Y29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUp
OwogfQogCi12b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBrZXksIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK3ZvaWQgSlNNb2R1bGVSZWNvcmQ6Omxpbmso
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC04OSwxMiArODksMTIgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKGV4ZWMsIGV4ZWN1dGFibGUsIGtleSwgc2NyaXB0RmV0Y2hlcik7
CisgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSwgc2NyaXB0RmV0
Y2hlcik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBtX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CiB9CiAKLXZv
aWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhl
YywgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLCBKU1Zh
bHVlIGtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQordm9pZCBKU01vZHVsZVJlY29yZDo6aW5z
dGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdQog
ICAgIH0KIAogICAgIHsKLSAgICAgICAgSlNPYmplY3QqIG1ldGFQcm9wZXJ0aWVzID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tb2R1bGVMb2FkZXIoKS0+Y3JlYXRlSW1wb3J0TWV0YVBy
b3BlcnRpZXMoZXhlYywga2V5LCB0aGlzLCBzY3JpcHRGZXRjaGVyKTsKKyAgICAgICAgSlNPYmpl
Y3QqIG1ldGFQcm9wZXJ0aWVzID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5tb2R1bGVM
b2FkZXIoKS0+Y3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoZXhlYywgaWRlbnRpZmllclRvSlNW
YWx1ZSh2bSwgbW9kdWxlS2V5KCkpLCB0aGlzLCBzY3JpcHRGZXRjaGVyKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICAgICAgYm9vbCBwdXRSZXN1bHQg
PSBmYWxzZTsKICAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQobW9kdWxl
RW52aXJvbm1lbnQsIGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ldGFQ
cml2YXRlTmFtZSgpLCBtZXRhUHJvcGVydGllcywgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9y
ICovIGZhbHNlLCAvKiBpZ25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlLCBwdXRSZXN1bHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXgg
Y2RmY2M0MGVlNTgyOWU3MjU3NTE0Zjk4MTdlOTkzNjgwNzA5NDliYy4uYWMyZGNmYTZjNTI5OGJk
NzNlNGZkYzJjZjUxZjBjYzE1NDA3YmNmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIEpTTW9kdWxl
UmVjb3JkIGZpbmFsIDogcHVibGljIEFic3RyYWN0TW9kdWxlUmVjb3JkIHsKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKEV4ZWNTdGF0ZSosIFZNJiwgU3Ry
dWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCi0gICAgdm9p
ZCBsaW5rKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwor
ICAgIHZvaWQgbGluayhFeGVjU3RhdGUqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKik7CiAKICAgICBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlOyB9
CkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIGZpbmFsIDogcHVibGljIEFi
c3RyYWN0TW9kdWxlUmVjb3JkIHsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAot
ICAgIHZvaWQgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiwgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICB2
b2lkIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSosIE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlKiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKIAogICAgIFNvdXJjZUNvZGUgbV9zb3Vy
Y2VDb2RlOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9kZWNsYXJlZFZhcmlhYmxlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90
b3R5cGUuY3BwCmluZGV4IDNkNGY0NGExNDU5N2VjMWNjMDViY2YyYzcyNjRhYTJlYjU0N2ZhZTQu
LjRlMDkzZTEwYWE1ZGU0YzYyMTI1NzY4NzViZmYxODY5NWU4ZDMxYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNw
cApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseVByb3Rv
dHlwZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzYsNyArNzcsNyBAQCBjb25zdCBDbGFz
c0luZm8gTW9kdWxlTG9hZGVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAm
QmFzZTo6c19pbmZvLAogICAgIHJlcXVlc3RJbnN0YW50aWF0ZSAgICAgICAgICAgICBKU0J1aWx0
aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMwogICAgIHJlcXVlc3RTYXRpc2Z5ICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MwogICAgIGxpbmsgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAg
IG1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBtb2R1bGVMb2FkZXJQcm90b3R5cGVNb2R1
bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gRG9udEVudW18RnVuY3Rpb24gMworICAgIG1vZHVs
ZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBtb2R1bGVMb2FkZXJQcm90b3R5cGVNb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24gRG9udEVudW18RnVuY3Rpb24gMgogICAgIG1vZHVsZUV2YWx1
YXRpb24gICAgICAgICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICAgIGV2YWx1YXRlICAgICAgICAg
ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJQcm90b3R5cGVFdmFsdWF0ZSAgICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMwogICAgIHByb3ZpZGVGZXRjaCAgICAgICAgICAg
ICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMgpAQCAtMTAzLDQxICsxMDQsNTIgQEAgTW9kdWxlTG9hZGVy
UHJvdG90eXBlOjpNb2R1bGVMb2FkZXJQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90eXBl
UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTSW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgc2NvcGUucmVsZWFzZUFzc2VydE5v
RXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIHJlamVjdCA9IFsmXSB7CisgICAgICAgIEpTVmFsdWUg
ZXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7CisgICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0
aW9uKCk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVmZXJyZWQtPnJlamVjdChl
eGVjLCBleGNlcHRpb24pKTsKKyAgICB9OwogCiAgICAgY29uc3QgSWRlbnRpZmllciBtb2R1bGVL
ZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiByZWplY3QoKTsKIAotICAgIGF1dG8q
IGpzU291cmNlQ29kZSA9IGpzRHluYW1pY0Nhc3Q8SlNTb3VyY2VDb2RlKj4odm0sIGV4ZWMtPmFy
Z3VtZW50KDEpKTsKLSAgICBpZiAoIWpzU291cmNlQ29kZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOworICAgIEpTVmFsdWUgc291cmNlID0gZXhlYy0+YXJn
dW1lbnQoMSk7CisgICAgYXV0byoganNTb3VyY2VDb2RlID0ganNDYXN0PEpTU291cmNlQ29kZSo+
KHNvdXJjZSk7CiAgICAgU291cmNlQ29kZSBzb3VyY2VDb2RlID0ganNTb3VyY2VDb2RlLT5zb3Vy
Y2VDb2RlKCk7CiAKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgaWYgKHNvdXJjZUNvZGUu
cHJvdmlkZXIoKS0+c291cmNlVHlwZSgpID09IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6V2Vi
QXNzZW1ibHkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV2ViQXNzZW1ibHlQcm90
b3R5cGU6Omluc3RhbnRpYXRlKGV4ZWMsIGRlZmVycmVkLCBtb2R1bGVLZXksIGpzU291cmNlQ29k
ZSkpOworI2VuZGlmCisKICAgICBDb2RlUHJvZmlsaW5nIHByb2ZpbGUoc291cmNlQ29kZSk7CiAK
ICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3Jh
bU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAg
ICAgICAmdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwKICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwotCi0gICAgaWYgKGVycm9yLmlzVmFsaWQo
KSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmpl
Y3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7Ci0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfQorICAgIGlmIChlcnJv
ci5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVmZXJyZWQtPnJl
amVjdChleGVjLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgc291cmNlQ29kZSkpKTsKICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUpOwogCiAgICAg
TW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZXhlYywgbW9kdWxlS2V5LCBzb3VyY2VDb2Rl
LCBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2Rl
LT5sZXhpY2FsVmFyaWFibGVzKCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwotICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBtb2R1
bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSk7CisgICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdCgpOwogCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShtb2R1bGVSZWNvcmQpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbW9kdWxlQW5hbHl6ZXIuYW5hbHl6ZSgqbW9k
dWxlUHJvZ3JhbU5vZGUpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9k
dWxlTG9hZGVyUHJvdG90eXBlUmVxdWVzdGVkTW9kdWxlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nh
c3Q8SlNNb2R1bGVSZWNvcmQqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIGF1dG8qIG1v
ZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPih2bSwgZXhl
Yy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlUmVjb3JkKSB7CiAgICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0
eUFycmF5KGV4ZWMsIG51bGxwdHIpKTsKQEAgLTE1NywxNCArMTY5LDE0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlTW9kdWxlRGVjbGFyYXRpb25J
bnN0YW50aWF0aW9uCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPih2bSwgZXhlYy0+YXJndW1lbnQo
MCkpOworICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1
bGVSZWNvcmQqPih2bSwgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghbW9kdWxlUmVjb3Jk
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAg
aWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkKICAgICAgICAgZGF0YUxvZygi
TG9hZGVyIFtsaW5rXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKIAotICAg
IG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJndW1l
bnQoMikpOworICAgIG1vZHVsZVJlY29yZC0+bGluayhleGVjLCBleGVjLT5hcmd1bWVudCgxKSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggYmQw
NmQzYzljMjUxNjVlY2RmMGI3Yjg0MmEyMDkxNGQ2ZWQ1OWRhNy4uYzUxMjg2YjdkYTk2MGM3M2Vh
YWUxZjI4NzdmZTYyOTM5MzQ3ZTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkpTU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgogCkBAIC00OSwxMCArNTAsMTYg
QEAgQUxXQVlTX0lOTElORSB1aW50MzJfdCB0b05vbldyYXBwaW5nVWludDMyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRv
dWJsZVZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8dWludDhfdCosIHNpemVf
dD4gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CitBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxjb25zdCB1aW50OF90Kiwgc2l6ZV90PiBnZXRXYXNt
QnVmZmVyRnJvbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgaWYgKGF1dG8qIHNvdXJjZSA9IGpzRHluYW1pY0Nhc3Q8SlNTb3Vy
Y2VDb2RlKj4odm0sIHZhbHVlKSkgeworICAgICAgICBhdXRvKiBwcm92aWRlciA9IHN0YXRpY19j
YXN0PFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXIqPihzb3VyY2UtPnNvdXJjZUNvZGUoKS5wcm92
aWRlcigpKTsKKyAgICAgICAgcmV0dXJuIHsgcHJvdmlkZXItPmRhdGEoKS5kYXRhKCksIHByb3Zp
ZGVyLT5kYXRhKCkuc2l6ZSgpIH07CisgICAgfQorCiAgICAgLy8gSWYgdGhlIGdpdmVuIGJ5dGVz
IGFyZ3VtZW50IGlzIG5vdCBhIEJ1ZmZlclNvdXJjZSwgYSBUeXBlRXJyb3IgZXhjZXB0aW9uIGlz
IHRocm93bi4KICAgICBKU0FycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IHZhbHVlLmdldE9iamVj
dCgpID8ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIHZhbHVlLmdldE9iamVjdCgp
KSA6IG51bGxwdHI7CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldyA9IHZh
bHVlLmdldE9iamVjdCgpID8ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHZtLCB2
YWx1ZS5nZXRPYmplY3QoKSkgOiBudWxscHRyOwpAQCAtNzYsNyArODMsNyBAQCBBTFdBWVNfSU5M
SU5FIHN0ZDo6cGFpcjx1aW50OF90Kiwgc2l6ZV90PiBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKEV4
ZWNTdGF0ZSogZXhlYwogQUxXQVlTX0lOTElORSBWZWN0b3I8dWludDhfdD4gY3JlYXRlU291cmNl
QnVmZmVyRnJvbVZhbHVlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQog
ewogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHVp
bnQ4X3QqIGRhdGE7CisgICAgY29uc3QgdWludDhfdCogZGF0YTsKICAgICBzaXplX3QgYnl0ZVNp
emU7CiAgICAgc3RkOjp0aWUoZGF0YSwgYnl0ZVNpemUpID0gZ2V0V2FzbUJ1ZmZlckZyb21WYWx1
ZShleGVjLCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBWZWN0
b3I8dWludDhfdD4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAppbmRleCA3NzFhNjQwYTMyYjg1OTlhMDVhM2Rm
NDUzNjM3ZGQ2YjUzYTljOTA3Li4yMzc5OThjNjlkOTRkMTUzYjExMzYyOWI5ZmQ4Yjc0MTEzYjRi
OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlJbnN0YW5jZS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5
SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICAgICAgdmlzaXRvci5hcHBlbmQoKnRoaXNPYmplY3QtPmluc3RhbmNlKCkuaW1wb3J0
RnVuY3Rpb248UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4oaSkpOyAvLyBUaGlzIGFsc28ga2Vl
cHMgdGhlIGZ1bmN0aW9ucycgSlNXZWJBc3NlbWJseUluc3RhbmNlIGFsaXZlLgogfQogCi12b2lk
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4ZWNTdGF0
ZSogZXhlYywgUmVmPFdhc206OkNvZGVCbG9jaz4mJiB3YXNtQ29kZUJsb2NrKQordm9pZCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmZpbmFsaXplQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMsIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgd2FzbUNvZGVCbG9jaywgTW9kdWxlUnVuTW9kZSBt
b2R1bGVSdW5Nb2RlKQogewogICAgIG1faW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odGhpcywg
d2FzbUNvZGVCbG9jay5jb3B5UmVmKCkpOwogCkBAIC0xMjcsMTUgKzEyNywyNCBAQCB2b2lkIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6ZmluYWxpemVDcmVhdGlvbihWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYywgUmVmPFdhc206OgogICAgIH0KIAogICAgIGF1dG8qIG1vZHVsZVJlY29yZCA9IGpzQ2Fz
dDxXZWJBc3NlbWJseU1vZHVsZVJlY29yZCo+KG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LT5tb2R1
bGVSZWNvcmQoKSk7Ci0gICAgbW9kdWxlUmVjb3JkLT5saW5rKGV4ZWMsIG1fbW9kdWxlLmdldCgp
LCB0aGlzKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIG1v
ZHVsZVJlY29yZC0+cHJlcGFyZUxpbmsodm0sIHRoaXMpOwogCi0gICAgSlNWYWx1ZSBzdGFydFJl
c3VsdCA9IG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXJ0UmVzdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAg
IGlmIChtb2R1bGVSdW5Nb2RlID09IE1vZHVsZVJ1bk1vZGU6OlJ1bikgeworICAgICAgICBtb2R1
bGVSZWNvcmQtPmxpbmsoZXhlYywganNOdWxsKCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgICAgIEpTVmFsdWUgc3RhcnRSZXN1bHQgPSBtb2R1
bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworICAgICAgICBVTlVTRURfUEFSQU0oc3RhcnRSZXN1
bHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0K
K30KKworSWRlbnRpZmllciBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1
bGVLZXkoKQoreworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKFBy
aXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgIldlYkFzc2VtYmx5SW5zdGFuY2UiKSk7CiB9CiAKLUpT
V2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGpzTW9kdWxlLCBKU09iamVj
dCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUqIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6
TW9kdWxlPiYmIG1vZHVsZSkKK0pTV2ViQXNzZW1ibHlJbnN0YW5jZSogSlNXZWJBc3NlbWJseUlu
c3RhbmNlOjpjcmVhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IG1vZHVsZUtleSwgSlNXZWJBc3NlbWJseU1vZHVsZSoganNNb2R1bGUsIEpTT2JqZWN0KiBpbXBv
cnRPYmplY3QsIFN0cnVjdHVyZSogaW5zdGFuY2VTdHJ1Y3R1cmUsIFJlZjxXYXNtOjpNb2R1bGU+
JiYgbW9kdWxlKQogewogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKQEAgLTE1OCw3ICsxNjcsNiBAQCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZTo6Y3JlYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKUwogICAgIGlmICht
b2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRzLnNpemUoKSAmJiAhaW1wb3J0T2JqZWN0KQogICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImNh
bid0IG1ha2UgV2ViQXNzZW1ibHkuSW5zdGFuY2UgYmVjYXVzZSB0aGVyZSBpcyBubyBpbXBvcnRz
IE9iamVjdCBhbmQgdGhlIFdlYkFzc2VtYmx5Lk1vZHVsZSByZXF1aXJlcyBpbXBvcnRzIikpKTsK
IAotICAgIElkZW50aWZpZXIgbW9kdWxlS2V5ID0gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRl
TmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24sICJXZWJBc3NlbWJseUluc3RhbmNlIikpOwog
ICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6Y3JlYXRlKGV4ZWMsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkU3RydWN0dXJlKCksIG1vZHVsZUtleSwgbW9kdWxlSW5mb3JtYXRpb24pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKaW5k
ZXggZWQ5YjJiMTE4YmZkM2EwYjdlYTlkMmM0MzExZTVhZTE5MTU2ZmRmMi4uMDMyYjU2NWYwODFl
MGUwNzFiZmNkYjNhYmU3OWI5OWU3ODkxM2Y5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKQEAgLTUwLDEyICs1MCwx
NSBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVj
dGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3Qg
QmFzZTsKIAotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGNyZWF0ZShWTSYsIEV4
ZWNTdGF0ZSosIEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBT
dHJ1Y3R1cmUqLCBSZWY8V2FzbTo6TW9kdWxlPiYmKTsKKyAgICBzdGF0aWMgSWRlbnRpZmllciBj
cmVhdGVQcml2YXRlTW9kdWxlS2V5KCk7CisKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXks
IEpTV2ViQXNzZW1ibHlNb2R1bGUqLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBTdHJ1Y3R1cmUq
LCBSZWY8V2FzbTo6TW9kdWxlPiYmKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKIAotICAgIHZvaWQgZmluYWxpemVDcmVhdGlvbihWTSYsIEV4ZWNTdGF0ZSosIFJl
ZjxXYXNtOjpDb2RlQmxvY2s+JiYpOworICAgIGVudW0gY2xhc3MgTW9kdWxlUnVuTW9kZSB7IFJ1
biwgTm9uZSB9OworICAgIHZvaWQgZmluYWxpemVDcmVhdGlvbihWTSYsIEV4ZWNTdGF0ZSosIFJl
ZjxXYXNtOjpDb2RlQmxvY2s+JiYsIE1vZHVsZVJ1bk1vZGUpOwogICAgIAogICAgIFdhc206Oklu
c3RhbmNlJiBpbnN0YW5jZSgpIHsgcmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0KICAgICBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCogbW9kdWxlTmFtZXNwYWNlT2JqZWN0KCkgeyByZXR1cm4gbV9t
b2R1bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7IH0KQEAgLTc2LDYgKzc5LDggQEAgY2xhc3MgSlNX
ZWJBc3NlbWJseUluc3RhbmNlIGZpbmFsIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsK
ICAgICAgICAgaW5zdGFuY2UoKS5zZXRUYWJsZShtYWtlUmVmKCp0YWJsZSgpLT50YWJsZSgpKSk7
CiAgICAgfQogCisgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlKCkgY29uc3QgeyByZXR1
cm4gbV9tb2R1bGUuZ2V0KCk7IH0KKwogICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZQb2lzb25l
ZEluc3RhbmNlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSwgbV9pbnN0YW5jZSk7IH0KICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mUG9pc29uZWRDYWxs
ZWUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2Nh
bGxlZSk7IH0KIApAQCAtODksOCArOTQsNiBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2Ug
ZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHJpdmF0ZToKLSAgICBKU1dl
YkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZS5nZXQoKTsg
fQotCiAgICAgUG9pc29uZWRSZWY8SlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uLCBXYXNtOjpJ
bnN0YW5jZT4gbV9pbnN0YW5jZTsKIAogICAgIFBvaXNvbmVkQmFycmllcjxKU1dlYkFzc2VtYmx5
TW9kdWxlPiBtX21vZHVsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCmluZGV4IGI2
Nzg4ZmE1MGM2NDU0YTIwZDM1NzUwZDIzMGYzZWJhYzAzMmM4OGMuLjQ5NjA5ODkzYWUyNWZlOGYx
MjcwZmRhNjFjNTZjYzgxMDAzMGYxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNw
cApAQCAtNzcsMTAgKzc3LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZShFeGVjU3RhdGUqIGV4CiAgICAgU3RydWN0
dXJlKiBpbnN0YW5jZVN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFu
Y2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxlLCBpbXBv
cnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1v
ZHVsZSgpKSk7CisgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNy
ZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3Ry
dWN0dXJlLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1bGUtPm1vZHVsZSgpKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0
aW9uKHZtLCBleGVjLCBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVTeW5jKCZ2bS53YXNtQ29udGV4
dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgJldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlciwg
Jldhc206Ondhc21Ub0pTRXhjZXB0aW9uKSk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRp
b24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoJnZtLndhc21Db250ZXh0
LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCAmV2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyLCAm
V2FzbTo6d2FzbVRvSlNFeGNlcHRpb24pLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1
bk1vZGU6OlJ1bik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRl
eCBlMzQ2NDZjNmRiODFkODZlNjdmODIwNzdhZjg5M2E2ZGRmMmNmMzZiLi4wZTQ4NDc1OGE0YzFk
NjEwZGIyYTg4YWZkN2M2YzlmNmJhNTNhNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC04Niwx
NCArODYsMjMgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fc3RhcnRGdW5jdGlvbik7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCit2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpwcmVwYXJlTGluayhWTSYgdm0sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFu
Y2UpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1faW5zdGFuY2UpOworICAgIG1faW5zdGFuY2Uu
c2V0KHZtLCB0aGlzLCBpbnN0YW5jZSk7Cit9CisKK3ZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVO
VVNFRF9QQVJBTShzY29wZSk7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpOwogCi0gICAgV2FzbTo6Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBpbnN0
YW5jZS0+aW5zdGFuY2UoKS5jb2RlQmxvY2soKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2luc3Rh
bmNlKTsKKworICAgIFdhc206OkNvZGVCbG9jayogY29kZUJsb2NrID0gbV9pbnN0YW5jZS0+aW5z
dGFuY2UoKS5jb2RlQmxvY2soKTsKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBt
X2luc3RhbmNlLT5tb2R1bGUoKTsKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYg
bW9kdWxlSW5mb3JtYXRpb24gPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCk7CiAKICAgICBT
eW1ib2xUYWJsZSogZXhwb3J0U3ltYm9sVGFibGUgPSBtb2R1bGUtPmV4cG9ydFN5bWJvbFRhYmxl
KCk7CkBAIC0xMTAsMTIgKzExOSwxMiBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLAogICAgICAg
ICAgICAgLy8gICBpaS4gKE5vdGU6IEF0IG1vc3Qgb25lIHdyYXBwZXIgaXMgY3JlYXRlZCBmb3Ig
YW55IGNsb3N1cmUsIHNvIGZ1bmMgaXMgdW5pcXVlLCBldmVuIGlmIHRoZXJlIGFyZSBtdWx0aXBs
ZSBvY2N1cnJhbmNlcyBpbiB0aGUgbGlzdC4gTW9yZW92ZXIsIGlmIHRoZSBpdGVtIHdhcyBhbiBp
bXBvcnQgdGhhdCBpcyBhbHJlYWR5IGFuIEV4cG9ydGVkIEZ1bmN0aW9uIEV4b3RpYyBPYmplY3Qs
IHRoZW4gdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdCB3aWxsIGJlIGZvdW5kLiBGb3IgaW1w
b3J0cyB0aGF0IGFyZSByZWd1bGFyIEpTIGZ1bmN0aW9ucywgYSBuZXcgd3JhcHBlciB3aWxsIGJl
IGNyZWF0ZWQuKQogICAgICAgICAgICAgaWYgKGV4cC5raW5kSW5kZXggPCBmdW5jdGlvbkltcG9y
dENvdW50KSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IGV4cC5r
aW5kSW5kZXg7Ci0gICAgICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uSW1wb3J0ID0gaW5z
dGFuY2UtPmluc3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248SlNXZWJBc3NlbWJseUluc3RhbmNlOjpQ
b2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+PihmdW5jdGlvbkluZGV4KS0+Z2V0KCk7CisgICAgICAg
ICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9uSW1wb3J0ID0gbV9pbnN0YW5jZS0+aW5zdGFuY2Uo
KS5pbXBvcnRGdW5jdGlvbjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OlBvaXNvbmVkQmFycmllcjxK
U09iamVjdD4+KGZ1bmN0aW9uSW5kZXgpLT5nZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoaXNX
ZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgZnVuY3Rpb25JbXBvcnQpKQogICAgICAgICAgICAg
ICAgICAgICBleHBvcnRlZFZhbHVlID0gZnVuY3Rpb25JbXBvcnQ7CiAgICAgICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVy
ZUluZGV4ID0gbW9kdWxlLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVu
Y3Rpb25JbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBXZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uSW1w
b3J0LCBmdW5jdGlvbkluZGV4LCBpbnN0YW5jZSwgc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAg
ICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbkltcG9ydCwgZnVuY3Rpb25JbmRleCwgbV9p
bnN0YW5jZS5nZXQoKSwgc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gICBpaWkuIE90aGVyd2lzZToKQEAg
LTEyNiwyMyArMTM1LDIzIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhl
Y1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsCiAgICAgICAgICAgICAg
ICAgV2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6TG9hZExvY2F0aW9uIGVudHJ5
cG9pbnRMb2FkTG9jYXRpb24gPSBjb2RlQmxvY2stPmVudHJ5cG9pbnRMb2FkTG9jYXRpb25Gcm9t
RnVuY3Rpb25JbmRleFNwYWNlKGV4cC5raW5kSW5kZXgpOwogICAgICAgICAgICAgICAgIFdhc206
OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLT5zaWduYXR1cmVJbmRleEZy
b21GdW5jdGlvbkluZGV4U3BhY2UoZXhwLmtpbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgY29u
c3QgV2FzbTo6U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKLSAgICAgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0
aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVs
ZCksIGluc3RhbmNlLCBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUsIGVudHJ5cG9pbnRMb2FkTG9j
YXRpb24sIHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0
aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVs
ZCksIG1faW5zdGFuY2UuZ2V0KCksIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlwb2lu
dExvYWRMb2NhdGlvbiwgc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICAgICAgICAgIGV4cG9ydGVk
VmFsdWUgPSBmdW5jdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpUYWJsZTogewogICAgICAg
ICAgICAgLy8gVGhpcyBzaG91bGQgYmUgZ3VhcmFudGVlZCBieSBtb2R1bGUgdmVyaWZpY2F0aW9u
LgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5zdGFuY2UtPnRhYmxlKCkpOyAKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5zdGFuY2UtPnRhYmxlKCkpOyAKICAgICAgICAgICAg
IEFTU0VSVChleHAua2luZEluZGV4ID09IDApOwogCi0gICAgICAgICAgICBleHBvcnRlZFZhbHVl
ID0gaW5zdGFuY2UtPnRhYmxlKCk7CisgICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gbV9pbnN0
YW5jZS0+dGFibGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgV2FzbTo6RXh0ZXJuYWxLaW5kOjpNZW1vcnk6IHsKICAgICAgICAgICAgIEFTU0VSVChleHAu
a2luZEluZGV4ID09IDApOwogCi0gICAgICAgICAgICBleHBvcnRlZFZhbHVlID0gaW5zdGFuY2Ut
Pm1lbW9yeSgpOworICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IG1faW5zdGFuY2UtPm1lbW9y
eSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpF
eHRlcm5hbEtpbmQ6Okdsb2JhbDogewpAQCAtMTUyLDcgKzE2MSw3IEBAIHZvaWQgV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9kdWxl
KiBtb2R1bGUsCiAgICAgICAgICAgICAvLyBSZXR1cm4gVG9KU1ZhbHVlKHYpLgogICAgICAgICAg
ICAgc3dpdGNoIChnbG9iYWwudHlwZSkgewogICAgICAgICAgICAgY2FzZSBXYXNtOjpJMzI6Ci0g
ICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IEpTVmFsdWUoaW5zdGFuY2UtPmluc3RhbmNl
KCkubG9hZEkzMkdsb2JhbChleHAua2luZEluZGV4KSk7CisgICAgICAgICAgICAgICAgZXhwb3J0
ZWRWYWx1ZSA9IEpTVmFsdWUobV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkSTMyR2xvYmFsKGV4
cC5raW5kSW5kZXgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2Fz
ZSBXYXNtOjpJNjQ6CkBAIC0xNjAsMTEgKzE2OSwxMSBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYywgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxl
LAogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBXYXNtOjpGMzI6
Ci0gICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IEpTVmFsdWUoaW5zdGFuY2UtPmluc3Rh
bmNlKCkubG9hZEYzMkdsb2JhbChleHAua2luZEluZGV4KSk7CisgICAgICAgICAgICAgICAgZXhw
b3J0ZWRWYWx1ZSA9IEpTVmFsdWUobV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5sb2FkRjMyR2xvYmFs
KGV4cC5raW5kSW5kZXgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAg
Y2FzZSBXYXNtOjpGNjQ6Ci0gICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IEpTVmFsdWUo
aW5zdGFuY2UtPmluc3RhbmNlKCkubG9hZEY2NEdsb2JhbChleHAua2luZEluZGV4KSk7CisgICAg
ICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IEpTVmFsdWUobV9pbnN0YW5jZS0+aW5zdGFuY2Uo
KS5sb2FkRjY0R2xvYmFsKGV4cC5raW5kSW5kZXgpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTE5MSwxOCArMjAwLDE1IEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjLCBKU1dlYkFzc2VtYmx5TW9k
dWxlKiBtb2R1bGUsCiAgICAgICAgIEFTU0VSVCghc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSk7
CiAgICAgICAgIEFTU0VSVChzaWduYXR1cmUucmV0dXJuVHlwZSgpID09IFdhc206OlZvaWQpOwog
ICAgICAgICBpZiAoc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UgPCBjb2RlQmxvY2stPmZ1bmN0aW9u
SW1wb3J0Q291bnQoKSkgewotICAgICAgICAgICAgSlNPYmplY3QqIHN0YXJ0RnVuY3Rpb24gPSBp
bnN0YW5jZS0+aW5zdGFuY2UoKS5pbXBvcnRGdW5jdGlvbjxKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
OlBvaXNvbmVkQmFycmllcjxKU09iamVjdD4+KHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKS0+Z2V0
KCk7CisgICAgICAgICAgICBKU09iamVjdCogc3RhcnRGdW5jdGlvbiA9IG1faW5zdGFuY2UtPmlu
c3RhbmNlKCkuaW1wb3J0RnVuY3Rpb248SlNXZWJBc3NlbWJseUluc3RhbmNlOjpQb2lzb25lZEJh
cnJpZXI8SlNPYmplY3Q+PihzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSktPmdldCgpOwogICAgICAg
ICAgICAgbV9zdGFydEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgc3RhcnRGdW5jdGlvbik7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBXYXNtOjpDYWxsZWUmIGVtYmVkZGVyRW50cnlwb2lu
dENhbGxlZSA9IGNvZGVCbG9jay0+ZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlRnJvbUZ1bmN0aW9u
SW5kZXhTcGFjZShzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSk7CiAgICAgICAgICAgICBXYXNtOjpX
YXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gZW50cnlwb2ludExvYWRM
b2NhdGlvbiA9IGNvZGVCbG9jay0+ZW50cnlwb2ludExvYWRMb2NhdGlvbkZyb21GdW5jdGlvbklu
ZGV4U3BhY2Uoc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UpOwotICAgICAgICAgICAgV2ViQXNzZW1i
bHlGdW5jdGlvbiogZnVuY3Rpb24gPSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgInN0YXJ0IiwgaW5zdGFuY2Us
IGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwgZW50cnlwb2ludExvYWRMb2NhdGlvbiwgc2lnbmF0
dXJlSW5kZXgpOworICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24gPSBX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2lnbmF0dXJlLmFy
Z3VtZW50Q291bnQoKSwgInN0YXJ0IiwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBv
aW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExvY2F0aW9uLCBzaWduYXR1cmVJbmRleCk7CiAgICAg
ICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5jdGlvbik7CiAgICAgICAg
IH0KICAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YW5jZSk7Ci0gICAgbV9pbnN0
YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNl
dCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAppbmRleCBm
Y2UxZDY0NjM5MDM1NzIwNjBjOWQ5OTdjMTBjZWJmMGRhY2RkOWQ4Li40MTdhMGM2MDgzN2Q0NWNl
YjU2MzFmNGIwZjQ3NWRiM2I1ZmIzODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKQEAgLTQ4LDcgKzQ4LDgg
QEAgY2xhc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQgZmluYWwgOiBwdWJsaWMgQWJzdHJhY3RN
b2R1bGVSZWNvcmQgewogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkKiBjcmVhdGUoRXhlY1N0YXRlKiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKIAotICAgIHZvaWQgbGluayhF
eGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwgSlNXZWJBc3NlbWJseUluc3RhbmNlKik7
CisgICAgdm9pZCBwcmVwYXJlTGluayhWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOworICAg
IHZvaWQgbGluayhFeGVjU3RhdGUqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKik7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3Rv
dHlwZS5jcHAKaW5kZXggNDY0NDFkM2QyMmY2YTZiMmEwZGRmNTk5YWVjNTRmNjNmMmQ0YjI2ZC4u
NGVmNjQ3YTNiYWE0Y2NlNTNlYmM5NDQzNzNiN2VjOWUwYTM2ODlhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNp
bmNsdWRlICJKU1RvV2FzbS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCkBA
IC0xMjAsMTYgKzEyMSwyMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKICAgICB9CiB9CiAKLWVudW0g
Y2xhc3MgUmVzb2x2ZSB7IFdpdGhJbnN0YW5jZSwgV2l0aE1vZHVsZUFuZEluc3RhbmNlIH07Ci1z
dGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3Nl
bWJseU1vZHVsZSogbW9kdWxlLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIGNvZGVCbG9jaywgUmVz
b2x2ZSByZXNvbHZlS2luZCkKK2VudW0gY2xhc3MgUmVzb2x2ZSB7IFdpdGhJbnN0YW5jZSwgV2l0
aE1vZHVsZVJlY29yZCwgV2l0aE1vZHVsZUFuZEluc3RhbmNlIH07CitzdGF0aWMgdm9pZCByZXNv
bHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9k
dWxlLCBSZWY8V2FzbTo6Q29kZUJsb2NrPiYmIGNvZGVCbG9jaywgUmVzb2x2ZSByZXNvbHZlS2lu
ZCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpNb2R1bGVSdW5Nb2RlIG1vZHVsZVJ1bk1vZGUpCiB7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGluc3RhbmNl
LT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBleGVjLCBXVEZNb3ZlKGNvZGVCbG9jaykpOworICAgIGlu
c3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBleGVjLCBXVEZNb3ZlKGNvZGVCbG9jayksIG1v
ZHVsZVJ1bk1vZGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChleGVj
LCBzY29wZSwgcHJvbWlzZSkpOwogCiAgICAgaWYgKHJlc29sdmVLaW5kID09IFJlc29sdmU6Oldp
dGhJbnN0YW5jZSkKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZShleGVjLCBpbnN0YW5jZSk7Ci0g
ICAgZWxzZSB7CisgICAgZWxzZSBpZiAocmVzb2x2ZUtpbmQgPT0gUmVzb2x2ZTo6V2l0aE1vZHVs
ZVJlY29yZCkgeworICAgICAgICBhdXRvKiBtb2R1bGVSZWNvcmQgPSBpbnN0YW5jZS0+bW9kdWxl
TmFtZXNwYWNlT2JqZWN0KCktPm1vZHVsZVJlY29yZCgpOworICAgICAgICBpZiAoT3B0aW9uczo6
ZHVtcE1vZHVsZVJlY29yZCgpKQorICAgICAgICAgICAgbW9kdWxlUmVjb3JkLT5kdW1wKCk7Cisg
ICAgICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgbW9kdWxlUmVjb3JkKTsKKyAgICB9IGVsc2Ug
ewogICAgICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7
CiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgQVNDSUlMaXRlcmFsKCJtb2R1bGUiKSksIG1vZHVsZSk7CiAgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJpbnN0
YW5jZSIpKSwgaW5zdGFuY2UpOwpAQCAtMTM4LDExICsxNDQsMTEgQEAgc3RhdGljIHZvaWQgcmVz
b2x2ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2Us
IEpTV2ViQXMKICAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKIH0KIAotc3RhdGljIHZvaWQgaW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMs
IEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUs
IEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFJlc29sdmUgcmVzb2x2ZUtpbmQpCitzdGF0aWMgdm9p
ZCBpbnN0YW50aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQq
IHByb21pc2UsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwgSlNPYmplY3QqIGltcG9ydE9i
amVjdCwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5LCBSZXNvbHZlIHJlc29sdmVLaW5kLCBK
U1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGUgbW9kdWxlUnVuTW9kZSkKIHsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgLy8gSW4gb3JkZXIg
dG8gYXZvaWQgcG90ZW50aWFsbHkgcmVjb21waWxpbmcgYSBtb2R1bGUuIFdlIGZpcnN0IGdhdGhl
ciBhbGwgdGhlIGltcG9ydC9tZW1vcnkgaW5mb3JtYXRpb24gcHJpb3IgdG8gY29tcGlsaW5nIGNv
ZGUuCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCksIFJlZjxX
YXNtOjpNb2R1bGU+KG1vZHVsZS0+bW9kdWxlKCkpKTsKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0sIGV4ZWMsIG1v
ZHVsZUtleSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpLCBSZWY8V2FzbTo6TW9kdWxlPihtb2R1
bGUtPm1vZHVsZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KGV4
ZWMsIHNjb3BlLCBwcm9taXNlKSk7CiAKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVu
ZGVuY2llczsKQEAgLTE1MCw0MSArMTU2LDU0IEBAIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXCiAg
ICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW5zdGFuY2UpKTsKICAg
ICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgV1RG
TW92ZShkZXBlbmRlbmNpZXMpKTsKICAgICAvLyBOb3RlOiBUaGlzIGNvbXBsZXRpb24gdGFzayBt
YXkgb3IgbWF5IG5vdCBnZXQgY2FsbGVkIGltbWVkaWF0ZWx5LgotICAgIG1vZHVsZS0+bW9kdWxl
KCkuY29tcGlsZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwg
Y3JlYXRlU2hhcmVkVGFzazxXYXNtOjpDb2RlQmxvY2s6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2Us
IGluc3RhbmNlLCBtb2R1bGUsIHJlc29sdmVLaW5kLCAmdm1dIChSZWY8V2FzbTo6Q29kZUJsb2Nr
PiYmIHJlZkNvZGVCbG9jaykgbXV0YWJsZSB7CisgICAgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxl
QXN5bmMoJnZtLndhc21Db250ZXh0LCBpbnN0YW5jZS0+bWVtb3J5TW9kZSgpLCBjcmVhdGVTaGFy
ZWRUYXNrPFdhc206OkNvZGVCbG9jazo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgaW5zdGFuY2Us
IG1vZHVsZSwgcmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1vZGUsICZ2bV0gKFJlZjxXYXNtOjpDb2Rl
QmxvY2s+JiYgcmVmQ29kZUJsb2NrKSBtdXRhYmxlIHsKICAgICAgICAgUmVmUHRyPFdhc206OkNv
ZGVCbG9jaz4gY29kZUJsb2NrID0gV1RGTW92ZShyZWZDb2RlQmxvY2spOwotICAgICAgICB2bS5w
cm9taXNlRGVmZXJyZWRUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwg
aW5zdGFuY2UsIG1vZHVsZSwgcmVzb2x2ZUtpbmQsICZ2bSwgY29kZUJsb2NrID0gV1RGTW92ZShj
b2RlQmxvY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXIt
PnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIHJl
c29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm0sIGNvZGVCbG9jayA9IFdURk1vdmUoY29kZUJs
b2NrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBpbnN0YW5j
ZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgICAgIHJlc29sdmUodm0s
IGV4ZWMsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVs
bCgpLCByZXNvbHZlS2luZCk7CisgICAgICAgICAgICByZXNvbHZlKHZtLCBleGVjLCBwcm9taXNl
LCBpbnN0YW5jZSwgbW9kdWxlLCBjb2RlQmxvY2sucmVsZWFzZU5vbk51bGwoKSwgcmVzb2x2ZUtp
bmQsIG1vZHVsZVJ1bk1vZGUpOwogICAgICAgICB9KTsKICAgICB9KSwgJldhc206OmNyZWF0ZUpT
VG9XYXNtV3JhcHBlciwgJldhc206Ondhc21Ub0pTRXhjZXB0aW9uKTsKIH0KIAotc3RhdGljIHZv
aWQgY29tcGlsZUFuZEluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21p
c2VEZWZlcnJlZCogcHJvbWlzZSwgSlNWYWx1ZSBidWZmZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmpl
Y3QpCitzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVLZXksIEpTVmFsdWUgYnVmZmVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBSZXNvbHZlIHJl
c29sdmVLaW5kLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Ok1vZHVsZVJ1bk1vZGUgbW9kdWxlUnVu
TW9kZSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAKKyAg
ICBKU0NlbGwqIG1vZHVsZUtleUNlbGwgPSBpZGVudGlmaWVyVG9KU1ZhbHVlKHZtLCBtb2R1bGVL
ZXkpLmFzQ2VsbCgpOwogICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwog
ICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkp
OworICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIG1vZHVsZUtleUNl
bGwpKTsKICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2UocHJv
bWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBzb3Vy
Y2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGV4ZWMsIGJ1ZmZlcik7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKSk7
CiAKLSAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndhc21Db250ZXh0LCBXVEZN
b3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxlOjpDYWxsYmFja1R5cGU+
KFtwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgJnZtXSAoV2FzbTo6TW9kdWxl
OjpWYWxpZGF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgdm0ucHJvbWlz
ZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3Byb21pc2UsIGltcG9y
dE9iamVjdCwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksICZ2bV0gKCkg
bXV0YWJsZSB7CisgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4
dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJh
Y2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmpl
Y3QsIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlLCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlk
YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICB2bS5wcm9taXNlRGVmZXJy
ZWRUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0T2JqZWN0
LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwg
cmVzb2x2ZUtpbmQsIG1vZHVsZVJ1bk1vZGUsICZ2bV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAgICAgICAgICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICAgICAgICAgIEpT
V2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0
dWIodm0sIGV4ZWMsIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwg
V1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzY29wZSwgcHJvbWlz
ZSk7CiAKLSAgICAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBtb2R1bGUs
IGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3RhbmNlKTsKKyAgICAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gSlNWYWx1ZShtb2R1bGVLZXlDZWxsKS50
b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2Vw
dGlvbigpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9t
aXNlKTsKKworICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVs
ZSwgaW1wb3J0T2JqZWN0LCBtb2R1bGVLZXksIHJlc29sdmVLaW5kLCBtb2R1bGVSdW5Nb2RlKTsK
ICAgICAgICAgfSk7CiAgICAgfSkpOwogfQogCitKU1ZhbHVlIFdlYkFzc2VtYmx5UHJvdG90eXBl
OjppbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXksIEpTVmFsdWUgYXJndW1lbnQpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMs
IHByb21pc2UsIG1vZHVsZUtleSwgYXJndW1lbnQsIG51bGxwdHIsIFJlc29sdmU6OldpdGhNb2R1
bGVSZWNvcmQsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6Tm9uZSk7Cisg
ICAgcmV0dXJuIHByb21pc2UtPnByb21pc2UoKTsKK30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0yMDYsOSArMjI1LDkgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSBm
aXJzdEFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgICAgICAgICBpZiAoYXV0byog
bW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGZpcnN0QXJn
dW1lbnQpKQotICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aEluc3RhbmNlKTsKKyAgICAgICAgICAg
ICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3Qs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZl
OjpXaXRoSW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6UnVu
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb21waWxlQW5kSW5zdGFudGlh
dGUodm0sIGV4ZWMsIHByb21pc2UsIGZpcnN0QXJndW1lbnQsIGltcG9ydE9iamVjdCk7CisgICAg
ICAgICAgICAgICAgY29tcGlsZUFuZEluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgZmlyc3RBcmd1bWVu
dCwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoTW9kdWxlQW5kSW5zdGFuY2UsIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZTo6TW9kdWxlUnVuTW9kZTo6UnVuKTsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKQEAgLTIyMCw3ICsy
MzksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZh
bGlkYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICB1aW50OF90KiBi
YXNlOworICAgIGNvbnN0IHVpbnQ4X3QqIGJhc2U7CiAgICAgc2l6ZV90IGJ5dGVTaXplOwogICAg
IHN0ZDo6dGllKGJhc2UsIGJ5dGVTaXplKSA9IGdldFdhc21CdWZmZXJGcm9tVmFsdWUoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5UHJvdG90eXBlLmgKaW5kZXggZDVkMGQ2Y2JkZWY3YjJjOWYyNTc5NWU1YTBkYjVi
YTA1ZGM0MmRjYy4uYmJiMjI2ZGJjYzY5OWUzZjBmMGI4YWYxYzk1NDcwNTU5YzY5NTRhMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5
cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3Rv
dHlwZS5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIFdlYkFzc2VtYmx5UHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgREVDTEFSRV9JTkZPOwogCisgICAg
c3RhdGljIEpTVmFsdWUgaW5zdGFudGlhdGUoRXhlY1N0YXRlKiwgSlNQcm9taXNlRGVmZXJyZWQq
LCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSk7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTNhMjY0M2ZjYzkzYWJlZWI1OGY2YjIyMjkwMTc3OWYyZTQw
Yjc4ZC4uOWE5NDhiODNlNjdlYmEyZDQ1YWJlNGUzM2UzNGMyOWI2ZTg0YTM1OSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MyBAQAorMjAxOC0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KworICAgICAgICBbV2ViQXNzZW1ibHldW01vZHVsZXNdIFByb3RvdHlwZSB3YXNtIGltcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0NjAwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHdhc20g
YW5kIHdhdCBmaWxlcyBzaW5jZSBtb2R1bGUgbG9hZGVyIHdhbnQgdG8gbG9hZCB3YXNtIGZpbGVz
IGZyb20gRlMuCisgICAgICAgIEN1cnJlbnRseSwgaW1wb3J0aW5nIHRoZSBvdGhlciBtb2R1bGVz
IGZyb20gd2FzbSBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgICAgICogd2FzbS55YW1sOgorICAg
ICAgICAqIHdhc20vbW9kdWxlcy9jb25zdGFudC53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNt
L21vZHVsZXMvY29uc3RhbnQud2F0OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvanMt
d2FzbS1mdW5jdGlvbi1uYW1lc3BhY2UuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0LnRocm93
cyk6CisgICAgICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20tZnVuY3Rpb24uanM6IEFkZGVkLgor
ICAgICAgICAoYXNzZXJ0LnRocm93cyk6CisgICAgICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20t
Z2xvYmFsLW5hbWVzcGFjZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAg
ICAgICAgKiB3YXNtL21vZHVsZXMvanMtd2FzbS1nbG9iYWwuanM6IEFkZGVkLgorICAgICAgICAo
YXNzZXJ0LnRocm93cyk6CisgICAgICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20tbWVtb3J5LW5h
bWVzcGFjZS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQudGhyb3dzKToKKyAgICAgICAgKiB3
YXNtL21vZHVsZXMvanMtd2FzbS1tZW1vcnkuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0LnRo
cm93cyk6CisgICAgICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20tc3RhcnQuanM6IEFkZGVkLgor
ICAgICAgICAodGhlbik6CisgICAgICAgICogd2FzbS9tb2R1bGVzL2pzLXdhc20tdGFibGUtbmFt
ZXNwYWNlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydC50aHJvd3MpOgorICAgICAgICAqIHdh
c20vbW9kdWxlcy9qcy13YXNtLXRhYmxlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydC50aHJv
d3MpOgorICAgICAgICAqIHdhc20vbW9kdWxlcy9tZW1vcnkud2FzbTogQWRkZWQuCisgICAgICAg
ICogd2FzbS9tb2R1bGVzL21lbW9yeS53YXQ6IEFkZGVkLgorICAgICAgICAqIHdhc20vbW9kdWxl
cy9zdGFydC53YXNtOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvc3RhcnQud2F0OiBB
ZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvc3VtLndhc206IEFkZGVkLgorICAgICAgICAq
IHdhc20vbW9kdWxlcy9zdW0ud2F0OiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL21vZHVsZXMvdGFi
bGUud2FzbTogQWRkZWQuCisgICAgICAgICogd2FzbS9tb2R1bGVzL3RhYmxlLndhdDogQWRkZWQu
CisKIDIwMTgtMDQtMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbGVyIHNob3VsZG4ndCByZXR1cm4gZ2VuZXJhdG9yIGJv
ZGllcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dhc20ueWFtbApp
bmRleCBmMjEyNGVmYjFhMzM5ZDc0MTMzZDlkZWFjZWM0ZmFhYjQwNDY0NGQ4Li44N2M4ODAyOWE3
YTU1MDFjZDU2MGM1NDFkYWE4ZTE5MzNkYTgzOTg4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20u
eWFtbAorKysgYi9KU1Rlc3RzL3dhc20ueWFtbApAQCAtMzcsNiArMzcsOCBAQAogICBjbWQ6IHJ1
bldlYkFzc2VtYmx5TG93RXhlY3V0YWJsZU1lbW9yeSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcwog
LSBwYXRoOiB3YXNtL3JlZ3Jlc3MvCiAgIGNtZDogcnVuV2ViQXNzZW1ibHkgdW5sZXNzIHBhcnNl
UnVuQ29tbWFuZHMKKy0gcGF0aDogd2FzbS9tb2R1bGVzLworICBjbWQ6IHJ1bldlYkFzc2VtYmx5
IHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCiAKIC0gcGF0aDogd2FzbS9zcGVjLXRlc3RzL2FkZHJl
c3Mud2FzdC5qcwogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3BlY1Rlc3QgOm5vcm1hbApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvY29uc3RhbnQud2FzbSBiL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL2NvbnN0YW50Lndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA2YWJkZjY5OGY5ZTJjNTU1MjBiN2Jh
ZGIwNzg3ZDRiN2VlZWE5ZApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzAKbGNtWlFiRVk0K1FV
fD9XbFcyfFJ6KVolOTZWZE9+OCZucXJUJXF3QUwwMDJ6WDE8bjhmCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy9jb25zdGFudC53YXQgYi9K
U1Rlc3RzL3dhc20vbW9kdWxlcy9jb25zdGFudC53YXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYzOTI0NTUzZjQ5
ODczMzEwNGQ1MGNlOWFlZjI1NjFjMDdkMmY4NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
d2FzbS9tb2R1bGVzL2NvbnN0YW50LndhdApAQCAtMCwwICsxLDIgQEAKKyhtb2R1bGUKKyAgICAo
Z2xvYmFsICRjb25zdGFudCAoZXhwb3J0ICJjb25zdGFudCIpIGkzMiBpMzIuY29uc3QgNDIpKQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1mdW5jdGlvbi1uYW1lc3Bh
Y2UuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLWZ1bmN0aW9uLW5hbWVzcGFjZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNTRkYjAzMGFhYjc0Mjk5NGE1MWRjYmQzOWFiMTFhNmVkYmI5MGM1Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1mdW5jdGlvbi1u
YW1lc3BhY2UuanMKQEAgLTAsMCArMSwxMSBAQAoraW1wb3J0ICogYXMgc3VtIGZyb20gIi4vc3Vt
Lndhc20iCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0
LmlzT2JqZWN0KHN1bSk7Cithc3NlcnQuaXNGdW5jdGlvbihzdW0uc3VtKTsKK2Fzc2VydC5lcShz
dW0uc3VtKDMyLCA0MiksIDc0KTsKK2Fzc2VydC5lcShzdW0uc3VtKC0yLCA0MiksIDQwKTsKKwor
YXNzZXJ0LnRocm93cygoKSA9PiB7CisgICAgc3VtLnN1bSA9IDMyOworfSwgVHlwZUVycm9yLCBg
QXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20tZnVuY3Rpb24uanMgYi9KU1Rlc3RzL3dhc20v
bW9kdWxlcy9qcy13YXNtLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiZTViODFmM2EwMDg1MWY3
ZjI4YjQxNGQ2MjYyYTdjMDg1ZjdiZmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20v
bW9kdWxlcy9qcy13YXNtLWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMTAgQEAKK2ltcG9ydCB7IHN1
bSB9IGZyb20gIi4vc3VtLndhc20iCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0
LmpzJzsKKworYXNzZXJ0LmlzRnVuY3Rpb24oc3VtKTsKK2Fzc2VydC5lcShzdW0oMzIsIDQyKSwg
NzQpOworYXNzZXJ0LmVxKHN1bSgtMiwgNDIpLCA0MCk7CisKK2Fzc2VydC50aHJvd3MoKCkgPT4g
eworICAgIHN1bSA9IDMyOworfSwgVHlwZUVycm9yLCBgQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byBy
ZWFkb25seSBwcm9wZXJ0eS5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pz
LXdhc20tZ2xvYmFsLW5hbWVzcGFjZS5qcyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20t
Z2xvYmFsLW5hbWVzcGFjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmE0ZGZhYmQ4NjNjNDE3MmRiZTQ2NDAw
YzBiZjQxNmE0ODIyY2U3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMv
anMtd2FzbS1nbG9iYWwtbmFtZXNwYWNlLmpzCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0ICogYXMg
Y29uc3RhbnQgZnJvbSAiLi9jb25zdGFudC53YXNtIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20g
Jy4uL2Fzc2VydC5qcyc7CisKK2Fzc2VydC5pc051bWJlcihjb25zdGFudC5jb25zdGFudCk7Cith
c3NlcnQuZXEoY29uc3RhbnQuY29uc3RhbnQsIDQyKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4gewor
ICAgIGNvbnN0YW50LmNvbnN0YW50ID0gMjAwOworfSwgVHlwZUVycm9yLCBgQXR0ZW1wdGVkIHRv
IGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL2pzLXdhc20tZ2xvYmFsLmpzIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2Fz
bS1nbG9iYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFlNzkyOWFjN2IxMjEyZTNmNThhODA4MjAzNGNiOGM4
MDEzMjVlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL2pzLXdhc20t
Z2xvYmFsLmpzCkBAIC0wLDAgKzEsOCBAQAoraW1wb3J0IHsgY29uc3RhbnQgfSBmcm9tICIuL2Nv
bnN0YW50Lndhc20iCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKwor
YXNzZXJ0LmlzTnVtYmVyKGNvbnN0YW50KTsKK2Fzc2VydC5lcShjb25zdGFudCwgNDIpOworYXNz
ZXJ0LnRocm93cygoKSA9PiB7CisgICAgY29uc3RhbnQgPSAyMDA7Cit9LCBUeXBlRXJyb3IsIGBB
dHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1tZW1vcnktbmFtZXNwYWNlLmpzIGIvSlNUZXN0
cy93YXNtL21vZHVsZXMvanMtd2FzbS1tZW1vcnktbmFtZXNwYWNlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJk
MzJlM2E2ZWYyODg4ZjcwNDVhOTViZGQzN2YyOWQwNGVlZmNmZDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLW1lbW9yeS1uYW1lc3BhY2UuanMKQEAgLTAs
MCArMSwxMiBAQAoraW1wb3J0ICogYXMgbWVtb3J5IGZyb20gIi4vbWVtb3J5Lndhc20iCitpbXBv
cnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0Lmluc3RhbmNlb2Yo
bWVtb3J5Lm1lbW9yeSwgV2ViQXNzZW1ibHkuTWVtb3J5KTsKK2xldCBidWZmZXIgPSBuZXcgVWlu
dDhBcnJheShtZW1vcnkubWVtb3J5LmJ1ZmZlcik7Cithc3NlcnQuZXEoYnVmZmVyWzRdLCAweDEw
KTsKK2Fzc2VydC5lcShidWZmZXJbNV0sIDB4MDApOworYXNzZXJ0LmVxKGJ1ZmZlcls2XSwgMHgx
MCk7Cithc3NlcnQuZXEoYnVmZmVyWzddLCAweDAwKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4gewor
ICAgIG1lbW9yeS5tZW1vcnkgPSAyMDA7Cit9LCBUeXBlRXJyb3IsIGBBdHRlbXB0ZWQgdG8gYXNz
aWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21v
ZHVsZXMvanMtd2FzbS1tZW1vcnkuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLW1l
bW9yeS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZDVlY2NmODNjZWVlNzg5ZTZlNTg1M2U2YTJhNmU1NjNjYjY0
N2QwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1tZW1v
cnkuanMKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IHsgbWVtb3J5IH0gZnJvbSAiLi9tZW1vcnku
d2FzbSIKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCithc3NlcnQu
aW5zdGFuY2VvZihtZW1vcnksIFdlYkFzc2VtYmx5Lk1lbW9yeSk7CitsZXQgYnVmZmVyID0gbmV3
IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7Cithc3NlcnQuZXEoYnVmZmVyWzRdLCAweDEwKTsK
K2Fzc2VydC5lcShidWZmZXJbNV0sIDB4MDApOworYXNzZXJ0LmVxKGJ1ZmZlcls2XSwgMHgxMCk7
Cithc3NlcnQuZXEoYnVmZmVyWzddLCAweDAwKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4geworICAg
IG1lbW9yeSA9IDIwMDsKK30sIFR5cGVFcnJvciwgYEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVh
ZG9ubHkgcHJvcGVydHkuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13
YXNtLXN0YXJ0LmpzIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1zdGFydC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMjI3NGMwNGZhNzhiZjFjMzc2ZGE0MzJiYTA4ZWJjNDU4ZTgwOGEwCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS1zdGFydC5qcwpAQCAtMCww
ICsxLDkgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworCitQcm9t
aXNlLmFsbChbCisgICAgaW1wb3J0KCIuL3N0YXJ0Lndhc20iKSwKKyAgICBpbXBvcnQoIi4vc3Rh
cnQud2FzbSIpLAorXSkudGhlbigoW3N0YXJ0MCwgc3RhcnQxXSkgPT4geworICAgIGFzc2VydC5l
cShzdGFydDAsIHN0YXJ0MSk7CisgICAgYXNzZXJ0LmVxKHN0YXJ0MC5nZXQoKSwgMSk7Cit9LCAk
dm0uYWJvcnQpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS10YWJs
ZS1uYW1lc3BhY2UuanMgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9qcy13YXNtLXRhYmxlLW5hbWVz
cGFjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hOWNjM2JhMTllNTE1MTBmNDMwOTVkODQ1ODJjNzczMzFhOTdi
MzY0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS10YWJs
ZS1uYW1lc3BhY2UuanMKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0ICogYXMgdGFibGUgZnJvbSAi
Li90YWJsZS53YXNtIgoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisK
K2Fzc2VydC5pbnN0YW5jZW9mKHRhYmxlLnRhYmxlLCBXZWJBc3NlbWJseS5UYWJsZSk7Cithc3Nl
cnQuZXEodGFibGUudGFibGUubGVuZ3RoLCAzKTsKK2Fzc2VydC5pc0Z1bmN0aW9uKHRhYmxlLnRh
YmxlLmdldCgwKSk7Cithc3NlcnQuaXNGdW5jdGlvbih0YWJsZS50YWJsZS5nZXQoMSkpOworYXNz
ZXJ0LmVxKHRhYmxlLnRhYmxlLmdldCgyKSwgbnVsbCk7CisKK2Fzc2VydC5lcSh0YWJsZS50YWJs
ZS5nZXQoMCkoKSwgNDIpOworYXNzZXJ0LmVxKHRhYmxlLnRhYmxlLmdldCgxKSgpLCA4Myk7CisK
K2Fzc2VydC50aHJvd3MoKCkgPT4geworICAgIHRhYmxlLnRhYmxlID0gMzI7Cit9LCBUeXBlRXJy
b3IsIGBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy93YXNtL21vZHVsZXMvanMtd2FzbS10YWJsZS5qcyBiL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL2pzLXdhc20tdGFibGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI3ZjUxYzJiMzBiZjJiZTdm
NTM0MDdlMjAyNmNiYTExMjgyODk0ZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL2pzLXdhc20tdGFibGUuanMKQEAgLTAsMCArMSwxNSBAQAoraW1wb3J0IHsgdGFibGUg
fSBmcm9tICIuL3RhYmxlLndhc20iCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0
LmpzJzsKKworYXNzZXJ0Lmluc3RhbmNlb2YodGFibGUsIFdlYkFzc2VtYmx5LlRhYmxlKTsKK2Fz
c2VydC5lcSh0YWJsZS5sZW5ndGgsIDMpOworYXNzZXJ0LmlzRnVuY3Rpb24odGFibGUuZ2V0KDAp
KTsKK2Fzc2VydC5pc0Z1bmN0aW9uKHRhYmxlLmdldCgxKSk7Cithc3NlcnQuZXEodGFibGUuZ2V0
KDIpLCBudWxsKTsKKworYXNzZXJ0LmVxKHRhYmxlLmdldCgwKSgpLCA0Mik7Cithc3NlcnQuZXEo
dGFibGUuZ2V0KDEpKCksIDgzKTsKKworYXNzZXJ0LnRocm93cygoKSA9PiB7CisgICAgdGFibGUg
PSAzMjsKK30sIFR5cGVFcnJvciwgYEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJv
cGVydHkuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy9tZW1vcnkud2FzbSBi
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL21lbW9yeS53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiNjk2MTA4MjRi
ZjhmNTljZmExNjY5MWVmMzVlOWEzMTU3ZjUwZWQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM3
CnNjbVpRYkVZNCtRVXw/V25XQEhkIz1WRH5iUDBoX09zJF5vfD0zLT1VV1pgQkpVPVV5YzBBZHtr
bmc5UioKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9t
b2R1bGVzL21lbW9yeS53YXQgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9tZW1vcnkud2F0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI3YTNiMTE0ZTk2MzM1ZDVhMmQ0NWQ0MzI2ZjY2MjdkMzYwY2QxODcKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9tZW1vcnkud2F0CkBAIC0wLDAgKzEsMyBA
QAorKG1vZHVsZQorICAgIChtZW1vcnkgJG1lbW9yeSAoZXhwb3J0ICJtZW1vcnkiKSAxNykKKyAg
ICAoZGF0YSAoaTMyLmNvbnN0IDQpICJcMTBcMDBcMTBcMDAiKSkKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS9tb2R1bGVzL3N0YXJ0Lndhc20gYi9KU1Rlc3RzL3dhc20vbW9kdWxlcy9zdGFydC53
YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc3MTY2MGZmMmExZmE1ZDZiMDU3NjZmZDM0ZjNiM2M2MDI0MTcxYjcK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDYxCnpjbVpRYkVZNCtRVXw/WTZVYGsrTU5NSztCWEol
JCVVfVIlc3RZPnMmO0FVck1XS0tebDBaS0Q2YTB4SlJHQUpgUgpOR0c/aFRhSSprZSt5SzswMXxh
fGQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1
bGVzL3N0YXJ0LndhdCBiL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3N0YXJ0LndhdApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NzQ0ZTQyYWIyNTM3NWIzODRlNzA5OTdhNTM2NzM5NWVlZjIxZmIzCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvc3RhcnQud2F0CkBAIC0wLDAgKzEsMTIgQEAKKyht
b2R1bGUKKyAgICAoZ2xvYmFsICRnMCAobXV0IGkzMikgaTMyLmNvbnN0IDApCisgICAgKHR5cGUg
JHQwIChmdW5jKSkKKyAgICAoZnVuYyAkaW5jcmVtZW50ICh0eXBlICR0MCkKKyAgICAgICAgZ2V0
X2dsb2JhbCAkZzAKKyAgICAgICAgaTMyLmNvbnN0IDEKKyAgICAgICAgaTMyLmFkZAorICAgICAg
ICBzZXRfZ2xvYmFsICRnMCkKKyAgICAoc3RhcnQgJGluY3JlbWVudCkKKyAgICAodHlwZSAkdDEg
KGZ1bmMgKHJlc3VsdCBpMzIpKSkKKyAgICAoZnVuYyAkZ2V0IChleHBvcnQgImdldCIpICh0eXBl
ICR0MSkgKHJlc3VsdCBpMzIpCisgICAgICAgIGdldF9nbG9iYWwgJGcwKSkKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS9tb2R1bGVzL3N1bS53YXNtIGIvSlNUZXN0cy93YXNtL21vZHVsZXMvc3Vt
Lndhc20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGM3MjJhN2MzYjdmZTIxMDM5YzQ4NDYzNDFhYjE0ZGZhOWE0OTlj
ZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDEKd2NtWlFiRVk0K1FVfD9XbVhHfnpLdVY8YGhX
QDJQdVhKPSRDRjNufE47Tm9PdFhIWn5OVjk0U0kwRGhlWFk1KUtMCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vbW9kdWxlcy9zdW0ud2F0IGIvSlNUZXN0
cy93YXNtL21vZHVsZXMvc3VtLndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTNmMmEzNTkzODMwODEzYzQxM2Ew
YTEzNjI1OGMwMGI0ZDU2OTM4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVs
ZXMvc3VtLndhdApAQCAtMCwwICsxLDYgQEAKKyhtb2R1bGUKKyAgICAodHlwZSAkdDAgKGZ1bmMg
KHBhcmFtIGkzMiBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKGZ1bmMgJHN1bSAoZXhwb3J0ICJz
dW0iKSAodHlwZSAkdDApIChwYXJhbSAkcDAgaTMyKSAocGFyYW0gJHAxIGkzMikgKHJlc3VsdCBp
MzIpCisgICAgICAgIGdldF9sb2NhbCAkcDEKKyAgICAgICAgZ2V0X2xvY2FsICRwMAorICAgICAg
ICBpMzIuYWRkKSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3RhYmxlLndhc20g
Yi9KU1Rlc3RzL3dhc20vbW9kdWxlcy90YWJsZS53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0MDhjNDY5YTkx
M2U2MjNmY2Q4MDc2OTdiYWRjZDM4ZGVkNzNiYzkKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDYx
CnpjbVZ+JChHNVVBNUpsMVpXQG99JG1GUXdSdUBaa0k2ODtzYkE/TUtWUS1ERyVkUF5+SSpGX25z
O18ySjVpI20jPQpOOEpjRXVhJW4rK3Y+KGAqMklLJCQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9tb2R1bGVzL3RhYmxlLndhdCBiL0pTVGVzdHMvd2Fz
bS9tb2R1bGVzL3RhYmxlLndhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTZiNjk5NjIxNDg3YjljM2U1ZTdhNzg1
NmY3Mjg3ZWYzMjYxYWRlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL21vZHVsZXMv
dGFibGUud2F0CkBAIC0wLDAgKzEsNSBAQAorKG1vZHVsZQorICAgICh0YWJsZSAkdGFibGUgKGV4
cG9ydCAidGFibGUiKSAzIGFueWZ1bmMpCisgICAgKGZ1bmMgJGYwIChyZXN1bHQgaTMyKSBpMzIu
Y29uc3QgNDIpCisgICAgKGZ1bmMgJGYxIChyZXN1bHQgaTMyKSBpMzIuY29uc3QgODMpCisgICAg
KGVsZW0gKGkzMi5jb25zdCAwKSAkZjAgJGYxKSkK
</data>
<flag name="review"
          id="356310"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
      

    </bug>

</bugzilla>