<?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>171380</bug_id>
          
          <creation_ts>2017-04-27 09:48:20 -0700</creation_ts>
          <short_desc>REGRESSION (r215843): ASSERTION FAILED: !m_completionTasks[0].first in  JSC::Wasm::Plan::tryRemoveVMAndCancelIfLast(JSC::VM &amp;)</short_desc>
          <delta_ts>2017-04-27 15:37:19 -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>
          
          
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1302135</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-27 09:48:20 -0700</bug_when>
    <thetext>ASSERTION FAILED: !m_completionTasks[0].first
/Volumes/Data/slave/elcapitan-debug/build/Source/JavaScriptCore/wasm/WasmPlan.cpp(116) : bool JSC::Wasm::Plan::tryRemoveVMAndCancelIfLast(JSC::VM &amp;)
1   0x106aefce0 WTFCrash
2   0x106a05673 JSC::Wasm::Plan::tryRemoveVMAndCancelIfLast(JSC::VM&amp;)
3   0x1059baf44 JSC::Wasm::Worklist::stopAllPlansForVM(JSC::VM&amp;)
4   0x106966183 JSC::VM::~VM()
5   0x106967e65 JSC::VM::~VM()
6   0x1061434e9 WTF::ThreadSafeRefCounted&lt;JSC::VM&gt;::deref() const
7   0x106143494 void WTF::derefIfNotNull&lt;JSC::VM&gt;(JSC::VM*)
8   0x1064eb66b WTF::RefPtr&lt;JSC::VM&gt;::operator=(std::nullptr_t)
9   0x1064fbafa JSC::JSLockHolder::~JSLockHolder()
10  0x1064fbb75 JSC::JSLockHolder::~JSLockHolder()
11  0x1110c345d WebCore::WorkerScriptController::~WorkerScriptController()
12  0x1110c3565 WebCore::WorkerScriptController::~WorkerScriptController()
13  0x1110cc058 WebCore::WorkerGlobalScope::clearScript()
14  0x1110c91d6 WebCore::WorkerThread::stop()::$_0::operator()(WebCore::ScriptExecutionContext&amp;) const::&apos;lambda&apos;(WebCore::ScriptExecutionContext&amp;)::operator()(WebCore::ScriptExecutionContext&amp;) const
15  0x1110c9187 WTF::Function&lt;void (WebCore::ScriptExecutionContext&amp;)&gt;::CallableWrapper&lt;WebCore::WorkerThread::stop()::$_0::operator()(WebCore::ScriptExecutionContext&amp;) const::&apos;lambda&apos;(WebCore::ScriptExecutionContext&amp;)&gt;::call(WebCore::ScriptExecutionContext&amp;)
16  0x10e9acc47 WTF::Function&lt;void (WebCore::ScriptExecutionContext&amp;)&gt;::operator()(WebCore::ScriptExecutionContext&amp;) const
17  0x10e99c52d WebCore::ScriptExecutionContext::Task::performTask(WebCore::ScriptExecutionContext&amp;)
18  0x1110be6d9 WebCore::WorkerRunLoop::Task::performTask(WebCore::WorkerRunLoop const&amp;, WebCore::WorkerGlobalScope*)
19  0x1110be488 WebCore::WorkerRunLoop::runCleanupTasks(WebCore::WorkerGlobalScope*)
20  0x1110bdb43 WebCore::WorkerRunLoop::run(WebCore::WorkerGlobalScope*)
21  0x1110c81b5 WebCore::WorkerThread::runEventLoop()
22  0x10e905a59 WebCore::DedicatedWorkerThread::runEventLoop()
23  0x1110c7fbd WebCore::WorkerThread::workerThread()
24  0x1110c7a25 WebCore::WorkerThread::workerThreadStart(void*)
25  0x106b74579 WTF::Thread::create(void (*)(void*), void*, char const*)::$_0::operator()() const
26  0x106b7454d void std::__1::__invoke_void_return_wrapper&lt;void&gt;::__call&lt;WTF::Thread::create(void (*)(void*), void*, char const*)::$_0&amp;&gt;(WTF::Thread::create(void (*)(void*), void*, char const*)::$_0&amp;&amp;&amp;)
27  0x106b744ec std::__1::__function::__func&lt;WTF::Thread::create(void (*)(void*), void*, char const*)::$_0, std::__1::allocator&lt;WTF::Thread::create(void (*)(void*), void*, char const*)::$_0&gt;, void ()&gt;::operator()()
28  0x1060168aa std::__1::function&lt;void ()&gt;::operator()() const
29  0x106b72e3e WTF::threadEntryPoint(void*)
30  0x106b74fc6 WTF::wtfThreadEntryPoint(void*)
31  0x7fff8d92099d _pthread_body

https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK1%20(Tests)/r215860%20(824)/workers/wasm-long-compile-many-crash-log.txt

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=workers%2Fwasm-long-compile-many.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302136</commentid>
    <comment_count>1</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-27 09:48:31 -0700</bug_when>
    <thetext>This is a flaky assertion failure seen with LayoutTest workers/wasm-long-compile-many.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302137</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-04-27 09:48:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/31865427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302140</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-27 09:53:40 -0700</bug_when>
    <thetext>The first instance of this test crash on the flakiness dashboard is 4/26/2017 10:32:35 PM @ r215853</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302141</commentid>
    <comment_count>4</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-27 09:54:50 -0700</bug_when>
    <thetext>I think this may be related to https://trac.webkit.org/changeset/215843/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302211</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-27 12:05:03 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #3)
&gt; The first instance of this test crash on the flakiness dashboard is
&gt; 4/26/2017 10:32:35 PM @ r215853

This change was a follow up to r215843.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302220</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-04-27 12:20:05 -0700</bug_when>
    <thetext>Keith, do you have time to look at this or should we roll out the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302226</commentid>
    <comment_count>7</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-27 12:25:45 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #6)
&gt; Keith, do you have time to look at this or should we roll out the change?

I can look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302304</commentid>
    <comment_count>8</comment_count>
      <attachid>308449</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-27 14:39:13 -0700</bug_when>
    <thetext>Created attachment 308449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302306</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-27 14:41:12 -0700</bug_when>
    <thetext>Attachment 308449 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmModule.h:61:  &apos;compileSync&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedMemoryMode&apos;.  [readability/naming/protected] [4]
ERROR: Source/JavaScriptCore/wasm/WasmModule.h:68:  &apos;getOrCreateCodeBlock&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedMemoryMode&apos;.  [readability/naming/protected] [4]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302307</commentid>
    <comment_count>10</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-27 14:42:39 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #9)
&gt; Attachment 308449 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/wasm/WasmModule.h:61:  &apos;compileSync&apos; is
&gt; incorrectly named. It should be named &apos;protector&apos; or &apos;protectedMemoryMode&apos;. 
&gt; [readability/naming/protected] [4]
&gt; ERROR: Source/JavaScriptCore/wasm/WasmModule.h:68:  &apos;getOrCreateCodeBlock&apos;
&gt; is incorrectly named. It should be named &apos;protector&apos; or
&gt; &apos;protectedMemoryMode&apos;.  [readability/naming/protected] [4]
&gt; Total errors found: 2 in 14 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

Wat?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302308</commentid>
    <comment_count>11</comment_count>
      <attachid>308449</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-27 14:43:33 -0700</bug_when>
    <thetext>Comment on attachment 308449
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        we want the main task to not be associated with any VM.

Can you clarify what &quot;some&quot; and &quot;others&quot; cases are?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302314</commentid>
    <comment_count>12</comment_count>
      <attachid>308452</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-27 14:52:33 -0700</bug_when>
    <thetext>Created attachment 308452
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302316</commentid>
    <comment_count>13</comment_count>
      <attachid>308449</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-27 14:53:30 -0700</bug_when>
    <thetext>Comment on attachment 308449
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmPlan.cpp:104
&gt; +    if (!ASSERT_DISABLED) {
&gt; +        // We allow the first completion task to not have a vm.
&gt; +        for (unsigned i = 1; i &lt; m_completionTasks.size(); ++i)
&gt; +            ASSERT(m_completionTasks[i].first);
&gt; +    }

Please add your FIXME here w/ the cleanup bug to make index 0 not magical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302317</commentid>
    <comment_count>14</comment_count>
      <attachid>308449</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-27 14:53:49 -0700</bug_when>
    <thetext>Comment on attachment 308449
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        we want the main task to not be associated with any VM.
&gt; 
&gt; Can you clarify what &quot;some&quot; and &quot;others&quot; cases are?

Validation and BBQ, respectively. I changed the changelog (that sounds deep).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302321</commentid>
    <comment_count>15</comment_count>
      <attachid>308454</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-27 14:55:29 -0700</bug_when>
    <thetext>Created attachment 308454
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302339</commentid>
    <comment_count>16</comment_count>
      <attachid>308454</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-27 15:37:17 -0700</bug_when>
    <thetext>Comment on attachment 308454
Patch for landing

Clearing flags on attachment: 308454

Committed r215896: &lt;http://trac.webkit.org/changeset/215896&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302340</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-27 15:37:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308449</attachid>
            <date>2017-04-27 14:39:13 -0700</date>
            <delta_ts>2017-04-27 14:55:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171380-20170427143912.patch</filename>
            <type>text/plain</type>
            <size>21798</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDM2OTBmM2ExMzgzMTcxN2FkZGFiODYzOGFmZTk3MzBlNjE1YWY0Li44ZDQ5ZTI2OWY3MWI2MmQz
YjVkM2YyNjMyYzYzZGQ1NTU3ZjgxODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNy0wNC0yNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjE1ODQzKTogQVNTRVJUSU9OIEZBSUxFRDog
IW1fY29tcGxldGlvblRhc2tzWzBdLmZpcnN0IGluICBKU0M6Oldhc206OlBsYW46OnRyeVJlbW92
ZVZNQW5kQ2FuY2VsSWZMYXN0KEpTQzo6Vk0gJikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGFzc29jaWF0aW9uIG9m
IFZNcyB0byBXYXNtOjpQbGFucy4gSW4gc29tZSBjYXNlcworICAgICAgICB3ZSB3YW50IGFsbCB0
aGUgY29tcGxldGlvbiB0YXNrcyB0byBiZSBhc3NvY2lhdGUgd2l0aCBhIFZNLiBJbiBvdGhlcnMs
CisgICAgICAgIHdlIHdhbnQgdGhlIG1haW4gdGFzayB0byBub3QgYmUgYXNzb2NpYXRlZCB3aXRo
IGFueSBWTS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChmdW5jdGlvblRlc3RXYXNt
TW9kdWxlRnVuY3Rpb25zKToKKyAgICAgICAgKiB3YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6QkJRUGxhbik6CisgICAgICAgICogd2FzbS9XYXNtQkJR
UGxhbi5oOgorICAgICAgICAqIHdhc20vV2FzbUNvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6Q29kZUJs
b2NrOjpjb21waWxlQXN5bmMpOgorICAgICAgICAqIHdhc20vV2FzbUNvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpXYXNtOjpDb2RlQmxvY2s6OmNyZWF0ZSk6CisgICAgICAgICogd2FzbS9XYXNt
TW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6bWFrZVZhbGlkYXRpb25DYWxsYmFjayk6
CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZTo6dmFsaWRhdGVTeW5jKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9k
dWxlOjpnZXRPckNyZWF0ZUNvZGVCbG9jayk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZTo6
Y29tcGlsZVN5bmMpOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGU6OmNvbXBpbGVBc3luYyk6
CisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlLmg6CisgICAgICAgICogd2FzbS9XYXNtT01HUGxh
bi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46Ok9NR1BsYW4pOgorICAgICAgICAo
SlNDOjpXYXNtOjpydW5PTUdQbGFuRm9ySW5kZXgpOgorICAgICAgICAqIHdhc20vV2FzbU9NR1Bs
YW4uaDoKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
UGxhbjo6UGxhbik6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OnJ1bkNvbXBsZXRpb25UYXNr
cyk6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmFkZENvbXBsZXRpb25UYXNrKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6UGxhbjo6dHJ5UmVtb3ZlVk1BbmRDYW5jZWxJZkxhc3QpOgorICAgICAg
ICAqIHdhc20vV2FzbVBsYW4uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6ZG9udEZpbmFs
aXplKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0YW5jZSk6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5VmFsaWRhdGVGdW5jKToKKwogMjAxNy0wNC0yNyAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQXVkaXQgYW5kIGZpeCBpbmNvcnJlY3QgdXNlcyBvZiBK
U0FycmF5Ojp0cnlDcmVhdGVGb3JJbml0aWFsaXphdGlvblByaXZhdGUoKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKaW5kZXggN2ZmYWY2NDg5Zjg1MTI3OWQ1NjE5YWY5OGYyYTAwOGZlYWI1NzQ4My4uOTcw
NmJjNjdiODBlYTM2Y2JlZGYxOWU5MTIwZmUwZmJmMTVhZWYxMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKQEAgLTMxOTEsNyArMzE5MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uVGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoRXhlY1N0YXRlKiBlCiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSBmdW5jdGlvbkNvdW50ICsgMikKICAgICAgICAgQ1JB
U0goKTsKIAotICAgIFJlZjxXYXNtOjpCQlFQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBXYXNt
OjpCQlFQbGFuKHZtLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc291cmNlLT52ZWN0b3IoKSksIHNv
dXJjZS0+bGVuZ3RoKCksIFdhc206OkJCUVBsYW46OkZ1bGxDb21waWxlLCBXYXNtOjpQbGFuOjpk
b250RmluYWxpemUoKSkpOworICAgIFJlZjxXYXNtOjpCQlFQbGFuPiBwbGFuID0gYWRvcHRSZWYo
Km5ldyBXYXNtOjpCQlFQbGFuKG51bGxwdHIsIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihzb3VyY2Ut
PnZlY3RvcigpKSwgc291cmNlLT5sZW5ndGgoKSwgV2FzbTo6QkJRUGxhbjo6RnVsbENvbXBpbGUs
IFdhc206OlBsYW46OmRvbnRGaW5hbGl6ZSgpKSk7CiAgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3Qo
KS5lbnF1ZXVlKHBsYW4uY29weVJlZigpKTsKICAgICBXYXNtOjplbnN1cmVXb3JrbGlzdCgpLmNv
bXBsZXRlUGxhblN5bmNocm9ub3VzbHkocGxhbi5nZXQoKSk7CiAgICAgaWYgKHBsYW4tPmZhaWxl
ZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXgg
YWNhZmZkODM1MjlmY2Q4ZDg5Nzk0YTdhOTVlMDQ4MTU0ZmM3NzIzNC4uMWRkMGNkMWQ4MzVjNmMy
ZjIzMWIwMGI4ODZkZGU0YWY3MmMyNjNjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcApAQCAtNTEsMjAgKzUxLDIwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgV2FzbSB7CiAKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAotQkJR
UGxhbjo6QkJRUGxhbihWTSYgdm0sIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQXN5bmNX
b3JrIHdvcmssIENvbXBsZXRpb25UYXNrJiYgdGFzaykKK0JCUVBsYW46OkJCUVBsYW4oVk0qIHZt
LCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9u
VGFzayYmIHRhc2spCiAgICAgOiBCYXNlKHZtLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKHRhc2sp
KQogICAgICwgbV9zdGF0ZShTdGF0ZTo6VmFsaWRhdGVkKQogICAgICwgbV9hc3luY1dvcmsod29y
aykKIHsKIH0KIAotQkJRUGxhbjo6QkJRUGxhbihWTSYgdm0sIFZlY3Rvcjx1aW50OF90PiYmIHNv
dXJjZSwgQXN5bmNXb3JrIHdvcmssIENvbXBsZXRpb25UYXNrJiYgdGFzaykKK0JCUVBsYW46OkJC
UVBsYW4oVk0qIHZtLCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2UsIEFzeW5jV29yayB3b3JrLCBD
b21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCQlFQbGFuKHZtLCBtYWtlUmVmKCpuZXcgTW9k
dWxlSW5mb3JtYXRpb24oV1RGTW92ZShzb3VyY2UpKSksIHdvcmssIFdURk1vdmUodGFzaykpCiB7
CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpJbml0aWFsOwogfQogCi1CQlFQbGFuOjpCQlFQbGFuKFZN
JiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3RoLCBBc3luY1dv
cmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrKQorQkJRUGxhbjo6QkJRUGxhbihWTSogdm0s
IGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgQXN5bmNXb3JrIHdv
cmssIENvbXBsZXRpb25UYXNrJiYgdGFzaykKICAgICA6IEJhc2Uodm0sIHNvdXJjZSwgc291cmNl
TGVuZ3RoLCBXVEZNb3ZlKHRhc2spKQogICAgICwgbV9zdGF0ZShTdGF0ZTo6SW5pdGlhbCkKICAg
ICAsIG1fYXN5bmNXb3JrKHdvcmspCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBs
YW4uaAppbmRleCBlMzcyNmM3YmMwMzRkZmE1Y2JhM2IwMjEyMzVjNWFiZGY0Njc0ODk1Li5kMTQx
ODRmNzQ0OTEzZTczZDJlM2RhZjQ2ZWMyMDk1YzQ3MGYxODI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CQlFQbGFuLmgKQEAgLTUxLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IFBsYW47CiAgICAgZW51bSBBc3luY1dvcmsgOiB1aW50OF90IHsgRnVsbENv
bXBpbGUsIFZhbGlkYXRpb24gfTsKICAgICAvLyBOb3RlOiBDb21wbGV0aW9uVGFzayBzaG91bGQg
bm90IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIFBsYW4gb3RoZXJ3aXNlIHRoZXJlIHdpbGwgYmUg
YSByZWZlcmVuY2UgY3ljbGUuCi0gICAgQkJRUGxhbihWTSYsIFJlZjxNb2R1bGVJbmZvcm1hdGlv
bj4sIEFzeW5jV29yaywgQ29tcGxldGlvblRhc2smJik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
QkJRUGxhbihWTSYsIFZlY3Rvcjx1aW50OF90PiYmLCBBc3luY1dvcmssIENvbXBsZXRpb25UYXNr
JiYpOworICAgIEJCUVBsYW4oVk0qLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+LCBBc3luY1dvcmss
IENvbXBsZXRpb25UYXNrJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEJCUVBsYW4oVk0qLCBW
ZWN0b3I8dWludDhfdD4mJiwgQXN5bmNXb3JrLCBDb21wbGV0aW9uVGFzayYmKTsKICAgICAvLyBO
b3RlOiBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgeW91IGFyZSBub3Qg
YWN0dWFsbHkgYnVpbGRpbmcgYSBtb2R1bGUgZS5nLiB2YWxpZGF0aW9uL2Z1bmN0aW9uIHRlc3Rz
CiAgICAgLy8gRklYTUU6IFdoZW4gd2UgZ2V0IHJpZCBvZiBmdW5jdGlvbiB0ZXN0cyB3ZSBzaG91
bGQgcmVtb3ZlIEFzeW5jV29yayBmcm9tIHRoaXMgY29uc3RydWN0b3IuCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgQkJRUGxhbihWTSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIEFzeW5jV29yaywg
Q29tcGxldGlvblRhc2smJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQkJRUGxhbihWTSosIGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QsIEFzeW5jV29yaywgQ29tcGxldGlvblRhc2smJik7CiAKICAg
ICBib29sIHBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcAppbmRleCBmNTZlMzBiOWFiMzM5ZmU3MDQ1NGQyNmI2
M2FmYWJjYmI1YzgwZmNiLi5kMzNiN2VmYzkwNTNmODIyODRhNzZjYjBlNjg4NzhmYzMzNzFhOWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcApAQCAt
MzUsMTIgKzM1LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLUNv
ZGVCbG9jazo6Q29kZUJsb2NrKFZNJiB2bSwgTWVtb3J5TW9kZSBtb2RlLCBNb2R1bGVJbmZvcm1h
dGlvbiYgbW9kdWxlSW5mb3JtYXRpb24pCitDb2RlQmxvY2s6OkNvZGVCbG9jayhNZW1vcnlNb2Rl
IG1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbikKICAgICA6IG1fY2Fs
bGVlQ291bnQobW9kdWxlSW5mb3JtYXRpb24uaW50ZXJuYWxGdW5jdGlvbkNvdW50KCkpCiAgICAg
LCBtX21vZGUobW9kZSkKIHsKICAgICBSZWZQdHI8Q29kZUJsb2NrPiBwcm90ZWN0ZWRUaGlzID0g
dGhpczsKLSAgICBtX3BsYW4gPSBhZG9wdFJlZigqbmV3IEJCUVBsYW4odm0sIG1ha2VSZWYobW9k
dWxlSW5mb3JtYXRpb24pLCBCQlFQbGFuOjpGdWxsQ29tcGlsZSwgY3JlYXRlU2hhcmVkVGFzazxQ
bGFuOjpDYWxsYmFja1R5cGU+KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKV0gKFZNJiwgUGxhbiYpIHsKKyAgICBtX3BsYW4gPSBhZG9wdFJlZigqbmV3IEJCUVBs
YW4obnVsbHB0ciwgbWFrZVJlZihtb2R1bGVJbmZvcm1hdGlvbiksIEJCUVBsYW46OkZ1bGxDb21w
aWxlLCBjcmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoVk0qLCBQbGFuJikgewogICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CiAgICAgICAgIGlmIChtX3BsYW4tPmZhaWxl
ZCgpKSB7CiAgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IG1fcGxhbi0+ZXJyb3JNZXNzYWdl
KCk7CkBAIC0xMDIsOCArMTAyLDkgQEAgdm9pZCBDb2RlQmxvY2s6OmNvbXBpbGVBc3luYyhWTSYg
dm0sIEFzeW5jQ29tcGlsYXRpb25DYWxsYmFjayYmIHRhc2spCiAgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgdG8ga2VlcCBhIFJlZlB0ciBvbiB0aGUgUGxhbiBiZWNhdXNlIHRoZSB3b3JrbGlzdCB3
aWxsIGtlZXAKICAgICAgICAgLy8gYSBSZWZQdHIgb24gdGhlIFBsYW4gdW50aWwgdGhlIHBsYW4g
ZmluaXNoZXMgbm90aWZ5aW5nIGFsbCBvZiBpdHMgY2FsbGJhY2tzLgogICAgICAgICBSZWZQdHI8
Q29kZUJsb2NrPiBwcm90ZWN0ZWRUaGlzID0gdGhpczsKLSAgICAgICAgcGxhbi0+YWRkQ29tcGxl
dGlvblRhc2sodm0sIGNyZWF0ZVNoYXJlZFRhc2s8UGxhbjo6Q2FsbGJhY2tUeXBlPihbdGhpcywg
dGFzayA9IFdURk1vdmUodGFzayksIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpXSAoVk0mIHZtLCBQbGFuJikgewotICAgICAgICAgICAgdGFzay0+cnVuKHZtLCBtYWtlUmVm
KCp0aGlzKSk7CisgICAgICAgIHBsYW4tPmFkZENvbXBsZXRpb25UYXNrKHZtLCBjcmVhdGVTaGFy
ZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW3RoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKFZNKiB2bSwgUGxhbiYpIHsK
KyAgICAgICAgICAgIEFTU0VSVCh2bSk7CisgICAgICAgICAgICB0YXNrLT5ydW4oKnZtLCBtYWtl
UmVmKCp0aGlzKSk7CiAgICAgICAgIH0pKTsKICAgICB9IGVsc2UKICAgICAgICAgdGFzay0+cnVu
KHZtLCBtYWtlUmVmKCp0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29k
ZUJsb2NrLmgKaW5kZXggOTBhZjZlNDUwODA1MzJiY2Y1Njg3MzIzYjAwNDk4ZmE1MzhlZDM3Yy4u
ODcyYjQ1M2M4NDFjMWIwOTBhMWQ5N2RmZGYyNzcwZmRjMTc1MWM1MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suaApAQCAtNTMsOSArNTMsOSBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29kZUJsb2NrPiB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiB2b2lkIENhbGxiYWNrVHlwZShWTSYsIFJlZjxDb2RlQmxvY2s+JiYp
OwogICAgIHVzaW5nIEFzeW5jQ29tcGlsYXRpb25DYWxsYmFjayA9IFJlZlB0cjxXVEY6OlNoYXJl
ZFRhc2s8Q2FsbGJhY2tUeXBlPj47Ci0gICAgc3RhdGljIFJlZjxDb2RlQmxvY2s+IGNyZWF0ZShW
TSYgdm0sIE1lbW9yeU1vZGUgbW9kZSwgTW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0
aW9uKQorICAgIHN0YXRpYyBSZWY8Q29kZUJsb2NrPiBjcmVhdGUoTWVtb3J5TW9kZSBtb2RlLCBN
b2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDb2RlQmxvY2sodm0sIG1vZGUsIG1vZHVsZUluZm9ybWF0aW9uKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvZGVCbG9jayhtb2RlLCBtb2R1bGVJbmZv
cm1hdGlvbikpOwogICAgIH0KIAogICAgIHZvaWQgd2FpdFVudGlsRmluaXNoZWQoKTsKQEAgLTEx
NCw3ICsxMTQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBPTUdQbGFu
OwogCi0gICAgQ29kZUJsb2NrKFZNJiwgTWVtb3J5TW9kZSwgTW9kdWxlSW5mb3JtYXRpb24mKTsK
KyAgICBDb2RlQmxvY2soTWVtb3J5TW9kZSwgTW9kdWxlSW5mb3JtYXRpb24mKTsKICAgICB1bnNp
Z25lZCBtX2NhbGxlZUNvdW50OwogICAgIE1lbW9yeU1vZGUgbV9tb2RlOwogICAgIFZlY3RvcjxS
ZWZQdHI8Q2FsbGVlPj4gbV9jYWxsZWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TW9kdWxlLmNwcAppbmRleCA0NmVlOTRkNjliMGMyNjEyZWVlZjgxOGRhODE3NzJhOTMzYmUwMTAx
Li44ZTM2NmY0YjUwNzAzNDJlNzNmYzdlNGVkNDE5NGM1MzIzNzZmZjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcApAQCAtNTYsMjYgKzU2LDI3IEBAIHN0YXRp
YyBNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQgbWFrZVZhbGlkYXRpb25SZXN1bHQoQkJRUGxhbiYg
cGxhbikKIAogc3RhdGljIFBsYW46OkNvbXBsZXRpb25UYXNrIG1ha2VWYWxpZGF0aW9uQ2FsbGJh
Y2soTW9kdWxlOjpBc3luY1ZhbGlkYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIHJl
dHVybiBjcmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldIChWTSYgdm0sIFBsYW4mIHBsYW4pIHsKKyAgICByZXR1cm4gY3JlYXRl
U2hhcmVkVGFzazxQbGFuOjpDYWxsYmFja1R5cGU+KFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoVk0qIHZtLCBQbGFuJiBwbGFuKSB7CiAgICAgICAgIEFTU0VSVCghcGxhbi5oYXNXb3Jr
KCkpOwotICAgICAgICBjYWxsYmFjay0+cnVuKHZtLCBtYWtlVmFsaWRhdGlvblJlc3VsdChzdGF0
aWNfY2FzdDxCQlFQbGFuJj4ocGxhbikpKTsKKyAgICAgICAgQVNTRVJUKHZtKTsKKyAgICAgICAg
Y2FsbGJhY2stPnJ1bigqdm0sIG1ha2VWYWxpZGF0aW9uUmVzdWx0KHN0YXRpY19jYXN0PEJCUVBs
YW4mPihwbGFuKSkpOwogICAgIH0pOwogfQogCiBNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQgTW9k
dWxlOjp2YWxpZGF0ZVN5bmMoVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2UpCiB7Ci0g
ICAgUmVmPEJCUVBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IEJCUVBsYW4odm0sIFdURk1vdmUo
c291cmNlKSwgQkJRUGxhbjo6VmFsaWRhdGlvbiwgUGxhbjo6ZG9udEZpbmFsaXplKCkpKTsKKyAg
ICBSZWY8QkJRUGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgQkJRUGxhbigmdm0sIFdURk1vdmUo
c291cmNlKSwgQkJRUGxhbjo6VmFsaWRhdGlvbiwgUGxhbjo6ZG9udEZpbmFsaXplKCkpKTsKICAg
ICBwbGFuLT5wYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCk7CiAgICAgcmV0dXJuIG1ha2VWYWxpZGF0
aW9uUmVzdWx0KHBsYW4uZ2V0KCkpOwogfQogCiB2b2lkIE1vZHVsZTo6dmFsaWRhdGVBc3luYyhW
TSYgdm0sIFZlY3Rvcjx1aW50OF90PiYmIHNvdXJjZSwgTW9kdWxlOjpBc3luY1ZhbGlkYXRpb25D
YWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFJlZjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5l
dyBCQlFQbGFuKHZtLCBXVEZNb3ZlKHNvdXJjZSksIEJCUVBsYW46OlZhbGlkYXRpb24sIG1ha2VW
YWxpZGF0aW9uQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpKSk7CisgICAgUmVmPFBsYW4+IHBs
YW4gPSBhZG9wdFJlZigqbmV3IEJCUVBsYW4oJnZtLCBXVEZNb3ZlKHNvdXJjZSksIEJCUVBsYW46
OlZhbGlkYXRpb24sIG1ha2VWYWxpZGF0aW9uQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpKSk7
CiAgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKFdURk1vdmUocGxhbikpOwogfQog
Ci1SZWY8Q29kZUJsb2NrPiBNb2R1bGU6OmdldE9yQ3JlYXRlQ29kZUJsb2NrKFZNJiB2bSwgTWVt
b3J5TW9kZSBtb2RlKQorUmVmPENvZGVCbG9jaz4gTW9kdWxlOjpnZXRPckNyZWF0ZUNvZGVCbG9j
ayhNZW1vcnlNb2RlIG1vZGUpCiB7CiAgICAgUmVmUHRyPENvZGVCbG9jaz4gY29kZUJsb2NrOwog
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKQEAgLTg2LDIyICs4NywyMiBAQCBS
ZWY8Q29kZUJsb2NrPiBNb2R1bGU6OmdldE9yQ3JlYXRlQ29kZUJsb2NrKFZNJiB2bSwgTWVtb3J5
TW9kZSBtb2RlKQogICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIGJhY2sgb2ZmIHJldHJ5
aW5nIGF0IHNvbWUgcG9pbnQ6CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDYwNwogICAgIGlmICghY29kZUJsb2NrIHx8IChjb2RlQmxvY2stPmNvbXBp
bGF0aW9uRmluaXNoZWQoKSAmJiAhY29kZUJsb2NrLT5ydW5uYWJsZSgpKSkgewotICAgICAgICBj
b2RlQmxvY2sgPSBDb2RlQmxvY2s6OmNyZWF0ZSh2bSwgbW9kZSwgY29uc3RfY2FzdDxNb2R1bGVJ
bmZvcm1hdGlvbiY+KG1vZHVsZUluZm9ybWF0aW9uKCkpKTsKKyAgICAgICAgY29kZUJsb2NrID0g
Q29kZUJsb2NrOjpjcmVhdGUobW9kZSwgY29uc3RfY2FzdDxNb2R1bGVJbmZvcm1hdGlvbiY+KG1v
ZHVsZUluZm9ybWF0aW9uKCkpKTsKICAgICAgICAgbV9jb2RlQmxvY2tzW3N0YXRpY19jYXN0PHVp
bnQ4X3Q+KG1vZGUpXSA9IGNvZGVCbG9jazsKICAgICB9CiAgICAgcmV0dXJuIGNvZGVCbG9jay5y
ZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWY8Q29kZUJsb2NrPiBNb2R1bGU6OmNvbXBpbGVTeW5j
KFZNJiB2bSwgTWVtb3J5TW9kZSBtb2RlKQorUmVmPENvZGVCbG9jaz4gTW9kdWxlOjpjb21waWxl
U3luYyhNZW1vcnlNb2RlIG1vZGUpCiB7Ci0gICAgUmVmPENvZGVCbG9jaz4gY29kZUJsb2NrID0g
Z2V0T3JDcmVhdGVDb2RlQmxvY2sodm0sIG1vZGUpOworICAgIFJlZjxDb2RlQmxvY2s+IGNvZGVC
bG9jayA9IGdldE9yQ3JlYXRlQ29kZUJsb2NrKG1vZGUpOwogICAgIGNvZGVCbG9jay0+d2FpdFVu
dGlsRmluaXNoZWQoKTsKICAgICByZXR1cm4gY29kZUJsb2NrOwogfQogCiB2b2lkIE1vZHVsZTo6
Y29tcGlsZUFzeW5jKFZNJiB2bSwgTWVtb3J5TW9kZSBtb2RlLCBDb2RlQmxvY2s6OkFzeW5jQ29t
cGlsYXRpb25DYWxsYmFjayYmIHRhc2spCiB7Ci0gICAgUmVmPENvZGVCbG9jaz4gY29kZUJsb2Nr
ID0gZ2V0T3JDcmVhdGVDb2RlQmxvY2sodm0sIG1vZGUpOworICAgIFJlZjxDb2RlQmxvY2s+IGNv
ZGVCbG9jayA9IGdldE9yQ3JlYXRlQ29kZUJsb2NrKG1vZGUpOwogICAgIGNvZGVCbG9jay0+Y29t
cGlsZUFzeW5jKHZtLCBXVEZNb3ZlKHRhc2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZS5oCmluZGV4IGNlYzMwZTViODYxNzMzYjVmZDIyNWYxZWE1MTU4OGQzNWM0
OTE1Y2UuLmExYWY3NTg2Yzc0MDRjMjY0NmYxNmY4N2U2Y2ZlMGZhMzk2OTM0YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKQEAgLTU4LDE0ICs1OCwxNCBAQCBwdWJs
aWM6CiAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25J
bmRleFNwYWNlKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXhTcGFjZSkgY29uc3Q7CiAgICAgY29uc3Qg
V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKTsgfQogCi0gICAgUmVmPENvZGVCbG9jaz4gY29t
cGlsZVN5bmMoVk0mLCBNZW1vcnlNb2RlKTsKKyAgICBSZWY8Q29kZUJsb2NrPiBjb21waWxlU3lu
YyhNZW1vcnlNb2RlKTsKICAgICB2b2lkIGNvbXBpbGVBc3luYyhWTSYsIE1lbW9yeU1vZGUsIENv
ZGVCbG9jazo6QXN5bmNDb21waWxhdGlvbkNhbGxiYWNrJiYpOwogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgfk1vZHVsZSgpOwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoTWVtb3J5TW9k
ZSBtb2RlKSB7IHJldHVybiBtX2NvZGVCbG9ja3Nbc3RhdGljX2Nhc3Q8dWludDhfdD4obW9kZSld
LmdldCgpOyB9CiBwcml2YXRlOgotICAgIFJlZjxDb2RlQmxvY2s+IGdldE9yQ3JlYXRlQ29kZUJs
b2NrKFZNJiwgTWVtb3J5TW9kZSk7CisgICAgUmVmPENvZGVCbG9jaz4gZ2V0T3JDcmVhdGVDb2Rl
QmxvY2soTWVtb3J5TW9kZSk7CiAKICAgICBNb2R1bGUoUmVmPE1vZHVsZUluZm9ybWF0aW9uPiYm
KTsKICAgICBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IG1fbW9kdWxlSW5mb3JtYXRpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggZWQyZGFjODEwOGE1
Y2NlNTI2MDEzMmQ0NzFkNTQwODVhMjU0MTExNC4uNjI5MDM0ZWYyYTc3NzAzOGZjMGMyZDUyMTQy
YTNlNzJiYWM2ZTI1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFu
LmNwcApAQCAtNTAsOCArNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewog
CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKLU9NR1BsYW46Ok9NR1BsYW4o
Vk0mIHZtLCBSZWY8TW9kdWxlPiBtb2R1bGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9y
eU1vZGUgbW9kZSwgQ29tcGxldGlvblRhc2smJiB0YXNrKQotICAgIDogQmFzZSh2bSwgbWFrZVJl
Zihjb25zdF9jYXN0PE1vZHVsZUluZm9ybWF0aW9uJj4obW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlv
bigpKSksIFdURk1vdmUodGFzaykpCitPTUdQbGFuOjpPTUdQbGFuKFJlZjxNb2R1bGU+IG1vZHVs
ZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgTWVtb3J5TW9kZSBtb2RlLCBDb21wbGV0aW9uVGFz
ayYmIHRhc2spCisgICAgOiBCYXNlKG51bGxwdHIsIG1ha2VSZWYoY29uc3RfY2FzdDxNb2R1bGVJ
bmZvcm1hdGlvbiY+KG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKSkpLCBXVEZNb3ZlKHRhc2sp
KQogICAgICwgbV9tb2R1bGUobW9kdWxlLmNvcHlSZWYoKSkKICAgICAsIG1fY29kZUJsb2NrKCpt
b2R1bGUtPmNvZGVCbG9ja0Zvcihtb2RlKSkKICAgICAsIG1fZnVuY3Rpb25JbmRleChmdW5jdGlv
bkluZGV4KQpAQCAtMTU4LDE0ICsxNTgsMTIgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0
aW9uRWZmb3J0KQogCiB2b2lkIHJ1bk9NR1BsYW5Gb3JJbmRleChDb250ZXh0KiBjb250ZXh0LCB1
aW50MzJfdCBmdW5jdGlvbkluZGV4KQogewotICAgIFZNJiB2bSA9ICpjb250ZXh0LT52bSgpOwot
CiAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayogY29kZUJsb2NrID0gY29udGV4dC0+Y29kZUJs
b2NrKCk7CiAgICAgQVNTRVJUKGNvbnRleHQtPm1lbW9yeU1vZGUoKSA9PSBjb2RlQmxvY2stPm1f
Y29kZUJsb2NrLT5tb2RlKCkpOwogCiAgICAgLy8gV2UgdXNlIHRoZSBsZWFzdCBzaWduaWZpY2Fu
dCBiaXQgb2YgdGhlIHRpZXJVcENvdW50IHRvIHJlcHJlc2VudCB3aGV0aGVyIG9yIG5vdCBzb21l
b25lIGhhcyBhbHJlYWR5IHN0YXJ0ZWQgdGhlIHRpZXIgdXAuCiAgICAgaWYgKGNvZGVCbG9jay0+
bV9jb2RlQmxvY2stPnRpZXJVcENvdW50KGZ1bmN0aW9uSW5kZXgpLnNob3VsZFN0YXJ0VGllclVw
KCkpIHsKLSAgICAgICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IE9NR1BsYW4odm0s
IGNvbnRleHQtPm1vZHVsZSgpLT5tb2R1bGUoKSwgZnVuY3Rpb25JbmRleCwgY29kZUJsb2NrLT5t
X2NvZGVCbG9jay0+bW9kZSgpLCBQbGFuOjpkb250RmluYWxpemUoKSkpOworICAgICAgICBSZWY8
UGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgT01HUGxhbihjb250ZXh0LT5tb2R1bGUoKS0+bW9k
dWxlKCksIGZ1bmN0aW9uSW5kZXgsIGNvZGVCbG9jay0+bV9jb2RlQmxvY2stPm1vZGUoKSwgUGxh
bjo6ZG9udEZpbmFsaXplKCkpKTsKICAgICAgICAgZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKHBs
YW4uY29weVJlZigpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFPcHRpb25zOjp1c2VDb25jdXJy
ZW50SklUKCkpKQogICAgICAgICAgICAgcGxhbi0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5oCmluZGV4IGQ5NmY3YjhlM2JmZjI1ZjYy
YzA2ZjAxYWIwZDRhYzIyODJjMTY4MzEuLjcxNjRhOWVmOTIzNTE2MDk2ODI2MjQ2OTE3NWNiNWM4
ZGIzMTc0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQ
bGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uaApAQCAt
NDIsNyArNDIsNyBAQCBjbGFzcyBPTUdQbGFuIGZpbmFsIDogcHVibGljIFBsYW4gewogcHVibGlj
OgogICAgIHVzaW5nIEJhc2UgPSBQbGFuOwogICAgIC8vIE5vdGU6IENvbXBsZXRpb25UYXNrIHNo
b3VsZCBub3QgaG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgUGxhbiBvdGhlcndpc2UgdGhlcmUgd2ls
bCBiZSBhIHJlZmVyZW5jZSBjeWNsZS4KLSAgICBPTUdQbGFuKFZNJiwgUmVmPE1vZHVsZT4sIHVp
bnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUsIENvbXBsZXRpb25UYXNrJiYpOworICAg
IE9NR1BsYW4oUmVmPE1vZHVsZT4sIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUs
IENvbXBsZXRpb25UYXNrJiYpOwogCiAgICAgYm9vbCBoYXNXb3JrKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIW1fY29tcGxldGVkOyB9CiAgICAgdm9pZCB3b3JrKENvbXBpbGF0aW9uRWZmb3J0
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Q
bGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAppbmRleCBh
OGM0OWQ5NDIzOWU3YTc2ODcwYTAzNWM5M2VhNDlkYmQ4OWRlM2RmLi40YTY0MzgwMzJiNDNjY2Fk
NjRmOGNlNzA2NDhlYjE2OWQ2NmYxNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVBsYW4uY3BwCkBAIC01MCwyMCArNTAsMjAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBX
YXNtIHsKIAogc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi1QbGFuOjpQbGFu
KFZNJiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBDb21wbGV0aW9uVGFzayYmIHRh
c2spCitQbGFuOjpQbGFuKFZNKiB2bSwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBDb21w
bGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9uKFdURk1vdmUoaW5m
bykpCiAgICAgLCBtX3NvdXJjZShtX21vZHVsZUluZm9ybWF0aW9uLT5zb3VyY2UuZGF0YSgpKQog
ICAgICwgbV9zb3VyY2VMZW5ndGgobV9tb2R1bGVJbmZvcm1hdGlvbi0+c291cmNlLnNpemUoKSkK
IHsKLSAgICBtX2NvbXBsZXRpb25UYXNrcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoJnZtLCBXVEZN
b3ZlKHRhc2spKSk7CisgICAgbV9jb21wbGV0aW9uVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KHZtLCBXVEZNb3ZlKHRhc2spKSk7CiB9CiAKLVBsYW46OlBsYW4oVk0mIHZtLCBjb25zdCB1aW50
OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgsIENvbXBsZXRpb25UYXNrJiYgdGFzaykK
K1BsYW46OlBsYW4oVk0qIHZtLCBjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VM
ZW5ndGgsIENvbXBsZXRpb25UYXNrJiYgdGFzaykKICAgICA6IG1fbW9kdWxlSW5mb3JtYXRpb24o
bWFrZVJlZigqbmV3IE1vZHVsZUluZm9ybWF0aW9uKFZlY3Rvcjx1aW50OF90PigpKSkpCiAgICAg
LCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX3NvdXJjZUxlbmd0aChzb3VyY2VMZW5ndGgpCiB7
Ci0gICAgbV9jb21wbGV0aW9uVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCZ2bSwgV1RGTW92
ZSh0YXNrKSkpOworICAgIG1fY29tcGxldGlvblRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih2
bSwgV1RGTW92ZSh0YXNrKSkpOwogfQogCiB2b2lkIFBsYW46OnJ1bkNvbXBsZXRpb25UYXNrcyhj
b25zdCBBYnN0cmFjdExvY2tlciYpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUGxhbjo6cnVuQ29t
cGxldGlvblRhc2tzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKICAgICBBU1NFUlQoaXNDb21wbGV0
ZSgpICYmICFoYXNXb3JrKCkpOwogCiAgICAgZm9yIChhdXRvJiB0YXNrIDogbV9jb21wbGV0aW9u
VGFza3MpCi0gICAgICAgIHRhc2suc2Vjb25kLT5ydW4oKnRhc2suZmlyc3QsICp0aGlzKTsKKyAg
ICAgICAgdGFzay5zZWNvbmQtPnJ1bih0YXNrLmZpcnN0LCAqdGhpcyk7CiAgICAgbV9jb21wbGV0
aW9uVGFza3MuY2xlYXIoKTsKICAgICBtX2NvbXBsZXRlZC5ub3RpZnlBbGwoKTsKIH0KQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCBQbGFuOjphZGRDb21wbGV0aW9uVGFzayhWTSYgdm0sIENvbXBsZXRp
b25UYXNrJiYgdGFzaykKICAgICBpZiAoIWlzQ29tcGxldGUoKSkKICAgICAgICAgbV9jb21wbGV0
aW9uVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCZ2bSwgV1RGTW92ZSh0YXNrKSkpOwogICAg
IGVsc2UKLSAgICAgICAgdGFzay0+cnVuKHZtLCAqdGhpcyk7CisgICAgICAgIHRhc2stPnJ1bigm
dm0sICp0aGlzKTsKIH0KIAogdm9pZCBQbGFuOjp3YWl0Rm9yQ29tcGxldGlvbigpCkBAIC05Nyw2
ICs5NywxMiBAQCBib29sIFBsYW46OnRyeVJlbW92ZVZNQW5kQ2FuY2VsSWZMYXN0KFZNJiB2bSkK
IHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwogCisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgLy8gV2UgYWxsb3cgdGhlIGZpcnN0IGNvbXBsZXRpb24gdGFzayB0
byBub3QgaGF2ZSBhIHZtLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9jb21w
bGV0aW9uVGFza3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBBU1NFUlQobV9jb21wbGV0aW9u
VGFza3NbaV0uZmlyc3QpOworICAgIH0KKwogICAgIGJvb2wgcmVtb3ZlZEFueVRhc2tzID0gZmFs
c2U7CiAgICAgbV9jb21wbGV0aW9uVGFza3MucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdIChjb25zdCBz
dGQ6OnBhaXI8Vk0qLCBDb21wbGV0aW9uVGFzaz4mIHBhaXIpIHsKICAgICAgICAgYm9vbCBzaG91
bGRSZW1vdmUgPSBwYWlyLmZpcnN0ID09ICZ2bTsKQEAgLTExMiw4ICsxMTgsNyBAQCBib29sIFBs
YW46OnRyeVJlbW92ZVZNQW5kQ2FuY2VsSWZMYXN0KFZNJiB2bSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCi0gICAgaWYgKG1fY29tcGxldGlvblRhc2tzLnNpemUoKSA9PSAxKSB7Ci0g
ICAgICAgIEFTU0VSVCghbV9jb21wbGV0aW9uVGFza3NbMF0uZmlyc3QpOworICAgIGlmIChtX2Nv
bXBsZXRpb25UYXNrcy5pc0VtcHR5KCkgfHwgKG1fY29tcGxldGlvblRhc2tzLnNpemUoKSA9PSAx
ICYmICFtX2NvbXBsZXRpb25UYXNrc1swXS5maXJzdCkpIHsKICAgICAgICAgZmFpbChsb2NrZXIs
IEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkgUGxhbiB3YXMgY2FuY2VsbGVkLiBJZiB5b3Ugc2Vl
IHRoaXMgZXJyb3IgbWVzc2FnZSBwbGVhc2UgZmlsZSBhIGJ1ZyBhdCBidWdzLndlYmtpdC5vcmch
IikpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBsYW4uaAppbmRleCBkNDVlZDFmZDY4MjJlNDEzYWViZTY5MTUxMWJmYjdmMWE4MDEzNGEy
Li4xMGY4YTFiOGQ2N2NkZDI4ZmE1NGJiYTJmYTc3ZGUxMjM1MWE4YWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QbGFuLmgKQEAgLTQ2LDEzICs0NiwxMyBAQCBuYW1lc3BhY2UgV2Fz
bSB7CiAKIGNsYXNzIFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhbj4gewog
cHVibGljOgotICAgIHR5cGVkZWYgdm9pZCBDYWxsYmFja1R5cGUoVk0mLCBQbGFuJik7CisgICAg
dHlwZWRlZiB2b2lkIENhbGxiYWNrVHlwZShWTSosIFBsYW4mKTsKICAgICB1c2luZyBDb21wbGV0
aW9uVGFzayA9IFJlZlB0cjxTaGFyZWRUYXNrPENhbGxiYWNrVHlwZT4+OwotICAgIHN0YXRpYyBD
b21wbGV0aW9uVGFzayBkb250RmluYWxpemUoKSB7IHJldHVybiBjcmVhdGVTaGFyZWRUYXNrPENh
bGxiYWNrVHlwZT4oW10oVk0mLCBQbGFuJikgeyB9KTsgfQotICAgIFBsYW4oVk0mLCBSZWY8TW9k
dWxlSW5mb3JtYXRpb24+LCBDb21wbGV0aW9uVGFzayYmKTsKKyAgICBzdGF0aWMgQ29tcGxldGlv
blRhc2sgZG9udEZpbmFsaXplKCkgeyByZXR1cm4gY3JlYXRlU2hhcmVkVGFzazxDYWxsYmFja1R5
cGU+KFtdKFZNKiwgUGxhbiYpIHsgfSk7IH0KKyAgICBQbGFuKFZNKiwgUmVmPE1vZHVsZUluZm9y
bWF0aW9uPiwgQ29tcGxldGlvblRhc2smJik7CiAKICAgICAvLyBOb3RlOiBUaGlzIGNvbnN0cnVj
dG9yIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgeW91IGFyZSBub3QgYWN0dWFsbHkgYnVpbGRpbmcg
YSBtb2R1bGUgZS5nLiB2YWxpZGF0aW9uL2Z1bmN0aW9uIHRlc3RzCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgUGxhbihWTSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIENvbXBsZXRpb25UYXNrJiYp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIFBsYW4oVk0qLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90
LCBDb21wbGV0aW9uVGFzayYmKTsKICAgICB2aXJ0dWFsIEpTX0VYUE9SVF9QUklWQVRFIH5QbGFu
KCk7CiAKICAgICAvLyBJZiB5b3UgZ3VhcmFudGVlIHRoZSBvcmRlcmluZyBoZXJlLCB5b3UgY2Fu
IHJlbHkgb24gRklGTyBvZiB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCmluZGV4
IGExY2I5MjMyN2Q3YTlkMGMxZTcwYmQ3NGY0ZTBjNzcxNTA4Y2FkMTQuLjVlMGVlNWU2MTljNzZl
MzExOWU4MjU3MmU2MTVhMWYwMmFlYTk2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9y
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UoRXhlY1N0YXRlKiBleAogICAgIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0
ZSh2bSwgZXhlYywgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGluc3RhbmNlU3RydWN0dXJlKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgaW5zdGFuY2UtPmZpbmFs
aXplQ3JlYXRpb24odm0sIGV4ZWMsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmModm0sIGlu
c3RhbmNlLT5tZW1vcnlNb2RlKCkpKTsKKyAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih2
bSwgZXhlYywgbW9kdWxlLT5tb2R1bGUoKS5jb21waWxlU3luYyhpbnN0YW5jZS0+bWVtb3J5TW9k
ZSgpKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGluc3RhbmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcAppbmRleCBkYWIyNzBmM2I5
MDFiNjU5ZDIyMGU1ZjE0ODFmYWMwYjRlODU2NTdkLi44YzkzOTE0YzY4ZmE3NmY4N2IyZTZmOWJm
YWI2ZWRkMmY4MmUzNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHNpemVfdCBieXRlU2l6ZTsKICAgICB1aW50OF90KiBiYXNlID0g
Z2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgYnl0ZU9mZnNl
dCwgYnl0ZVNpemUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIEJCUVBsYW4gcGxhbih2bSwgYmFzZSArIGJ5dGVPZmZzZXQsIGJ5dGVTaXpl
LCBCQlFQbGFuOjpWYWxpZGF0aW9uLCBQbGFuOjpkb250RmluYWxpemUoKSk7CisgICAgQkJRUGxh
biBwbGFuKCZ2bSwgYmFzZSArIGJ5dGVPZmZzZXQsIGJ5dGVTaXplLCBCQlFQbGFuOjpWYWxpZGF0
aW9uLCBQbGFuOjpkb250RmluYWxpemUoKSk7CiAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQg
dG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGlu
ZyB3aWxsIE9PTS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY2MDE1CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocGxhbi5wYXJz
ZUFuZFZhbGlkYXRlTW9kdWxlKCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308452</attachid>
            <date>2017-04-27 14:52:33 -0700</date>
            <delta_ts>2017-04-27 14:55:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171380-20170427145232.patch</filename>
            <type>text/plain</type>
            <size>21793</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDM2OTBmM2ExMzgzMTcxN2FkZGFiODYzOGFmZTk3MzBlNjE1YWY0Li5lYmFmMTQ1ZGNlMWI1MDY3
ZTE3ZGMzMzljMWZiYjc3MmE0NTYzNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNy0wNC0yNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjE1ODQzKTogQVNTRVJUSU9OIEZBSUxFRDog
IW1fY29tcGxldGlvblRhc2tzWzBdLmZpcnN0IGluICBKU0M6Oldhc206OlBsYW46OnRyeVJlbW92
ZVZNQW5kQ2FuY2VsSWZMYXN0KEpTQzo6Vk0gJikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJh
c3RpZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgYXNzb2NpYXRpb24gb2YgVk1z
IHRvIFdhc206OlBsYW5zLiBGb3IgdmFsaWRhdGlvbgorICAgICAgICB3ZSB3YW50IGFsbCB0aGUg
Y29tcGxldGlvbiB0YXNrcyB0byBiZSBhc3NvY2lhdGUgd2l0aCBhIFZNLiBGb3IgQkJRLAorICAg
ICAgICB3ZSB3YW50IHRoZSBtYWluIHRhc2sgdG8gbm90IGJlIGFzc29jaWF0ZWQgd2l0aCBhbnkg
Vk0uCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25UZXN0V2FzbU1vZHVs
ZUZ1bmN0aW9ucyk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OkJCUVBsYW46OkJCUVBsYW4pOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4u
aDoKKyAgICAgICAgKiB3YXNtL1dhc21Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6Oldhc206OkNvZGVCbG9jazo6
Y29tcGlsZUFzeW5jKToKKyAgICAgICAgKiB3YXNtL1dhc21Db2RlQmxvY2suaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vV2FzbU1vZHVs
ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Om1ha2VWYWxpZGF0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAoSlNDOjpXYXNtOjpNb2R1bGU6OnZhbGlkYXRlU3luYyk6CisgICAgICAgIChKU0M6Oldh
c206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYyk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZTo6
Z2V0T3JDcmVhdGVDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGU6OmNvbXBp
bGVTeW5jKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlOjpjb21waWxlQXN5bmMpOgorICAg
ICAgICAqIHdhc20vV2FzbU1vZHVsZS5oOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjpPTUdQbGFuKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6cnVuT01HUGxhbkZvckluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmg6
CisgICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46
OlBsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpydW5Db21wbGV0aW9uVGFza3MpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjphZGRDb21wbGV0aW9uVGFzayk6CisgICAgICAgIChK
U0M6Oldhc206OlBsYW46OnRyeVJlbW92ZVZNQW5kQ2FuY2VsSWZMYXN0KToKKyAgICAgICAgKiB3
YXNtL1dhc21QbGFuLmg6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmRvbnRGaW5hbGl6ZSk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3Nl
bWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTctMDQtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIEF1ZGl0IGFuZCBmaXggaW5jb3JyZWN0IHVzZXMgb2YgSlNBcnJh
eTo6dHJ5Q3JlYXRlRm9ySW5pdGlhbGl6YXRpb25Qcml2YXRlKCkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IDdmZmFmNjQ4OWY4NTEyNzlkNTYxOWFmOThmMmEwMDhmZWFiNTc0ODMuLjk3MDZiYzY3
YjgwZWEzNmNiZWRmMTllOTEyMGZlMGZiZjE1YWVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0zMTkxLDcgKzMxOTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNTdGF0ZSogZQogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgIT0gZnVuY3Rpb25Db3VudCArIDIpCiAgICAgICAgIENSQVNIKCk7
CiAKLSAgICBSZWY8V2FzbTo6QkJRUGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgV2FzbTo6QkJR
UGxhbih2bSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNvdXJjZS0+dmVjdG9yKCkpLCBzb3VyY2Ut
Pmxlbmd0aCgpLCBXYXNtOjpCQlFQbGFuOjpGdWxsQ29tcGlsZSwgV2FzbTo6UGxhbjo6ZG9udEZp
bmFsaXplKCkpKTsKKyAgICBSZWY8V2FzbTo6QkJRUGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcg
V2FzbTo6QkJRUGxhbihudWxscHRyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc291cmNlLT52ZWN0
b3IoKSksIHNvdXJjZS0+bGVuZ3RoKCksIFdhc206OkJCUVBsYW46OkZ1bGxDb21waWxlLCBXYXNt
OjpQbGFuOjpkb250RmluYWxpemUoKSkpOwogICAgIFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5x
dWV1ZShwbGFuLmNvcHlSZWYoKSk7CiAgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5jb21wbGV0
ZVBsYW5TeW5jaHJvbm91c2x5KHBsYW4uZ2V0KCkpOwogICAgIGlmIChwbGFuLT5mYWlsZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IGFjYWZm
ZDgzNTI5ZmNkOGQ4OTc5NGE3YTk1ZTA0ODE1NGZjNzcyMzQuLjFkZDBjZDFkODM1YzZjMmYyMzFi
MDBiODg2ZGRlNGFmNzJjMjYzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QkJRUGxhbi5jcHAKQEAgLTUxLDIwICs1MSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKLUJCUVBsYW46
OkJCUVBsYW4oVk0mIHZtLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIEFzeW5jV29yayB3
b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCitCQlFQbGFuOjpCQlFQbGFuKFZNKiB2bSwgUmVm
PE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBBc3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2sm
JiB0YXNrKQogICAgIDogQmFzZSh2bSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZSh0YXNrKSkKICAg
ICAsIG1fc3RhdGUoU3RhdGU6OlZhbGlkYXRlZCkKICAgICAsIG1fYXN5bmNXb3JrKHdvcmspCiB7
CiB9CiAKLUJCUVBsYW46OkJCUVBsYW4oVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2Us
IEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCitCQlFQbGFuOjpCQlFQbGFu
KFZNKiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291cmNlLCBBc3luY1dvcmsgd29yaywgQ29tcGxl
dGlvblRhc2smJiB0YXNrKQogICAgIDogQkJRUGxhbih2bSwgbWFrZVJlZigqbmV3IE1vZHVsZUlu
Zm9ybWF0aW9uKFdURk1vdmUoc291cmNlKSkpLCB3b3JrLCBXVEZNb3ZlKHRhc2spKQogewogICAg
IG1fc3RhdGUgPSBTdGF0ZTo6SW5pdGlhbDsKIH0KIAotQkJRUGxhbjo6QkJRUGxhbihWTSYgdm0s
IGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgQXN5bmNXb3JrIHdv
cmssIENvbXBsZXRpb25UYXNrJiYgdGFzaykKK0JCUVBsYW46OkJCUVBsYW4oVk0qIHZtLCBjb25z
dCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgsIEFzeW5jV29yayB3b3JrLCBD
b21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCYXNlKHZtLCBzb3VyY2UsIHNvdXJjZUxlbmd0
aCwgV1RGTW92ZSh0YXNrKSkKICAgICAsIG1fc3RhdGUoU3RhdGU6OkluaXRpYWwpCiAgICAgLCBt
X2FzeW5jV29yayh3b3JrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJCUVBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmgK
aW5kZXggZTM3MjZjN2JjMDM0ZGZhNWNiYTNiMDIxMjM1YzVhYmRmNDY3NDg5NS4uZDE0MTg0Zjc0
NDkxM2U3M2QyZTNkYWY0NmVjMjA5NWM0NzBmMTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5oCkBAIC01MSwxMSArNTEsMTEgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBQbGFuOwogICAgIGVudW0gQXN5bmNXb3JrIDogdWludDhfdCB7IEZ1bGxDb21waWxl
LCBWYWxpZGF0aW9uIH07CiAgICAgLy8gTm90ZTogQ29tcGxldGlvblRhc2sgc2hvdWxkIG5vdCBo
b2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBQbGFuIG90aGVyd2lzZSB0aGVyZSB3aWxsIGJlIGEgcmVm
ZXJlbmNlIGN5Y2xlLgotICAgIEJCUVBsYW4oVk0mLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+LCBB
c3luY1dvcmssIENvbXBsZXRpb25UYXNrJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEJCUVBs
YW4oVk0mLCBWZWN0b3I8dWludDhfdD4mJiwgQXN5bmNXb3JrLCBDb21wbGV0aW9uVGFzayYmKTsK
KyAgICBCQlFQbGFuKFZNKiwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiwgQXN5bmNXb3JrLCBDb21w
bGV0aW9uVGFzayYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBCQlFQbGFuKFZNKiwgVmVjdG9y
PHVpbnQ4X3Q+JiYsIEFzeW5jV29yaywgQ29tcGxldGlvblRhc2smJik7CiAgICAgLy8gTm90ZTog
VGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgb25seSBiZSB1c2VkIGlmIHlvdSBhcmUgbm90IGFjdHVh
bGx5IGJ1aWxkaW5nIGEgbW9kdWxlIGUuZy4gdmFsaWRhdGlvbi9mdW5jdGlvbiB0ZXN0cwogICAg
IC8vIEZJWE1FOiBXaGVuIHdlIGdldCByaWQgb2YgZnVuY3Rpb24gdGVzdHMgd2Ugc2hvdWxkIHJl
bW92ZSBBc3luY1dvcmsgZnJvbSB0aGlzIGNvbnN0cnVjdG9yLgotICAgIEpTX0VYUE9SVF9QUklW
QVRFIEJCUVBsYW4oVk0mLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBBc3luY1dvcmssIENvbXBs
ZXRpb25UYXNrJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEJCUVBsYW4oVk0qLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90LCBBc3luY1dvcmssIENvbXBsZXRpb25UYXNrJiYpOwogCiAgICAgYm9v
bCBwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUNvZGVCbG9jay5jcHAKaW5kZXggZjU2ZTMwYjlhYjMzOWZlNzA0NTRkMjZiNjNhZmFi
Y2JiNWM4MGZjYi4uZDMzYjdlZmM5MDUzZjgyMjg0YTc2Y2IwZTY4ODc4ZmMzMzcxYTlhOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAKQEAgLTM1LDEy
ICszNSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi1Db2RlQmxv
Y2s6OkNvZGVCbG9jayhWTSYgdm0sIE1lbW9yeU1vZGUgbW9kZSwgTW9kdWxlSW5mb3JtYXRpb24m
IG1vZHVsZUluZm9ybWF0aW9uKQorQ29kZUJsb2NrOjpDb2RlQmxvY2soTWVtb3J5TW9kZSBtb2Rl
LCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24pCiAgICAgOiBtX2NhbGxlZUNv
dW50KG1vZHVsZUluZm9ybWF0aW9uLmludGVybmFsRnVuY3Rpb25Db3VudCgpKQogICAgICwgbV9t
b2RlKG1vZGUpCiB7CiAgICAgUmVmUHRyPENvZGVCbG9jaz4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7
Ci0gICAgbV9wbGFuID0gYWRvcHRSZWYoKm5ldyBCQlFQbGFuKHZtLCBtYWtlUmVmKG1vZHVsZUlu
Zm9ybWF0aW9uKSwgQkJRUGxhbjo6RnVsbENvbXBpbGUsIGNyZWF0ZVNoYXJlZFRhc2s8UGxhbjo6
Q2FsbGJhY2tUeXBlPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldIChWTSYsIFBsYW4mKSB7CisgICAgbV9wbGFuID0gYWRvcHRSZWYoKm5ldyBCQlFQbGFuKG51
bGxwdHIsIG1ha2VSZWYobW9kdWxlSW5mb3JtYXRpb24pLCBCQlFQbGFuOjpGdWxsQ29tcGlsZSwg
Y3JlYXRlU2hhcmVkVGFzazxQbGFuOjpDYWxsYmFja1R5cGU+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKFZNKiwgUGxhbiYpIHsKICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgICAgICBpZiAobV9wbGFuLT5mYWlsZWQoKSkg
ewogICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtX3BsYW4tPmVycm9yTWVzc2FnZSgpOwpA
QCAtMTAyLDggKzEwMiw5IEBAIHZvaWQgQ29kZUJsb2NrOjpjb21waWxlQXN5bmMoVk0mIHZtLCBB
c3luY0NvbXBpbGF0aW9uQ2FsbGJhY2smJiB0YXNrKQogICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIGtlZXAgYSBSZWZQdHIgb24gdGhlIFBsYW4gYmVjYXVzZSB0aGUgd29ya2xpc3Qgd2lsbCBr
ZWVwCiAgICAgICAgIC8vIGEgUmVmUHRyIG9uIHRoZSBQbGFuIHVudGlsIHRoZSBwbGFuIGZpbmlz
aGVzIG5vdGlmeWluZyBhbGwgb2YgaXRzIGNhbGxiYWNrcy4KICAgICAgICAgUmVmUHRyPENvZGVC
bG9jaz4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7Ci0gICAgICAgIHBsYW4tPmFkZENvbXBsZXRpb25U
YXNrKHZtLCBjcmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW3RoaXMsIHRhc2sg
PSBXVEZNb3ZlKHRhc2spLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0g
KFZNJiB2bSwgUGxhbiYpIHsKLSAgICAgICAgICAgIHRhc2stPnJ1bih2bSwgbWFrZVJlZigqdGhp
cykpOworICAgICAgICBwbGFuLT5hZGRDb21wbGV0aW9uVGFzayh2bSwgY3JlYXRlU2hhcmVkVGFz
azxQbGFuOjpDYWxsYmFja1R5cGU+KFt0aGlzLCB0YXNrID0gV1RGTW92ZSh0YXNrKSwgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIChWTSogdm0sIFBsYW4mKSB7CisgICAg
ICAgICAgICBBU1NFUlQodm0pOworICAgICAgICAgICAgdGFzay0+cnVuKCp2bSwgbWFrZVJlZigq
dGhpcykpOwogICAgICAgICB9KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHRhc2stPnJ1bih2bSwg
bWFrZVJlZigqdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9j
ay5oCmluZGV4IDkwYWY2ZTQ1MDgwNTMyYmNmNTY4NzMyM2IwMDQ5OGZhNTM4ZWQzN2MuLjg3MmI0
NTNjODQxYzFiMDkwYTFkOTdkZmRmMjc3MGZkYzE3NTFjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmgKQEAgLTUzLDkgKzUzLDkgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvZGVCbG9jaz4gewogcHVibGljOgog
ICAgIHR5cGVkZWYgdm9pZCBDYWxsYmFja1R5cGUoVk0mLCBSZWY8Q29kZUJsb2NrPiYmKTsKICAg
ICB1c2luZyBBc3luY0NvbXBpbGF0aW9uQ2FsbGJhY2sgPSBSZWZQdHI8V1RGOjpTaGFyZWRUYXNr
PENhbGxiYWNrVHlwZT4+OwotICAgIHN0YXRpYyBSZWY8Q29kZUJsb2NrPiBjcmVhdGUoVk0mIHZt
LCBNZW1vcnlNb2RlIG1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbikK
KyAgICBzdGF0aWMgUmVmPENvZGVCbG9jaz4gY3JlYXRlKE1lbW9yeU1vZGUgbW9kZSwgTW9kdWxl
SW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ29kZUJsb2NrKHZtLCBtb2RlLCBtb2R1bGVJbmZvcm1hdGlvbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb2RlQmxvY2sobW9kZSwgbW9kdWxlSW5mb3JtYXRp
b24pKTsKICAgICB9CiAKICAgICB2b2lkIHdhaXRVbnRpbEZpbmlzaGVkKCk7CkBAIC0xMTQsNyAr
MTE0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT01HUGxhbjsKIAot
ICAgIENvZGVCbG9jayhWTSYsIE1lbW9yeU1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJik7CisgICAg
Q29kZUJsb2NrKE1lbW9yeU1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJik7CiAgICAgdW5zaWduZWQg
bV9jYWxsZWVDb3VudDsKICAgICBNZW1vcnlNb2RlIG1fbW9kZTsKICAgICBWZWN0b3I8UmVmUHRy
PENhbGxlZT4+IG1fY2FsbGVlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Nb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZS5jcHAKaW5kZXggNDZlZTk0ZDY5YjBjMjYxMmVlZWY4MThkYTgxNzcyYTkzM2JlMDEwMS4uOGUz
NjZmNGI1MDcwMzQyZTczZmM3ZTRlZDQxOTRjNTMyMzc2ZmYzNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAKQEAgLTU2LDI2ICs1NiwyNyBAQCBzdGF0aWMgTW9k
dWxlOjpWYWxpZGF0aW9uUmVzdWx0IG1ha2VWYWxpZGF0aW9uUmVzdWx0KEJCUVBsYW4mIHBsYW4p
CiAKIHN0YXRpYyBQbGFuOjpDb21wbGV0aW9uVGFzayBtYWtlVmFsaWRhdGlvbkNhbGxiYWNrKE1v
ZHVsZTo6QXN5bmNWYWxpZGF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICByZXR1cm4g
Y3JlYXRlU2hhcmVkVGFzazxQbGFuOjpDYWxsYmFja1R5cGU+KFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoVk0mIHZtLCBQbGFuJiBwbGFuKSB7CisgICAgcmV0dXJuIGNyZWF0ZVNoYXJl
ZFRhc2s8UGxhbjo6Q2FsbGJhY2tUeXBlPihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KFZNKiB2bSwgUGxhbiYgcGxhbikgewogICAgICAgICBBU1NFUlQoIXBsYW4uaGFzV29yaygpKTsK
LSAgICAgICAgY2FsbGJhY2stPnJ1bih2bSwgbWFrZVZhbGlkYXRpb25SZXN1bHQoc3RhdGljX2Nh
c3Q8QkJRUGxhbiY+KHBsYW4pKSk7CisgICAgICAgIEFTU0VSVCh2bSk7CisgICAgICAgIGNhbGxi
YWNrLT5ydW4oKnZtLCBtYWtlVmFsaWRhdGlvblJlc3VsdChzdGF0aWNfY2FzdDxCQlFQbGFuJj4o
cGxhbikpKTsKICAgICB9KTsKIH0KIAogTW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0IE1vZHVsZTo6
dmFsaWRhdGVTeW5jKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291cmNlKQogewotICAgIFJl
ZjxCQlFQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBCQlFQbGFuKHZtLCBXVEZNb3ZlKHNvdXJj
ZSksIEJCUVBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSgpKSk7CisgICAgUmVm
PEJCUVBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IEJCUVBsYW4oJnZtLCBXVEZNb3ZlKHNvdXJj
ZSksIEJCUVBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSgpKSk7CiAgICAgcGxh
bi0+cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpOwogICAgIHJldHVybiBtYWtlVmFsaWRhdGlvblJl
c3VsdChwbGFuLmdldCgpKTsKIH0KIAogdm9pZCBNb2R1bGU6OnZhbGlkYXRlQXN5bmMoVk0mIHZt
LCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2UsIE1vZHVsZTo6QXN5bmNWYWxpZGF0aW9uQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKLSAgICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgQkJR
UGxhbih2bSwgV1RGTW92ZShzb3VyY2UpLCBCQlFQbGFuOjpWYWxpZGF0aW9uLCBtYWtlVmFsaWRh
dGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSkpOworICAgIFJlZjxQbGFuPiBwbGFuID0g
YWRvcHRSZWYoKm5ldyBCQlFQbGFuKCZ2bSwgV1RGTW92ZShzb3VyY2UpLCBCQlFQbGFuOjpWYWxp
ZGF0aW9uLCBtYWtlVmFsaWRhdGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSkpOwogICAg
IFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKIH0KIAotUmVm
PENvZGVCbG9jaz4gTW9kdWxlOjpnZXRPckNyZWF0ZUNvZGVCbG9jayhWTSYgdm0sIE1lbW9yeU1v
ZGUgbW9kZSkKK1JlZjxDb2RlQmxvY2s+IE1vZHVsZTo6Z2V0T3JDcmVhdGVDb2RlQmxvY2soTWVt
b3J5TW9kZSBtb2RlKQogewogICAgIFJlZlB0cjxDb2RlQmxvY2s+IGNvZGVCbG9jazsKICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CkBAIC04NiwyMiArODcsMjIgQEAgUmVmPENv
ZGVCbG9jaz4gTW9kdWxlOjpnZXRPckNyZWF0ZUNvZGVCbG9jayhWTSYgdm0sIE1lbW9yeU1vZGUg
bW9kZSkKICAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byBiYWNrIG9mZiByZXRyeWluZyBh
dCBzb21lIHBvaW50OgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzA2MDcKICAgICBpZiAoIWNvZGVCbG9jayB8fCAoY29kZUJsb2NrLT5jb21waWxhdGlv
bkZpbmlzaGVkKCkgJiYgIWNvZGVCbG9jay0+cnVubmFibGUoKSkpIHsKLSAgICAgICAgY29kZUJs
b2NrID0gQ29kZUJsb2NrOjpjcmVhdGUodm0sIG1vZGUsIGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3Jt
YXRpb24mPihtb2R1bGVJbmZvcm1hdGlvbigpKSk7CisgICAgICAgIGNvZGVCbG9jayA9IENvZGVC
bG9jazo6Y3JlYXRlKG1vZGUsIGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1bGVJ
bmZvcm1hdGlvbigpKSk7CiAgICAgICAgIG1fY29kZUJsb2Nrc1tzdGF0aWNfY2FzdDx1aW50OF90
Pihtb2RlKV0gPSBjb2RlQmxvY2s7CiAgICAgfQogICAgIHJldHVybiBjb2RlQmxvY2sucmVsZWFz
ZU5vbk51bGwoKTsKIH0KIAotUmVmPENvZGVCbG9jaz4gTW9kdWxlOjpjb21waWxlU3luYyhWTSYg
dm0sIE1lbW9yeU1vZGUgbW9kZSkKK1JlZjxDb2RlQmxvY2s+IE1vZHVsZTo6Y29tcGlsZVN5bmMo
TWVtb3J5TW9kZSBtb2RlKQogewotICAgIFJlZjxDb2RlQmxvY2s+IGNvZGVCbG9jayA9IGdldE9y
Q3JlYXRlQ29kZUJsb2NrKHZtLCBtb2RlKTsKKyAgICBSZWY8Q29kZUJsb2NrPiBjb2RlQmxvY2sg
PSBnZXRPckNyZWF0ZUNvZGVCbG9jayhtb2RlKTsKICAgICBjb2RlQmxvY2stPndhaXRVbnRpbEZp
bmlzaGVkKCk7CiAgICAgcmV0dXJuIGNvZGVCbG9jazsKIH0KIAogdm9pZCBNb2R1bGU6OmNvbXBp
bGVBc3luYyhWTSYgdm0sIE1lbW9yeU1vZGUgbW9kZSwgQ29kZUJsb2NrOjpBc3luY0NvbXBpbGF0
aW9uQ2FsbGJhY2smJiB0YXNrKQogewotICAgIFJlZjxDb2RlQmxvY2s+IGNvZGVCbG9jayA9IGdl
dE9yQ3JlYXRlQ29kZUJsb2NrKHZtLCBtb2RlKTsKKyAgICBSZWY8Q29kZUJsb2NrPiBjb2RlQmxv
Y2sgPSBnZXRPckNyZWF0ZUNvZGVCbG9jayhtb2RlKTsKICAgICBjb2RlQmxvY2stPmNvbXBpbGVB
c3luYyh2bSwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGUuaAppbmRleCBjZWMzMGU1Yjg2MTczM2I1ZmQyMjVmMWVhNTE1ODhkMzVjNDkxNWNl
Li5hMWFmNzU4NmM3NDA0YzI2NDZmMTZmODdlNmNmZTBmYTM5NjkzNGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCkBAIC01OCwxNCArNTgsMTQgQEAgcHVibGljOgog
ICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UpIGNvbnN0OwogICAgIGNvbnN0IFdhc206
Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlSW5mb3JtYXRpb24uZ2V0KCk7IH0KIAotICAgIFJlZjxDb2RlQmxvY2s+IGNvbXBpbGVT
eW5jKFZNJiwgTWVtb3J5TW9kZSk7CisgICAgUmVmPENvZGVCbG9jaz4gY29tcGlsZVN5bmMoTWVt
b3J5TW9kZSk7CiAgICAgdm9pZCBjb21waWxlQXN5bmMoVk0mLCBNZW1vcnlNb2RlLCBDb2RlQmxv
Y2s6OkFzeW5jQ29tcGlsYXRpb25DYWxsYmFjayYmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5Nb2R1bGUoKTsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yKE1lbW9yeU1vZGUgbW9k
ZSkgeyByZXR1cm4gbV9jb2RlQmxvY2tzW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KG1vZGUpXS5nZXQo
KTsgfQogcHJpdmF0ZToKLSAgICBSZWY8Q29kZUJsb2NrPiBnZXRPckNyZWF0ZUNvZGVCbG9jayhW
TSYsIE1lbW9yeU1vZGUpOworICAgIFJlZjxDb2RlQmxvY2s+IGdldE9yQ3JlYXRlQ29kZUJsb2Nr
KE1lbW9yeU1vZGUpOwogCiAgICAgTW9kdWxlKFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4mJik7CiAg
ICAgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBtX21vZHVsZUluZm9ybWF0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IGVkMmRhYzgxMDhhNWNjZTUy
NjAxMzJkNDcxZDU0MDg1YTI1NDExMTQuLjYyOTAzNGVmMmE3NzcwMzhmYzBjMmQ1MjE0MmEzZTcy
YmFjNmUyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQ
bGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAK
QEAgLTUwLDggKzUwLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi1PTUdQbGFuOjpPTUdQbGFuKFZNJiB2
bSwgUmVmPE1vZHVsZT4gbW9kdWxlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2Rl
IG1vZGUsIENvbXBsZXRpb25UYXNrJiYgdGFzaykKLSAgICA6IEJhc2Uodm0sIG1ha2VSZWYoY29u
c3RfY2FzdDxNb2R1bGVJbmZvcm1hdGlvbiY+KG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKSkp
LCBXVEZNb3ZlKHRhc2spKQorT01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBtb2R1bGUsIHVp
bnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGxldGlvblRhc2smJiB0
YXNrKQorICAgIDogQmFzZShudWxscHRyLCBtYWtlUmVmKGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3Jt
YXRpb24mPihtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkpKSwgV1RGTW92ZSh0YXNrKSkKICAg
ICAsIG1fbW9kdWxlKG1vZHVsZS5jb3B5UmVmKCkpCiAgICAgLCBtX2NvZGVCbG9jaygqbW9kdWxl
LT5jb2RlQmxvY2tGb3IobW9kZSkpCiAgICAgLCBtX2Z1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRl
eCkKQEAgLTE1OCwxNCArMTU4LDEyIEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVm
Zm9ydCkKIAogdm9pZCBydW5PTUdQbGFuRm9ySW5kZXgoQ29udGV4dCogY29udGV4dCwgdWludDMy
X3QgZnVuY3Rpb25JbmRleCkKIHsKLSAgICBWTSYgdm0gPSAqY29udGV4dC0+dm0oKTsKLQogICAg
IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNvbnRleHQtPmNvZGVCbG9jaygp
OwogICAgIEFTU0VSVChjb250ZXh0LT5tZW1vcnlNb2RlKCkgPT0gY29kZUJsb2NrLT5tX2NvZGVC
bG9jay0+bW9kZSgpKTsKIAogICAgIC8vIFdlIHVzZSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0
IG9mIHRoZSB0aWVyVXBDb3VudCB0byByZXByZXNlbnQgd2hldGhlciBvciBub3Qgc29tZW9uZSBo
YXMgYWxyZWFkeSBzdGFydGVkIHRoZSB0aWVyIHVwLgogICAgIGlmIChjb2RlQmxvY2stPm1fY29k
ZUJsb2NrLT50aWVyVXBDb3VudChmdW5jdGlvbkluZGV4KS5zaG91bGRTdGFydFRpZXJVcCgpKSB7
Ci0gICAgICAgIFJlZjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBPTUdQbGFuKHZtLCBjb250
ZXh0LT5tb2R1bGUoKS0+bW9kdWxlKCksIGZ1bmN0aW9uSW5kZXgsIGNvZGVCbG9jay0+bV9jb2Rl
QmxvY2stPm1vZGUoKSwgUGxhbjo6ZG9udEZpbmFsaXplKCkpKTsKKyAgICAgICAgUmVmPFBsYW4+
IHBsYW4gPSBhZG9wdFJlZigqbmV3IE9NR1BsYW4oY29udGV4dC0+bW9kdWxlKCktPm1vZHVsZSgp
LCBmdW5jdGlvbkluZGV4LCBjb2RlQmxvY2stPm1fY29kZUJsb2NrLT5tb2RlKCksIFBsYW46OmRv
bnRGaW5hbGl6ZSgpKSk7CiAgICAgICAgIGVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShwbGFuLmNv
cHlSZWYoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghT3B0aW9uczo6dXNlQ29uY3VycmVudEpJ
VCgpKSkKICAgICAgICAgICAgIHBsYW4tPndhaXRGb3JDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uaAppbmRleCBkOTZmN2I4ZTNiZmYyNWY2MmMwNmYw
MWFiMGQ0YWMyMjgyYzE2ODMxLi43MTY0YTllZjkyMzUxNjA5NjgyNjI0NjkxNzVjYjVjOGRiMzE3
NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmgKQEAgLTQyLDcg
KzQyLDcgQEAgY2xhc3MgT01HUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gUGxhbjsKICAgICAvLyBOb3RlOiBDb21wbGV0aW9uVGFzayBzaG91bGQg
bm90IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIFBsYW4gb3RoZXJ3aXNlIHRoZXJlIHdpbGwgYmUg
YSByZWZlcmVuY2UgY3ljbGUuCi0gICAgT01HUGxhbihWTSYsIFJlZjxNb2R1bGU+LCB1aW50MzJf
dCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2RlLCBDb21wbGV0aW9uVGFzayYmKTsKKyAgICBPTUdQ
bGFuKFJlZjxNb2R1bGU+LCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2RlLCBDb21w
bGV0aW9uVGFzayYmKTsKIAogICAgIGJvb2wgaGFzV29yaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2NvbXBsZXRlZDsgfQogICAgIHZvaWQgd29yayhDb21waWxhdGlvbkVmZm9ydCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggYThjNDlk
OTQyMzllN2E3Njg3MGEwMzVjOTNlYTQ5ZGJkODlkZTNkZi4uNGE2NDM4MDMyYjQzY2NhZDY0Zjhj
ZTcwNjQ4ZWIxNjlkNjZmMTQyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFu
LmNwcApAQCAtNTAsMjAgKzUwLDIwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7
CiAKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAotUGxhbjo6UGxhbihWTSYg
dm0sIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQ29tcGxldGlvblRhc2smJiB0YXNrKQor
UGxhbjo6UGxhbihWTSogdm0sIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQ29tcGxldGlv
blRhc2smJiB0YXNrKQogICAgIDogbV9tb2R1bGVJbmZvcm1hdGlvbihXVEZNb3ZlKGluZm8pKQog
ICAgICwgbV9zb3VyY2UobV9tb2R1bGVJbmZvcm1hdGlvbi0+c291cmNlLmRhdGEoKSkKICAgICAs
IG1fc291cmNlTGVuZ3RoKG1fbW9kdWxlSW5mb3JtYXRpb24tPnNvdXJjZS5zaXplKCkpCiB7Ci0g
ICAgbV9jb21wbGV0aW9uVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCZ2bSwgV1RGTW92ZSh0
YXNrKSkpOworICAgIG1fY29tcGxldGlvblRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih2bSwg
V1RGTW92ZSh0YXNrKSkpOwogfQogCi1QbGFuOjpQbGFuKFZNJiB2bSwgY29uc3QgdWludDhfdCog
c291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3RoLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCitQbGFu
OjpQbGFuKFZNKiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3Ro
LCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9uKG1ha2VS
ZWYoKm5ldyBNb2R1bGVJbmZvcm1hdGlvbihWZWN0b3I8dWludDhfdD4oKSkpKQogICAgICwgbV9z
b3VyY2Uoc291cmNlKQogICAgICwgbV9zb3VyY2VMZW5ndGgoc291cmNlTGVuZ3RoKQogewotICAg
IG1fY29tcGxldGlvblRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigmdm0sIFdURk1vdmUodGFz
aykpKTsKKyAgICBtX2NvbXBsZXRpb25UYXNrcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodm0sIFdU
Rk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBQbGFuOjpydW5Db21wbGV0aW9uVGFza3MoY29uc3Qg
QWJzdHJhY3RMb2NrZXImKQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFBsYW46OnJ1bkNvbXBsZXRp
b25UYXNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYpCiAgICAgQVNTRVJUKGlzQ29tcGxldGUoKSAm
JiAhaGFzV29yaygpKTsKIAogICAgIGZvciAoYXV0byYgdGFzayA6IG1fY29tcGxldGlvblRhc2tz
KQotICAgICAgICB0YXNrLnNlY29uZC0+cnVuKCp0YXNrLmZpcnN0LCAqdGhpcyk7CisgICAgICAg
IHRhc2suc2Vjb25kLT5ydW4odGFzay5maXJzdCwgKnRoaXMpOwogICAgIG1fY29tcGxldGlvblRh
c2tzLmNsZWFyKCk7CiAgICAgbV9jb21wbGV0ZWQubm90aWZ5QWxsKCk7CiB9CkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgUGxhbjo6YWRkQ29tcGxldGlvblRhc2soVk0mIHZtLCBDb21wbGV0aW9uVGFz
ayYmIHRhc2spCiAgICAgaWYgKCFpc0NvbXBsZXRlKCkpCiAgICAgICAgIG1fY29tcGxldGlvblRh
c2tzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigmdm0sIFdURk1vdmUodGFzaykpKTsKICAgICBlbHNl
Ci0gICAgICAgIHRhc2stPnJ1bih2bSwgKnRoaXMpOworICAgICAgICB0YXNrLT5ydW4oJnZtLCAq
dGhpcyk7CiB9CiAKIHZvaWQgUGxhbjo6d2FpdEZvckNvbXBsZXRpb24oKQpAQCAtOTcsNiArOTcs
MTIgQEAgYm9vbCBQbGFuOjp0cnlSZW1vdmVWTUFuZENhbmNlbElmTGFzdChWTSYgdm0pCiB7CiAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAorICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7CisgICAgICAgIC8vIFdlIGFsbG93IHRoZSBmaXJzdCBjb21wbGV0aW9uIHRhc2sgdG8gbm90
IGhhdmUgYSB2bS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fY29tcGxldGlv
blRhc2tzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgQVNTRVJUKG1fY29tcGxldGlvblRhc2tz
W2ldLmZpcnN0KTsKKyAgICB9CisKICAgICBib29sIHJlbW92ZWRBbnlUYXNrcyA9IGZhbHNlOwog
ICAgIG1fY29tcGxldGlvblRhc2tzLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoY29uc3Qgc3RkOjpw
YWlyPFZNKiwgQ29tcGxldGlvblRhc2s+JiBwYWlyKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkUmVt
b3ZlID0gcGFpci5maXJzdCA9PSAmdm07CkBAIC0xMTIsOCArMTE4LDcgQEAgYm9vbCBQbGFuOjp0
cnlSZW1vdmVWTUFuZENhbmNlbElmTGFzdChWTSYgdm0pCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGlmIChtX2NvbXBsZXRpb25UYXNrcy5zaXplKCkgPT0gMSkgewotICAgICAg
ICBBU1NFUlQoIW1fY29tcGxldGlvblRhc2tzWzBdLmZpcnN0KTsKKyAgICBpZiAobV9jb21wbGV0
aW9uVGFza3MuaXNFbXB0eSgpIHx8IChtX2NvbXBsZXRpb25UYXNrcy5zaXplKCkgPT0gMSAmJiAh
bV9jb21wbGV0aW9uVGFza3NbMF0uZmlyc3QpKSB7CiAgICAgICAgIGZhaWwobG9ja2VyLCBBU0NJ
SUxpdGVyYWwoIldlYkFzc2VtYmx5IFBsYW4gd2FzIGNhbmNlbGxlZC4gSWYgeW91IHNlZSB0aGlz
IGVycm9yIG1lc3NhZ2UgcGxlYXNlIGZpbGUgYSBidWcgYXQgYnVncy53ZWJraXQub3JnISIpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Q
bGFuLmgKaW5kZXggZDQ1ZWQxZmQ2ODIyZTQxM2FlYmU2OTE1MTFiZmI3ZjFhODAxMzRhMi4uMTBm
OGExYjhkNjdjZGQyOGZhNTRiYmEyZmE3N2RlMTIzNTFhOGFlMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGxhbi5oCkBAIC00NiwxMyArNDYsMTMgQEAgbmFtZXNwYWNlIFdhc20gewog
CiBjbGFzcyBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsYW4+IHsKIHB1Ymxp
YzoKLSAgICB0eXBlZGVmIHZvaWQgQ2FsbGJhY2tUeXBlKFZNJiwgUGxhbiYpOworICAgIHR5cGVk
ZWYgdm9pZCBDYWxsYmFja1R5cGUoVk0qLCBQbGFuJik7CiAgICAgdXNpbmcgQ29tcGxldGlvblRh
c2sgPSBSZWZQdHI8U2hhcmVkVGFzazxDYWxsYmFja1R5cGU+PjsKLSAgICBzdGF0aWMgQ29tcGxl
dGlvblRhc2sgZG9udEZpbmFsaXplKCkgeyByZXR1cm4gY3JlYXRlU2hhcmVkVGFzazxDYWxsYmFj
a1R5cGU+KFtdKFZNJiwgUGxhbiYpIHsgfSk7IH0KLSAgICBQbGFuKFZNJiwgUmVmPE1vZHVsZUlu
Zm9ybWF0aW9uPiwgQ29tcGxldGlvblRhc2smJik7CisgICAgc3RhdGljIENvbXBsZXRpb25UYXNr
IGRvbnRGaW5hbGl6ZSgpIHsgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8Q2FsbGJhY2tUeXBlPihb
XShWTSosIFBsYW4mKSB7IH0pOyB9CisgICAgUGxhbihWTSosIFJlZjxNb2R1bGVJbmZvcm1hdGlv
bj4sIENvbXBsZXRpb25UYXNrJiYpOwogCiAgICAgLy8gTm90ZTogVGhpcyBjb25zdHJ1Y3RvciBz
aG91bGQgb25seSBiZSB1c2VkIGlmIHlvdSBhcmUgbm90IGFjdHVhbGx5IGJ1aWxkaW5nIGEgbW9k
dWxlIGUuZy4gdmFsaWRhdGlvbi9mdW5jdGlvbiB0ZXN0cwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IFBsYW4oVk0mLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBDb21wbGV0aW9uVGFzayYmKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBQbGFuKFZNKiwgY29uc3QgdWludDhfdCosIHNpemVfdCwgQ29t
cGxldGlvblRhc2smJik7CiAgICAgdmlydHVhbCBKU19FWFBPUlRfUFJJVkFURSB+UGxhbigpOwog
CiAgICAgLy8gSWYgeW91IGd1YXJhbnRlZSB0aGUgb3JkZXJpbmcgaGVyZSwgeW91IGNhbiByZWx5
IG9uIEZJRk8gb2YgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAppbmRleCBhMWNi
OTIzMjdkN2E5ZDBjMWU3MGJkNzRmNGUwYzc3MTUwOGNhZDE0Li41ZTBlZTVlNjE5Yzc2ZTMxMTll
ODI1NzJlNjE1YTFmMDJhZWE5NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAK
QEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNXZWJBc3NlbWJseUluc3RhbmNlKEV4ZWNTdGF0ZSogZXgKICAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3RhbmNlID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOjpjcmVhdGUodm0s
IGV4ZWMsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBpbnN0YW5jZVN0cnVjdHVyZSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIGluc3RhbmNlLT5maW5hbGl6ZUNy
ZWF0aW9uKHZtLCBleGVjLCBtb2R1bGUtPm1vZHVsZSgpLmNvbXBpbGVTeW5jKHZtLCBpbnN0YW5j
ZS0+bWVtb3J5TW9kZSgpKSk7CisgICAgaW5zdGFuY2UtPmZpbmFsaXplQ3JlYXRpb24odm0sIGV4
ZWMsIG1vZHVsZS0+bW9kdWxlKCkuY29tcGlsZVN5bmMoaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShpbnN0YW5jZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKaW5kZXggZGFiMjcwZjNiOTAxYjY1
OWQyMjBlNWYxNDgxZmFjMGI0ZTg1NjU3ZC4uOGM5MzkxNGM2OGZhNzZmODdiMmU2ZjliZmFiNmVk
ZDJmODJlMzRkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVGdW5jKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBzaXplX3QgYnl0ZVNpemU7CiAgICAgdWludDhfdCogYmFzZSA9IGdldFdh
c21CdWZmZXJGcm9tVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGJ5dGVPZmZzZXQsIGJ5
dGVTaXplKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBCQlFQbGFuIHBsYW4odm0sIGJhc2UgKyBieXRlT2Zmc2V0LCBieXRlU2l6ZSwgQkJR
UGxhbjo6VmFsaWRhdGlvbiwgUGxhbjo6ZG9udEZpbmFsaXplKCkpOworICAgIEJCUVBsYW4gcGxh
bigmdm0sIGJhc2UgKyBieXRlT2Zmc2V0LCBieXRlU2l6ZSwgQkJRUGxhbjo6VmFsaWRhdGlvbiwg
UGxhbjo6ZG9udEZpbmFsaXplKCkpOwogICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIHRo
cm93IGFuIE9PTSBleGNlcHRpb24gaGVyZSBpZiB3ZSBkZXRlY3QgdGhhdCBzb21ldGhpbmcgd2ls
bCBPT00uCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NjAxNQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHBsYW4ucGFyc2VBbmRW
YWxpZGF0ZU1vZHVsZSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308454</attachid>
            <date>2017-04-27 14:55:29 -0700</date>
            <delta_ts>2017-04-27 15:37:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171380-20170427145528.patch</filename>
            <type>text/plain</type>
            <size>21884</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1ODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDM2OTBmM2ExMzgzMTcxN2FkZGFiODYzOGFmZTk3MzBlNjE1YWY0Li5lYmFmMTQ1ZGNlMWI1MDY3
ZTE3ZGMzMzljMWZiYjc3MmE0NTYzNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNy0wNC0yNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjE1ODQzKTogQVNTRVJUSU9OIEZBSUxFRDog
IW1fY29tcGxldGlvblRhc2tzWzBdLmZpcnN0IGluICBKU0M6Oldhc206OlBsYW46OnRyeVJlbW92
ZVZNQW5kQ2FuY2VsSWZMYXN0KEpTQzo6Vk0gJikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJh
c3RpZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgYXNzb2NpYXRpb24gb2YgVk1z
IHRvIFdhc206OlBsYW5zLiBGb3IgdmFsaWRhdGlvbgorICAgICAgICB3ZSB3YW50IGFsbCB0aGUg
Y29tcGxldGlvbiB0YXNrcyB0byBiZSBhc3NvY2lhdGUgd2l0aCBhIFZNLiBGb3IgQkJRLAorICAg
ICAgICB3ZSB3YW50IHRoZSBtYWluIHRhc2sgdG8gbm90IGJlIGFzc29jaWF0ZWQgd2l0aCBhbnkg
Vk0uCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rpb25UZXN0V2FzbU1vZHVs
ZUZ1bmN0aW9ucyk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OkJCUVBsYW46OkJCUVBsYW4pOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4u
aDoKKyAgICAgICAgKiB3YXNtL1dhc21Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6Oldhc206OkNvZGVCbG9jazo6
Y29tcGlsZUFzeW5jKToKKyAgICAgICAgKiB3YXNtL1dhc21Db2RlQmxvY2suaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6Q29kZUJsb2NrOjpjcmVhdGUpOgorICAgICAgICAqIHdhc20vV2FzbU1vZHVs
ZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Om1ha2VWYWxpZGF0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAoSlNDOjpXYXNtOjpNb2R1bGU6OnZhbGlkYXRlU3luYyk6CisgICAgICAgIChKU0M6Oldh
c206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYyk6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZTo6
Z2V0T3JDcmVhdGVDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGU6OmNvbXBp
bGVTeW5jKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlOjpjb21waWxlQXN5bmMpOgorICAg
ICAgICAqIHdhc20vV2FzbU1vZHVsZS5oOgorICAgICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFuOjpPTUdQbGFuKToKKyAgICAgICAgKEpTQzo6
V2FzbTo6cnVuT01HUGxhbkZvckluZGV4KToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmg6
CisgICAgICAgICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46
OlBsYW4pOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpydW5Db21wbGV0aW9uVGFza3MpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjphZGRDb21wbGV0aW9uVGFzayk6CisgICAgICAgIChK
U0M6Oldhc206OlBsYW46OnRyeVJlbW92ZVZNQW5kQ2FuY2VsSWZMYXN0KToKKyAgICAgICAgKiB3
YXNtL1dhc21QbGFuLmg6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmRvbnRGaW5hbGl6ZSk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RKU1dlYkFzc2VtYmx5SW5zdGFuY2UpOgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3Nl
bWJseVZhbGlkYXRlRnVuYyk6CisKIDIwMTctMDQtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIEF1ZGl0IGFuZCBmaXggaW5jb3JyZWN0IHVzZXMgb2YgSlNBcnJh
eTo6dHJ5Q3JlYXRlRm9ySW5pdGlhbGl6YXRpb25Qcml2YXRlKCkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IDdmZmFmNjQ4OWY4NTEyNzlkNTYxOWFmOThmMmEwMDhmZWFiNTc0ODMuLjk3MDZiYzY3
YjgwZWEzNmNiZWRmMTllOTEyMGZlMGZiZjE1YWVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC0zMTkxLDcgKzMxOTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNTdGF0ZSogZQogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgIT0gZnVuY3Rpb25Db3VudCArIDIpCiAgICAgICAgIENSQVNIKCk7
CiAKLSAgICBSZWY8V2FzbTo6QkJRUGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgV2FzbTo6QkJR
UGxhbih2bSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNvdXJjZS0+dmVjdG9yKCkpLCBzb3VyY2Ut
Pmxlbmd0aCgpLCBXYXNtOjpCQlFQbGFuOjpGdWxsQ29tcGlsZSwgV2FzbTo6UGxhbjo6ZG9udEZp
bmFsaXplKCkpKTsKKyAgICBSZWY8V2FzbTo6QkJRUGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcg
V2FzbTo6QkJRUGxhbihudWxscHRyLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc291cmNlLT52ZWN0
b3IoKSksIHNvdXJjZS0+bGVuZ3RoKCksIFdhc206OkJCUVBsYW46OkZ1bGxDb21waWxlLCBXYXNt
OjpQbGFuOjpkb250RmluYWxpemUoKSkpOwogICAgIFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5x
dWV1ZShwbGFuLmNvcHlSZWYoKSk7CiAgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5jb21wbGV0
ZVBsYW5TeW5jaHJvbm91c2x5KHBsYW4uZ2V0KCkpOwogICAgIGlmIChwbGFuLT5mYWlsZWQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IGFjYWZm
ZDgzNTI5ZmNkOGQ4OTc5NGE3YTk1ZTA0ODE1NGZjNzcyMzQuLjFkZDBjZDFkODM1YzZjMmYyMzFi
MDBiODg2ZGRlNGFmNzJjMjYzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QkJRUGxhbi5jcHAKQEAgLTUxLDIwICs1MSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewogCiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKLUJCUVBsYW46
OkJCUVBsYW4oVk0mIHZtLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IGluZm8sIEFzeW5jV29yayB3
b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCitCQlFQbGFuOjpCQlFQbGFuKFZNKiB2bSwgUmVm
PE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBBc3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2sm
JiB0YXNrKQogICAgIDogQmFzZSh2bSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZSh0YXNrKSkKICAg
ICAsIG1fc3RhdGUoU3RhdGU6OlZhbGlkYXRlZCkKICAgICAsIG1fYXN5bmNXb3JrKHdvcmspCiB7
CiB9CiAKLUJCUVBsYW46OkJCUVBsYW4oVk0mIHZtLCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2Us
IEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCitCQlFQbGFuOjpCQlFQbGFu
KFZNKiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291cmNlLCBBc3luY1dvcmsgd29yaywgQ29tcGxl
dGlvblRhc2smJiB0YXNrKQogICAgIDogQkJRUGxhbih2bSwgbWFrZVJlZigqbmV3IE1vZHVsZUlu
Zm9ybWF0aW9uKFdURk1vdmUoc291cmNlKSkpLCB3b3JrLCBXVEZNb3ZlKHRhc2spKQogewogICAg
IG1fc3RhdGUgPSBTdGF0ZTo6SW5pdGlhbDsKIH0KIAotQkJRUGxhbjo6QkJRUGxhbihWTSYgdm0s
IGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgQXN5bmNXb3JrIHdv
cmssIENvbXBsZXRpb25UYXNrJiYgdGFzaykKK0JCUVBsYW46OkJCUVBsYW4oVk0qIHZtLCBjb25z
dCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgsIEFzeW5jV29yayB3b3JrLCBD
b21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBCYXNlKHZtLCBzb3VyY2UsIHNvdXJjZUxlbmd0
aCwgV1RGTW92ZSh0YXNrKSkKICAgICAsIG1fc3RhdGUoU3RhdGU6OkluaXRpYWwpCiAgICAgLCBt
X2FzeW5jV29yayh3b3JrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUJCUVBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmgK
aW5kZXggZTM3MjZjN2JjMDM0ZGZhNWNiYTNiMDIxMjM1YzVhYmRmNDY3NDg5NS4uZDE0MTg0Zjc0
NDkxM2U3M2QyZTNkYWY0NmVjMjA5NWM0NzBmMTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5oCkBAIC01MSwxMSArNTEsMTEgQEAgcHVibGljOgogICAgIHVzaW5n
IEJhc2UgPSBQbGFuOwogICAgIGVudW0gQXN5bmNXb3JrIDogdWludDhfdCB7IEZ1bGxDb21waWxl
LCBWYWxpZGF0aW9uIH07CiAgICAgLy8gTm90ZTogQ29tcGxldGlvblRhc2sgc2hvdWxkIG5vdCBo
b2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBQbGFuIG90aGVyd2lzZSB0aGVyZSB3aWxsIGJlIGEgcmVm
ZXJlbmNlIGN5Y2xlLgotICAgIEJCUVBsYW4oVk0mLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+LCBB
c3luY1dvcmssIENvbXBsZXRpb25UYXNrJiYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEJCUVBs
YW4oVk0mLCBWZWN0b3I8dWludDhfdD4mJiwgQXN5bmNXb3JrLCBDb21wbGV0aW9uVGFzayYmKTsK
KyAgICBCQlFQbGFuKFZNKiwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiwgQXN5bmNXb3JrLCBDb21w
bGV0aW9uVGFzayYmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBCQlFQbGFuKFZNKiwgVmVjdG9y
PHVpbnQ4X3Q+JiYsIEFzeW5jV29yaywgQ29tcGxldGlvblRhc2smJik7CiAgICAgLy8gTm90ZTog
VGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgb25seSBiZSB1c2VkIGlmIHlvdSBhcmUgbm90IGFjdHVh
bGx5IGJ1aWxkaW5nIGEgbW9kdWxlIGUuZy4gdmFsaWRhdGlvbi9mdW5jdGlvbiB0ZXN0cwogICAg
IC8vIEZJWE1FOiBXaGVuIHdlIGdldCByaWQgb2YgZnVuY3Rpb24gdGVzdHMgd2Ugc2hvdWxkIHJl
bW92ZSBBc3luY1dvcmsgZnJvbSB0aGlzIGNvbnN0cnVjdG9yLgotICAgIEpTX0VYUE9SVF9QUklW
QVRFIEJCUVBsYW4oVk0mLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBBc3luY1dvcmssIENvbXBs
ZXRpb25UYXNrJiYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEJCUVBsYW4oVk0qLCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90LCBBc3luY1dvcmssIENvbXBsZXRpb25UYXNrJiYpOwogCiAgICAgYm9v
bCBwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUNvZGVCbG9jay5jcHAKaW5kZXggZjU2ZTMwYjlhYjMzOWZlNzA0NTRkMjZiNjNhZmFi
Y2JiNWM4MGZjYi4uZDMzYjdlZmM5MDUzZjgyMjg0YTc2Y2IwZTY4ODc4ZmMzMzcxYTlhOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5jcHAKQEAgLTM1LDEy
ICszNSwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi1Db2RlQmxv
Y2s6OkNvZGVCbG9jayhWTSYgdm0sIE1lbW9yeU1vZGUgbW9kZSwgTW9kdWxlSW5mb3JtYXRpb24m
IG1vZHVsZUluZm9ybWF0aW9uKQorQ29kZUJsb2NrOjpDb2RlQmxvY2soTWVtb3J5TW9kZSBtb2Rl
LCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24pCiAgICAgOiBtX2NhbGxlZUNv
dW50KG1vZHVsZUluZm9ybWF0aW9uLmludGVybmFsRnVuY3Rpb25Db3VudCgpKQogICAgICwgbV9t
b2RlKG1vZGUpCiB7CiAgICAgUmVmUHRyPENvZGVCbG9jaz4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7
Ci0gICAgbV9wbGFuID0gYWRvcHRSZWYoKm5ldyBCQlFQbGFuKHZtLCBtYWtlUmVmKG1vZHVsZUlu
Zm9ybWF0aW9uKSwgQkJRUGxhbjo6RnVsbENvbXBpbGUsIGNyZWF0ZVNoYXJlZFRhc2s8UGxhbjo6
Q2FsbGJhY2tUeXBlPihbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldIChWTSYsIFBsYW4mKSB7CisgICAgbV9wbGFuID0gYWRvcHRSZWYoKm5ldyBCQlFQbGFuKG51
bGxwdHIsIG1ha2VSZWYobW9kdWxlSW5mb3JtYXRpb24pLCBCQlFQbGFuOjpGdWxsQ29tcGlsZSwg
Y3JlYXRlU2hhcmVkVGFzazxQbGFuOjpDYWxsYmFja1R5cGU+KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKFZNKiwgUGxhbiYpIHsKICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgICAgICBpZiAobV9wbGFuLT5mYWlsZWQoKSkg
ewogICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtX3BsYW4tPmVycm9yTWVzc2FnZSgpOwpA
QCAtMTAyLDggKzEwMiw5IEBAIHZvaWQgQ29kZUJsb2NrOjpjb21waWxlQXN5bmMoVk0mIHZtLCBB
c3luY0NvbXBpbGF0aW9uQ2FsbGJhY2smJiB0YXNrKQogICAgICAgICAvLyBXZSBkb24ndCBuZWVk
IHRvIGtlZXAgYSBSZWZQdHIgb24gdGhlIFBsYW4gYmVjYXVzZSB0aGUgd29ya2xpc3Qgd2lsbCBr
ZWVwCiAgICAgICAgIC8vIGEgUmVmUHRyIG9uIHRoZSBQbGFuIHVudGlsIHRoZSBwbGFuIGZpbmlz
aGVzIG5vdGlmeWluZyBhbGwgb2YgaXRzIGNhbGxiYWNrcy4KICAgICAgICAgUmVmUHRyPENvZGVC
bG9jaz4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7Ci0gICAgICAgIHBsYW4tPmFkZENvbXBsZXRpb25U
YXNrKHZtLCBjcmVhdGVTaGFyZWRUYXNrPFBsYW46OkNhbGxiYWNrVHlwZT4oW3RoaXMsIHRhc2sg
PSBXVEZNb3ZlKHRhc2spLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0g
KFZNJiB2bSwgUGxhbiYpIHsKLSAgICAgICAgICAgIHRhc2stPnJ1bih2bSwgbWFrZVJlZigqdGhp
cykpOworICAgICAgICBwbGFuLT5hZGRDb21wbGV0aW9uVGFzayh2bSwgY3JlYXRlU2hhcmVkVGFz
azxQbGFuOjpDYWxsYmFja1R5cGU+KFt0aGlzLCB0YXNrID0gV1RGTW92ZSh0YXNrKSwgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIChWTSogdm0sIFBsYW4mKSB7CisgICAg
ICAgICAgICBBU1NFUlQodm0pOworICAgICAgICAgICAgdGFzay0+cnVuKCp2bSwgbWFrZVJlZigq
dGhpcykpOwogICAgICAgICB9KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHRhc2stPnJ1bih2bSwg
bWFrZVJlZigqdGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9j
ay5oCmluZGV4IDkwYWY2ZTQ1MDgwNTMyYmNmNTY4NzMyM2IwMDQ5OGZhNTM4ZWQzN2MuLjg3MmI0
NTNjODQxYzFiMDkwYTFkOTdkZmRmMjc3MGZkYzE3NTFjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmgKQEAgLTUzLDkgKzUzLDkgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvZGVCbG9jaz4gewogcHVibGljOgog
ICAgIHR5cGVkZWYgdm9pZCBDYWxsYmFja1R5cGUoVk0mLCBSZWY8Q29kZUJsb2NrPiYmKTsKICAg
ICB1c2luZyBBc3luY0NvbXBpbGF0aW9uQ2FsbGJhY2sgPSBSZWZQdHI8V1RGOjpTaGFyZWRUYXNr
PENhbGxiYWNrVHlwZT4+OwotICAgIHN0YXRpYyBSZWY8Q29kZUJsb2NrPiBjcmVhdGUoVk0mIHZt
LCBNZW1vcnlNb2RlIG1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbikK
KyAgICBzdGF0aWMgUmVmPENvZGVCbG9jaz4gY3JlYXRlKE1lbW9yeU1vZGUgbW9kZSwgTW9kdWxl
SW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ29kZUJsb2NrKHZtLCBtb2RlLCBtb2R1bGVJbmZvcm1hdGlvbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb2RlQmxvY2sobW9kZSwgbW9kdWxlSW5mb3JtYXRp
b24pKTsKICAgICB9CiAKICAgICB2b2lkIHdhaXRVbnRpbEZpbmlzaGVkKCk7CkBAIC0xMTQsNyAr
MTE0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT01HUGxhbjsKIAot
ICAgIENvZGVCbG9jayhWTSYsIE1lbW9yeU1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJik7CisgICAg
Q29kZUJsb2NrKE1lbW9yeU1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJik7CiAgICAgdW5zaWduZWQg
bV9jYWxsZWVDb3VudDsKICAgICBNZW1vcnlNb2RlIG1fbW9kZTsKICAgICBWZWN0b3I8UmVmUHRy
PENhbGxlZT4+IG1fY2FsbGVlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Nb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZS5jcHAKaW5kZXggNDZlZTk0ZDY5YjBjMjYxMmVlZWY4MThkYTgxNzcyYTkzM2JlMDEwMS4uOGUz
NjZmNGI1MDcwMzQyZTczZmM3ZTRlZDQxOTRjNTMyMzc2ZmYzNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAKQEAgLTU2LDI2ICs1NiwyNyBAQCBzdGF0aWMgTW9k
dWxlOjpWYWxpZGF0aW9uUmVzdWx0IG1ha2VWYWxpZGF0aW9uUmVzdWx0KEJCUVBsYW4mIHBsYW4p
CiAKIHN0YXRpYyBQbGFuOjpDb21wbGV0aW9uVGFzayBtYWtlVmFsaWRhdGlvbkNhbGxiYWNrKE1v
ZHVsZTo6QXN5bmNWYWxpZGF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICByZXR1cm4g
Y3JlYXRlU2hhcmVkVGFzazxQbGFuOjpDYWxsYmFja1R5cGU+KFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoVk0mIHZtLCBQbGFuJiBwbGFuKSB7CisgICAgcmV0dXJuIGNyZWF0ZVNoYXJl
ZFRhc2s8UGxhbjo6Q2FsbGJhY2tUeXBlPihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KFZNKiB2bSwgUGxhbiYgcGxhbikgewogICAgICAgICBBU1NFUlQoIXBsYW4uaGFzV29yaygpKTsK
LSAgICAgICAgY2FsbGJhY2stPnJ1bih2bSwgbWFrZVZhbGlkYXRpb25SZXN1bHQoc3RhdGljX2Nh
c3Q8QkJRUGxhbiY+KHBsYW4pKSk7CisgICAgICAgIEFTU0VSVCh2bSk7CisgICAgICAgIGNhbGxi
YWNrLT5ydW4oKnZtLCBtYWtlVmFsaWRhdGlvblJlc3VsdChzdGF0aWNfY2FzdDxCQlFQbGFuJj4o
cGxhbikpKTsKICAgICB9KTsKIH0KIAogTW9kdWxlOjpWYWxpZGF0aW9uUmVzdWx0IE1vZHVsZTo6
dmFsaWRhdGVTeW5jKFZNJiB2bSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291cmNlKQogewotICAgIFJl
ZjxCQlFQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBCQlFQbGFuKHZtLCBXVEZNb3ZlKHNvdXJj
ZSksIEJCUVBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSgpKSk7CisgICAgUmVm
PEJCUVBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IEJCUVBsYW4oJnZtLCBXVEZNb3ZlKHNvdXJj
ZSksIEJCUVBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSgpKSk7CiAgICAgcGxh
bi0+cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpOwogICAgIHJldHVybiBtYWtlVmFsaWRhdGlvblJl
c3VsdChwbGFuLmdldCgpKTsKIH0KIAogdm9pZCBNb2R1bGU6OnZhbGlkYXRlQXN5bmMoVk0mIHZt
LCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2UsIE1vZHVsZTo6QXN5bmNWYWxpZGF0aW9uQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKLSAgICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgQkJR
UGxhbih2bSwgV1RGTW92ZShzb3VyY2UpLCBCQlFQbGFuOjpWYWxpZGF0aW9uLCBtYWtlVmFsaWRh
dGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSkpOworICAgIFJlZjxQbGFuPiBwbGFuID0g
YWRvcHRSZWYoKm5ldyBCQlFQbGFuKCZ2bSwgV1RGTW92ZShzb3VyY2UpLCBCQlFQbGFuOjpWYWxp
ZGF0aW9uLCBtYWtlVmFsaWRhdGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSkpOwogICAg
IFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKIH0KIAotUmVm
PENvZGVCbG9jaz4gTW9kdWxlOjpnZXRPckNyZWF0ZUNvZGVCbG9jayhWTSYgdm0sIE1lbW9yeU1v
ZGUgbW9kZSkKK1JlZjxDb2RlQmxvY2s+IE1vZHVsZTo6Z2V0T3JDcmVhdGVDb2RlQmxvY2soTWVt
b3J5TW9kZSBtb2RlKQogewogICAgIFJlZlB0cjxDb2RlQmxvY2s+IGNvZGVCbG9jazsKICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CkBAIC04NiwyMiArODcsMjIgQEAgUmVmPENv
ZGVCbG9jaz4gTW9kdWxlOjpnZXRPckNyZWF0ZUNvZGVCbG9jayhWTSYgdm0sIE1lbW9yeU1vZGUg
bW9kZSkKICAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byBiYWNrIG9mZiByZXRyeWluZyBh
dCBzb21lIHBvaW50OgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzA2MDcKICAgICBpZiAoIWNvZGVCbG9jayB8fCAoY29kZUJsb2NrLT5jb21waWxhdGlv
bkZpbmlzaGVkKCkgJiYgIWNvZGVCbG9jay0+cnVubmFibGUoKSkpIHsKLSAgICAgICAgY29kZUJs
b2NrID0gQ29kZUJsb2NrOjpjcmVhdGUodm0sIG1vZGUsIGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3Jt
YXRpb24mPihtb2R1bGVJbmZvcm1hdGlvbigpKSk7CisgICAgICAgIGNvZGVCbG9jayA9IENvZGVC
bG9jazo6Y3JlYXRlKG1vZGUsIGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1bGVJ
bmZvcm1hdGlvbigpKSk7CiAgICAgICAgIG1fY29kZUJsb2Nrc1tzdGF0aWNfY2FzdDx1aW50OF90
Pihtb2RlKV0gPSBjb2RlQmxvY2s7CiAgICAgfQogICAgIHJldHVybiBjb2RlQmxvY2sucmVsZWFz
ZU5vbk51bGwoKTsKIH0KIAotUmVmPENvZGVCbG9jaz4gTW9kdWxlOjpjb21waWxlU3luYyhWTSYg
dm0sIE1lbW9yeU1vZGUgbW9kZSkKK1JlZjxDb2RlQmxvY2s+IE1vZHVsZTo6Y29tcGlsZVN5bmMo
TWVtb3J5TW9kZSBtb2RlKQogewotICAgIFJlZjxDb2RlQmxvY2s+IGNvZGVCbG9jayA9IGdldE9y
Q3JlYXRlQ29kZUJsb2NrKHZtLCBtb2RlKTsKKyAgICBSZWY8Q29kZUJsb2NrPiBjb2RlQmxvY2sg
PSBnZXRPckNyZWF0ZUNvZGVCbG9jayhtb2RlKTsKICAgICBjb2RlQmxvY2stPndhaXRVbnRpbEZp
bmlzaGVkKCk7CiAgICAgcmV0dXJuIGNvZGVCbG9jazsKIH0KIAogdm9pZCBNb2R1bGU6OmNvbXBp
bGVBc3luYyhWTSYgdm0sIE1lbW9yeU1vZGUgbW9kZSwgQ29kZUJsb2NrOjpBc3luY0NvbXBpbGF0
aW9uQ2FsbGJhY2smJiB0YXNrKQogewotICAgIFJlZjxDb2RlQmxvY2s+IGNvZGVCbG9jayA9IGdl
dE9yQ3JlYXRlQ29kZUJsb2NrKHZtLCBtb2RlKTsKKyAgICBSZWY8Q29kZUJsb2NrPiBjb2RlQmxv
Y2sgPSBnZXRPckNyZWF0ZUNvZGVCbG9jayhtb2RlKTsKICAgICBjb2RlQmxvY2stPmNvbXBpbGVB
c3luYyh2bSwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGUuaAppbmRleCBjZWMzMGU1Yjg2MTczM2I1ZmQyMjVmMWVhNTE1ODhkMzVjNDkxNWNl
Li5hMWFmNzU4NmM3NDA0YzI2NDZmMTZmODdlNmNmZTBmYTM5NjkzNGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCkBAIC01OCwxNCArNTgsMTQgQEAgcHVibGljOgog
ICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhT
cGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UpIGNvbnN0OwogICAgIGNvbnN0IFdhc206
Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlSW5mb3JtYXRpb24uZ2V0KCk7IH0KIAotICAgIFJlZjxDb2RlQmxvY2s+IGNvbXBpbGVT
eW5jKFZNJiwgTWVtb3J5TW9kZSk7CisgICAgUmVmPENvZGVCbG9jaz4gY29tcGlsZVN5bmMoTWVt
b3J5TW9kZSk7CiAgICAgdm9pZCBjb21waWxlQXN5bmMoVk0mLCBNZW1vcnlNb2RlLCBDb2RlQmxv
Y2s6OkFzeW5jQ29tcGlsYXRpb25DYWxsYmFjayYmKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5Nb2R1bGUoKTsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrRm9yKE1lbW9yeU1vZGUgbW9k
ZSkgeyByZXR1cm4gbV9jb2RlQmxvY2tzW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KG1vZGUpXS5nZXQo
KTsgfQogcHJpdmF0ZToKLSAgICBSZWY8Q29kZUJsb2NrPiBnZXRPckNyZWF0ZUNvZGVCbG9jayhW
TSYsIE1lbW9yeU1vZGUpOworICAgIFJlZjxDb2RlQmxvY2s+IGdldE9yQ3JlYXRlQ29kZUJsb2Nr
KE1lbW9yeU1vZGUpOwogCiAgICAgTW9kdWxlKFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4mJik7CiAg
ICAgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBtX21vZHVsZUluZm9ybWF0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IGVkMmRhYzgxMDhhNWNjZTUy
NjAxMzJkNDcxZDU0MDg1YTI1NDExMTQuLjYyOTAzNGVmMmE3NzcwMzhmYzBjMmQ1MjE0MmEzZTcy
YmFjNmUyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQ
bGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAK
QEAgLTUwLDggKzUwLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAogc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCi1PTUdQbGFuOjpPTUdQbGFuKFZNJiB2
bSwgUmVmPE1vZHVsZT4gbW9kdWxlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2Rl
IG1vZGUsIENvbXBsZXRpb25UYXNrJiYgdGFzaykKLSAgICA6IEJhc2Uodm0sIG1ha2VSZWYoY29u
c3RfY2FzdDxNb2R1bGVJbmZvcm1hdGlvbiY+KG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKSkp
LCBXVEZNb3ZlKHRhc2spKQorT01HUGxhbjo6T01HUGxhbihSZWY8TW9kdWxlPiBtb2R1bGUsIHVp
bnQzMl90IGZ1bmN0aW9uSW5kZXgsIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGxldGlvblRhc2smJiB0
YXNrKQorICAgIDogQmFzZShudWxscHRyLCBtYWtlUmVmKGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3Jt
YXRpb24mPihtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkpKSwgV1RGTW92ZSh0YXNrKSkKICAg
ICAsIG1fbW9kdWxlKG1vZHVsZS5jb3B5UmVmKCkpCiAgICAgLCBtX2NvZGVCbG9jaygqbW9kdWxl
LT5jb2RlQmxvY2tGb3IobW9kZSkpCiAgICAgLCBtX2Z1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRl
eCkKQEAgLTE1OCwxNCArMTU4LDEyIEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVm
Zm9ydCkKIAogdm9pZCBydW5PTUdQbGFuRm9ySW5kZXgoQ29udGV4dCogY29udGV4dCwgdWludDMy
X3QgZnVuY3Rpb25JbmRleCkKIHsKLSAgICBWTSYgdm0gPSAqY29udGV4dC0+dm0oKTsKLQogICAg
IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNvbnRleHQtPmNvZGVCbG9jaygp
OwogICAgIEFTU0VSVChjb250ZXh0LT5tZW1vcnlNb2RlKCkgPT0gY29kZUJsb2NrLT5tX2NvZGVC
bG9jay0+bW9kZSgpKTsKIAogICAgIC8vIFdlIHVzZSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0
IG9mIHRoZSB0aWVyVXBDb3VudCB0byByZXByZXNlbnQgd2hldGhlciBvciBub3Qgc29tZW9uZSBo
YXMgYWxyZWFkeSBzdGFydGVkIHRoZSB0aWVyIHVwLgogICAgIGlmIChjb2RlQmxvY2stPm1fY29k
ZUJsb2NrLT50aWVyVXBDb3VudChmdW5jdGlvbkluZGV4KS5zaG91bGRTdGFydFRpZXJVcCgpKSB7
Ci0gICAgICAgIFJlZjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBPTUdQbGFuKHZtLCBjb250
ZXh0LT5tb2R1bGUoKS0+bW9kdWxlKCksIGZ1bmN0aW9uSW5kZXgsIGNvZGVCbG9jay0+bV9jb2Rl
QmxvY2stPm1vZGUoKSwgUGxhbjo6ZG9udEZpbmFsaXplKCkpKTsKKyAgICAgICAgUmVmPFBsYW4+
IHBsYW4gPSBhZG9wdFJlZigqbmV3IE9NR1BsYW4oY29udGV4dC0+bW9kdWxlKCktPm1vZHVsZSgp
LCBmdW5jdGlvbkluZGV4LCBjb2RlQmxvY2stPm1fY29kZUJsb2NrLT5tb2RlKCksIFBsYW46OmRv
bnRGaW5hbGl6ZSgpKSk7CiAgICAgICAgIGVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShwbGFuLmNv
cHlSZWYoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghT3B0aW9uczo6dXNlQ29uY3VycmVudEpJ
VCgpKSkKICAgICAgICAgICAgIHBsYW4tPndhaXRGb3JDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uaAppbmRleCBkOTZmN2I4ZTNiZmYyNWY2MmMwNmYw
MWFiMGQ0YWMyMjgyYzE2ODMxLi43MTY0YTllZjkyMzUxNjA5NjgyNjI0NjkxNzVjYjVjOGRiMzE3
NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmgKQEAgLTQyLDcg
KzQyLDcgQEAgY2xhc3MgT01HUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBCYXNlID0gUGxhbjsKICAgICAvLyBOb3RlOiBDb21wbGV0aW9uVGFzayBzaG91bGQg
bm90IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIFBsYW4gb3RoZXJ3aXNlIHRoZXJlIHdpbGwgYmUg
YSByZWZlcmVuY2UgY3ljbGUuCi0gICAgT01HUGxhbihWTSYsIFJlZjxNb2R1bGU+LCB1aW50MzJf
dCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2RlLCBDb21wbGV0aW9uVGFzayYmKTsKKyAgICBPTUdQ
bGFuKFJlZjxNb2R1bGU+LCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBNZW1vcnlNb2RlLCBDb21w
bGV0aW9uVGFzayYmKTsKIAogICAgIGJvb2wgaGFzV29yaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2NvbXBsZXRlZDsgfQogICAgIHZvaWQgd29yayhDb21waWxhdGlvbkVmZm9ydCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggYThjNDlk
OTQyMzllN2E3Njg3MGEwMzVjOTNlYTQ5ZGJkODlkZTNkZi4uN2IyMzhmODQ2MDczYTk5MTA1ZWM5
ZDgzZTkxNDlmNmI1YmQwNjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFu
LmNwcApAQCAtNTAsMjAgKzUwLDIwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7
CiAKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIAotUGxhbjo6UGxhbihWTSYg
dm0sIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQ29tcGxldGlvblRhc2smJiB0YXNrKQor
UGxhbjo6UGxhbihWTSogdm0sIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQ29tcGxldGlv
blRhc2smJiB0YXNrKQogICAgIDogbV9tb2R1bGVJbmZvcm1hdGlvbihXVEZNb3ZlKGluZm8pKQog
ICAgICwgbV9zb3VyY2UobV9tb2R1bGVJbmZvcm1hdGlvbi0+c291cmNlLmRhdGEoKSkKICAgICAs
IG1fc291cmNlTGVuZ3RoKG1fbW9kdWxlSW5mb3JtYXRpb24tPnNvdXJjZS5zaXplKCkpCiB7Ci0g
ICAgbV9jb21wbGV0aW9uVGFza3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKCZ2bSwgV1RGTW92ZSh0
YXNrKSkpOworICAgIG1fY29tcGxldGlvblRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcih2bSwg
V1RGTW92ZSh0YXNrKSkpOwogfQogCi1QbGFuOjpQbGFuKFZNJiB2bSwgY29uc3QgdWludDhfdCog
c291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3RoLCBDb21wbGV0aW9uVGFzayYmIHRhc2spCitQbGFu
OjpQbGFuKFZNKiB2bSwgY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3Ro
LCBDb21wbGV0aW9uVGFzayYmIHRhc2spCiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9uKG1ha2VS
ZWYoKm5ldyBNb2R1bGVJbmZvcm1hdGlvbihWZWN0b3I8dWludDhfdD4oKSkpKQogICAgICwgbV9z
b3VyY2Uoc291cmNlKQogICAgICwgbV9zb3VyY2VMZW5ndGgoc291cmNlTGVuZ3RoKQogewotICAg
IG1fY29tcGxldGlvblRhc2tzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigmdm0sIFdURk1vdmUodGFz
aykpKTsKKyAgICBtX2NvbXBsZXRpb25UYXNrcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodm0sIFdU
Rk1vdmUodGFzaykpKTsKIH0KIAogdm9pZCBQbGFuOjpydW5Db21wbGV0aW9uVGFza3MoY29uc3Qg
QWJzdHJhY3RMb2NrZXImKQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFBsYW46OnJ1bkNvbXBsZXRp
b25UYXNrcyhjb25zdCBBYnN0cmFjdExvY2tlciYpCiAgICAgQVNTRVJUKGlzQ29tcGxldGUoKSAm
JiAhaGFzV29yaygpKTsKIAogICAgIGZvciAoYXV0byYgdGFzayA6IG1fY29tcGxldGlvblRhc2tz
KQotICAgICAgICB0YXNrLnNlY29uZC0+cnVuKCp0YXNrLmZpcnN0LCAqdGhpcyk7CisgICAgICAg
IHRhc2suc2Vjb25kLT5ydW4odGFzay5maXJzdCwgKnRoaXMpOwogICAgIG1fY29tcGxldGlvblRh
c2tzLmNsZWFyKCk7CiAgICAgbV9jb21wbGV0ZWQubm90aWZ5QWxsKCk7CiB9CkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgUGxhbjo6YWRkQ29tcGxldGlvblRhc2soVk0mIHZtLCBDb21wbGV0aW9uVGFz
ayYmIHRhc2spCiAgICAgaWYgKCFpc0NvbXBsZXRlKCkpCiAgICAgICAgIG1fY29tcGxldGlvblRh
c2tzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcigmdm0sIFdURk1vdmUodGFzaykpKTsKICAgICBlbHNl
Ci0gICAgICAgIHRhc2stPnJ1bih2bSwgKnRoaXMpOworICAgICAgICB0YXNrLT5ydW4oJnZtLCAq
dGhpcyk7CiB9CiAKIHZvaWQgUGxhbjo6d2FpdEZvckNvbXBsZXRpb24oKQpAQCAtOTcsNiArOTcs
MTIgQEAgYm9vbCBQbGFuOjp0cnlSZW1vdmVWTUFuZENhbmNlbElmTGFzdChWTSYgdm0pCiB7CiAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAorICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7CisgICAgICAgIC8vIFdlIGFsbG93IHRoZSBmaXJzdCBjb21wbGV0aW9uIHRhc2sgdG8gbm90
IGhhdmUgYSB2bS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IG1fY29tcGxldGlv
blRhc2tzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgQVNTRVJUKG1fY29tcGxldGlvblRhc2tz
W2ldLmZpcnN0KTsKKyAgICB9CisKICAgICBib29sIHJlbW92ZWRBbnlUYXNrcyA9IGZhbHNlOwog
ICAgIG1fY29tcGxldGlvblRhc2tzLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoY29uc3Qgc3RkOjpw
YWlyPFZNKiwgQ29tcGxldGlvblRhc2s+JiBwYWlyKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkUmVt
b3ZlID0gcGFpci5maXJzdCA9PSAmdm07CkBAIC0xMTIsOCArMTE4LDggQEAgYm9vbCBQbGFuOjp0
cnlSZW1vdmVWTUFuZENhbmNlbElmTGFzdChWTSYgdm0pCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGlmIChtX2NvbXBsZXRpb25UYXNrcy5zaXplKCkgPT0gMSkgewotICAgICAg
ICBBU1NFUlQoIW1fY29tcGxldGlvblRhc2tzWzBdLmZpcnN0KTsKKyAgICAvLyBGSVhNRTogTWFr
ZSAwIGluZGV4IG5vdCBzbyBtYWdpY2FsOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxMzk1CisgICAgaWYgKG1fY29tcGxldGlvblRhc2tzLmlzRW1wdHkoKSB8fCAo
bV9jb21wbGV0aW9uVGFza3Muc2l6ZSgpID09IDEgJiYgIW1fY29tcGxldGlvblRhc2tzWzBdLmZp
cnN0KSkgewogICAgICAgICBmYWlsKGxvY2tlciwgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBQ
bGFuIHdhcyBjYW5jZWxsZWQuIElmIHlvdSBzZWUgdGhpcyBlcnJvciBtZXNzYWdlIHBsZWFzZSBm
aWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9yZyEiKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oCmluZGV4IGQ0NWVkMWZkNjgy
MmU0MTNhZWJlNjkxNTExYmZiN2YxYTgwMTM0YTIuLjEwZjhhMWI4ZDY3Y2RkMjhmYTU0YmJhMmZh
NzdkZTEyMzUxYThhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaApAQCAt
NDYsMTMgKzQ2LDEzIEBAIG5hbWVzcGFjZSBXYXNtIHsKIAogY2xhc3MgUGxhbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxQbGFuPiB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIENh
bGxiYWNrVHlwZShWTSYsIFBsYW4mKTsKKyAgICB0eXBlZGVmIHZvaWQgQ2FsbGJhY2tUeXBlKFZN
KiwgUGxhbiYpOwogICAgIHVzaW5nIENvbXBsZXRpb25UYXNrID0gUmVmUHRyPFNoYXJlZFRhc2s8
Q2FsbGJhY2tUeXBlPj47Ci0gICAgc3RhdGljIENvbXBsZXRpb25UYXNrIGRvbnRGaW5hbGl6ZSgp
IHsgcmV0dXJuIGNyZWF0ZVNoYXJlZFRhc2s8Q2FsbGJhY2tUeXBlPihbXShWTSYsIFBsYW4mKSB7
IH0pOyB9Ci0gICAgUGxhbihWTSYsIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4sIENvbXBsZXRpb25U
YXNrJiYpOworICAgIHN0YXRpYyBDb21wbGV0aW9uVGFzayBkb250RmluYWxpemUoKSB7IHJldHVy
biBjcmVhdGVTaGFyZWRUYXNrPENhbGxiYWNrVHlwZT4oW10oVk0qLCBQbGFuJikgeyB9KTsgfQor
ICAgIFBsYW4oVk0qLCBSZWY8TW9kdWxlSW5mb3JtYXRpb24+LCBDb21wbGV0aW9uVGFzayYmKTsK
IAogICAgIC8vIE5vdGU6IFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiB5
b3UgYXJlIG5vdCBhY3R1YWxseSBidWlsZGluZyBhIG1vZHVsZSBlLmcuIHZhbGlkYXRpb24vZnVu
Y3Rpb24gdGVzdHMKLSAgICBKU19FWFBPUlRfUFJJVkFURSBQbGFuKFZNJiwgY29uc3QgdWludDhf
dCosIHNpemVfdCwgQ29tcGxldGlvblRhc2smJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUGxh
bihWTSosIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIENvbXBsZXRpb25UYXNrJiYpOwogICAgIHZp
cnR1YWwgSlNfRVhQT1JUX1BSSVZBVEUgflBsYW4oKTsKIAogICAgIC8vIElmIHlvdSBndWFyYW50
ZWUgdGhlIG9yZGVyaW5nIGhlcmUsIHlvdSBjYW4gcmVseSBvbiBGSUZPIG9mIHRoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTFjYjkyMzI3ZDdhOWQwYzFlNzBiZDc0ZjRl
MGM3NzE1MDhjYWQxNC4uNWUwZWU1ZTYxOWM3NmUzMTE5ZTgyNTcyZTYxNWExZjAyYWVhOTYyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0
YW5jZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlJbnN0
YW5jZShFeGVjU3RhdGUqIGV4CiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBtb2R1bGUsIGltcG9ydE9i
amVjdCwgaW5zdGFuY2VTdHJ1Y3R1cmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKLSAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih2bSwgZXhlYywgbW9kdWxl
LT5tb2R1bGUoKS5jb21waWxlU3luYyh2bSwgaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSkpOworICAg
IGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBleGVjLCBtb2R1bGUtPm1vZHVsZSgpLmNv
bXBpbGVTeW5jKGluc3RhbmNlLT5tZW1vcnlNb2RlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaW5zdGFuY2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQ
cm90b3R5cGUuY3BwCmluZGV4IGRhYjI3MGYzYjkwMWI2NTlkMjIwZTVmMTQ4MWZhYzBiNGU4NTY1
N2QuLjhjOTM5MTRjNjhmYTc2Zjg3YjJlNmY5YmZhYjZlZGQyZjgyZTM0ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5j
cHAKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgc2l6ZV90IGJ5
dGVTaXplOwogICAgIHVpbnQ4X3QqIGJhc2UgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApLCBieXRlT2Zmc2V0LCBieXRlU2l6ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgQkJRUGxhbiBwbGFuKHZt
LCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNpemUsIEJCUVBsYW46OlZhbGlkYXRpb24sIFBsYW46
OmRvbnRGaW5hbGl6ZSgpKTsKKyAgICBCQlFQbGFuIHBsYW4oJnZtLCBiYXNlICsgYnl0ZU9mZnNl
dCwgYnl0ZVNpemUsIEJCUVBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSgpKTsK
ICAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byB0aHJvdyBhbiBPT00gZXhjZXB0aW9uIGhl
cmUgaWYgd2UgZGV0ZWN0IHRoYXQgc29tZXRoaW5nIHdpbGwgT09NLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjYwMTUKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFuLnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>