<?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>124634</bug_id>
          
          <creation_ts>2013-11-19 21:08:55 -0800</creation_ts>
          <short_desc>Introducing VMEntryScope to update the VM stack limit</short_desc>
          <delta_ts>2013-11-20 21:28:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116888</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>952409</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-19 21:08:55 -0800</bug_when>
    <thetext>The VMEntryScope will also replace the DynamicGlobalObjectScope and take care of stack bounds checks at VM entry points (i.e. all the Interpreter::execute..() functions).  In the current implementation, the code that sets the stack limit is disabled until we actually move to using the C stack for JS frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952437</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-19 22:30:00 -0800</bug_when>
    <thetext>*** Bug 56291 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952438</commentid>
    <comment_count>2</comment_count>
      <attachid>217386</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-19 22:31:18 -0800</bug_when>
    <thetext>Created attachment 217386
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952445</commentid>
    <comment_count>3</comment_count>
      <attachid>217386</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-19 23:05:10 -0800</bug_when>
    <thetext>Comment on attachment 217386
the patch.

Attachment 217386 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/29828069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952446</commentid>
    <comment_count>4</comment_count>
      <attachid>217386</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-19 23:16:59 -0800</bug_when>
    <thetext>Comment on attachment 217386
the patch.

Attachment 217386 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/29848105</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952448</commentid>
    <comment_count>5</comment_count>
      <attachid>217386</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-19 23:17:36 -0800</bug_when>
    <thetext>Comment on attachment 217386
the patch.

Attachment 217386 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/29768081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952453</commentid>
    <comment_count>6</comment_count>
      <attachid>217386</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-19 23:26:39 -0800</bug_when>
    <thetext>Comment on attachment 217386
the patch.

Attachment 217386 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/29768076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952459</commentid>
    <comment_count>7</comment_count>
      <attachid>217386</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-19 23:51:39 -0800</bug_when>
    <thetext>Comment on attachment 217386
the patch.

Should have tested with a release build.  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952477</commentid>
    <comment_count>8</comment_count>
      <attachid>217399</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-20 00:49:39 -0800</bug_when>
    <thetext>Created attachment 217399
patch 2: fixed release build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952489</commentid>
    <comment_count>9</comment_count>
      <attachid>217399</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-20 01:24:45 -0800</bug_when>
    <thetext>Comment on attachment 217399
patch 2: fixed release build.

Attachment 217399 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/30058020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952669</commentid>
    <comment_count>10</comment_count>
      <attachid>217455</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-20 10:35:44 -0800</bug_when>
    <thetext>Created attachment 217455
patch 3: another try at fixing EWS issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952681</commentid>
    <comment_count>11</comment_count>
      <attachid>217455</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-20 10:55:10 -0800</bug_when>
    <thetext>Comment on attachment 217455
patch 3: another try at fixing EWS issues.

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

&gt; Source/JavaScriptCore/interpreter/JSStackInlines.h:158
&gt; +    m_vm.setStackLimit(reinterpret_cast&lt;void*&gt;(newEnd));

No need to reinterpret_cast to void*.

&gt; Source/JavaScriptCore/runtime/VMEntryScope.cpp:42
&gt; +#if ENABLE(ASSEMBLE)

Should be ASSEMBLER.

I like to use copy-and-paste for tasks like this, to avoid typos like this.

&gt; Source/JavaScriptCore/runtime/VMEntryScope.h:43
&gt; +    bool hasEnoughStackToEnterVM() const { return m_stackBounds.isSafeToRecurse(); }

You should remove VMStackBounds::isSafeToRecurse() and its uses, including this use. Plain comparison against m_stackBounds.stackLimit() needs to become the one true way to measure the extent of the stack. Otherwise, we allow subtle differences between the stack limit check in C++ and the same check in JIT code.

&gt; Source/JavaScriptCore/runtime/VMEntryScope.h:52
&gt; +    void* m_prevStackLimit;

This needs a comment explaining that the previous limit might belong to another thread&apos;s stack.

&gt; Source/WebCore/bindings/js/JSCryptoAlgorithmBuilder.cpp:74
&gt; +    ASSERT(vm.entryScope);

I don&apos;t think this ASSERT adds much. If it&apos;s false, we&apos;ll crash on the next  line anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952702</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-20 11:28:43 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Source/JavaScriptCore/runtime/VMEntryScope.h:43
&gt; &gt; +    bool hasEnoughStackToEnterVM() const { return m_stackBounds.isSafeToRecurse(); }
&gt; 
&gt; You should remove VMStackBounds::isSafeToRecurse() and its uses, including this use. Plain comparison against m_stackBounds.stackLimit() needs to become the one true way to measure the extent of the stack. Otherwise, we allow subtle differences between the stack limit check in C++ and the same check in JIT code.

I can&apos;t do this.  The BytecodeGenerator, Parser, and StringRecursionChecker still relies on VMStackBounds::isSafeToRecurse().  So, instead, I opted to keep a unified implementation of how we do stack checks in VMStackBounds::isSafeToRecurse()  instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952880</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-20 17:29:07 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; You should remove VMStackBounds::isSafeToRecurse() and its uses, including this use. Plain comparison against m_stackBounds.stackLimit() needs to become the one true way to measure the extent of the stack. Otherwise, we allow subtle differences between the stack limit check in C++ and the same check in JIT code.
&gt; 
&gt; I can&apos;t do this.  The BytecodeGenerator, Parser, and StringRecursionChecker still relies on VMStackBounds::isSafeToRecurse().  So, instead, I opted to keep a unified implementation of how we do stack checks in VMStackBounds::isSafeToRecurse()  instead.

Per our offline conversation, I&apos;ll re-implement the C++ code native stack check to be a comparison against the VM&apos;s stackLimit pointer.

The only added functionality that VMStackBounds add over the WTF::StackBounds is that it takes into consideration whether we&apos;re in the midst of handling a JS exception or not when determining how much stack capacity is required in the stack checks.  Revisiting the current users of VMStackBounds, I see no reason why this required stack capacity value should change since the last time the stackLimit was set in the VM.  Hence, these users should be able to do their stack checks against the VM&apos;s stackLimit pointer without any adjustments since the required stack capacity won&apos;t change in the period of their use.

With that, I ended up adding a VM::isSafeToRecurse() function, and removed VMStackBounds altogether.  VMEntryScope now only updates the VM stackLimit, but does not offer any mechanism to check it.  The only stack check mechanism for the native stack is now VM::isSafeToRecurse() which implements the pointer comparison against VM::m_stackLimit.

Updated patch coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952881</commentid>
    <comment_count>14</comment_count>
      <attachid>217503</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-20 17:30:19 -0800</bug_when>
    <thetext>Created attachment 217503
patch 4: addresses Geoff&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952929</commentid>
    <comment_count>15</comment_count>
      <attachid>217503</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-20 20:44:58 -0800</bug_when>
    <thetext>Comment on attachment 217503
patch 4: addresses Geoff&apos;s feedback.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952931</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-20 21:28:38 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r159605: &lt;http://trac.webkit.org/r159605&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217386</attachid>
            <date>2013-11-19 22:31:18 -0800</date>
            <delta_ts>2013-11-20 00:49:39 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-124634.patch</filename>
            <type>text/plain</type>
            <size>76202</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDEzLTExLTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBWTUVudHJ5U2NvcGUgdG8gdXBkYXRlIHRoZSBWTSBzdGFjayBsaW1pdC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYzNC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBUaGUgVk1F
bnRyeVNjb3BlIGNsYXNzIHN1YnN1bWVzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZS4gSXQgYWxz
bworICAgICAgICAgICBjb21wdXRlcyB0aGUgY3VycmVudCBzdGFjayBib3VuZHMgYW5kIHNldHMg
dGhlIHN0YWNrIGxpbWl0IGluIHRoZSBWTS4KKworICAgICAgICAgICBGb3Igbm93LCB0aGUgc2V0
dGluZyBvZiB0aGUgc3RhY2sgbGltaXQgaXMgZGlzYWJsZWQgdW50aWwgd2Ugc3dpdGNoCisgICAg
ICAgICAgIHRvIHVzaW5nIHRoZSBDIHN0YWNrIGZvciBKUyBDYWxsRnJhbWVzLgorCisgICAgICAg
IDIuIFJlbmFtZWQgZHluYW1pY0dsb2JhbE9iamVjdCgpIHRvIHZtRW50cnlHbG9iYWxPYmplY3Qo
KSBzaW5jZSB0aGF0IGlzCisgICAgICAgICAgIHRoZSB2YWx1ZSB0aGF0IHRoZSBmdW5jdGlvbiBy
ZXRyaWV2ZXMuCisKKyAgICAgICAgMy4gQ2hhbmdlZCBKSVQgYW5kIExMSU5UIGNvZGUgdG8gZG8g
c3RhY2sgY2hlY2tzIGFnYWluc3QgdGhlIHN0YWNrIGxpbWl0CisgICAgICAgICAgIGluIHRoZSBW
TSBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBKU1N0YWNrLgorCisgICAgICAgICogQVBJL0pTQmFzZS5j
cHA6CisgICAgICAgIChKU0V2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKEpTQ2hlY2tTY3JpcHRT
eW50YXgpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNHbG9i
YWxDb250ZXh0UmV0YWluKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6ZGV0YWNoKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnBhdXNlSWZOZWVkZWQpOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGRlYnVnZ2VyL0Rl
YnVnZ2VyQ2FsbEZyYW1lLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICog
aGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUp
OgorICAgICAgICAoSlNDOjpIZWFwOjpkZWxldGVBbGxDb21waWxlZENvZGUpOgorICAgICAgICAq
IGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6Q2Fj
aGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWU6
OnZtRW50cnlHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnVud2luZCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZGVi
dWcpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2suY3BwOgorICAgICAgICAoSlNDOjpK
U1N0YWNrOjpKU1N0YWNrKToKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6Z3Jvd1Nsb3dDYXNlKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmg6CisgICAgICAgIChKU0M6OkpTU3RhY2s6
OnNocmluayk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNTdGFjazo6dXBkYXRlU3RhY2tMaW1pdCk6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9K
SVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlTG9hZFZhcmFyZ3MpOgorICAg
ICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVM
b2FkVmFyYXJncyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206Cisg
ICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgIChKU0M6OlZNOjpyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSk6CisgICAgICAg
IChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAoSlNDOjpWTTo6YWRkcmVzc09mU3RhY2tMaW1pdCk6CisgICAgICAgIChKU0M6OlZNOjpz
dGFja0xpbWl0KToKKyAgICAgICAgKEpTQzo6Vk06OnNldFN0YWNrTGltaXQpOgorICAgICAgICAq
IHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlZNRW50cnlT
Y29wZTo6Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjp+Vk1FbnRy
eVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6Vk1FbnRyeVNjb3BlOjpoYXNFbm91Z2hTdGFja1RvRW50ZXJWTSk6CisgICAgICAg
IChKU0M6OlZNRW50cnlTY29wZTo6Z2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL1ZN
U3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKEpTQzo6Vk1TdGFja0JvdW5kczo6Vk1TdGFja0JvdW5k
cyk6CisgICAgICAgIChKU0M6OlZNU3RhY2tCb3VuZHM6OmlzU2FmZVRvUmVjdXJzZSk6CisgICAg
ICAgIChKU0M6OlZNU3RhY2tCb3VuZHM6OnN0YWNrTGltaXQpOgorCiAyMDEzLTExLTE5ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmVtb3Zl
IGNvbXBsZXRlbHkgYm9ndXMgYXNzZXJ0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmNwcAog
ICAgIHJ1bnRpbWUvVHlwZWRBcnJheVR5cGUuY3BwCiAgICAgcnVudGltZS9WTS5jcHAKKyAgICBy
dW50aW1lL1ZNRW50cnlTY29wZS5jcHAKICAgICBydW50aW1lL1dhdGNoZG9nLmNwcAogICAgIHJ1
bnRpbWUvV2F0Y2hkb2dOb25lLmNwcAogICAgIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNw
cApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlz
aW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC05MTMsNiArOTEzLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TUVudHJ5U2NvcGUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5
U2NvcGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGlu
ZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFz
ZS5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTQsNyBAQCBKU1ZhbHVl
UmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250ZXh0UmVmCiAgICAgSlNPYmplY3QqIGpzVGhpc09i
amVjdCA9IHRvSlModGhpc09iamVjdCk7CiAKICAgICAvLyBldmFsdWF0ZSBzZXRzICJ0aGlzIiB0
byB0aGUgZ2xvYmFsIG9iamVjdCBpZiBpdCBpcyBOVUxMCi0gICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwogICAgIFNv
dXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnN0cmluZygpLCBzb3VyY2VVUkwt
PnN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0
YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKIAogICAgIEpTVmFs
dWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBKU0NoZWNrU2Ny
aXB0U3ludGF4KEpTQ29udGV4dFJlZiBjdAogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNv
dXJjZShzY3JpcHQtPnN0cmluZygpLCBzb3VyY2VVUkwtPnN0cmluZygpLCBUZXh0UG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGlu
YWxOdW1iZXI6OmZpcnN0KCkpKTsKICAgICAKICAgICBKU1ZhbHVlIHN5bnRheEV4Y2VwdGlvbjsK
LSAgICBib29sIGlzVmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT5keW5hbWljR2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsKKyAgICBi
b29sIGlzVmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCktPmdsb2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsKIAogICAgIGlmICgh
aXNWYWxpZFN5bnRheCkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFs
Q29udGV4dFJldGFpbgogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwotICAgIGdjUHJvdGVjdChleGVjLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCkpOworICAgIGdjUHJvdGVjdChleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpOwogICAg
IHZtLnJlZigpOwogICAgIHJldHVybiBjdHg7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBK
U0dsb2JhbENvbnRleHRSZWxlYXNlKEpTR2xvYmFsQ29udAogICAgICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgICAgICBzYXZlZElkZW50aWZpZXJUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5z
ZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKHZtLmlkZW50aWZpZXJUYWJsZSk7CiAKLSAgICAgICAg
Ym9vbCBwcm90ZWN0Q291bnRJc1plcm8gPSBIZWFwOjpoZWFwKGV4ZWMtPmR5bmFtaWNHbG9iYWxP
YmplY3QoKSktPnVucHJvdGVjdChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAgICAg
ICBib29sIHByb3RlY3RDb3VudElzWmVybyA9IEhlYXA6OmhlYXAoZXhlYy0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpKS0+dW5wcm90ZWN0KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSk7CiAgICAg
ICAgIGlmIChwcm90ZWN0Q291bnRJc1plcm8pCiAgICAgICAgICAgICB2bS5oZWFwLnJlcG9ydEFi
YW5kb25lZE9iamVjdEdyYXBoKCk7CiAgICAgICAgIHZtLmRlcmVmKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY2Miw2ICs2NjIsNyBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxUeXBlZEFycmF5Q29udHJvbGxlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFR5cGVkQXJyYXlUeXBlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uY3BwIiAvPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxWTUVudHJ5U2NvcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxXYXRjaGRvZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXFdhdGNoZG9nTm9uZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAiIC8+CkBAIC0xMjg5LDYgKzEy
OTAsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MzJBcnJheS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50OEFycmF5LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiIC8+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNRW50cnlTY29wZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxXYXRjaGRvZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxXZWFrR0NNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcV2Vha01hcENvbnN0cnVjdG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNTk1MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTgwMSw2ICs4MDEsOSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5jcHAiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFZNRW50cnlTY29wZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwYXJzZXJcU291cmNlQ29kZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4K
ICAgICA8L0NsQ29tcGlsZT4KQEAgLTI0MTgsNiArMjQyMSw5IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFZNLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZN
RW50cnlTY29wZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJ
bmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM4LDYgKzEyMzgsOCBAQAog
CQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMw
IC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGRTRBMzMxRjE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QTMzMUQxNUJE
MkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJRkU0QTMzMjAxNUJEMkUw
NzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTU5
MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAv
KiBWTUVudHJ5U2NvcGUuY3BwICovOyB9OworCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyog
Vk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NjE3MjgxNzc0RTAz
NTAwNDk1QjAwIC8qIFZNU3RhY2tCb3VuZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjYxNzI3MTc3NEUwMzUwMDQ5NUIwMCAvKiBWTVN0YWNrQm91
bmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAv
KiBCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkVBMDg2MjExODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUYx
ODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNTY2LDYgKzI1NjgsOCBAQAogCQlG
RTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGggPSBsbGludC9MTEludENMb29wLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNEEzMzFEMTVCRDJFMDcwMDZGNTRGMyAv
KiBWTUluc3BlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBW
TUluc3BlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNEEzMzFFMTVC
RDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWTUluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTU5
MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZNRW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjYxNzI3MTc3NEUwMzUwMDQ5NUIwMCAvKiBWTVN0YWNr
Qm91bmRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNU3RhY2tCb3VuZHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUx
IC8qIEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtw
b2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEwODYxRjE4MkI3QTA0MDBG
NkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERlYnVnZ2VyUHJpbWl0aXZlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzMxNiw2ICszMzIwLDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRp
bWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNTkz
MkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwICovLAorCQkJCUZFNTkzMkE2
MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAz
RUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJn
dW1lbnRzLmNwcCAqLywKQEAgLTQxNzcsNiArNDE4Myw3IEBACiAJCQkJODZEM0IyQzQxMDE1NkJE
RTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUw
RkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0JGRjNDMDE3OTg2ODk0MDAwMkY0NjIgLyogREZHRmlsdHJh
dGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1
IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC01NTY2LDYgKzU1NzMs
NyBAQAogCQkJCTE0QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0N0YzOUQ3MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1ZhcmlhYmxlT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RTNDNjFDMTY3QkFCRUUwMDZENzYwQSAvKiBK
U1ZpcnR1YWxNYWNoaW5lLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRkU1OTMyQTcxODNDNUEyNjAw
QTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0NBM0FFNzE3
REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NDgy
Qjk0MTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0NDI1NjYxMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQ
cm90ZWN0LmgiCisjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKIG5hbWVzcGFjZSB7CiAKQEAg
LTE3Miw3ICsxNzMsNyBAQCB2b2lkIERlYnVnZ2VyOjpkZXRhY2goSlNHbG9iYWxPYmplY3QqIGds
CiAgICAgLy8gSWYgd2UncmUgZGV0YWNoaW5nIGZyb20gdGhlIGN1cnJlbnRseSBleGVjdXRpbmcg
Z2xvYmFsIG9iamVjdCwgbWFudWFsbHkgdGVhciBkb3duIG91cgogICAgIC8vIHN0YWNrLCBzaW5j
ZSB3ZSB3b24ndCBnZXQgZnVydGhlciBkZWJ1Z2dlciBjYWxsYmFja3MgdG8gZG8gc28uIEFsc28s
IHJlc3VtZSBleGVjdXRpb24sCiAgICAgLy8gc2luY2UgdGhlcmUncyBubyBwb2ludCBpbiBzdGF5
aW5nIHBhdXNlZCBvbmNlIGEgd2luZG93IGNsb3Nlcy4KLSAgICBpZiAobV9jdXJyZW50Q2FsbEZy
YW1lICYmIG1fY3VycmVudENhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpID09IGdsb2Jh
bE9iamVjdCkgeworICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgJiYgbV9jdXJyZW50Q2FsbEZy
YW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIG1f
Y3VycmVudENhbGxGcmFtZSA9IDA7CiAgICAgICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IDA7CiAg
ICAgICAgIGNvbnRpbnVlUHJvZ3JhbSgpOwpAQCAtMTkzLDggKzE5NCw4IEBAIHZvaWQgRGVidWdn
ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFYKIHsKICAgICAvLyBJZiBKYXZhU2NyaXB0IGlz
IHJ1bm5pbmcsIGl0J3Mgbm90IHNhZmUgdG8gcmVjb21waWxlLCBzaW5jZSB3ZSdsbCBlbmQKICAg
ICAvLyB1cCB0aHJvd2luZyBhd2F5IGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRoZSBzdGFjay4KLSAg
ICBBU1NFUlQoIXZtLT5keW5hbWljR2xvYmFsT2JqZWN0KTsKLSAgICBpZiAodm0tPmR5bmFtaWNH
bG9iYWxPYmplY3QpCisgICAgQVNTRVJUKCF2bS0+ZW50cnlTY29wZSk7CisgICAgaWYgKHZtLT5l
bnRyeVNjb3BlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgdm0tPnByZXBhcmVUb0Rpc2Nh
cmRDb2RlKCk7CkBAIC00MzgsOCArNDM5LDggQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRl
ZChDYWxsRnJhbWUqIAogICAgIGlmIChtX2lzUGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+ZHluYW1p
Y0dsb2JhbE9iamVjdCgpOwotICAgIGlmICghbmVlZFBhdXNlSGFuZGxpbmcoZHluYW1pY0dsb2Jh
bE9iamVjdCkpCisgICAgSlNHbG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmplY3QgPSBjYWxs
RnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIW5lZWRQYXVzZUhhbmRsaW5n
KHZtRW50cnlHbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1cm47CiAKICAgICBCcmVha3BvaW50
IGJyZWFrcG9pbnQ7CkBAIC00NzAsNyArNDcxLDcgQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5l
ZWRlZChDYWxsRnJhbWUqIAogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRs
ZVBhdXNlKG1fcmVhc29uRm9yUGF1c2UsIGR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgIGhhbmRs
ZVBhdXNlKG1fcmVhc29uRm9yUGF1c2UsIHZtRW50cnlHbG9iYWxPYmplY3QpOwogCiAgICAgaWYg
KCFtX3BhdXNlT25OZXh0U3RhdGVtZW50ICYmICFtX3BhdXNlT25DYWxsRnJhbWUpIHsKICAgICAg
ICAgc2V0U2hvdWxkUGF1c2UoZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxNTk1MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgorI2luY2x1
ZGUgIlZNRW50cnlTY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzcsMTIgKzc4LDEy
IEBAIFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IERlYnVnZ2VyQ2EKICAgICByZXR1cm4g
bV9jYWxsZXI7CiB9CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIERlYnVnZ2VyQ2FsbEZyYW1lOjpk
eW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QKK0pTQzo6SlNHbG9iYWxPYmplY3QqIERlYnVnZ2Vy
Q2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNW
YWxpZCgpKTsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIG1fY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIG1fY2Fs
bEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiB9CiAKIFNvdXJjZUlEIERlYnVnZ2VyQ2Fs
bEZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNpb24gMTU5NTI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIGludCBjb2x1bW4oKSBjb25z
dCB7IHJldHVybiBtX3Bvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOyB9CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb247IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0
KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNH
bG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdDsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU1Njb3BlKiBzY29wZSgpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0
cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBUeXBlIHR5
cGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDkgKzMzMSw4IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgLy8gc28gZW50ZXIgYWZ0ZXIg
dGhpcy4KICAgICBMYWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKICAgICAvLyBQbGFudCBhIGNo
ZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCi0g
ICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5
MQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rlcikp
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwotICAgIEp1bXAg
c3RhY2tDaGVjayA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmludGVy
cHJldGVyLT5zdGFjaygpLmFkZHJlc3NPZkVuZCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIEp1
bXAgc3RhY2tDaGVjayA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFk
ZHJlc3NPZlN0YWNrTGltaXQoKSksIEdQUkluZm86OnJlZ1QxKTsKICAgICAvLyBSZXR1cm4gaGVy
ZSBhZnRlciBzdGFjayBjaGVjay4KICAgICBMYWJlbCBmcm9tU3RhY2tDaGVjayA9IGxhYmVsKCk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMTU5
NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAg
ICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wIHN0YWNrQ2hlY2sgPSBqaXQuYnJhbmNoUHRyKAogICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBYm92ZSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKHN0YXRlLmdyYXBoLm1fdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuYWRkcmVzc09m
RW5kKCkpLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Moc3RhdGUu
Z3JhcGgubV92bS5hZGRyZXNzT2ZTdGFja0xpbWl0KCkpLAogICAgICAgICAgICAgR1BSSW5mbzo6
cmVnVDEpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGZyb21TdGFja0NoZWNrID0gaml0
LmxhYmVsKCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyArMjkxLDcgQEAgYm9vbCBIZWFwOjppc1BhZ2VkT3V0
KGRvdWJsZSBkZWFkbGluZSkKIC8vIFJ1biBhbGwgcGVuZGluZyBmaW5hbGl6ZXJzIG5vdyBiZWNh
dXNlIHdlIHdvbid0IGdldCBhbm90aGVyIGNoYW5jZS4KIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRv
RmluYWxpemUoKQogewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV92bS0+ZW50cnlTY29wZSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKIAogICAgIG1f
b2JqZWN0U3BhY2UubGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTY4OSw3ICs2ODksNyBAQCB2
b2lkIEhlYXA6OmRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpCiB7CiAgICAgLy8gSWYgSmF2YVNjcmlw
dCBpcyBydW5uaW5nLCBpdCdzIG5vdCBzYWZlIHRvIGRlbGV0ZSBjb2RlLCBzaW5jZSB3ZSdsbCBl
bmQKICAgICAvLyB1cCBkZWxldGluZyBjb2RlIHRoYXQgaXMgbGl2ZSBvbiB0aGUgc3RhY2suCi0g
ICAgaWYgKG1fdm0tPmR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAgaWYgKG1fdm0tPmVudHJ5U2Nv
cGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoRXhlY3V0YWJsZUJhc2UqIGN1cnJlbnQg
PSBtX2NvbXBpbGVkQ29kZS5oZWFkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hl
ZENhbGwuaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhY2hlZENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsMTEgQEAKICNk
ZWZpbmUgQ2FjaGVkQ2FsbF9oCiAKICNpbmNsdWRlICJDYWxsRnJhbWVDbG9zdXJlLmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiVk1FbnRyeVNjb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENhY2hlZENh
bGwgewpAQCAtMzgsMTAgKzQwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDYWNoZWRD
YWxsKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3Vt
ZW50Q291bnQpCiAgICAgICAgICAgICA6IG1fdmFsaWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1f
aW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRlcigpKQotICAgICAgICAgICAgLCBtX2ds
b2JhbE9iamVjdFNjb3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rpb24tPnNjb3BlKCktPmdsb2Jh
bE9iamVjdCgpKQorICAgICAgICAgICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBm
dW5jdGlvbi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgICAgICAgICAgbV9jbG9z
dXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhl
Y3V0YWJsZSgpLCBjYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rp
b24tPnNjb3BlKCkpOworICAgICAgICAgICAgaWYgKG1fZW50cnlTY29wZS5oYXNFbm91Z2hTdGFj
a1RvRW50ZXJWTSgpKQorICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0ZXIt
PnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZyYW1l
LCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29wZSgpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUpOwogICAgICAgICAgICAgbV92YWxpZCA9ICFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigp
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjksNyArNzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBib29sIG1fdmFsaWQ7CiAgICAgICAgIEludGVycHJldGVy
KiBtX2ludGVycHJldGVyOwotICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgbV9nbG9i
YWxPYmplY3RTY29wZTsKKyAgICAgICAgVk1FbnRyeVNjb3BlIG1fZW50cnlTY29wZTsKICAgICAg
ICAgQ2FsbEZyYW1lQ2xvc3VyZSBtX2Nsb3N1cmU7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDE1OTUy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBHbG9iYWwgb2JqZWN0IGluIHdoaWNoIGV4ZWN1dGlvbiBiZWdhbi4KLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAogICAgICAgICAvLyBHbG9iYWwg
b2JqZWN0IGluIHdoaWNoIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGNvZGUgd2FzIGRlZmluZWQu
CiAgICAgICAgIC8vIERpZmZlcnMgZnJvbSBkeW5hbWljR2xvYmFsT2JqZWN0KCkgZHVyaW5nIGZ1
bmN0aW9uIGNhbGxzIGFjcm9zcyB3ZWIgYnJvd3NlciBmcmFtZXMuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmgJKHJl
dmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDIxIEBACiAjZGVmaW5l
IENhbGxGcmFtZUlubGluZXNfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAi
Vk1FbnRyeVNjb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgIHsKIAoraW5saW5lIEpTR2xvYmFsT2Jq
ZWN0KiBDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QoKQoreworICAgIGlmICh0aGlzID09
IGxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKQorICAgICAgICByZXR1cm4gbGV4
aWNhbEdsb2JhbE9iamVjdCgpOworCisgICAgLy8gRm9yIGFueSBFeGVjU3RhdGUgdGhhdCdzIG5v
dCBhIGdsb2JhbEV4ZWMsIHRoZSAKKyAgICAvLyBkeW5hbWljIGdsb2JhbCBvYmplY3QgbXVzdCBi
ZSBzZXQgc2luY2UgY29kZSBpcyBydW5uaW5nCisgICAgQVNTRVJUKHZtKCkuZW50cnlTY29wZSk7
CisgICAgcmV0dXJuIHZtKCkuZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCk7Cit9CisKIGlubGlu
ZSB1aW50MzJfdCBDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGUoQ2FsbEZyYW1lOjpMb2NhdGlv
bjo6VHlwZVRhZyB0YWcsIHVpbnQzMl90IGJpdHMpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk1LDcgKzM5NSw3IEBAIHN0
YXRpYyBib29sIHVud2luZENhbGxGcmFtZShTdGFja1Zpc2l0b3IKICAgICBDb2RlQmxvY2sqIG9s
ZENvZGVCbG9jayA9IGNvZGVCbG9jazsKICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+
c2NvcGUoKTsKIAotICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgeworICAgIGlmIChEZWJ1Z2dlciogZGVidWdn
ZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAg
ICAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZWUoKSkKICAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1
cm5FdmVudChjYWxsRnJhbWUpOwogICAgICAgICBlbHNlCkBAIC02NTAsNyArNjUwLDcgQEAgTkVW
RVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dQogICAgIEFTU0VSVChjYWxsRnJh
bWUtPnZtKCkuZXhjZXB0aW9uU3RhY2soKS5zaXplKCkpOwogICAgIEFTU0VSVCghZXhjZXB0aW9u
VmFsdWUuaXNPYmplY3QoKSB8fCBhc09iamVjdChleGNlcHRpb25WYWx1ZSktPmhhc1Byb3BlcnR5
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT52bSgpLnByb3BlcnR5TmFtZXMtPnN0YWNrKSk7CiAKLSAg
ICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+
ZGVidWdnZXIoKTsKKyAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlH
bG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoZGVidWdnZXIgJiYgZGVidWdnZXIt
Pm5lZWRzRXhjZXB0aW9uQ2FsbGJhY2tzKCkpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjbGVh
ciB0aGUgZXhjZXB0aW9uIGFuZCB0aGUgZXhjZXB0aW9uIHN0YWNrIGhlcmUgaW4gb3JkZXIgdG8g
c2VlIGlmIGEgbmV3IGV4Y2VwdGlvbiBoYXBwZW5zLgogICAgICAgICAvLyBBZnRlcndhcmRzLCB0
aGUgdmFsdWVzIGFyZSBwdXQgYmFjayB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRoaXMgZXJyb3Iu
CkBAIC03MzksMTUgKzczOSwxNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dy
YW1FeGVjCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAKLSAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKLSAg
ICBjb25zdCBWTVN0YWNrQm91bmRzIHZtU3RhY2tCb3VuZHModm0sIHd0ZlRocmVhZERhdGEoKS5z
dGFjaygpKTsKLSAgICBpZiAoIXZtU3RhY2tCb3VuZHMuaXNTYWZlVG9SZWN1cnNlKCkpCisgICAg
Vk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAg
aWYgKCFlbnRyeVNjb3BlLmhhc0Vub3VnaFN0YWNrVG9FbnRlclZNKCkpCiAgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCiAg
ICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlICJwcm9ncmFtIiBpcyBhY3R1YWxseSBqdXN0IGEgSlNP
TiBvYmplY3QuIElmIHNvLAogICAgIC8vIHdlJ2xsIGhhbmRsZSB0aGUgSlNPTiBvYmplY3QgaGVy
ZS4gRWxzZSwgd2UnbGwgaGFuZGxlIHJlYWwgSlMgY29kZQogICAgIC8vIGJlbG93IGF0IGZhaWxl
ZEpTT05QLgotICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSh2
bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKwogICAgIFZlY3RvcjxKU09OUERhdGE+IEpTT05Q
RGF0YTsKICAgICBib29sIHBhcnNlUmVzdWx0OwogICAgIGNvbnN0IFN0cmluZyBwcm9ncmFtU291
cmNlID0gcHJvZ3JhbS0+c291cmNlKCkudG9TdHJpbmcoKTsKQEAgLTkwMCwxMSArODk5LDYgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIGlmICh2bS5pc0Nv
bGxlY3RvckJ1c3koKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgU3RhY2tTdGF0
czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7Ci0gICAgY29uc3QgVk1TdGFja0JvdW5kcyB2
bVN0YWNrQm91bmRzKHZtLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKSk7Ci0gICAgaWYgKCF2bVN0
YWNrQm91bmRzLmlzU2FmZVRvUmVjdXJzZSgpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKLQogICAgIGJvb2wgaXNKU0Nh
bGwgPSAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyk7CiAgICAgSlNTY29wZSogc2NvcGU7CiAgICAg
Q29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7CkBAIC05MTYsNyArOTEwLDEwIEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09
IENhbGxUeXBlSG9zdCk7CiAgICAgICAgIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZSgpOwogICAg
IH0KLSAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUodm0sIHNj
b3BlLT5nbG9iYWxPYmplY3QoKSk7CisKKyAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwg
c2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIWVudHJ5U2NvcGUuaGFzRW5vdWdoU3Rh
Y2tUb0VudGVyVk0oKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092
ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKICAgICBpZiAoaXNKU0NhbGwpIHsKICAgICAgICAg
Ly8gQ29tcGlsZSB0aGUgY2FsbGVlOgpAQCAtOTc4LDExICs5NzUsNiBAQCBKU09iamVjdCogSW50
ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgp
KQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsRnJhbWUpKTsKIAotICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50
OwotICAgIGNvbnN0IFZNU3RhY2tCb3VuZHMgdm1TdGFja0JvdW5kcyh2bSwgd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCkpOwotICAgIGlmICghdm1TdGFja0JvdW5kcy5pc1NhZmVUb1JlY3Vyc2UoKSkK
LSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKSk7Ci0KICAgICBib29sIGlzSlNDb25zdHJ1Y3QgPSAoY29uc3RydWN0VHlwZSA9PSBD
b25zdHJ1Y3RUeXBlSlMpOwogICAgIEpTU2NvcGUqIHNjb3BlOwogICAgIENvZGVCbG9jayogbmV3
Q29kZUJsb2NrOwpAQCAtOTk1LDcgKzk4Nyw5IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZUNvbnN0cnVjdCgKICAgICAgICAgc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7CiAgICAg
fQogCi0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKHZtLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghZW50cnlTY29wZS5oYXNFbm91Z2hTdGFj
a1RvRW50ZXJWTSgpKQorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKIAogICAgIGlmIChpc0pTQ29uc3RydWN0KSB7CiAgICAg
ICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKQEAgLTEwNjUsMTMgKzEwNTksNiBAQCBDYWxsRnJh
bWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVwYXJlRm9yCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeSgpKQogICAgICAgICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwogCi0gICAgU3RhY2tT
dGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7Ci0gICAgY29uc3QgVk1TdGFja0JvdW5k
cyB2bVN0YWNrQm91bmRzKHZtLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKSk7Ci0gICAgaWYgKCF2
bVN0YWNrQm91bmRzLmlzU2FmZVRvUmVjdXJzZSgpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZSk7Ci0gICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7
Ci0gICAgfQotCiAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgIEpTT2JqZWN0KiBlcnJv
ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJhbWUsIHNj
b3BlLCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKGVycm9yKSB7CkBAIC0xMTY1LDEyICsxMTUyLDkg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIGlmICh2bS5p
c0NvbGxlY3RvckJ1c3koKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgRHluYW1p
Y0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2Jq
ZWN0KCkpOwotCi0gICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7Ci0g
ICAgY29uc3QgVk1TdGFja0JvdW5kcyB2bVN0YWNrQm91bmRzKHZtLCB3dGZUaHJlYWREYXRhKCku
c3RhY2soKSk7Ci0gICAgaWYgKCF2bVN0YWNrQm91bmRzLmlzU2FmZVRvUmVjdXJzZSgpKQotICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUpKTsKKyAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVj
dCgpKTsKKyAgICBpZiAoIWVudHJ5U2NvcGUuaGFzRW5vdWdoU3RhY2tUb0VudGVyVk0oKSkKKyAg
ICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZy
YW1lKSk7ICAgICAgICAKIAogICAgIHVuc2lnbmVkIG51bVZhcmlhYmxlcyA9IGV2YWwtPm51bVZh
cmlhYmxlcygpOwogICAgIGludCBudW1GdW5jdGlvbnMgPSBldmFsLT5udW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKTsKQEAgLTEyNTEsNyArMTIzNSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoRXZhbEV4ZWN1dGEKIAogTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCkKIHsKLSAgICBEZWJ1
Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdn
ZXIoKTsKKyAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxP
YmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoIWRlYnVnZ2VyIHx8ICFkZWJ1Z2dlci0+bmVl
ZHNPcERlYnVnQ2FsbGJhY2tzKCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkocmV2aXNpb24gMTU5NTI1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00NCwxMyArNDQsMTQgQEAgc3RhdGljIE11dGV4JiBzdGFja1N0YXRpc3RpY3NN
dXRleCgpCiB9ICAgIAogCiBKU1N0YWNrOjpKU1N0YWNrKFZNJiB2bSwgc2l6ZV90IGNhcGFjaXR5
KQotICAgIDogbV9lbmQoMCkKKyAgICA6IG1fdm0odm0pCisgICAgLCBtX2VuZCgwKQogICAgICwg
bV90b3BDYWxsRnJhbWUodm0udG9wQ2FsbEZyYW1lKQogewogICAgIEFTU0VSVChjYXBhY2l0eSAm
JiBpc1BhZ2VBbGlnbmVkKGNhcGFjaXR5KSk7CiAKICAgICBtX3Jlc2VydmF0aW9uID0gUGFnZVJl
c2VydmF0aW9uOjpyZXNlcnZlKHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShjYXBhY2l0eSAqIHNpemVv
ZihSZWdpc3RlciksIGNvbW1pdFNpemUpLCBPU0FsbG9jYXRvcjo6SlNWTVN0YWNrUGFnZXMpOwot
ICAgIG1fZW5kID0gaGlnaEFkZHJlc3MoKTsKKyAgICB1cGRhdGVTdGFja0xpbWl0KGhpZ2hBZGRy
ZXNzKCkpOwogICAgIG1fY29tbWl0RW5kID0gaGlnaEFkZHJlc3MoKTsKIAogICAgIGRpc2FibGVF
cnJvclN0YWNrUmVzZXJ2ZSgpOwpAQCAtNzEsNyArNzIsNyBAQCBib29sIEpTU3RhY2s6Omdyb3dT
bG93Q2FzZShSZWdpc3RlciogbmV3CiAgICAgLy8gSWYgd2UgaGF2ZSBhbHJlYWR5IGNvbW1pdHRl
ZCBlbm91Z2ggbWVtb3J5IHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LAogICAgIC8vIGp1c3QgdXBk
YXRlIHRoZSBlbmQgcG9pbnRlciBhbmQgcmV0dXJuLgogICAgIGlmIChuZXdFbmQgPj0gbV9jb21t
aXRFbmQpIHsKLSAgICAgICAgbV9lbmQgPSBuZXdFbmQ7CisgICAgICAgIHVwZGF0ZVN0YWNrTGlt
aXQobmV3RW5kKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC04Nyw3ICs4OCw3
IEBAIGJvb2wgSlNTdGFjazo6Z3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKiBuZXcKICAgICBtX3Jlc2Vy
dmF0aW9uLmNvbW1pdChyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCkgLSBkZWx0
YSwgZGVsdGEpOwogICAgIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGRlbHRhKTsKICAgICBtX2Nv
bW1pdEVuZCA9IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFJlZ2lzdGVyKj4ocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obV9jb21taXRFbmQpIC0gZGVsdGEpOwotICAgIG1fZW5kID0gbmV3RW5kOworICAg
IHVwZGF0ZVN0YWNrTGltaXQobmV3RW5kKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCShyZXZpc2lvbiAx
NTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Nyw3ICs4Nyw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIGhpZ2hBZGRyZXNzKCkgLSAxOwogICAgICAgICB9CiAKLSAgICAg
ICAgUmVnaXN0ZXIqIGdldExpbWl0T2ZTdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CiAg
ICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gaGlnaEFkZHJlc3MoKSAtIGxvd0Fk
ZHJlc3MoKTsgfQogCiAgICAgICAgIGJvb2wgZ3JvdyhSZWdpc3RlciopOwpAQCAtOTUsMTUgKzk0
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0
ZUNvdW50KCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAot
ICAgICAgICBSZWdpc3RlciogY29uc3QgKiBhZGRyZXNzT2ZFbmQoKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gJm1fZW5kOwotICAgICAgICB9Ci0KICAgICAgICAgUmVnaXN0
ZXIqIGdldFRvcE9mRnJhbWUoQ2FsbEZyYW1lKik7CiAgICAgICAgIFJlZ2lzdGVyKiBnZXRTdGFy
dE9mRnJhbWUoQ2FsbEZyYW1lKik7CiAgICAgICAgIFJlZ2lzdGVyKiBnZXRUb3BPZlN0YWNrKCk7
Ci0gICAgICAgIFJlZ2lzdGVyKiBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQogCiAgICAg
ICAgIENhbGxGcmFtZSogcHVzaEZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIGNsYXNzIENv
ZGVCbG9jayosCiAgICAgICAgICAgICBKU1Njb3BlKiwgaW50IGFyZ3NDb3VudCwgSlNPYmplY3Qq
IGNhbGxlZSk7CkBAIC0xNTMsNiArMTQ2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRC
eXRlQ291bnQobG9uZyk7CiAKKyAgICAgICAgaW5saW5lIHZvaWQgdXBkYXRlU3RhY2tMaW1pdChS
ZWdpc3RlciogbmV3RW5kKTsKKworICAgICAgICBWTSYgbV92bTsKICAgICAgICAgUmVnaXN0ZXIq
IG1fZW5kOwogICAgICAgICBSZWdpc3RlciogbV9jb21taXRFbmQ7CiAgICAgICAgIFJlZ2lzdGVy
KiBtX3VzZWFibGVFbmQ7CkBAIC0xNjYsNyArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgICAgICBpZiAobmV3RW5kID49IG1fZW5kKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX2VuZCA9IG5ld0VuZDsKKyAgICAgICAgdXBkYXRlU3RhY2tMaW1pdChuZXdFbmQpOwog
ICAgICAgICBpZiAobV9lbmQgPT0gZ2V0QmFzZU9mU3RhY2soKSAmJiAobV9jb21taXRFbmQgLSBn
ZXRCYXNlT2ZTdGFjaygpKSA+PSBtYXhFeGNlc3NDYXBhY2l0eSkKICAgICAgICAgICAgIHJlbGVh
c2VFeGNlc3NDYXBhY2l0eSgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNTk1MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKKyNpbmNsdWRlICJWTS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTM1LDYgKzEzNiwxMiBAQCBpbmxpbmUgdm9pZCBKU1N0
YWNrOjpwb3BGcmFtZShDYWxsRnJhbWUqCiAgICAgaW5zdGFsbFRyYXBzQWZ0ZXJGcmFtZShjYWxs
ZXJGcmFtZSk7CiB9CiAKK2lubGluZSB2b2lkIEpTU3RhY2s6OnVwZGF0ZVN0YWNrTGltaXQoUmVn
aXN0ZXIqIG5ld0VuZCkKK3sKKyAgICBtX2VuZCA9IG5ld0VuZDsKKyAgICBtX3ZtLnNldFN0YWNr
TGltaXQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obmV3RW5kKSk7Cit9CisKIAogI2lmIEVOQUJM
RShERUJVR19KU1NUQUNLKQogaW5saW5lIEpTVmFsdWUgSlNTdGFjazo6Z2VuZXJhdGVGZW5jZVZh
bHVlKHNpemVfdCBhcmdJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTY4LDcgKzU2OCw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJp
dmF0ZUNvbXBpbGUoSkkKICNlbmRpZgogCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKS5v
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDEpOwot
ICAgICAgICBzdGFja0NoZWNrID0gYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92
bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCkuYWRkcmVzc09mRW5kKCkpLCByZWdUMSk7CisgICAgICAg
IHN0YWNrQ2hlY2sgPSBicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRy
ZXNzT2ZTdGFja0xpbWl0KCkpLCByZWdUMSk7CiAgICAgfQogCiAgICAgTGFiZWwgZnVuY3Rpb25C
b2R5ID0gbGFiZWwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQg
SklUOjpjb21waWxlTG9hZFZhcmFyZ3MoSW5zdHJ1Y3Rpb24KICAgICAgICAgYWRkUHRyKGNhbGxG
cmFtZVJlZ2lzdGVyLCByZWdUMyk7CiAgICAgICAgIC8vIHJlZ1QzOiBuZXdDYWxsRnJhbWUKIAot
ICAgICAgICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3Mo
bV92bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCkuYWRkcmVzc09mRW5kKCkpLCByZWdUMykpOworICAg
ICAgICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92
bS0+YWRkcmVzc09mU3RhY2tMaW1pdCgpKSwgcmVnVDMpKTsKIAogICAgICAgICAvLyBJbml0aWFs
aXplIEFyZ3VtZW50Q291bnQuCiAgICAgICAgIHN0b3JlMzIocmVnVDIsIHBheWxvYWRGb3IoSlNT
dGFjazo6QXJndW1lbnRDb3VudCwgcmVnVDMpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9uCiAgICAgICAgIGFkZFB0cihjYWxsRnJh
bWVSZWdpc3RlciwgcmVnVDEpOwogICAgICAgICAvLyByZWdUMTogbmV3Q2FsbEZyYW1lCiAKLSAg
ICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1f
dm0tPmludGVycHJldGVyLT5zdGFjaygpLmFkZHJlc3NPZkVuZCgpKSwgcmVnVDEpKTsKKyAgICAg
ICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0t
PmFkZHJlc3NPZlN0YWNrTGltaXQoKSksIHJlZ1QxKSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6
ZSBBcmd1bWVudENvdW50LgogICAgICAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBK
U1N0YWNrOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9h
ZCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzgz
LDEwICszODMsOSBAQCBtYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAg
ICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCiAgICAgYWRk
aSAxLCB0MCAjIEFjY291bnQgdGhhdCBsb2NhbDAgZ29lcyBhdCBzbG90IC0xCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX3ZtW3QxXSwgdDIKLSAgICBsb2FkcCBWTTo6aW50ZXJwcmV0ZXJbdDJdLCB0
MgogICAgIGxzaGlmdHAgMywgdDAKICAgICBzdWJwIGNmciwgdDAsIHQwCi0gICAgYnBiZXEgSW50
ZXJwcmV0ZXI6Om1fc3RhY2sgKyBKU1N0YWNrOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRP
SworICAgIGJwYmVxIFZNOjptX3N0YWNrTGltaXRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKIAog
ICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIHNsb3dfcGF0
aC4KICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3N0YWNrX2NoZWNrKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDE1OTUyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNyBBcHBs
ZSBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDEzIEFwcGxlIEluYy4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC03OCw3ICs3OCw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCAKICAgICB9CiAKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlz
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpOworICAgICAgICB0aGlzVmFsdWUgPSBleGVjLT52bUVudHJ5R2xv
YmFsT2JqZWN0KCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0
aGlzVmFsdWUudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUocHJvZ3JhbSwgZXhlYywgdGhpc09iaik7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xMTIsNyAr
MTEyLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRQogCiAgICAg
U291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHByb2dyYW0sIHNvdXJjZVVSTCwgcG9zaXRp
b24pOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9u
TmFtZSwgZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3Vy
Y2UsICZleGNlcHRpb24pOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBGdW5j
dGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgZXhlYywgZXhlYy0+
dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZleGNlcHRpb24pOwog
ICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAg
IHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNiwyNiArNzA2LDYgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6Y2xlYXJSYXJlRGF0YShKU0NlbAogICAgIGpzQ2FzdDxKU0dsb2JhbE9i
amVjdCo+KGNlbGwpLT5tX3JhcmVEYXRhLmNsZWFyKCk7CiB9CiAKLUR5bmFtaWNHbG9iYWxPYmpl
Y3RTY29wZTo6RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGR5bmFtaWNHbG9iYWxPYmplY3QpCi0gICAgOiBtX2R5bmFtaWNHbG9iYWxPYmplY3RTbG90KHZt
LmR5bmFtaWNHbG9iYWxPYmplY3QpCi0gICAgLCBtX3NhdmVkRHluYW1pY0dsb2JhbE9iamVjdCht
X2R5bmFtaWNHbG9iYWxPYmplY3RTbG90KQotewotICAgIGlmICghbV9keW5hbWljR2xvYmFsT2Jq
ZWN0U2xvdCkgewotI2lmIEVOQUJMRShBU1NFTUJMRVIpCi0gICAgICAgIGlmIChFeGVjdXRhYmxl
QWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkpCi0gICAgICAgICAgICB2bS5oZWFwLmRl
bGV0ZUFsbENvbXBpbGVkQ29kZSgpOwotI2VuZGlmCi0KLSAgICAgICAgbV9keW5hbWljR2xvYmFs
T2JqZWN0U2xvdCA9IGR5bmFtaWNHbG9iYWxPYmplY3Q7Ci0KLSAgICAgICAgLy8gUmVzZXQgdGhl
IGRhdGUgY2FjaGUgYmV0d2VlbiBKUyBpbnZvY2F0aW9ucyB0byBmb3JjZSB0aGUgVk0KLSAgICAg
ICAgLy8gdG8gb2JzZXJ2ZSB0aW1lIHpvbmUgY2hhbmdlcy4KLSAgICAgICAgdm0ucmVzZXREYXRl
Q2FjaGUoKTsKLSAgICB9Ci0gICAgLy8gQ2xlYXIgdGhlIGV4Y2VwdGlvbiBzdGFjayBiZXR3ZWVu
IGVudHJpZXMKLSAgICB2bS5jbGVhckV4Y2VwdGlvblN0YWNrKCk7Ci19Ci0KIHZvaWQgc2xvd1Zh
bGlkYXRlQ2VsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1OTUy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4NiwxNyArNTg2LDYgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmpl
Y3Q6OnN5bWJvbFRhYmxlSAogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKLWlubGlu
ZSBKU0dsb2JhbE9iamVjdCogRXhlY1N0YXRlOjpkeW5hbWljR2xvYmFsT2JqZWN0KCkKLXsKLSAg
ICBpZiAodGhpcyA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkKLSAgICAg
ICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsKLQotICAgIC8vIEZvciBhbnkgRXhlY1N0
YXRlIHRoYXQncyBub3QgYSBnbG9iYWxFeGVjLCB0aGUgCi0gICAgLy8gZHluYW1pYyBnbG9iYWwg
b2JqZWN0IG11c3QgYmUgc2V0IHNpbmNlIGNvZGUgaXMgcnVubmluZwotICAgIEFTU0VSVCh2bSgp
LmR5bmFtaWNHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiB2bSgpLmR5bmFtaWNHbG9iYWxPYmpl
Y3Q7Ci19Ci0KIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSog
ZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCA9IDApCiB7CiAgICAgcmV0dXJuIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIEpT
QXJyYXk6OmNyZWF0ZShleGVjLT52bSgpLCBpbml0aWFsTGVuZ3RoID49IE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVggPyBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpIDogZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvclByb2ZpbGVEdXJpbmdBbGxvY2F0aW9uKHByb2ZpbGUpLCBpbml0aWFsTGVu
Z3RoKSk7CkBAIC02MzcsMjEgKzYyNiw2IEBAIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJh
eU5lZ2F0aXZlSW4KICAgICByZXR1cm4gY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoZXhl
YywgcHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB2YWx1ZXMsIGxlbmd0aCk7
CiB9CiAKLWNsYXNzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSB7Ci0gICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKTsKLXB1YmxpYzoKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoVk0mLCBKU0dsb2JhbE9iamVjdCop
OwotCi0gICAgfkR5bmFtaWNHbG9iYWxPYmplY3RTY29wZSgpCi0gICAgewotICAgICAgICBtX2R5
bmFtaWNHbG9iYWxPYmplY3RTbG90ID0gbV9zYXZlZER5bmFtaWNHbG9iYWxPYmplY3Q7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIEpTR2xvYmFsT2JqZWN0KiYgbV9keW5hbWljR2xvYmFsT2JqZWN0
U2xvdDsKLSAgICBKU0dsb2JhbE9iamVjdCogbV9zYXZlZER5bmFtaWNHbG9iYWxPYmplY3Q7Ci19
OwotCiBpbmxpbmUgSlNPYmplY3QqIEpTU2NvcGU6Omdsb2JhbFRoaXMoKQogeyAKICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0KCktPmdsb2JhbFRoaXMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGpzQXJyYXlDbGFzc0lu
Zm8oSlNBcnJheTo6aW5mbygpKQogICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbyhKU0ZpbmFs
T2JqZWN0OjppbmZvKCkpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQotICAgICwg
ZHluYW1pY0dsb2JhbE9iamVjdCgwKQorICAgICwgZW50cnlTY29wZSgwKQogICAgICwgbV9lbmFi
bGVkUHJvZmlsZXIoMCkKICAgICAsIG1fcmVnRXhwQ2FjaGUobmV3IFJlZ0V4cENhY2hlKHRoaXMp
KQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIFZN
OjpyZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpCiB7CiAgICAgcHJlcGFyZVRvRGlzY2FyZENvZGUo
KTsKICAgICAKLSAgICBpZiAoZHluYW1pY0dsb2JhbE9iamVjdCkgeworICAgIGlmIChlbnRyeVNj
b3BlKSB7CiAgICAgICAgIFN0YWNrUHJlc2VydmluZ1JlY29tcGlsZXIgcmVjb21waWxlcjsKICAg
ICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKGhlYXApOwogICAgICAgICBI
YXNoU2V0PEpTQ2VsbCo+IHJvb3RzOwpAQCAtNjE4LDcgKzYxOCw3IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW0KICAgICAKIEpTVmFsdWUgVk06OnRocm93RXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikKIHsKLSAgICBBU1NFUlQoZXhlYyA9
PSB0b3BDYWxsRnJhbWUgfHwgZXhlYyA9PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSB8fCBleGVjID09IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpKTsKKyAgICBBU1NFUlQoZXhlYyA9PSB0b3BDYWxsRnJhbWUgfHwgZXhlYyA9PSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSB8fCBleGVjID09IGV4ZWMtPnZt
RW50cnlHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKICAgICAKICAgICBWZWN0b3I8U3Rh
Y2tGcmFtZT4gc3RhY2tUcmFjZTsKICAgICBpbnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShzdGFj
a1RyYWNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTU5
NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5
KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBVbmxpbmtlZEV2
YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAg
Y2xhc3MgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrOworICAgIGNsYXNzIFZNRW50cnlTY29wZTsK
IAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMzYxLDYgKzM2
MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7
CiAgICAgICAgIAorICAgICAgICB2b2lkKiogYWRkcmVzc09mU3RhY2tMaW1pdCgpIHsgcmV0dXJu
ICZtX3N0YWNrTGltaXQ7IH0KKyAgICAgICAgdm9pZCogc3RhY2tMaW1pdCgpIHsgcmV0dXJuIG1f
c3RhY2tMaW1pdDsgfQorICAgICAgICB2b2lkIHNldFN0YWNrTGltaXQodm9pZCogbGltaXQpIHsg
bV9zdGFja0xpbWl0ID0gbGltaXQ7IH0KKwogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0
IGpzQXJyYXlDbGFzc0luZm87CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNGaW5h
bE9iamVjdENsYXNzSW5mbzsKIApAQCAtMzk2LDcgKzQwMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMm
KTsKIAotICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdDsKKyAgICAg
ICAgVk1FbnRyeVNjb3BlKiBlbnRyeVNjb3BlOwogCiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3Qq
PiBzdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzOwogCkBAIC00NzUsNiArNDgwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAgIGNv
bnN0IENsYXNzSW5mbyogbV9pbml0aWFsaXppbmdPYmplY3RDbGFzczsKICNlbmRpZgorICAgICAg
ICB2b2lkKiBtX3N0YWNrTGltaXQ7CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAg
ICAgIGJvb2wgbV9pbkRlZmluZU93blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hl
PiBtX2NvZGVDYWNoZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50
cnlTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk1FbnRyeVNjb3BlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCisKKyNpbmNsdWRlICJWTS5oIgor
I2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5kcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworVk1FbnRy
eVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQorICAgIDogbV92bSh2bSkKKyAgICAsIG1fcHJldih2bS5lbnRyeVNjb3BlKQorICAgICwgbV9n
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgICwgbV9zdGFja0JvdW5kcyh2bSwgd3RmVGhy
ZWFkRGF0YSgpLnN0YWNrKCkpCisgICAgLCBtX3ByZXZTdGFja0xpbWl0KHZtLnN0YWNrTGltaXQo
KSkKK3sKKyAgICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKKyNpZiBFTkFCTEUoQVNTRU1CTEUpCisg
ICAgICAgIGlmIChFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkpCisg
ICAgICAgICAgICB2bS5oZWFwLmRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpOworI2VuZGlmCisgICAg
ICAgIHZtLmVudHJ5U2NvcGUgPSB0aGlzOworCisgICAgICAgIC8vIFJlc2V0IHRoZSBkYXRlIGNh
Y2hlIGJldHdlZW4gSlMgaW52b2NhdGlvbnMgdG8gZm9yY2UgdGhlIFZNIHRvCisgICAgICAgIC8v
IG9ic2VydmUgdGltZSB4b25lIGNoYW5nZXMuCisgICAgICAgIHZtLnJlc2V0RGF0ZUNhY2hlKCk7
CisgICAgfQorICAgIC8vIENsZWFyIHRoZSBleGNlcHRpb24gc3RhY2sgYmV0d2VlbiBlbnRyaWVz
CisgICAgdm0uY2xlYXJFeGNlcHRpb25TdGFjaygpOworCisgICAgLy8gRklYTUU6IFdlIGN1cnJl
bnQgdW5jb25kaXRpb25hbGx5IGRpc2FibGUgdGhpcyBzZXR0aW5nIG9mIHRoZSBzdGFjayBsaW1p
dC4KKyAgICAvLyBXaGVuIHdlIGFkb3B0IHRoZSBuYXRpdmUgQyBzdGFjayBmb3IgSlMgZXhlY3V0
aW9uLCB0aGUgZm9sbG93aW5nIG5lZWRzCisgICAgLy8gdG8gYmUgY2hhbmdlZCB0byBiZSBjb25k
aXRpb25hbCBvbiAhRU5BQkxFKExMSU5UX0NMT09QKSBvbmx5LCBhbmQgZG8gdGhlCisgICAgLy8g
c2FtZSBpbiB0aGUgZGVzdHJ1Y3RvciBiZWxvdy4KKyNpZiAhRU5BQkxFKExMSU5UX0NMT09QKSAm
JiAwCisgICAgdm0uc2V0U3RhY2tMaW1pdChtX3N0YWNrQm91bmRzLnN0YWNrTGltaXQoKSk7Cisj
ZW5kaWYKK30KKworVk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3BlKCkKK3sKKyAgICBtX3ZtLmVu
dHJ5U2NvcGUgPSBtX3ByZXY7CisjaWYgIUVOQUJMRShMTElOVF9DTE9PUCkgJiYgMAorICAgIG1f
dm0uc2V0U3RhY2tMaW1pdChtX3ByZXZTdGFja0xpbWl0KTsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1F
bnRyeVNjb3BlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVk1FbnRyeVNj
b3BlX2gKKyNkZWZpbmUgVk1FbnRyeVNjb3BlX2gKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiVk1TdGFja0JvdW5kcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFZNOwor
CitjbGFzcyBWTUVudHJ5U2NvcGUgeworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIFZN
RW50cnlTY29wZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
flZNRW50cnlTY29wZSgpOworCisgICAgYm9vbCBoYXNFbm91Z2hTdGFja1RvRW50ZXJWTSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhY2tCb3VuZHMuaXNTYWZlVG9SZWN1cnNlKCk7IH0KKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7
IH0KKworcHJpdmF0ZToKKyAgICBWTSYgbV92bTsKKyAgICBWTUVudHJ5U2NvcGUqIG1fcHJldjsK
KyAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CisgICAgU3RhY2tTdGF0czo6Q2hl
Y2tQb2ludCBtX3N0YWNrQ2hlY2tQb2ludDsKKyAgICBWTVN0YWNrQm91bmRzIG1fc3RhY2tCb3Vu
ZHM7CisgICAgdm9pZCogbV9wcmV2U3RhY2tMaW1pdDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gVk1FbnRyeVNjb3BlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk1TdGFja0JvdW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNU3RhY2tCb3VuZHMuaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1TdGFja0JvdW5kcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw5ICszNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAg
LCBtX2JvdW5kcyhib3VuZHMpCiAgICAgeworICAgICAgICBtX3JlcXVpcmVkQ2FwYWNpdHkgPSBy
ZXF1aXJlZENhcGFjaXR5KCk7CiAgICAgfQogCi0gICAgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSBj
b25zdCB7IHJldHVybiBtX2JvdW5kcy5pc1NhZmVUb1JlY3Vyc2UocmVxdWlyZWRDYXBhY2l0eSgp
KTsgfQorICAgIGJvb2wgaXNTYWZlVG9SZWN1cnNlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHMu
aXNTYWZlVG9SZWN1cnNlKG1fcmVxdWlyZWRDYXBhY2l0eSk7IH0KKyAgICB2b2lkKiBzdGFja0xp
bWl0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHMucmVjdXJzaW9uTGltaXQobV9yZXF1aXJlZENh
cGFjaXR5KTsgfQogCiBwcml2YXRlOgogICAgIGlubGluZSBzaXplX3QgcmVxdWlyZWRDYXBhY2l0
eSgpIGNvbnN0CkBAIC02Myw2ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICBWTSYgbV92bTsKICAg
ICBjb25zdCBTdGFja0JvdW5kcyYgbV9ib3VuZHM7CisgICAgc2l6ZV90IG1fcmVxdWlyZWRDYXBh
Y2l0eTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTU0NCkK
KysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTMtMTEtMTkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIElu
dHJvZHVjaW5nIFZNRW50cnlTY29wZSB0byB1cGRhdGUgdGhlIFZNIHN0YWNrIGxpbWl0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjM0LgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1N0YWNr
Qm91bmRzLmg6CisgICAgICAgIChXVEY6OlN0YWNrQm91bmRzOjpyZWN1cnNpb25MaW1pdCk6Cisg
ICAgICAgIC0gbWFkZSB0aGlzIGZ1bmN0aW9uIHB1YmxpYyBzbyB0aGF0IGl0IGNhbiBiZSB1c2Vk
IGJ5IEpTQyBmb3IgSklUIHN0YWNrCisgICAgICAgICAgY2hlY2tzIGxhdGVyLiAKKwogMjAxMy0x
MS0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRo
ZSBGVEwgZGVidWcgZHVtcHMgdG8gaW5jbHVkZSB0aGUgbmV3IHNpemUgZmllbGQKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
U3RhY2tCb3VuZHMuaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dURi93dGYvU3RhY2tC
b3VuZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fb3JpZ2luKTsKICAgICB9CiAKKyAgICB2b2lkKiByZWN1cnNpb25MaW1pdChzaXplX3QgbWlu
QXZhaWxhYmxlRGVsdGEgPSBzX2RlZmF1bHRBdmFpbGFiaWxpdHlEZWx0YSkgY29uc3QKKyAgICB7
CisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICAgICAgaWYgKGlzR3Jvd2luZ0Rvd253
YXJkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpICsg
bWluQXZhaWxhYmxlRGVsdGE7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9i
b3VuZCkgLSBtaW5BdmFpbGFibGVEZWx0YTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgU3RhY2tC
b3VuZHMoKQogICAgICAgICA6IG1fb3JpZ2luKDApCkBAIC04NiwxNCArOTQsNiBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogICAgIH0KIAotICAgIHZvaWQqIHJl
Y3Vyc2lvbkxpbWl0KHNpemVfdCBtaW5BdmFpbGFibGVEZWx0YSA9IHNfZGVmYXVsdEF2YWlsYWJp
bGl0eURlbHRhKSBjb25zdAotICAgIHsKLSAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAg
ICAgICBpZiAoaXNHcm93aW5nRG93bndhcmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjaGFyKj4obV9ib3VuZCkgKyBtaW5BdmFpbGFibGVEZWx0YTsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNoYXIqPihtX2JvdW5kKSAtIG1pbkF2YWlsYWJsZURlbHRhOwotICAgIH0K
LQogICAgIGJvb2wgaXNHcm93aW5nRG93bndhcmQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fb3JpZ2luICYmIG1fYm91bmQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTQ0
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NTcgQEAKKzIwMTMtMTEtMTkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAg
ICAgIEludHJvZHVjaW5nIFZNRW50cnlTY29wZSB0byB1cGRhdGUgdGhlIFZNIHN0YWNrIGxpbWl0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjM0
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4KKworICAgICAgICAxLiBUaGUgVk1FbnRyeVNjb3BlIGNsYXNzIHN1YnN1bWVzIER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZS4gSXQgYWxzbworICAgICAgICAgICBjb21wdXRlcyB0aGUg
Y3VycmVudCBzdGFjayBib3VuZHMgYW5kIHNldHMgdGhlIHN0YWNrIGxpbWl0IGluIHRoZSBWTS4K
KworICAgICAgICAgICBGb3Igbm93LCB0aGUgc2V0dGluZyBvZiB0aGUgc3RhY2sgbGltaXQgaXMg
ZGlzYWJsZWQgdW50aWwgd2Ugc3dpdGNoCisgICAgICAgICAgIHRvIHVzaW5nIHRoZSBDIHN0YWNr
IGZvciBKUyBDYWxsRnJhbWVzLgorCisgICAgICAgIDIuIFJlbmFtZWQgZHluYW1pY0dsb2JhbE9i
amVjdCgpIHRvIHZtRW50cnlHbG9iYWxPYmplY3QoKSBzaW5jZSB0aGF0IGlzCisgICAgICAgICAg
IHRoZSB2YWx1ZSB0aGF0IHRoZSBmdW5jdGlvbiByZXRyaWV2ZXMuCisKKyAgICAgICAgMy4gQ2hh
bmdlZCBKSVQgYW5kIExMSU5UIGNvZGUgdG8gZG8gc3RhY2sgY2hlY2tzIGFnYWluc3QgdGhlIHN0
YWNrIGxpbWl0CisgICAgICAgICAgIGluIHRoZSBWTSBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBKU1N0
YWNrLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9WTUVudHJ5U2NvcGUu
aDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1
c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RET01XaW5kb3cpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
RXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZEV4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgICogYnJpZGdlL2Mv
Y191dGlsaXR5LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvTlBW
YXJpYW50KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAg
ICAoT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OmNvbnZlcnRWYWx1ZVRvT2JqY09iamVjdCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY191
dGlsaXR5Lm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9PYmpjVmFs
dWUpOgorCiAyMDEzLTExLTE5ICBTZW9ranUgS3dvbiAgPHNlb2tqdUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlbW92YWwgb2YgcmVkdW5kYW50IGZ1bmN0aW9uIGNhbGwgaW4gRWRpdG9yOjppbnNl
cnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0RXZlbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVf
RldEX1ZNRW50cnlTY29wZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1ZNRW50cnlTY29wZV9oCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk1FbnRyeVNjb3BlLmg+CisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNp
b24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg1NzgsNiArMTg1NzgsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxKU0V4cG9ydE1hY3Jvcy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGlt
ZVxKU0Z1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5n
SGVhZGVyc1xydW50aW1lXFZNLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3
YXJkaW5nSGVhZGVyc1xydW50aW1lXFZNRW50cnlTY29wZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxKU0dsb2JhbE9iamVjdC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxK
U1Byb3h5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVy
c1xydW50aW1lXEpTV2l0aFNjb3BlLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAx
NTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTEyNjQ2LDYgKzEyNjQ2LDkgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcVk0uaCI+CiAgICAg
ICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRp
bWVcVk1FbnRyeVNjb3BlLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xydW50
aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEpTR2xvYmFsT2JqZWN0LmgiPgogICAgICAgPEZp
bHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
QWxnb3JpdGhtQnVpbGRlci5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDcgKzcxLDggQEAgdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25z
dAogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
JnZtLCBrZXkpOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBhcnJheVZpZXcgPSBVaW50OEFycmF5
OjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgbV9kaWN0aW9uYXJ5
LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGFycmF5Vmlldy0+d3JhcChtX2V4ZWMsIHZtLmR5
bmFtaWNHbG9iYWxPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZW50cnlTY29wZSk7CisgICAgbV9k
aWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGFycmF5Vmlldy0+d3JhcChtX2V4
ZWMsIHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIHZvaWQgSlNDcnlwdG9B
bGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCBjb25zdCBDcnlwdG9BbGdvcml0
aG1EZXNjcmlwdGlvbkJ1aWxkZXImIG5lc3RlZEJ1aWxkZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCShy
ZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAxMyBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGUuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZUlubGluZXMuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIApAQCAt
NTIsNyArNTMsNyBAQCBQYXNzUmVmUHRyPEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyPiBKU0N1CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXIoZXhlYywgcmVzb2x2ZXJPYmplY3QsIGFzSlNET01XaW5kb3coZXhl
Yy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIoZXhlYywgcmVzb2x2ZXJPYmplY3QsIGFzSlNET01XaW5kb3co
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKSkpOwogfQogCiBKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
Y3VzdG9tUmVzb2x2ZXIsIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDE1OTUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4K
ICAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTWljaGFlbCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4K
ICAqCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lSW5saW5lcy5oPgogI2luY2x1ZGUg
PGludGVycHJldGVyL0ludGVycHJldGVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFu
Y2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC00OTQsNyArNDk1LDcgQEAgRE9N
V2luZG93JiBhY3RpdmVET01XaW5kb3coRXhlY1N0YXRlKiBleAogCiBET01XaW5kb3cmIGZpcnN0
RE9NV2luZG93KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhl
eGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7CisgICAgcmV0dXJuIGFzSlNET01X
aW5kb3coZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgY2FuQWNjZXNzRG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEb2N1
bWVudCogdGFyZ2V0RG9jdW1lbnQsIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uIHJlcG9ydGluZ09w
dGlvbiA9IFJlcG9ydFNlY3VyaXR5RXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzks
NiArNDAsNyBAQAogI2luY2x1ZGUgIkpTRXZlbnQuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRF
eGVjU3RhdGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvVk1FbnRyeVNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwpAQCAtOTQsNyArOTYsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVu
dChTY3JpcHRFCiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGVycm9yRXZlbnQtPmNvbG5v
KCkpKTsKIAogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgIER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSh2bSwgdm0uZHluYW1pY0ds
b2JhbE9iamVjdCA/IHZtLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOworICAg
ICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5
U2NvcGUtPmdsb2JhbE9iamVjdCgpIDogZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBKU1ZhbHVl
IHJldHVyblZhbHVlID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpCiAgICAg
ICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJncykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMTU5NTI1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBl
dGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNRW50cnlTY29wZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAKQEAg
LTEyMyw3ICsxMjQsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0
CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KGV2ZW50KTsKIAogICAgICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgIER5bmFtaWNHbG9iYWxPYmpl
Y3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSh2bSwgdm0uZHluYW1pY0dsb2JhbE9iamVjdCA/IHZt
LmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOworICAgICAgICBWTUVudHJ5U2Nv
cGUgZW50cnlTY29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9i
amVjdCgpIDogZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rp
b25DYWxsKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1l
LmgJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxs
RnJhbWUtPmZ1bmN0aW9uTmFtZSgpOyB9CiAgICAgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+dHlwZSgpOyB9CiAg
ICAgSlNDOjpKU1Njb3BlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNh
bGxGcmFtZS0+c2NvcGUoKTsgfQotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9i
YWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZyYW1lLT5keW5hbWljR2xv
YmFsT2JqZWN0KCk7IH0KKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9i
amVjdCgpOyB9CiAKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9kZWJ1Z2dlckNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7IH0KICAgICBKU0M6OkpTVmFsdWUgZXZh
bHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6SlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25z
dCAgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGUoc2NyaXB0LCBleGNlcHRp
b24pOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTE1
LDcgKzExNiw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGwKIHsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSk7CiAgICAgLy8g
SWYgSmF2YVNjcmlwdCBzdGFjayBpcyBub3QgZW1wdHkgcG9zdHBvbmUgcmVjb21waWxhdGlvbi4K
LSAgICBpZiAoSlNET01XaW5kb3c6OmNvbW1vblZNKCktPmR5bmFtaWNHbG9iYWxPYmplY3QpCisg
ICAgaWYgKEpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5lbnRyeVNjb3BlKQogICAgICAgICByZWNv
bXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICBlbHNlCiAgICAgICAgIERlYnVnZ2VyOjpy
ZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShy
ZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaQogICAgIERlYnVnZ2VyQ2FsbEZyYW1lKiBkZWJ1
Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwogICAgIHN3aXRjaCAo
YnJlYWtwb2ludEFjdGlvbi50eXBlKSB7CiAgICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9u
VHlwZUxvZzogewotICAgICAgICBET01XaW5kb3cmIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZGVi
dWdnZXJDYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAgICAgICAg
RE9NV2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGRlYnVnZ2VyQ2FsbEZyYW1lLT52bUVu
dHJ5R2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7CiAgICAgICAgIGlmIChQYWdlQ29uc29sZSogY29u
c29sZSA9IHdpbmRvdy5wYWdlQ29uc29sZSgpKQogICAgICAgICAgICAgY29uc29sZS0+YWRkTWVz
c2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgYnJlYWtwb2ludEFjdGlvbi5k
YXRhKTsKICAgICAgICAgYnJlYWs7CkBAIC0yODgsMTAgKzI4OCwxMCBAQCB2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpoYW5kbGVFeGNlcHRpb25JCiAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4
Y2VwdGlvbik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVBhdXNlKERlYnVn
Z2VyOjpSZWFzb25Gb3JQYXVzZSwgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3Qp
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZShEZWJ1Z2dlcjo6UmVhc29uRm9y
UGF1c2UsIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0KQogewotICAgIGRpc3Bh
dGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1
c2UsIGR5bmFtaWNHbG9iYWxPYmplY3QpOwotICAgIGRpZFBhdXNlKGR5bmFtaWNHbG9iYWxPYmpl
Y3QpOworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6
OmRpc3BhdGNoRGlkUGF1c2UsIHZtRW50cnlHbG9iYWxPYmplY3QpOworICAgIGRpZFBhdXNlKHZt
RW50cnlHbG9iYWxPYmplY3QpOwogCiAgICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRF
dmVudExvb3AoKTsKIApAQCAtMzAwLDkgKzMwMCwxMCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpoYW5kbGVQYXVzZShEZWJ1CiAgICAgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKICAgICBt
X3J1bm5pbmdOZXN0ZWRNZXNzYWdlTG9vcCA9IGZhbHNlOwogCi0gICAgZGlkQ29udGludWUoZHlu
YW1pY0dsb2JhbE9iamVjdCk7Ci0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCZTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwgZHluYW1pY0dsb2JhbE9iamVjdCk7
CisgICAgZGlkQ29udGludWUodm1FbnRyeUdsb2JhbE9iamVjdCk7CisgICAgZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwg
dm1FbnRyeUdsb2JhbE9iamVjdCk7CiB9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zU29vbigpCiB7CiAgICAgbV9yZWNvbXBpbGVUaW1lci5zdGFydE9u
ZVNob3QoMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cmVj
b21waWxlQQogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgLy8gSWYgSmF2
YVNjcmlwdCBzdGFjayBpcyBub3QgZW1wdHkgcG9zdHBvbmUgcmVjb21waWxhdGlvbi4KLSAgICBp
ZiAodm0tPmR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAgaWYgKHZtLT5lbnRyeVNjb3BlKQogICAg
ICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICBlbHNlCiAgICAgICAgIEpT
Qzo6RGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKHZtKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCShyZXZpc2lvbiAx
NTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQs
NyArNDQsNyBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0SW50ZXJuYWwuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTVmFsdWVJbnRlcm5hbC5oPgotI2ltcG9ydCA8aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg+
CisjaW1wb3J0IDxpbnRlcnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmg+CiAjaW1wb3J0IDxydW50
aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CkBAIC0xMjQsNyArMTI0LDcgQEAgaWQg
Y3JlYXRlSlNXcmFwcGVyKEpTQzo6SlNPYmplY3QqIG9iamVjdAogCiBzdGF0aWMgdm9pZCBhZGRF
eGNlcHRpb25Ub0NvbnNvbGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTRE9NV2luZG93KiB3
aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CisgICAg
SlNET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZXhlYy0+dm1FbnRyeUdsb2JhbE9i
amVjdCgpKTsKICAgICBpZiAoIXdpbmRvdyB8fCAhZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwg
MjAxMyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCIK
ICNpbmNsdWRlICJydW50aW1lX29iamVjdC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgor
I2luY2x1ZGUgPGludGVycHJldGVyL0NhbGxGcmFtZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC05NCw3
ICs5NSw3IEBAIHZvaWQgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoRXhlY1N0YXRlKiAKICAgICAg
ICAgICAgICAgICBPQkpFQ1RfVE9fTlBWQVJJQU5UKG9iaiwgKnJlc3VsdCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAog
ICAgICAgICAgICAgUm9vdE9iamVjdCogcm9vdE9iamVjdCA9IGZpbmRSb290T2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgICAgICBpZiAocm9vdE9iamVjdCkgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiAxNTk1MjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJKU0RP
TUJpbmRpbmcuaCIKICNpbXBvcnQgIk9iakNSdW50aW1lT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWJT
Y3JpcHRPYmplY3QuaCIKKyNpbXBvcnQgPGludGVycHJldGVyL0NhbGxGcmFtZUlubGluZXMuaD4K
ICNpbXBvcnQgPG9iamMvb2JqYy1hdXRvLmg+CiAjaW1wb3J0IDxydW50aW1lL0Vycm9yLmg+CiAj
aW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgpAQCAtOTIsNyArOTMsNyBAQCB2b2lkIE9iamNJbnN0
YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9
PSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpIHsKKyAgICBpZiAoIXNfZXhjZXB0aW9uRW52
aXJvbm1lbnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCkpIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgc19leGNlcHRpb24pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIm9iamNfaW5zdGFuY2UuaCIKICNpbmNs
dWRlICJydW50aW1lX2FycmF5LmgiCiAjaW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIKKyNpbmNs
dWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTTG9jay5oPgpAQCAtMTEzLDcgKzExNCw3IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2
YWx1ZUZyb21JbnN0YW5jZShFeGUKIAogc3RhdGljIGlkIGNvbnZlcnRWYWx1ZVRvT2JqY09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPFJvb3RPYmpl
Y3Q+IHJvb3RPYmplY3QgPSBmaW5kUm9vdE9iamVjdChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0
KCkpOworICAgIFJlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0ID0gZmluZFJvb3RPYmplY3Qo
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFt3ZWJTY3JpcHRPYmplY3RDbGFzcygpIF9jb252
ZXJ0VmFsdWVUb09iamNWYWx1ZTp2YWx1ZSBvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3QuZ2V0
KCkgcm9vdE9iamVjdDpyb290T2JqZWN0LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMTMgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJydW50aW1lX2FycmF5Lmgi
CiAjaW5jbHVkZSAicnVudGltZV9vYmplY3QuaCIKICNpbmNsdWRlICJXZWJTY3JpcHRPYmplY3Qu
aCIKKyNpbmNsdWRlIDxpbnRlcnByZXRlci9DYWxsRnJhbWVJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTg4LDcgKzg5LDcgQEAgT2JqY1ZhbHVlIGNv
bnZlcnRWYWx1ZVRvT2JqY1ZhbHVlKEV4ZWNTdAogICAgICAgICBjYXNlIE9iamNPYmplY3RUeXBl
OiB7CiAgICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QgKm9yaWdpbkdsb2JhbE9iamVjdCA9IGV4ZWMtPmR5
bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0ICpvcmlnaW5H
bG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICBS
b290T2JqZWN0KiBvcmlnaW5Sb290T2JqZWN0ID0gZmluZFJvb3RPYmplY3Qob3JpZ2luR2xvYmFs
T2JqZWN0KTsKIAogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTk1NDQpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0x
OSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcg
Vk1FbnRyeVNjb3BlIHRvIHVwZGF0ZSB0aGUgVk0gc3RhY2sgbGltaXQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MzQuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZCk6CisK
IDIwMTMtMTEtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTk0NTUuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0JKHJldmlzaW9uIDE1OTUy
NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYkZyYW1lSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldlYlNjcmlwdERlYnVnRGVsZWdhdGUuaCIKICNpbXBvcnQgIldlYlZpZXdJ
bnRlcm5hbC5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lSW5saW5lcy5oPgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXJDYWxsRnJhbWUuaD4KICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9T
b3VyY2VQcm92aWRlci5oPgpAQCAtOTIsNyArOTMsNyBAQCB2b2lkIFdlYlNjcmlwdERlYnVnZ2Vy
Ojpzb3VyY2VQYXJzZWQoRXhlCiAgICAgTlNVUkwgKm5zVVJMID0gdG9OU1VSTChzb3VyY2VQcm92
aWRlci0+dXJsKCkpOwogICAgIGludCBmaXJzdExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQ
b3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOwogCi0gICAgV2ViRnJhbWUgKndlYkZyYW1l
ID0gdG9XZWJGcmFtZShleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAgIFdlYkZyYW1l
ICp3ZWJGcmFtZSA9IHRvV2ViRnJhbWUoZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKTsKICAg
ICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwogICAgIFdlYlNjcmlwdERl
YnVnRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0U2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKIAo=
</data>
<flag name="review"
          id="240503"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="240507"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217399</attachid>
            <date>2013-11-20 00:49:39 -0800</date>
            <delta_ts>2013-11-20 01:29:19 -0800</delta_ts>
            <desc>patch 2: fixed release build.</desc>
            <filename>bug-124634.patch</filename>
            <type>text/plain</type>
            <size>74460</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBA
CisyMDEzLTExLTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2luZyBWTUVudHJ5U2NvcGUgdG8gdXBkYXRlIHRoZSBWTSBzdGFjayBsaW1pdC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDYzNC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBUaGUgVk1F
bnRyeVNjb3BlIGNsYXNzIHN1YnN1bWVzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZS4gSXQgYWxz
bworICAgICAgICAgICBjb21wdXRlcyB0aGUgY3VycmVudCBzdGFjayBib3VuZHMgYW5kIHNldHMg
dGhlIHN0YWNrIGxpbWl0IGluIHRoZSBWTS4KKworICAgICAgICAgICBGb3Igbm93LCB0aGUgc2V0
dGluZyBvZiB0aGUgc3RhY2sgbGltaXQgaXMgZGlzYWJsZWQgdW50aWwgd2Ugc3dpdGNoCisgICAg
ICAgICAgIHRvIHVzaW5nIHRoZSBDIHN0YWNrIGZvciBKUyBDYWxsRnJhbWVzLgorCisgICAgICAg
IDIuIFJlbmFtZWQgZHluYW1pY0dsb2JhbE9iamVjdCgpIHRvIHZtRW50cnlHbG9iYWxPYmplY3Qo
KSBzaW5jZSB0aGF0IGlzCisgICAgICAgICAgIHRoZSB2YWx1ZSB0aGF0IHRoZSBmdW5jdGlvbiBy
ZXRyaWV2ZXMuCisKKyAgICAgICAgMy4gQ2hhbmdlZCBKSVQgYW5kIExMSU5UIGNvZGUgdG8gZG8g
c3RhY2sgY2hlY2tzIGFnYWluc3QgdGhlIHN0YWNrIGxpbWl0CisgICAgICAgICAgIGluIHRoZSBW
TSBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBKU1N0YWNrLgorCisgICAgICAgICogQVBJL0pTQmFzZS5j
cHA6CisgICAgICAgIChKU0V2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKEpTQ2hlY2tTY3JpcHRT
eW50YXgpOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNHbG9i
YWxDb250ZXh0UmV0YWluKToKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6ZGV0YWNoKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnBhdXNlSWZOZWVkZWQpOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGRlYnVnZ2VyL0Rl
YnVnZ2VyQ2FsbEZyYW1lLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICog
aGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUp
OgorICAgICAgICAoSlNDOjpIZWFwOjpkZWxldGVBbGxDb21waWxlZENvZGUpOgorICAgICAgICAq
IGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2FsbDo6Q2Fj
aGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjp1bndpbmQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlQ2FsbCk6CisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpleGVjdXRlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnBy
ZXBhcmVGb3JSZXBlYXRDYWxsKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGFj
azo6SlNTdGFjayk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6Omdyb3dTbG93Q2FzZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSlNTdGFjay5oOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpzaHJp
bmspOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTU3RhY2s6OnVwZGF0ZVN0YWNrTGltaXQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAg
KiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlTG9hZFZh
cmFyZ3MpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpj
b25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgor
ICAgICAgICAoSlNDOjpWTTo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAoSlND
OjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KEpTQzo6Vk06OmFkZHJlc3NPZlN0YWNrTGltaXQpOgorICAgICAgICAoSlNDOjpWTTo6c3RhY2tM
aW1pdCk6CisgICAgICAgIChKU0M6OlZNOjpzZXRTdGFja0xpbWl0KToKKyAgICAgICAgKiBydW50
aW1lL1ZNRW50cnlTY29wZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6
OlZNRW50cnlTY29wZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6flZNRW50cnlTY29w
ZSk6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlZNRW50cnlTY29wZTo6aGFzRW5vdWdoU3RhY2tUb0VudGVyVk0pOgorICAgICAgICAoSlND
OjpWTUVudHJ5U2NvcGU6Omdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9WTVN0YWNr
Qm91bmRzLmg6CisgICAgICAgIChKU0M6OlZNU3RhY2tCb3VuZHM6OlZNU3RhY2tCb3VuZHMpOgor
ICAgICAgICAoSlNDOjpWTVN0YWNrQm91bmRzOjppc1NhZmVUb1JlY3Vyc2UpOgorICAgICAgICAo
SlNDOjpWTVN0YWNrQm91bmRzOjpzdGFja0xpbWl0KToKKwogMjAxMy0xMS0xOSAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFbmFibGUgSFRNTFRlbXBsYXRlRWxl
bWVudCBvbiBNYWMgcG9ydApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogICAgIHJ1bnRpbWUv
VHlwZWRBcnJheVR5cGUuY3BwCiAgICAgcnVudGltZS9WTS5jcHAKKyAgICBydW50aW1lL1ZNRW50
cnlTY29wZS5jcHAKICAgICBydW50aW1lL1dhdGNoZG9nLmNwcAogICAgIHJ1bnRpbWUvV2F0Y2hk
b2dOb25lLmNwcAogICAgIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1OTUyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNv
cHkpCkBAIC05MTMsNiArOTEzLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3Rvci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlz
aW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNyArNTQsNyBAQCBKU1ZhbHVlUmVmIEpTRXZhbHVh
dGVTY3JpcHQoSlNDb250ZXh0UmVmCiAgICAgSlNPYmplY3QqIGpzVGhpc09iamVjdCA9IHRvSlMo
dGhpc09iamVjdCk7CiAKICAgICAvLyBldmFsdWF0ZSBzZXRzICJ0aGlzIiB0byB0aGUgZ2xvYmFs
IG9iamVjdCBpZiBpdCBpcyBOVUxMCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwogICAgIFNvdXJjZUNvZGUgc291
cmNlID0gbWFrZVNvdXJjZShzY3JpcHQtPnN0cmluZygpLCBzb3VyY2VVUkwtPnN0cmluZygpLCBU
ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51
bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpKTsKIAogICAgIEpTVmFsdWUgZXZhbHVhdGlv
bkV4Y2VwdGlvbjsKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBKU0NoZWNrU2NyaXB0U3ludGF4KEpT
Q29udGV4dFJlZiBjdAogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShzY3JpcHQt
PnN0cmluZygpLCBzb3VyY2VVUkwtPnN0cmluZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJl
cjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZp
cnN0KCkpKTsKICAgICAKICAgICBKU1ZhbHVlIHN5bnRheEV4Y2VwdGlvbjsKLSAgICBib29sIGlz
VmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsKKyAgICBib29sIGlzVmFsaWRT
eW50YXggPSBjaGVja1N5bnRheChleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsKIAogICAgIGlmICghaXNWYWxpZFN5bnRh
eCkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNDgsNyArMTQ4LDcgQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dFJldGFp
bgogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwotICAgIGdjUHJvdGVjdChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAg
IGdjUHJvdGVjdChleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpOwogICAgIHZtLnJlZigpOwog
ICAgIHJldHVybiBjdHg7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBKU0dsb2JhbENvbnRl
eHRSZWxlYXNlKEpTR2xvYmFsQ29udAogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
ICAgICBzYXZlZElkZW50aWZpZXJUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRl
bnRpZmllclRhYmxlKHZtLmlkZW50aWZpZXJUYWJsZSk7CiAKLSAgICAgICAgYm9vbCBwcm90ZWN0
Q291bnRJc1plcm8gPSBIZWFwOjpoZWFwKGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPnVu
cHJvdGVjdChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAgICAgICBib29sIHByb3Rl
Y3RDb3VudElzWmVybyA9IEhlYXA6OmhlYXAoZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+
dW5wcm90ZWN0KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIGlmIChwcm90
ZWN0Q291bnRJc1plcm8pCiAgICAgICAgICAgICB2bS5oZWFwLnJlcG9ydEFiYW5kb25lZE9iamVj
dEdyYXBoKCk7CiAgICAgICAgIHZtLmRlcmVmKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTY2Miw2ICs2NjIsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxUeXBlZEFycmF5Q29udHJvbGxlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXFR5cGVkQXJyYXlUeXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxWTUVudHJ5U2NvcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxXYXRjaGRvZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXFdhdGNoZG9nTm9uZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXFdlYWtNYXBDb25zdHJ1Y3Rvci5jcHAiIC8+CkBAIC0xMjg5LDYgKzEyOTAsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50MzJBcnJheS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxVaW50OEFycmF5LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFZNRW50cnlTY29wZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxXYXRjaGRvZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxXZWFrR0NNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
V2Vha01hcENvbnN0cnVjdG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTgwMSw2ICs4MDEsOSBAQAogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFZNRW50cnlTY29wZS5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcU291
cmNlQ29kZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KQEAgLTI0MTgsNiArMjQyMSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFZNLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNRW50cnlTY29wZS5o
Ij4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmNwcCI+CiAgICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1OTUyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM4LDYgKzEyMzgsOCBAQAogCQlGRTIwQ0U5RTE1
RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xv
b3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTRBMzMxRjE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QTMzMUQxNUJEMkUwNzAwNkY1NEYz
IC8qIFZNSW5zcGVjdG9yLmNwcCAqLzsgfTsKIAkJRkU0QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8q
IFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTU5MzJBNzE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuY3BwICovOyB9OworCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJB
NjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2NjE3MjgxNzc0RTAzNTAwNDk1QjAwIC8q
IFZNU3RhY2tCb3VuZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFNjYxNzI3MTc3NEUwMzUwMDQ5NUIwMCAvKiBWTVN0YWNrQm91bmRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVBMDg2MjAxODJC
N0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVB
MDg2MjExODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUYxODJCN0EwNDAwRjZE
ODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yNTY2LDYgKzI1NjgsOCBAQAogCQlGRTIwQ0U5QzE1RjA0
QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludENMb29wLmg7IHBhdGggPSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFNEEzMzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTUluc3BlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNEEzMzFFMTVCRDJFMDcwMDZGNTRG
MyAvKiBWTUluc3BlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUlu
c3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTU5MzJBNTE4M0M1QTI2
MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZNRW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFNjYxNzI3MTc3NEUwMzUwMDQ5NUIwMCAvKiBWTVN0YWNrQm91bmRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNU3RhY2tCb3VuZHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtwb2ludC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEwODYxRjE4MkI3QTA0MDBGNkQ4NTEgLyogRGVi
dWdnZXJQcmltaXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVn
Z2VyUHJpbWl0aXZlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMxNiw2ICsz
MzIwLDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNTkzMkE1MTgzQzVBMjYw
MEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwICovLAorCQkJCUZFNTkzMkE2MTgzQzVBMjYwMEEx
RUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQg
LyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xp
c3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAq
LywKQEAgLTQxNzcsNiArNDE4Myw3IEBACiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8q
IEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTU5MzJB
ODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVyU2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0JGRjNDMDE3OTg2ODk0MDAwMkY0NjIgLyogREZHRmlsdHJhdGlvblJlc3VsdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2Rl
QmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC01NTY2LDYgKzU1NzMsNyBAQAogCQkJCTE0
QkQ1QTMyMEEzRTkxRjYwMEJBRjU5QyAvKiBKU1ZhbHVlUmVmLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ3MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1ZhcmlhYmxlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2RTNDNjFDMTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNo
aW5lLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZN
RW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0NBM0FFNzE3REE0MUFFMDA2NTM4
QUYgLyogSlNXZWFrTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NDgyQjk0MTE2NzExNDcw
MDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0NDI1NjYxMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNw
cAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJQcm90ZWN0LmgiCisj
aW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKIG5hbWVzcGFjZSB7CiAKQEAgLTE3Miw3ICsxNzMs
NyBAQCB2b2lkIERlYnVnZ2VyOjpkZXRhY2goSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgLy8gSWYg
d2UncmUgZGV0YWNoaW5nIGZyb20gdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgZ2xvYmFsIG9iamVj
dCwgbWFudWFsbHkgdGVhciBkb3duIG91cgogICAgIC8vIHN0YWNrLCBzaW5jZSB3ZSB3b24ndCBn
ZXQgZnVydGhlciBkZWJ1Z2dlciBjYWxsYmFja3MgdG8gZG8gc28uIEFsc28sIHJlc3VtZSBleGVj
dXRpb24sCiAgICAgLy8gc2luY2UgdGhlcmUncyBubyBwb2ludCBpbiBzdGF5aW5nIHBhdXNlZCBv
bmNlIGEgd2luZG93IGNsb3Nlcy4KLSAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lICYmIG1fY3Vy
cmVudENhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpID09IGdsb2JhbE9iamVjdCkgewor
ICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgJiYgbV9jdXJyZW50Q2FsbEZyYW1lLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIG1fY3VycmVudENhbGxG
cmFtZSA9IDA7CiAgICAgICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IDA7CiAgICAgICAgIGNvbnRp
bnVlUHJvZ3JhbSgpOwpAQCAtMTkzLDggKzE5NCw4IEBAIHZvaWQgRGVidWdnZXI6OnJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zKFYKIHsKICAgICAvLyBJZiBKYXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0
J3Mgbm90IHNhZmUgdG8gcmVjb21waWxlLCBzaW5jZSB3ZSdsbCBlbmQKICAgICAvLyB1cCB0aHJv
d2luZyBhd2F5IGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRoZSBzdGFjay4KLSAgICBBU1NFUlQoIXZt
LT5keW5hbWljR2xvYmFsT2JqZWN0KTsKLSAgICBpZiAodm0tPmR5bmFtaWNHbG9iYWxPYmplY3Qp
CisgICAgQVNTRVJUKCF2bS0+ZW50cnlTY29wZSk7CisgICAgaWYgKHZtLT5lbnRyeVNjb3BlKQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgdm0tPnByZXBhcmVUb0Rpc2NhcmRDb2RlKCk7CkBA
IC00MzgsOCArNDM5LDggQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZChDYWxsRnJhbWUq
IAogICAgIGlmIChtX2lzUGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0dsb2JhbE9i
amVjdCogZHluYW1pY0dsb2JhbE9iamVjdCA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVj
dCgpOwotICAgIGlmICghbmVlZFBhdXNlSGFuZGxpbmcoZHluYW1pY0dsb2JhbE9iamVjdCkpCisg
ICAgSlNHbG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmplY3QgPSBjYWxsRnJhbWUtPnZtRW50
cnlHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIW5lZWRQYXVzZUhhbmRsaW5nKHZtRW50cnlHbG9i
YWxPYmplY3QpKQogICAgICAgICByZXR1cm47CiAKICAgICBCcmVha3BvaW50IGJyZWFrcG9pbnQ7
CkBAIC00NzAsNyArNDcxLDcgQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZChDYWxsRnJh
bWUqIAogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZVBhdXNlKG1fcmVh
c29uRm9yUGF1c2UsIGR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgIGhhbmRsZVBhdXNlKG1fcmVh
c29uRm9yUGF1c2UsIHZtRW50cnlHbG9iYWxPYmplY3QpOwogCiAgICAgaWYgKCFtX3BhdXNlT25O
ZXh0U3RhdGVtZW50ICYmICFtX3BhdXNlT25DYWxsRnJhbWUpIHsKICAgICAgICAgc2V0U2hvdWxk
UGF1c2UoZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgorI2luY2x1ZGUgIlZNRW50cnlT
Y29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzcsMTIgKzc4LDEyIEBAIFBhc3NSZWZQ
dHI8RGVidWdnZXJDYWxsRnJhbWU+IERlYnVnZ2VyQ2EKICAgICByZXR1cm4gbV9jYWxsZXI7CiB9
CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIERlYnVnZ2VyQ2FsbEZyYW1lOjpkeW5hbWljR2xvYmFs
T2JqZWN0KCkgY29uc3QKK0pTQzo6SlNHbG9iYWxPYmplY3QqIERlYnVnZ2VyQ2FsbEZyYW1lOjp2
bUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKICAg
ICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fY2FsbEZy
YW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIG1fY2FsbEZyYW1lLT52bUVu
dHJ5R2xvYmFsT2JqZWN0KCk7CiB9CiAKIFNvdXJjZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3Vy
Y2VJRCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIGludCBjb2x1bW4oKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOyB9CiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRp
b247IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xv
YmFsT2JqZWN0KCkgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3Qq
IHZtRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1Nj
b3BlKiBzY29wZSgpIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmdW5jdGlv
bk5hbWUoKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDkgKzMzMSw4IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgLy8gc28gZW50ZXIgYWZ0ZXIgdGhpcy4KICAgICBM
YWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKICAgICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3Vm
ZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIEpTU3RhY2suCi0gICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjI5MQogICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jb2RlQmxvY2stPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDEpOwotICAgIEp1bXAgc3RhY2tDaGVjayA9
IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmludGVycHJldGVyLT5zdGFj
aygpLmFkZHJlc3NPZkVuZCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIEp1bXAgc3RhY2tDaGVj
ayA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlN0YWNr
TGltaXQoKSksIEdQUkluZm86OnJlZ1QxKTsKICAgICAvLyBSZXR1cm4gaGVyZSBhZnRlciBzdGFj
ayBjaGVjay4KICAgICBMYWJlbCBmcm9tU3RhY2tDaGVjayA9IGxhYmVsKCk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQs
NyArODQsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wIHN0YWNrQ2hlY2sgPSBqaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBYm92ZSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKHN0
YXRlLmdyYXBoLm1fdm0uaW50ZXJwcmV0ZXItPnN0YWNrKCkuYWRkcmVzc09mRW5kKCkpLAorICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Moc3RhdGUuZ3JhcGgubV92bS5h
ZGRyZXNzT2ZTdGFja0xpbWl0KCkpLAogICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwogICAg
ICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGZyb21TdGFja0NoZWNrID0gaml0LmxhYmVsKCk7CiAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE1
OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTEsNyArMjkxLDcgQEAgYm9vbCBIZWFwOjppc1BhZ2VkT3V0KGRvdWJsZSBkZWFk
bGluZSkKIC8vIFJ1biBhbGwgcGVuZGluZyBmaW5hbGl6ZXJzIG5vdyBiZWNhdXNlIHdlIHdvbid0
IGdldCBhbm90aGVyIGNoYW5jZS4KIHZvaWQgSGVhcDo6bGFzdENoYW5jZVRvRmluYWxpemUoKQog
ewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLT5keW5hbWljR2xvYmFsT2JqZWN0KTsKKyAgICBS
RUxFQVNFX0FTU0VSVCghbV92bS0+ZW50cnlTY29wZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9v
cGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKIAogICAgIG1fb2JqZWN0U3BhY2Uu
bGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTY4OSw3ICs2ODksNyBAQCB2b2lkIEhlYXA6OmRl
bGV0ZUFsbENvbXBpbGVkQ29kZSgpCiB7CiAgICAgLy8gSWYgSmF2YVNjcmlwdCBpcyBydW5uaW5n
LCBpdCdzIG5vdCBzYWZlIHRvIGRlbGV0ZSBjb2RlLCBzaW5jZSB3ZSdsbCBlbmQKICAgICAvLyB1
cCBkZWxldGluZyBjb2RlIHRoYXQgaXMgbGl2ZSBvbiB0aGUgc3RhY2suCi0gICAgaWYgKG1fdm0t
PmR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAgaWYgKG1fdm0tPmVudHJ5U2NvcGUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGZvciAoRXhlY3V0YWJsZUJhc2UqIGN1cnJlbnQgPSBtX2NvbXBpbGVk
Q29kZS5oZWFkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkocmV2
aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hl
ZENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsMTEgQEAKICNkZWZpbmUgQ2FjaGVk
Q2FsbF9oCiAKICNpbmNsdWRlICJDYWxsRnJhbWVDbG9zdXJlLmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiVk1FbnRyeVNj
b3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENhY2hlZENhbGwgewpAQCAtMzgs
MTAgKzQwLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDYWNoZWRDYWxsKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50Q291bnQpCiAg
ICAgICAgICAgICA6IG1fdmFsaWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1faW50ZXJwcmV0ZXIo
Y2FsbEZyYW1lLT5pbnRlcnByZXRlcigpKQotICAgICAgICAgICAgLCBtX2dsb2JhbE9iamVjdFNj
b3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rpb24tPnNjb3BlKCktPmdsb2JhbE9iamVjdCgpKQor
ICAgICAgICAgICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlvbi0+c2Nv
cGUoKS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghZnVu
Y3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRl
cnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBj
YWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCkp
OworICAgICAgICAgICAgaWYgKG1fZW50cnlTY29wZS5oYXNFbm91Z2hTdGFja1RvRW50ZXJWTSgp
KQorICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0ZXItPnByZXBhcmVGb3JS
ZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZyYW1lLCBmdW5jdGlvbiwg
YXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29wZSgpKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAg
ICAgICAgICAgbV92YWxpZCA9ICFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtNjksNyArNzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRl
OgogICAgICAgICBib29sIG1fdmFsaWQ7CiAgICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJl
dGVyOwotICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgbV9nbG9iYWxPYmplY3RTY29w
ZTsKKyAgICAgICAgVk1FbnRyeVNjb3BlIG1fZW50cnlTY29wZTsKICAgICAgICAgQ2FsbEZyYW1l
Q2xvc3VyZSBtX2Nsb3N1cmU7CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgIlZNRW50
cnlTY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTIyLDQgKzEyMywxNSBAQCBSZWdp
c3RlciogQ2FsbEZyYW1lOjpmcmFtZUV4dGVudEludGVybmFsCiAgICAgcmV0dXJuIHJlZ2lzdGVy
cygpICsgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lz
dGVycykub2Zmc2V0KCk7CiB9CiAKK0pTR2xvYmFsT2JqZWN0KiBDYWxsRnJhbWU6OnZtRW50cnlH
bG9iYWxPYmplY3QoKQoreworICAgIGlmICh0aGlzID09IGxleGljYWxHbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpKQorICAgICAgICByZXR1cm4gbGV4aWNhbEdsb2JhbE9iamVjdCgpOworCisg
ICAgLy8gRm9yIGFueSBFeGVjU3RhdGUgdGhhdCdzIG5vdCBhIGdsb2JhbEV4ZWMsIHRoZSAKKyAg
ICAvLyBkeW5hbWljIGdsb2JhbCBvYmplY3QgbXVzdCBiZSBzZXQgc2luY2UgY29kZSBpcyBydW5u
aW5nCisgICAgQVNTRVJUKHZtKCkuZW50cnlTY29wZSk7CisgICAgcmV0dXJuIHZtKCkuZW50cnlT
Y29wZS0+Z2xvYmFsT2JqZWN0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24g
MTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggZXhlY3V0aW9uIGJlZ2Fu
LgotICAgICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpOworICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCogdm1FbnRyeUdsb2JhbE9iamVjdCgp
OwogCiAgICAgICAgIC8vIEdsb2JhbCBvYmplY3QgaW4gd2hpY2ggdGhlIGN1cnJlbnRseSBleGVj
dXRpbmcgY29kZSB3YXMgZGVmaW5lZC4KICAgICAgICAgLy8gRGlmZmVycyBmcm9tIGR5bmFtaWNH
bG9iYWxPYmplY3QoKSBkdXJpbmcgZnVuY3Rpb24gY2FsbHMgYWNyb3NzIHdlYiBicm93c2VyIGZy
YW1lcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYs
NyBAQAogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3Rp
dmF0aW9uLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlZNRW50cnlT
Y29wZS5oIgogI2luY2x1ZGUgIlZNU3RhY2tCb3VuZHMuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVn
aXN0ZXIuaCIKIApAQCAtMzk1LDcgKzM5Niw3IEBAIHN0YXRpYyBib29sIHVud2luZENhbGxGcmFt
ZShTdGFja1Zpc2l0b3IKICAgICBDb2RlQmxvY2sqIG9sZENvZGVCbG9jayA9IGNvZGVCbG9jazsK
ICAgICBKU1Njb3BlKiBzY29wZSA9IGNhbGxGcmFtZS0+c2NvcGUoKTsKIAotICAgIGlmIChEZWJ1
Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdn
ZXIoKSkgeworICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlH
bG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAgICAgICBpZiAoY2FsbEZyYW1lLT5jYWxs
ZWUoKSkKICAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxsRnJhbWUpOwogICAg
ICAgICBlbHNlCkBAIC02NTAsNyArNjUxLDcgQEAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJ
bnRlcnByZXRlcjo6dQogICAgIEFTU0VSVChjYWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uU3RhY2so
KS5zaXplKCkpOwogICAgIEFTU0VSVCghZXhjZXB0aW9uVmFsdWUuaXNPYmplY3QoKSB8fCBhc09i
amVjdChleGNlcHRpb25WYWx1ZSktPmhhc1Byb3BlcnR5KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT52
bSgpLnByb3BlcnR5TmFtZXMtPnN0YWNrKSk7CiAKLSAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBj
YWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKKyAgICBEZWJ1Z2dl
ciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIo
KTsKICAgICBpZiAoZGVidWdnZXIgJiYgZGVidWdnZXItPm5lZWRzRXhjZXB0aW9uQ2FsbGJhY2tz
KCkpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBjbGVhciB0aGUgZXhjZXB0aW9uIGFuZCB0aGUg
ZXhjZXB0aW9uIHN0YWNrIGhlcmUgaW4gb3JkZXIgdG8gc2VlIGlmIGEgbmV3IGV4Y2VwdGlvbiBo
YXBwZW5zLgogICAgICAgICAvLyBBZnRlcndhcmRzLCB0aGUgdmFsdWVzIGFyZSBwdXQgYmFjayB0
byBjb250aW51ZSBwcm9jZXNzaW5nIHRoaXMgZXJyb3IuCkBAIC03MzksMTUgKzc0MCwxNCBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1FeGVjCiAgICAgaWYgKHZtLmlzQ29s
bGVjdG9yQnVzeSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBTdGFja1N0YXRz
OjpDaGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKLSAgICBjb25zdCBWTVN0YWNrQm91bmRzIHZt
U3RhY2tCb3VuZHModm0sIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpKTsKLSAgICBpZiAoIXZtU3Rh
Y2tCb3VuZHMuaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUo
dm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCFlbnRyeVNjb3BlLmhhc0Vub3Vn
aFN0YWNrVG9FbnRlclZNKCkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhl
ICJwcm9ncmFtIiBpcyBhY3R1YWxseSBqdXN0IGEgSlNPTiBvYmplY3QuIElmIHNvLAogICAgIC8v
IHdlJ2xsIGhhbmRsZSB0aGUgSlNPTiBvYmplY3QgaGVyZS4gRWxzZSwgd2UnbGwgaGFuZGxlIHJl
YWwgSlMgY29kZQogICAgIC8vIGJlbG93IGF0IGZhaWxlZEpTT05QLgotICAgIER5bmFtaWNHbG9i
YWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgp
KTsKKwogICAgIFZlY3RvcjxKU09OUERhdGE+IEpTT05QRGF0YTsKICAgICBib29sIHBhcnNlUmVz
dWx0OwogICAgIGNvbnN0IFN0cmluZyBwcm9ncmFtU291cmNlID0gcHJvZ3JhbS0+c291cmNlKCku
dG9TdHJpbmcoKTsKQEAgLTkwMCwxMSArOTAwLDYgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZUNhbGwoQ2FsbEZyYQogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwogCi0gICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNr
UG9pbnQ7Ci0gICAgY29uc3QgVk1TdGFja0JvdW5kcyB2bVN0YWNrQm91bmRzKHZtLCB3dGZUaHJl
YWREYXRhKCkuc3RhY2soKSk7Ci0gICAgaWYgKCF2bVN0YWNrQm91bmRzLmlzU2FmZVRvUmVjdXJz
ZSgpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihjYWxsRnJhbWUpKTsKLQogICAgIGJvb2wgaXNKU0NhbGwgPSAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVKUyk7CiAgICAgSlNTY29wZSogc2NvcGU7CiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7
CkBAIC05MTYsNyArOTExLDEwIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENh
bGxGcmEKICAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCk7CiAgICAgICAg
IHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZSgpOwogICAgIH0KLSAgICBEeW5hbWljR2xvYmFsT2Jq
ZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisK
KyAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsK
KyAgICBpZiAoIWVudHJ5U2NvcGUuaGFzRW5vdWdoU3RhY2tUb0VudGVyVk0oKSkKKyAgICAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7
CiAKICAgICBpZiAoaXNKU0NhbGwpIHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgpA
QCAtOTc4LDExICs5NzYsNiBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1
Y3QoCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQogICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKIAotICAgIFN0YWNr
U3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50OwotICAgIGNvbnN0IFZNU3RhY2tCb3Vu
ZHMgdm1TdGFja0JvdW5kcyh2bSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkpOwotICAgIGlmICgh
dm1TdGFja0JvdW5kcy5pc1NhZmVUb1JlY3Vyc2UoKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7Ci0KICAgICBib29sIGlz
SlNDb25zdHJ1Y3QgPSAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwogICAgIEpT
U2NvcGUqIHNjb3BlOwogICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrOwpAQCAtOTk1LDcgKzk4
OCw5IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAg
c2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7CiAgICAgfQogCi0gICAgRHluYW1pY0dsb2JhbE9i
amVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIGlmICghZW50cnlTY29wZS5oYXNFbm91Z2hTdGFja1RvRW50ZXJWTSgpKQorICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsK
IAogICAgIGlmIChpc0pTQ29uc3RydWN0KSB7CiAgICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxl
ZToKQEAgLTEwNjUsMTMgKzEwNjAsNiBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpw
cmVwYXJlRm9yCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQogICAgICAgICByZXR1cm4g
Q2FsbEZyYW1lQ2xvc3VyZSgpOwogCi0gICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0No
ZWNrUG9pbnQ7Ci0gICAgY29uc3QgVk1TdGFja0JvdW5kcyB2bVN0YWNrQm91bmRzKHZtLCB3dGZU
aHJlYWREYXRhKCkuc3RhY2soKSk7Ci0gICAgaWYgKCF2bVN0YWNrQm91bmRzLmlzU2FmZVRvUmVj
dXJzZSgpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7Ci0g
ICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7Ci0gICAgfQotCiAgICAgLy8gQ29tcGls
ZSB0aGUgY2FsbGVlOgogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
cHJlcGFyZUZvckV4ZWN1dGlvbihjYWxsRnJhbWUsIHNjb3BlLCBDb2RlRm9yQ2FsbCk7CiAgICAg
aWYgKGVycm9yKSB7CkBAIC0xMTY1LDEyICsxMTUzLDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKICAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2Jh
bE9iamVjdFNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwotCi0gICAgU3RhY2tTdGF0
czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7Ci0gICAgY29uc3QgVk1TdGFja0JvdW5kcyB2
bVN0YWNrQm91bmRzKHZtLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKSk7Ci0gICAgaWYgKCF2bVN0
YWNrQm91bmRzLmlzU2FmZVRvUmVjdXJzZSgpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKKyAgICBWTUVudHJ5U2NvcGUg
ZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIWVudHJ5U2Nv
cGUuaGFzRW5vdWdoU3RhY2tUb0VudGVyVk0oKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7ICAgICAgICAKIAogICAgIHVu
c2lnbmVkIG51bVZhcmlhYmxlcyA9IGV2YWwtPm51bVZhcmlhYmxlcygpOwogICAgIGludCBudW1G
dW5jdGlvbnMgPSBldmFsLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsKQEAgLTEyNTEsNyArMTIz
Niw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogTkVWRVJf
SU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1
Z0hvb2tJRCBkZWJ1Z0hvb2tJRCkKIHsKLSAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJh
bWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKKyAgICBEZWJ1Z2dlciogZGVi
dWdnZXIgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAg
ICBpZiAoIWRlYnVnZ2VyIHx8ICFkZWJ1Z2dlci0+bmVlZHNPcERlYnVnQ2FsbGJhY2tzKCkpCiAg
ICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0pTU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCwxMyArNDQsMTQg
QEAgc3RhdGljIE11dGV4JiBzdGFja1N0YXRpc3RpY3NNdXRleCgpCiB9ICAgIAogCiBKU1N0YWNr
OjpKU1N0YWNrKFZNJiB2bSwgc2l6ZV90IGNhcGFjaXR5KQotICAgIDogbV9lbmQoMCkKKyAgICA6
IG1fdm0odm0pCisgICAgLCBtX2VuZCgwKQogICAgICwgbV90b3BDYWxsRnJhbWUodm0udG9wQ2Fs
bEZyYW1lKQogewogICAgIEFTU0VSVChjYXBhY2l0eSAmJiBpc1BhZ2VBbGlnbmVkKGNhcGFjaXR5
KSk7CiAKICAgICBtX3Jlc2VydmF0aW9uID0gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKHJvdW5k
VXBBbGxvY2F0aW9uU2l6ZShjYXBhY2l0eSAqIHNpemVvZihSZWdpc3RlciksIGNvbW1pdFNpemUp
LCBPU0FsbG9jYXRvcjo6SlNWTVN0YWNrUGFnZXMpOwotICAgIG1fZW5kID0gaGlnaEFkZHJlc3Mo
KTsKKyAgICB1cGRhdGVTdGFja0xpbWl0KGhpZ2hBZGRyZXNzKCkpOwogICAgIG1fY29tbWl0RW5k
ID0gaGlnaEFkZHJlc3MoKTsKIAogICAgIGRpc2FibGVFcnJvclN0YWNrUmVzZXJ2ZSgpOwpAQCAt
NzEsNyArNzIsNyBAQCBib29sIEpTU3RhY2s6Omdyb3dTbG93Q2FzZShSZWdpc3RlciogbmV3CiAg
ICAgLy8gSWYgd2UgaGF2ZSBhbHJlYWR5IGNvbW1pdHRlZCBlbm91Z2ggbWVtb3J5IHRvIHNhdGlz
ZnkgdGhpcyByZXF1ZXN0LAogICAgIC8vIGp1c3QgdXBkYXRlIHRoZSBlbmQgcG9pbnRlciBhbmQg
cmV0dXJuLgogICAgIGlmIChuZXdFbmQgPj0gbV9jb21taXRFbmQpIHsKLSAgICAgICAgbV9lbmQg
PSBuZXdFbmQ7CisgICAgICAgIHVwZGF0ZVN0YWNrTGltaXQobmV3RW5kKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCkBAIC04Nyw3ICs4OCw3IEBAIGJvb2wgSlNTdGFjazo6Z3Jvd1Ns
b3dDYXNlKFJlZ2lzdGVyKiBuZXcKICAgICBtX3Jlc2VydmF0aW9uLmNvbW1pdChyZWludGVycHJl
dF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCkgLSBkZWx0YSwgZGVsdGEpOwogICAgIGFkZFRvQ29t
bWl0dGVkQnl0ZUNvdW50KGRlbHRhKTsKICAgICBtX2NvbW1pdEVuZCA9IHJlaW50ZXJwcmV0X2Nh
c3RfcHRyPFJlZ2lzdGVyKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9jb21taXRFbmQpIC0g
ZGVsdGEpOwotICAgIG1fZW5kID0gbmV3RW5kOworICAgIHVwZGF0ZVN0YWNrTGltaXQobmV3RW5k
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0pTU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSlNTdGFjay5oCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04Nyw3ICs4Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGhpZ2hB
ZGRyZXNzKCkgLSAxOwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0ZXIqIGdldExpbWl0T2ZT
dGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CiAgICAgICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gaGlnaEFkZHJlc3MoKSAtIGxvd0FkZHJlc3MoKTsgfQogCiAgICAgICAgIGJv
b2wgZ3JvdyhSZWdpc3RlciopOwpAQCAtOTUsMTUgKzk0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCk7CiAgICAgICAgIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgICAgICBSZWdpc3RlciogY29uc3Qg
KiBhZGRyZXNzT2ZFbmQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gJm1f
ZW5kOwotICAgICAgICB9Ci0KICAgICAgICAgUmVnaXN0ZXIqIGdldFRvcE9mRnJhbWUoQ2FsbEZy
YW1lKik7CiAgICAgICAgIFJlZ2lzdGVyKiBnZXRTdGFydE9mRnJhbWUoQ2FsbEZyYW1lKik7CiAg
ICAgICAgIFJlZ2lzdGVyKiBnZXRUb3BPZlN0YWNrKCk7Ci0gICAgICAgIFJlZ2lzdGVyKiBlbmQo
KSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQogCiAgICAgICAgIENhbGxGcmFtZSogcHVzaEZyYW1l
KENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIGNsYXNzIENvZGVCbG9jayosCiAgICAgICAgICAgICBK
U1Njb3BlKiwgaW50IGFyZ3NDb3VudCwgSlNPYmplY3QqIGNhbGxlZSk7CkBAIC0xNTMsNiArMTQ2
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5
KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CiAKKyAgICAg
ICAgaW5saW5lIHZvaWQgdXBkYXRlU3RhY2tMaW1pdChSZWdpc3RlciogbmV3RW5kKTsKKworICAg
ICAgICBWTSYgbV92bTsKICAgICAgICAgUmVnaXN0ZXIqIG1fZW5kOwogICAgICAgICBSZWdpc3Rl
ciogbV9jb21taXRFbmQ7CiAgICAgICAgIFJlZ2lzdGVyKiBtX3VzZWFibGVFbmQ7CkBAIC0xNjYs
NyArMTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBpZiAobmV3RW5kID49
IG1fZW5kKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2VuZCA9IG5ld0VuZDsKKyAg
ICAgICAgdXBkYXRlU3RhY2tMaW1pdChuZXdFbmQpOwogICAgICAgICBpZiAobV9lbmQgPT0gZ2V0
QmFzZU9mU3RhY2soKSAmJiAobV9jb21taXRFbmQgLSBnZXRCYXNlT2ZTdGFjaygpKSA+PSBtYXhF
eGNlc3NDYXBhY2l0eSkKICAgICAgICAgICAgIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0
YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkpTU3RhY2suaCIKKyNpbmNsdWRlICJWTS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MTM1LDYgKzEzNiwxMiBAQCBpbmxpbmUgdm9pZCBKU1N0YWNrOjpwb3BGcmFtZShDYWxsRnJhbWUq
CiAgICAgaW5zdGFsbFRyYXBzQWZ0ZXJGcmFtZShjYWxsZXJGcmFtZSk7CiB9CiAKK2lubGluZSB2
b2lkIEpTU3RhY2s6OnVwZGF0ZVN0YWNrTGltaXQoUmVnaXN0ZXIqIG5ld0VuZCkKK3sKKyAgICBt
X2VuZCA9IG5ld0VuZDsKKyAgICBtX3ZtLnNldFN0YWNrTGltaXQocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4obmV3RW5kKSk7Cit9CisKIAogI2lmIEVOQUJMRShERUJVR19KU1NUQUNLKQogaW5saW5l
IEpTVmFsdWUgSlNTdGFjazo6Z2VuZXJhdGVGZW5jZVZhbHVlKHNpemVfdCBhcmdJbmRleCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY4LDcgKzU2
OCw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICNlbmRpZgog
CiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9j
b2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cikpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDEpOwotICAgICAgICBzdGFja0NoZWNrID0gYnJh
bmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCku
YWRkcmVzc09mRW5kKCkpLCByZWdUMSk7CisgICAgICAgIHN0YWNrQ2hlY2sgPSBicmFuY2hQdHIo
QWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRyZXNzT2ZTdGFja0xpbWl0KCkpLCByZWdU
MSk7CiAgICAgfQogCiAgICAgTGFiZWwgZnVuY3Rpb25Cb2R5ID0gbGFiZWwoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE1OTUy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgSklUOjpjb21waWxlTG9hZFZhcmFyZ3Mo
SW5zdHJ1Y3Rpb24KICAgICAgICAgYWRkUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMyk7CiAg
ICAgICAgIC8vIHJlZ1QzOiBuZXdDYWxsRnJhbWUKIAotICAgICAgICBzbG93Q2FzZS5hcHBlbmQo
YnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+aW50ZXJwcmV0ZXItPnN0YWNr
KCkuYWRkcmVzc09mRW5kKCkpLCByZWdUMykpOworICAgICAgICBzbG93Q2FzZS5hcHBlbmQoYnJh
bmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92bS0+YWRkcmVzc09mU3RhY2tMaW1pdCgp
KSwgcmVnVDMpKTsKIAogICAgICAgICAvLyBJbml0aWFsaXplIEFyZ3VtZW50Q291bnQuCiAgICAg
ICAgIHN0b3JlMzIocmVnVDIsIHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCwgcmVn
VDMpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24g
MTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKElu
c3RydWN0aW9uCiAgICAgICAgIGFkZFB0cihjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDEpOwogICAg
ICAgICAvLyByZWdUMTogbmV3Q2FsbEZyYW1lCiAKLSAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJy
YW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmludGVycHJldGVyLT5zdGFjaygp
LmFkZHJlc3NPZkVuZCgpKSwgcmVnVDEpKTsKKyAgICAgICAgc2xvd0Nhc2UuYXBwZW5kKGJyYW5j
aFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlN0YWNrTGltaXQoKSks
IHJlZ1QxKSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBBcmd1bWVudENvdW50LgogICAgICAg
ICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBKU1N0YWNrOjpBcmd1bWVudENvdW50ICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlz
aW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzgzLDEwICszODMsOSBAQCBtYWNybyBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTCiAgICAgbG9hZGkgQ29kZUJsb2NrOjptX251
bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCiAgICAgYWRkaSAxLCB0MCAjIEFjY291bnQgdGhhdCBs
b2NhbDAgZ29lcyBhdCBzbG90IC0xCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3QxXSwgdDIK
LSAgICBsb2FkcCBWTTo6aW50ZXJwcmV0ZXJbdDJdLCB0MgogICAgIGxzaGlmdHAgMywgdDAKICAg
ICBzdWJwIGNmciwgdDAsIHQwCi0gICAgYnBiZXEgSW50ZXJwcmV0ZXI6Om1fc3RhY2sgKyBKU1N0
YWNrOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworICAgIGJwYmVxIFZNOjptX3N0YWNr
TGltaXRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKIAogICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNr
IGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIHNsb3dfcGF0aC4KICAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3N0YWNrX2NoZWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQot
ICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNyBBcHBsZSBJbmMuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA3LCAyMDEzIEFwcGxlIEluYy4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03
OCw3ICs3OCw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCAKICAg
ICB9CiAKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkKLSAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOworICAg
ICAgICB0aGlzVmFsdWUgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGV4ZWMsIE5v
dFN0cmljdE1vZGUpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCkt
PmV4ZWN1dGUocHJvZ3JhbSwgZXhlYywgdGhpc09iaik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xMTIsNyArMTEyLDcgQEAgSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRQogCiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtl
U291cmNlKHByb2dyYW0sIHNvdXJjZVVSTCwgcG9zaXRpb24pOwogICAgIEpTT2JqZWN0KiBleGNl
cHRpb24gPSAwOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBGdW5jdGlvbkV4
ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgZXhlYywgZXhlYy0+ZHluYW1p
Y0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZleGNlcHRpb24pOworICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9i
YWxDb2RlKGZ1bmN0aW9uTmFtZSwgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5k
ZWJ1Z2dlcigpLCBzb3VyY2UsICZleGNlcHRpb24pOwogICAgIGlmICghZnVuY3Rpb24pIHsKICAg
ICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcwNiwyNiArNzA2LDYgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y2xlYXJSYXJl
RGF0YShKU0NlbAogICAgIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNlbGwpLT5tX3JhcmVEYXRh
LmNsZWFyKCk7CiB9CiAKLUR5bmFtaWNHbG9iYWxPYmplY3RTY29wZTo6RHluYW1pY0dsb2JhbE9i
amVjdFNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpCi0g
ICAgOiBtX2R5bmFtaWNHbG9iYWxPYmplY3RTbG90KHZtLmR5bmFtaWNHbG9iYWxPYmplY3QpCi0g
ICAgLCBtX3NhdmVkRHluYW1pY0dsb2JhbE9iamVjdChtX2R5bmFtaWNHbG9iYWxPYmplY3RTbG90
KQotewotICAgIGlmICghbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdCkgewotI2lmIEVOQUJMRShB
U1NFTUJMRVIpCi0gICAgICAgIGlmIChFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVBy
ZXNzdXJlKCkpCi0gICAgICAgICAgICB2bS5oZWFwLmRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpOwot
I2VuZGlmCi0KLSAgICAgICAgbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdCA9IGR5bmFtaWNHbG9i
YWxPYmplY3Q7Ci0KLSAgICAgICAgLy8gUmVzZXQgdGhlIGRhdGUgY2FjaGUgYmV0d2VlbiBKUyBp
bnZvY2F0aW9ucyB0byBmb3JjZSB0aGUgVk0KLSAgICAgICAgLy8gdG8gb2JzZXJ2ZSB0aW1lIHpv
bmUgY2hhbmdlcy4KLSAgICAgICAgdm0ucmVzZXREYXRlQ2FjaGUoKTsKLSAgICB9Ci0gICAgLy8g
Q2xlYXIgdGhlIGV4Y2VwdGlvbiBzdGFjayBiZXR3ZWVuIGVudHJpZXMKLSAgICB2bS5jbGVhckV4
Y2VwdGlvblN0YWNrKCk7Ci19Ci0KIHZvaWQgc2xvd1ZhbGlkYXRlQ2VsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNH
bG9iYWxPYmplY3QoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4NiwxNyAr
NTg2LDYgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5bWJvbFRhYmxlSAogICAgIHJl
dHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKLWlubGluZSBKU0dsb2JhbE9iamVjdCogRXhlY1N0
YXRlOjpkeW5hbWljR2xvYmFsT2JqZWN0KCkKLXsKLSAgICBpZiAodGhpcyA9PSBsZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkKLSAgICAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxP
YmplY3QoKTsKLQotICAgIC8vIEZvciBhbnkgRXhlY1N0YXRlIHRoYXQncyBub3QgYSBnbG9iYWxF
eGVjLCB0aGUgCi0gICAgLy8gZHluYW1pYyBnbG9iYWwgb2JqZWN0IG11c3QgYmUgc2V0IHNpbmNl
IGNvZGUgaXMgcnVubmluZwotICAgIEFTU0VSVCh2bSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwot
ICAgIHJldHVybiB2bSgpLmR5bmFtaWNHbG9iYWxPYmplY3Q7Ci19Ci0KIGlubGluZSBKU0FycmF5
KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSogcHJvZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaW5p
dGlhbExlbmd0aCA9IDApCiB7CiAgICAgcmV0dXJuIEFycmF5QWxsb2NhdGlvblByb2ZpbGU6OnVw
ZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIEpTQXJyYXk6OmNyZWF0ZShleGVjLT52bSgp
LCBpbml0aWFsTGVuZ3RoID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVggPyBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhB
cnJheVN0b3JhZ2UpIDogZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvclByb2ZpbGVEdXJp
bmdBbGxvY2F0aW9uKHByb2ZpbGUpLCBpbml0aWFsTGVuZ3RoKSk7CkBAIC02MzcsMjEgKzYyNiw2
IEBAIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW4KICAgICByZXR1cm4g
Y29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoZXhlYywgcHJvZmlsZSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCB2YWx1ZXMsIGxlbmd0aCk7CiB9CiAKLWNsYXNzIER5bmFtaWNHbG9i
YWxPYmplY3RTY29wZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHluYW1pY0dsb2JhbE9i
amVjdFNjb3BlKTsKLXB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBEeW5hbWljR2xvYmFs
T2JqZWN0U2NvcGUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwotCi0gICAgfkR5bmFtaWNHbG9iYWxP
YmplY3RTY29wZSgpCi0gICAgewotICAgICAgICBtX2R5bmFtaWNHbG9iYWxPYmplY3RTbG90ID0g
bV9zYXZlZER5bmFtaWNHbG9iYWxPYmplY3Q7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEpTR2xv
YmFsT2JqZWN0KiYgbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdDsKLSAgICBKU0dsb2JhbE9iamVj
dCogbV9zYXZlZER5bmFtaWNHbG9iYWxPYmplY3Q7Ci19OwotCiBpbmxpbmUgSlNPYmplY3QqIEpT
U2NvcGU6Omdsb2JhbFRoaXMoKQogeyAKICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPmdsb2Jh
bFRoaXMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9u
IDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlw
ZSBoZWFwVHlwZSkKICAgICAsIGpzQXJyYXlDbGFzc0luZm8oSlNBcnJheTo6aW5mbygpKQogICAg
ICwganNGaW5hbE9iamVjdENsYXNzSW5mbyhKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgLCBz
aXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQotICAgICwgZHluYW1pY0dsb2JhbE9iamVjdCgwKQor
ICAgICwgZW50cnlTY29wZSgwKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIoMCkKICAgICAsIG1f
cmVnRXhwQ2FjaGUobmV3IFJlZ0V4cENhY2hlKHRoaXMpKQogI2lmIEVOQUJMRShSRUdFWFBfVFJB
Q0lORykKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIFZNOjpyZWxlYXNlRXhlY3V0YWJsZU1lbW9y
eSgpCiB7CiAgICAgcHJlcGFyZVRvRGlzY2FyZENvZGUoKTsKICAgICAKLSAgICBpZiAoZHluYW1p
Y0dsb2JhbE9iamVjdCkgeworICAgIGlmIChlbnRyeVNjb3BlKSB7CiAgICAgICAgIFN0YWNrUHJl
c2VydmluZ1JlY29tcGlsZXIgcmVjb21waWxlcjsKICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3Bl
IGl0ZXJhdGlvblNjb3BlKGhlYXApOwogICAgICAgICBIYXNoU2V0PEpTQ2VsbCo+IHJvb3RzOwpA
QCAtNjE4LDcgKzYxOCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZy
YW0KICAgICAKIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBlcnJvcikKIHsKLSAgICBBU1NFUlQoZXhlYyA9PSB0b3BDYWxsRnJhbWUgfHwgZXhlYyA9
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSB8fCBleGVjID09IGV4
ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKKyAgICBBU1NFUlQoZXhl
YyA9PSB0b3BDYWxsRnJhbWUgfHwgZXhlYyA9PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKSB8fCBleGVjID09IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpKTsKICAgICAKICAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tUcmFjZTsKICAg
ICBpbnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShzdGFja1RyYWNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3Mg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVW5saW5rZWRQcm9ncmFtQ29k
ZUJsb2NrOworICAgIGNsYXNzIFZNRW50cnlTY29wZTsKIAogI2lmIEVOQUJMRShERkdfSklUKQog
ICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMzYxLDYgKzM2MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3Rh
dGUqLCBKU1ZhbHVlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAgICAgICAgIAorICAgICAgICB2b2lk
KiogYWRkcmVzc09mU3RhY2tMaW1pdCgpIHsgcmV0dXJuICZtX3N0YWNrTGltaXQ7IH0KKyAgICAg
ICAgdm9pZCogc3RhY2tMaW1pdCgpIHsgcmV0dXJuIG1fc3RhY2tMaW1pdDsgfQorICAgICAgICB2
b2lkIHNldFN0YWNrTGltaXQodm9pZCogbGltaXQpIHsgbV9zdGFja0xpbWl0ID0gbGltaXQ7IH0K
KwogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CiAgICAg
ICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKIApAQCAt
Mzk2LDcgKzQwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZ2F0aGVyQ29u
c2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKIAotICAgICAgICBKU0dsb2JhbE9i
amVjdCogZHluYW1pY0dsb2JhbE9iamVjdDsKKyAgICAgICAgVk1FbnRyeVNjb3BlKiBlbnRyeVNj
b3BlOwogCiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNpb25DaGVja1Zp
c2l0ZWRPYmplY3RzOwogCkBAIC00NzUsNiArNDgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYg
RU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9pbml0aWFs
aXppbmdPYmplY3RDbGFzczsKICNlbmRpZgorICAgICAgICB2b2lkKiBtX3N0YWNrTGltaXQ7CiAg
ICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93blBy
b3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVk1F
bnRyeVNjb3BlLmgiCisKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPHd0Zi9TdGFja0JvdW5k
cy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogbV92bSh2bSkKKyAgICAs
IG1fcHJldih2bS5lbnRyeVNjb3BlKQorICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
KQorICAgICwgbV9zdGFja0JvdW5kcyh2bSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkpCisgICAg
LCBtX3ByZXZTdGFja0xpbWl0KHZtLnN0YWNrTGltaXQoKSkKK3sKKyAgICBpZiAoIXZtLmVudHJ5
U2NvcGUpIHsKKyNpZiBFTkFCTEUoQVNTRU1CTEUpCisgICAgICAgIGlmIChFeGVjdXRhYmxlQWxs
b2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgICAgICB2bS5oZWFwLmRlbGV0
ZUFsbENvbXBpbGVkQ29kZSgpOworI2VuZGlmCisgICAgICAgIHZtLmVudHJ5U2NvcGUgPSB0aGlz
OworCisgICAgICAgIC8vIFJlc2V0IHRoZSBkYXRlIGNhY2hlIGJldHdlZW4gSlMgaW52b2NhdGlv
bnMgdG8gZm9yY2UgdGhlIFZNIHRvCisgICAgICAgIC8vIG9ic2VydmUgdGltZSB4b25lIGNoYW5n
ZXMuCisgICAgICAgIHZtLnJlc2V0RGF0ZUNhY2hlKCk7CisgICAgfQorICAgIC8vIENsZWFyIHRo
ZSBleGNlcHRpb24gc3RhY2sgYmV0d2VlbiBlbnRyaWVzCisgICAgdm0uY2xlYXJFeGNlcHRpb25T
dGFjaygpOworCisgICAgLy8gRklYTUU6IFdlIGN1cnJlbnQgdW5jb25kaXRpb25hbGx5IGRpc2Fi
bGUgdGhpcyBzZXR0aW5nIG9mIHRoZSBzdGFjayBsaW1pdC4KKyAgICAvLyBXaGVuIHdlIGFkb3B0
IHRoZSBuYXRpdmUgQyBzdGFjayBmb3IgSlMgZXhlY3V0aW9uLCB0aGUgZm9sbG93aW5nIG5lZWRz
CisgICAgLy8gdG8gYmUgY2hhbmdlZCB0byBiZSBjb25kaXRpb25hbCBvbiAhRU5BQkxFKExMSU5U
X0NMT09QKSBvbmx5LCBhbmQgZG8gdGhlCisgICAgLy8gc2FtZSBpbiB0aGUgZGVzdHJ1Y3RvciBi
ZWxvdy4KKyNpZiAhRU5BQkxFKExMSU5UX0NMT09QKSAmJiAwCisgICAgdm0uc2V0U3RhY2tMaW1p
dChtX3N0YWNrQm91bmRzLnN0YWNrTGltaXQoKSk7CisjZW5kaWYKK30KKworVk1FbnRyeVNjb3Bl
Ojp+Vk1FbnRyeVNjb3BlKCkKK3sKKyAgICBtX3ZtLmVudHJ5U2NvcGUgPSBtX3ByZXY7CisjaWYg
IUVOQUJMRShMTElOVF9DTE9PUCkgJiYgMAorICAgIG1fdm0uc2V0U3RhY2tMaW1pdChtX3ByZXZT
dGFja0xpbWl0KTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgVk1FbnRyeVNjb3BlX2gKKyNkZWZpbmUgVk1FbnRyeVNj
b3BlX2gKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiVk1TdGFja0JvdW5k
cy5oIgorI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFZNOworCitjbGFzcyBWTUVudHJ5U2NvcGUgewor
cHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIFZNRW50cnlTY29wZShWTSYsIEpTR2xvYmFs
T2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgflZNRW50cnlTY29wZSgpOworCisgICAg
Ym9vbCBoYXNFbm91Z2hTdGFja1RvRW50ZXJWTSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tCb3Vu
ZHMuaXNTYWZlVG9SZWN1cnNlKCk7IH0KKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KKworcHJpdmF0ZToKKyAgICBWTSYg
bV92bTsKKyAgICBWTUVudHJ5U2NvcGUqIG1fcHJldjsKKyAgICBKU0dsb2JhbE9iamVjdCogbV9n
bG9iYWxPYmplY3Q7CisgICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBtX3N0YWNrQ2hlY2tQb2lu
dDsKKyAgICBWTVN0YWNrQm91bmRzIG1fc3RhY2tCb3VuZHM7CisgICAgdm9pZCogbV9wcmV2U3Rh
Y2tMaW1pdDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gVk1FbnRyeVNj
b3BlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1TdGFja0JvdW5k
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNU3RhY2tC
b3VuZHMuaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1TdGFja0JvdW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNywxMSBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAgLCBtX2JvdW5kcyhib3VuZHMpCiAgICAg
eworICAgICAgICBtX3JlcXVpcmVkQ2FwYWNpdHkgPSByZXF1aXJlZENhcGFjaXR5KCk7CiAgICAg
fQogCi0gICAgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kcy5p
c1NhZmVUb1JlY3Vyc2UocmVxdWlyZWRDYXBhY2l0eSgpKTsgfQorICAgIGJvb2wgaXNTYWZlVG9S
ZWN1cnNlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHMuaXNTYWZlVG9SZWN1cnNlKG1fcmVxdWly
ZWRDYXBhY2l0eSk7IH0KKyAgICB2b2lkKiBzdGFja0xpbWl0KCkgY29uc3QgeyByZXR1cm4gbV9i
b3VuZHMucmVjdXJzaW9uTGltaXQobV9yZXF1aXJlZENhcGFjaXR5KTsgfQogCiBwcml2YXRlOgog
ICAgIGlubGluZSBzaXplX3QgcmVxdWlyZWRDYXBhY2l0eSgpIGNvbnN0CkBAIC02Myw2ICs2NSw3
IEBAIHByaXZhdGU6CiAKICAgICBWTSYgbV92bTsKICAgICBjb25zdCBTdGFja0JvdW5kcyYgbV9i
b3VuZHM7CisgICAgc2l6ZV90IG1fcmVxdWlyZWRDYXBhY2l0eTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTU1MikKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMTEtMjAgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIFZNRW50cnlTY29wZSB0
byB1cGRhdGUgdGhlIFZNIHN0YWNrIGxpbWl0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1N0YWNrQm91bmRzLmg6CisgICAgICAgIChXVEY6
OlN0YWNrQm91bmRzOjpyZWN1cnNpb25MaW1pdCk6CisgICAgICAgIC0gbWFkZSB0aGlzIGZ1bmN0
aW9uIHB1YmxpYyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGJ5IEpTQyBmb3IgSklUIHN0YWNrCisg
ICAgICAgICAgY2hlY2tzIGxhdGVyLiAKKwogMjAxMy0xMS0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRoZSBGVEwgZGVidWcgZHVtcHMgdG8gaW5j
bHVkZSB0aGUgbmV3IHNpemUgZmllbGQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkocmV2aXNpb24g
MTU5NTI1KQorKysgU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzAsNiArNzAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hh
cio+KG1fYm91bmQpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fb3JpZ2luKTsKICAgICB9CiAKKyAg
ICB2b2lkKiByZWN1cnNpb25MaW1pdChzaXplX3QgbWluQXZhaWxhYmxlRGVsdGEgPSBzX2RlZmF1
bHRBdmFpbGFiaWxpdHlEZWx0YSkgY29uc3QKKyAgICB7CisgICAgICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKKyAgICAgICAgaWYgKGlzR3Jvd2luZ0Rvd253YXJkKCkpCisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpICsgbWluQXZhaWxhYmxlRGVsdGE7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgLSBtaW5BdmFpbGFibGVEZWx0
YTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgU3RhY2tCb3VuZHMoKQogICAgICAgICA6IG1fb3Jp
Z2luKDApCkBAIC04NiwxNCArOTQsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY3VycmVu
dFBvc2l0aW9uOwogICAgIH0KIAotICAgIHZvaWQqIHJlY3Vyc2lvbkxpbWl0KHNpemVfdCBtaW5B
dmFpbGFibGVEZWx0YSA9IHNfZGVmYXVsdEF2YWlsYWJpbGl0eURlbHRhKSBjb25zdAotICAgIHsK
LSAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICBpZiAoaXNHcm93aW5nRG93bndh
cmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgKyBt
aW5BdmFpbGFibGVEZWx0YTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihtX2Jv
dW5kKSAtIG1pbkF2YWlsYWJsZURlbHRhOwotICAgIH0KLQogICAgIGJvb2wgaXNHcm93aW5nRG93
bndhcmQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luICYmIG1fYm91bmQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTUyKQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTMtMTEtMjAgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIFZNRW50cnlT
Y29wZSB0byB1cGRhdGUgdGhlIFZNIHN0YWNrIGxpbWl0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjM0LgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAxLiBU
aGUgVk1FbnRyeVNjb3BlIGNsYXNzIHN1YnN1bWVzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZS4g
SXQgYWxzbworICAgICAgICAgICBjb21wdXRlcyB0aGUgY3VycmVudCBzdGFjayBib3VuZHMgYW5k
IHNldHMgdGhlIHN0YWNrIGxpbWl0IGluIHRoZSBWTS4KKworICAgICAgICAgICBGb3Igbm93LCB0
aGUgc2V0dGluZyBvZiB0aGUgc3RhY2sgbGltaXQgaXMgZGlzYWJsZWQgdW50aWwgd2Ugc3dpdGNo
CisgICAgICAgICAgIHRvIHVzaW5nIHRoZSBDIHN0YWNrIGZvciBKUyBDYWxsRnJhbWVzLgorCisg
ICAgICAgIDIuIFJlbmFtZWQgZHluYW1pY0dsb2JhbE9iamVjdCgpIHRvIHZtRW50cnlHbG9iYWxP
YmplY3QoKSBzaW5jZSB0aGF0IGlzCisgICAgICAgICAgIHRoZSB2YWx1ZSB0aGF0IHRoZSBmdW5j
dGlvbiByZXRyaWV2ZXMuCisKKyAgICAgICAgMy4gQ2hhbmdlZCBKSVQgYW5kIExMSU5UIGNvZGUg
dG8gZG8gc3RhY2sgY2hlY2tzIGFnYWluc3QgdGhlIHN0YWNrIGxpbWl0CisgICAgICAgICAgIGlu
IHRoZSBWTSBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBKU1N0YWNrLgorCisgICAgICAgICogRm9yd2Fy
ZGluZ0hlYWRlcnMvcnVudGltZS9WTUVudHJ5U2NvcGUuaDogQWRkZWQuCisgICAgICAgICogV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9B
bGdvcml0aG1CdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGht
QnVpbGRlcjo6YWRkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Zmlyc3RET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXJyb3JI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3Jp
cHRDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZSk6CisgICAgICAgICogYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAgICAgICAgKiBiaW5kaW5n
cy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEV4Y2VwdGlv
blRvQ29uc29sZSk6CisgICAgICAgICogYnJpZGdlL2MvY191dGlsaXR5LmNwcDoKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0luc3RhbmNlOjptb3ZlR2xv
YmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvT2JqY09iamVj
dCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9PYmpjVmFsdWUpOgorCiAyMDEzLTExLTE5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgR2VuZXJhdGUg
dG9IVE1MRm9vRWxlbWVudCgpIHRvIGNsZWFuIHVwIHN0YXRpY19jYXN0PD4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9WTUVudHJ5
U2NvcGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1ZNRW50cnlTY29wZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1ZN
RW50cnlTY29wZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk1FbnRyeVNjb3BlLmg+Cisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg1NzgsNiArMTg1NzgsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxK
U0V4cG9ydE1hY3Jvcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZVxKU0Z1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXFZNLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXFZNRW50cnlTY29wZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxKU0ds
b2JhbE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hl
YWRlcnNccnVudGltZVxKU1Byb3h5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEpTV2l0aFNjb3BlLmgiIC8+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTEyNjQ2LDYgKzEyNjQ2
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRp
bWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJk
aW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEpTR2xvYmFsT2JqZWN0
LmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDggQEAgdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1
aWxkZXI6OmFkZChjb25zdAogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBhcnJheVZp
ZXcgPSBVaW50OEFycmF5OjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0g
ICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGFycmF5Vmlldy0+d3Jh
cChtX2V4ZWMsIHZtLmR5bmFtaWNHbG9iYWxPYmplY3QpKTsKKyAgICBBU1NFUlQodm0uZW50cnlT
Y29wZSk7CisgICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGFycmF5
Vmlldy0+d3JhcChtX2V4ZWMsIHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAK
IHZvaWQgSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQoY29uc3QgY2hhcioga2V5LCBjb25z
dCBDcnlwdG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImIG5lc3RlZEJ1aWxkZXIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgKGFw
QG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMyBBbGV4ZXkgUHJvc2t1cnlh
a292IChhcEBueXBvcC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUy
LDcgKzUyLDcgQEAgUGFzc1JlZlB0cjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gSlNDdQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9t
WFBhdGhOU1Jlc29sdmVyKGV4ZWMsIHJlc29sdmVyT2JqZWN0LCBhc0pTRE9NV2luZG93KGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyKGV4ZWMsIHJlc29sdmVyT2JqZWN0LCBhc0pTRE9NV2luZG93KGV4
ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSkpKTsKIH0KIAogSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXI6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGN1
c3RvbVJlc29sdmVyLCBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0KQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CiAg
KiAgQ29weXJpZ2h0IChDKSAyMDEzIE1pY2hhZWwgUHJ1ZXR0IDxtaWNoYWVsQDY4ay5vcmc+CiAg
KgpAQCAtNDk0LDcgKzQ5NCw3IEBAIERPTVdpbmRvdyYgYWN0aXZlRE9NV2luZG93KEV4ZWNTdGF0
ZSogZXgKIAogRE9NV2luZG93JiBmaXJzdERPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0g
ICAgcmV0dXJuIGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1w
bCgpOworICAgIHJldHVybiBhc0pTRE9NV2luZG93KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3Qo
KSktPmltcGwoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGNhbkFjY2Vzc0RvY3VtZW50KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgRG9jdW1lbnQqIHRhcmdldERvY3VtZW50LCBTZWN1cml0eVJl
cG9ydGluZ09wdGlvbiByZXBvcnRpbmdPcHRpb24gPSBSZXBvcnRTZWN1cml0eUVycm9yKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAkocmV2
aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTM5LDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0V2ZW50Lmgi
CiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNRW50cnlTY29wZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTk0LDcgKzk2LDcgQEAgdm9pZCBK
U0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQoU2NyaXB0RQogICAgICAgICBhcmdzLmFwcGVuZChq
c051bWJlcihlcnJvckV2ZW50LT5jb2xubygpKSk7CiAKICAgICAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwotICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2Jq
ZWN0U2NvcGUodm0sIHZtLmR5bmFtaWNHbG9iYWxPYmplY3QgPyB2bS5keW5hbWljR2xvYmFsT2Jq
ZWN0IDogZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0s
IHZtLmVudHJ5U2NvcGUgPyB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9i
amVjdCk7CiAKICAgICAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzRG9jdW1lbnQoKQogICAgICAgICAgICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6
OmNhbGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3Qs
IGFyZ3MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8cnVudGltZS9W
TUVudHJ5U2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oPgogCkBAIC0xMjMsNyArMTI0LDcgQEAgdm9pZCBKU0V2ZW50TGlz
dGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJl
bnRFdmVudChldmVudCk7CiAKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUodm0sIHZt
LmR5bmFtaWNHbG9iYWxPYmplY3QgPyB2bS5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHZtLmVudHJ5U2NvcGUg
PyB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9iamVjdCk7CiAKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
YWxsVHlwZSwgY2FsbERhdGEpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
YXZhU2NyaXB0Q2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZyYW1lLT5mdW5jdGlvbk5hbWUoKTsgfQogICAgIEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWU6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXJDYWxsRnJhbWUtPnR5cGUoKTsgfQogICAgIEpTQzo6SlNTY29wZSogc2NvcGVDaGFpbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnNjb3BlKCk7IH0KLSAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1
Z2dlckNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOyB9CisgICAgSlNDOjpKU0dsb2Jh
bE9iamVjdCogdm1FbnRyeUdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJD
YWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsgfQogCiAgICAgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
OyB9CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBKU0M6
OkpTVmFsdWUmIGV4Y2VwdGlvbikgY29uc3QgIHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJhbWUt
PmV2YWx1YXRlKHNjcmlwdCwgZXhjZXB0aW9uKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAx
NTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
YykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6cmVjb21waWxlQWxsCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soSlNET01XaW5k
b3c6OmNvbW1vblZNKCkpOwogICAgIC8vIElmIEphdmFTY3JpcHQgc3RhY2sgaXMgbm90IGVtcHR5
IHBvc3Rwb25lIHJlY29tcGlsYXRpb24uCi0gICAgaWYgKEpTRE9NV2luZG93Ojpjb21tb25WTSgp
LT5keW5hbWljR2xvYmFsT2JqZWN0KQorICAgIGlmIChKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKS0+
ZW50cnlTY29wZSkKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CiAgICAg
ZWxzZQogICAgICAgICBEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNET01XaW5k
b3c6OmNvbW1vblZNKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
OSw3ICs5OSw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmV2YWx1YXRlQnJlYWtwb2kKICAg
ICBEZWJ1Z2dlckNhbGxGcmFtZSogZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJD
YWxsRnJhbWUoKTsKICAgICBzd2l0Y2ggKGJyZWFrcG9pbnRBY3Rpb24udHlwZSkgewogICAgIGNh
c2UgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2c6IHsKLSAgICAgICAgRE9NV2luZG93JiB3
aW5kb3cgPSBhc0pTRE9NV2luZG93KGRlYnVnZ2VyQ2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCkpLT5pbXBsKCk7CisgICAgICAgIERPTVdpbmRvdyYgd2luZG93ID0gYXNKU0RPTVdpbmRv
dyhkZWJ1Z2dlckNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogICAg
ICAgICBpZiAoUGFnZUNvbnNvbGUqIGNvbnNvbGUgPSB3aW5kb3cucGFnZUNvbnNvbGUoKSkKICAg
ICAgICAgICAgIGNvbnNvbGUtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
TGV2ZWwsIGJyZWFrcG9pbnRBY3Rpb24uZGF0YSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjg4LDEw
ICsyODgsMTAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlRXhjZXB0aW9uSQogICAg
IHJlcG9ydEV4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwogfQogCi12b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpoYW5kbGVQYXVzZShEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UsIEpTR2xvYmFsT2Jq
ZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxl
UGF1c2UoRGVidWdnZXI6OlJlYXNvbkZvclBhdXNlLCBKU0dsb2JhbE9iamVjdCogdm1FbnRyeUds
b2JhbE9iamVjdCkKIHsKLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoJlNjcmlwdERl
YnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlLCBkeW5hbWljR2xvYmFsT2JqZWN0KTsKLSAgICBk
aWRQYXVzZShkeW5hbWljR2xvYmFsT2JqZWN0KTsKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0
ZW5lcnMoJlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaERpZFBhdXNlLCB2bUVudHJ5R2xvYmFs
T2JqZWN0KTsKKyAgICBkaWRQYXVzZSh2bUVudHJ5R2xvYmFsT2JqZWN0KTsKIAogICAgIFRpbWVy
QmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKQEAgLTMwMCw5ICszMDAsMTAg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UoRGVidQogICAgIHJ1bkV2ZW50
TG9vcFdoaWxlUGF1c2VkKCk7CiAgICAgbV9ydW5uaW5nTmVzdGVkTWVzc2FnZUxvb3AgPSBmYWxz
ZTsKIAotICAgIGRpZENvbnRpbnVlKGR5bmFtaWNHbG9iYWxPYmplY3QpOwotICAgIGRpc3BhdGNo
RnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkQ29udGlu
dWUsIGR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgIGRpZENvbnRpbnVlKHZtRW50cnlHbG9iYWxP
YmplY3QpOworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2
ZXI6OmRpc3BhdGNoRGlkQ29udGludWUsIHZtRW50cnlHbG9iYWxPYmplY3QpOwogfQorCiB2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKQogewogICAg
IG1fcmVjb21waWxlVGltZXIuc3RhcnRPbmVTaG90KDApOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcAkocmV2
aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUEKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2sodm0pOwogICAgIC8vIElmIEphdmFTY3JpcHQgc3RhY2sgaXMgbm90IGVtcHR5IHBvc3Rw
b25lIHJlY29tcGlsYXRpb24uCi0gICAgaWYgKHZtLT5keW5hbWljR2xvYmFsT2JqZWN0KQorICAg
IGlmICh2bS0+ZW50cnlTY29wZSkKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29u
KCk7CiAgICAgZWxzZQogICAgICAgICBKU0M6OkRlYnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0
aW9ucyh2bSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbQkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNywg
MjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyNCw3ICsxMjQsNyBAQCBpZCBjcmVhdGVKU1dyYXBwZXIo
SlNDOjpKU09iamVjdCogb2JqZWN0CiAKIHN0YXRpYyB2b2lkIGFkZEV4Y2VwdGlvblRvQ29uc29s
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01X
aW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKKyAgICBKU0RPTVdpbmRvdyogd2lu
ZG93ID0gYXNKU0RPTVdpbmRvdyhleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpOwogICAgIGlm
ICghd2luZG93IHx8ICFleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogICAg
IHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX3V0aWxpdHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L2NfdXRpbGl0eS5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfdXRpbGl0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDEzIEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFs
ZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTk0
LDcgKzk0LDcgQEAgdm9pZCBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChFeGVjU3RhdGUqIAogICAg
ICAgICAgICAgICAgIE9CSkVDVF9UT19OUFZBUklBTlQob2JqLCAqcmVzdWx0KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwog
CiAgICAgICAgICAgICBSb290T2JqZWN0KiByb290T2JqZWN0ID0gZmluZFJvb3RPYmplY3QoZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgICAgIGlmIChyb290T2JqZWN0KSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDE1OTUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBPYmpjSW5z
dGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25UbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKCFzX2V4Y2VwdGlvbkVudmlyb25tZW50IHx8IHNfZXhjZXB0aW9uRW52aXJvbm1lbnQg
PT0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSB7CisgICAgaWYgKCFzX2V4Y2VwdGlvbkVu
dmlyb25tZW50IHx8IHNfZXhjZXB0aW9uRW52aXJvbm1lbnQgPT0gZXhlYy0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpKSB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgICAgICB0
aHJvd0Vycm9yKGV4ZWMsIHNfZXhjZXB0aW9uKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExMyw3ICsxMTMsNyBAQCBKU1ZhbHVlIE9iamNGaWVsZDo6dmFsdWVGcm9tSW5z
dGFuY2UoRXhlCiAKIHN0YXRpYyBpZCBjb252ZXJ0VmFsdWVUb09iamNPYmplY3QoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFJlZlB0cjxSb290T2JqZWN0PiByb290T2Jq
ZWN0ID0gZmluZFJvb3RPYmplY3QoZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKKyAgICBS
ZWZQdHI8Um9vdE9iamVjdD4gcm9vdE9iamVjdCA9IGZpbmRSb290T2JqZWN0KGV4ZWMtPnZtRW50
cnlHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCFyb290T2JqZWN0KQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIHJldHVybiBbd2ViU2NyaXB0T2JqZWN0Q2xhc3MoKSBfY29udmVydFZhbHVlVG9P
YmpjVmFsdWU6dmFsdWUgb3JpZ2luUm9vdE9iamVjdDpyb290T2JqZWN0LmdldCgpIHJvb3RPYmpl
Y3Q6cm9vdE9iamVjdC5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3V0aWxpdHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY191dGlsaXR5Lm1tCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDEzIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC04OCw3ICs4OCw3IEBAIE9iamNWYWx1ZSBjb252ZXJ0VmFsdWVUb09iamNWYWx1ZShFeGVj
U3QKICAgICAgICAgY2FzZSBPYmpjT2JqZWN0VHlwZTogewogICAgICAgICAgICAgSlNMb2NrSG9s
ZGVyIGxvY2soZXhlYyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
ICpvcmlnaW5HbG9iYWxPYmplY3QgPSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCAqb3JpZ2luR2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRy
eUdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgUm9vdE9iamVjdCogb3JpZ2luUm9vdE9iamVj
dCA9IGZpbmRSb290T2JqZWN0KG9yaWdpbkdsb2JhbE9iamVjdCk7CiAKICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMTU5NTUyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMjAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIFZNRW50cnlTY29wZSB0byB1cGRhdGUgdGhl
IFZNIHN0YWNrIGxpbWl0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI0NjM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbToKKyAgICAgICAgKFdlYlNj
cmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQpOgorCiAyMDEzLTExLTE5ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSBIVE1MVGVtcGxhdGVFbGVtZW50
IG9uIE1hYyBwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERl
YnVnZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2Ny
aXB0RGVidWdnZXIubW0JKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcg
QEAgdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEV4ZQogICAgIE5TVVJMICpu
c1VSTCA9IHRvTlNVUkwoc291cmNlUHJvdmlkZXItPnVybCgpKTsKICAgICBpbnQgZmlyc3RMaW5l
ID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsK
IAotICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IHRvV2ViRnJhbWUoZXhlYy0+ZHluYW1pY0dsb2Jh
bE9iamVjdCgpKTsKKyAgICBXZWJGcmFtZSAqd2ViRnJhbWUgPSB0b1dlYkZyYW1lKGV4ZWMtPnZt
RW50cnlHbG9iYWxPYmplY3QoKSk7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFt3ZWJGcmFtZSB3
ZWJWaWV3XTsKICAgICBXZWJTY3JpcHREZWJ1Z0RlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSog
aW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldFNjcmlwdERlYnVnRGVsZWdhdGVJbXBsZW1lbnRh
dGlvbnMod2ViVmlldyk7CiAK
</data>
<flag name="review"
          id="240535"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="240533"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217455</attachid>
            <date>2013-11-20 10:35:44 -0800</date>
            <delta_ts>2013-11-20 17:30:19 -0800</delta_ts>
            <desc>patch 3: another try at fixing EWS issues.</desc>
            <filename>bug-124634b.patch</filename>
            <type>text/plain</type>
            <size>77756</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOCBA
QAorMjAxMy0xMS0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNpbmcgVk1FbnRyeVNjb3BlIHRvIHVwZGF0ZSB0aGUgVk0gc3RhY2sgbGltaXQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MzQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gVGhlIFZN
RW50cnlTY29wZSBjbGFzcyBzdWJzdW1lcyBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUuIEl0IGFs
c28KKyAgICAgICAgICAgY29tcHV0ZXMgdGhlIGN1cnJlbnQgc3RhY2sgYm91bmRzIGFuZCBzZXRz
IHRoZSBzdGFjayBsaW1pdCBpbiB0aGUgVk0uCisKKyAgICAgICAgICAgRm9yIG5vdywgdGhlIHNl
dHRpbmcgb2YgdGhlIHN0YWNrIGxpbWl0IGlzIGRpc2FibGVkIHVudGlsIHdlIHN3aXRjaAorICAg
ICAgICAgICB0byB1c2luZyB0aGUgQyBzdGFjayBmb3IgSlMgQ2FsbEZyYW1lcy4KKworICAgICAg
ICAyLiBSZW5hbWVkIGR5bmFtaWNHbG9iYWxPYmplY3QoKSB0byB2bUVudHJ5R2xvYmFsT2JqZWN0
KCkgc2luY2UgdGhhdCBpcworICAgICAgICAgICB0aGUgdmFsdWUgdGhhdCB0aGUgZnVuY3Rpb24g
cmV0cmlldmVzLgorCisgICAgICAgIDMuIENoYW5nZWQgSklUIGFuZCBMTElOVCBjb2RlIHRvIGRv
IHN0YWNrIGNoZWNrcyBhZ2FpbnN0IHRoZSBzdGFjayBsaW1pdAorICAgICAgICAgICBpbiB0aGUg
Vk0gY2xhc3MgaW5zdGVhZCBvZiB0aGUgSlNTdGFjay4KKworICAgICAgICAqIEFQSS9KU0Jhc2Uu
Y3BwOgorICAgICAgICAoSlNFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChKU0NoZWNrU2NyaXB0
U3ludGF4KToKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xv
YmFsQ29udGV4dFJldGFpbik6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRSZWxlYXNlKToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OmRldGFjaCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucyk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKToKKyAgICAg
ICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBkZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAg
ICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTE9TUkVudHJ5LmNwcDoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmRlbGV0ZUFsbENvbXBpbGVkQ29kZSk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oOgorICAgICAgICAoSlNDOjpDYWNoZWRD
YWxsOjpDYWNoZWRDYWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOgorICAgICAgICAq
IGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OnVud2luZCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
ZGVidWcpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2suY3BwOgorICAgICAgICAoSlND
OjpKU1N0YWNrOjpKU1N0YWNrKToKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6Z3Jvd1Nsb3dDYXNl
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmg6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSlNTdGFja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6c2hyaW5rKToKKyAg
ICAgICAgKEpTQzo6SlNTdGFjazo6Z3Jvdyk6CisgICAgICAgIC0gTW92ZWQgdGhlc2UgaW5saW5l
ZCBmdW5jdGlvbnMgaGVyZSBmcm9tIEpTU3RhY2suaC4gSXQgcmVkdWNlcyBzb21lCisgICAgICAg
ICAgI2luY2x1ZGUgZGVwZW5kZW5jaWVzIG9mIEpTU1RhY2suaCB3aGljaCBoYWQgcHJldmlvdXNs
eSByZXN1bHRlZAorICAgICAgICAgIGluIHNvbWUgRVdTIGJvdHMnIHVuaGFwcGluZXNzIHdpdGgg
dGhpcyBwYXRjaC4KKyAgICAgICAgKEpTQzo6SlNTdGFjazo6dXBkYXRlU3RhY2tMaW1pdCk6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUp
OgorICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxl
TG9hZFZhcmFyZ3MpOgorICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChK
U0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
ayk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAg
ICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAoSlNDOjpWTTo6cmVsZWFzZUV4ZWN1dGFibGVNZW1v
cnkpOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmFkZHJlc3NPZlN0YWNrTGltaXQpOgorICAgICAg
ICAoSlNDOjpWTTo6c3RhY2tMaW1pdCk6CisgICAgICAgIChKU0M6OlZNOjpzZXRTdGFja0xpbWl0
KToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZSk6CisgICAgICAgIChKU0M6OlZNRW50cnlT
Y29wZTo6flZNRW50cnlTY29wZSk6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6aGFzRW5vdWdoU3RhY2tUb0VudGVy
Vk0pOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6Omdsb2JhbE9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9WTVN0YWNrQm91bmRzLmg6CisgICAgICAgIChKU0M6OlZNU3RhY2tCb3VuZHM6
OlZNU3RhY2tCb3VuZHMpOgorICAgICAgICAoSlNDOjpWTVN0YWNrQm91bmRzOjppc1NhZmVUb1Jl
Y3Vyc2UpOgorICAgICAgICAoSlNDOjpWTVN0YWNrQm91bmRzOjpzdGFja0xpbWl0KToKKwogMjAx
My0xMS0yMCAgSnVsaWVuIEJyaWFuY2VhdSAgPGpicmlhbmNlQGNpc2NvLmNvbT4KIAogICAgICAg
ICBbYXJtdjddW2FybTY0XSBTcGVjdWxhdGl2ZSBidWlsZCBmaXggYWZ0ZXIgcjE1OTU0NS4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE1OTUyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NDIyLDYgKzQyMiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9U
eXBlZEFycmF5Q29udHJvbGxlci5jcHAKICAgICBydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcAog
ICAgIHJ1bnRpbWUvVk0uY3BwCisgICAgcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCiAgICAgcnVu
dGltZS9XYXRjaGRvZy5jcHAKICAgICBydW50aW1lL1dhdGNoZG9nTm9uZS5jcHAKICAgICBydW50
aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtOTEzLDYgKzkxMyw4
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRXhwb3J0TWFjcm9zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuaCBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZVJlZiBKU0V2YWx1YXRlU2NyaXB0KEpTQ29udGV4dFJl
ZgogICAgIEpTT2JqZWN0KiBqc1RoaXNPYmplY3QgPSB0b0pTKHRoaXNPYmplY3QpOwogCiAgICAg
Ly8gZXZhbHVhdGUgc2V0cyAidGhpcyIgdG8gdGhlIGdsb2JhbCBvYmplY3QgaWYgaXQgaXMgTlVM
TAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5keW5hbWljR2xvYmFs
T2JqZWN0KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50
cnlHbG9iYWxPYmplY3QoKTsKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2Ny
aXB0LT5zdHJpbmcoKSwgc291cmNlVVJMLT5zdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGluYWxO
dW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVy
OjpmaXJzdCgpKSk7CiAKICAgICBKU1ZhbHVlIGV2YWx1YXRpb25FeGNlcHRpb247CkBAIC04NSw3
ICs4NSw3IEBAIGJvb2wgSlNDaGVja1NjcmlwdFN5bnRheChKU0NvbnRleHRSZWYgY3QKICAgICBT
b3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwgc291cmNlVVJM
LT5zdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChz
dGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKSk7CiAgICAgCiAgICAg
SlNWYWx1ZSBzeW50YXhFeGNlcHRpb247Ci0gICAgYm9vbCBpc1ZhbGlkU3ludGF4ID0gY2hlY2tT
eW50YXgoZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHNvdXJjZSwg
JnN5bnRheEV4Y2VwdGlvbik7CisgICAgYm9vbCBpc1ZhbGlkU3ludGF4ID0gY2hlY2tTeW50YXgo
ZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHNvdXJjZSwgJnN5bnRh
eEV4Y2VwdGlvbik7CiAKICAgICBpZiAoIWlzVmFsaWRTeW50YXgpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ4LDcgKzE0OCw3IEBAIEpT
R2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRSZXRhaW4KICAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKGV4ZWMpOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBnY1Byb3Rl
Y3QoZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKKyAgICBnY1Byb3RlY3QoZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpKTsKICAgICB2bS5yZWYoKTsKICAgICByZXR1cm4gY3R4OwogfQpA
QCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShKU0dsb2JhbENv
bnQKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgc2F2ZWRJZGVudGlmaWVy
VGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZSh2bS5pZGVu
dGlmaWVyVGFibGUpOwogCi0gICAgICAgIGJvb2wgcHJvdGVjdENvdW50SXNaZXJvID0gSGVhcDo6
aGVhcChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT51bnByb3RlY3QoZXhlYy0+ZHluYW1p
Y0dsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgYm9vbCBwcm90ZWN0Q291bnRJc1plcm8gPSBIZWFw
OjpoZWFwKGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSktPnVucHJvdGVjdChleGVjLT52bUVu
dHJ5R2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBpZiAocHJvdGVjdENvdW50SXNaZXJvKQogICAg
ICAgICAgICAgdm0uaGVhcC5yZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCgpOwogICAgICAgICB2
bS5kZXJlZigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShy
ZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiAr
NjYyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZWRBcnJheUNv
bnRyb2xsZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUeXBl
ZEFycmF5VHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFZN
LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk1FbnRyeVNjb3Bl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2F0Y2hkb2cuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxXYXRjaGRvZ05vbmUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxXZWFrTWFwQ29uc3RydWN0
b3IuY3BwIiAvPgpAQCAtMTI4OSw2ICsxMjkwLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcVWludDMyQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVWludDhBcnJheS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxWTS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTUVudHJ5
U2NvcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2F0Y2hkb2cu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcV2Vha0dDTWFwLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFdlYWtNYXBDb25zdHJ1Y3Rvci5o
IiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5n
IGNvcHkpCkBAIC04MDEsNiArODAxLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcVk0uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTUVudHJ5U2NvcGUu
Y3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXFNvdXJjZUNvZGUuY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNDE4LDYgKzI0
MjEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTS5oIj4KICAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxWTUVudHJ5U2NvcGUuaCI+CisgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiPgogICAgICAgPEZpbHRl
cj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTIzOCw2ICsxMjM4LDggQEAKIAkJRkUyMENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExM
SW50Q0xvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU0QTMzMUYxNUJEMkUwNzAwNkY1
NEYzIC8qIFZNSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFNEEzMzFEMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAg
Ki87IH07CiAJCUZFNEEzMzIwMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0QTMzMUUxNUJEMkUw
NzAwNkY1NEYzIC8qIFZNSW5zcGVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLzsgfTsKKwkJRkU1
OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFNjYxNzI4MTc3NEUwMzUwMDQ5NUIwMCAvKiBWTVN0YWNrQm91bmRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY2MTcyNzE3NzRF
MDM1MDA0OTVCMDAgLyogVk1TdGFja0JvdW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVh
a3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQTA4NjIxMTgyQjdBMDQwMEY2RDg1
MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1p
dGl2ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMjU2Niw2ICsyNTY4LDggQEAKIAkJRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50
Q0xvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBw
YXRoID0gbGxpbnQvTExJbnRDTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1JbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTRBMzMxRTE1QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTUVudHJ5U2Nv
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTU5MzJBNjE4M0M1QTI2MDBB
MUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZNRW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY2MTcyNzE3
NzRFMDM1MDA0OTVCMDAgLyogVk1TdGFja0JvdW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWTVN0YWNrQm91bmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVBMDg2MUYxODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1Z2dlclByaW1pdGl2ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMTYsNiArMzMyMCw4IEBACiAJCTdFRjZFMEJC
MEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNj
b3BlLmNwcCAqLywKKwkJCQlGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAog
CQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdE
RTUwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCkBAIC00MTc3LDYgKzQxODMs
NyBAQAogCQkJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3
RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NEYxN0VFMjc0OTAwQUJC
MjE3IC8qIFRlbXBSZWdpc3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCRkYzQzAxNzk4
Njg5NDAwMDJGNDYyIC8qIERGR0ZpbHRyYXRpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyRkNBRTExMTdBOUMyNEUwMDM0QzczNSAvKiBCeXRlY29kZUJhc2ljQmxvY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtNTU2Niw2ICs1NTczLDcgQEAKIAkJCQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1
OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlENzEwN0VDMzc2
MDA0MjdBNDggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkUz
QzYxQzE2N0JBQkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFsTWFjaGluZS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTdDQTNBRTcxN0RBNDFBRTAwNjUzOEFGIC8qIEpTV2Vha01hcC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNzQ4MkI5NDExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2Jq
ZWN0TWFwUmVmUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQyNTY2MTE1RURFOThE
MDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDE1OTUyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVk
ZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgorI2luY2x1ZGUgIlZNRW50cnlTY29w
ZS5oIgogCiBuYW1lc3BhY2UgewogCkBAIC0xNzIsNyArMTczLDcgQEAgdm9pZCBEZWJ1Z2dlcjo6
ZGV0YWNoKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIC8vIElmIHdlJ3JlIGRldGFjaGluZyBmcm9t
IHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGdsb2JhbCBvYmplY3QsIG1hbnVhbGx5IHRlYXIgZG93
biBvdXIKICAgICAvLyBzdGFjaywgc2luY2Ugd2Ugd29uJ3QgZ2V0IGZ1cnRoZXIgZGVidWdnZXIg
Y2FsbGJhY2tzIHRvIGRvIHNvLiBBbHNvLCByZXN1bWUgZXhlY3V0aW9uLAogICAgIC8vIHNpbmNl
IHRoZXJlJ3Mgbm8gcG9pbnQgaW4gc3RheWluZyBwYXVzZWQgb25jZSBhIHdpbmRvdyBjbG9zZXMu
Ci0gICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSAmJiBtX2N1cnJlbnRDYWxsRnJhbWUtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICBpZiAobV9jdXJyZW50Q2Fs
bEZyYW1lICYmIG1fY3VycmVudENhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpID09IGds
b2JhbE9iamVjdCkgewogICAgICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSAwOwogICAgICAgICBt
X3BhdXNlT25DYWxsRnJhbWUgPSAwOwogICAgICAgICBjb250aW51ZVByb2dyYW0oKTsKQEAgLTE5
Myw4ICsxOTQsOCBAQCB2b2lkIERlYnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhWCiB7
CiAgICAgLy8gSWYgSmF2YVNjcmlwdCBpcyBydW5uaW5nLCBpdCdzIG5vdCBzYWZlIHRvIHJlY29t
cGlsZSwgc2luY2Ugd2UnbGwgZW5kCiAgICAgLy8gdXAgdGhyb3dpbmcgYXdheSBjb2RlIHRoYXQg
aXMgbGl2ZSBvbiB0aGUgc3RhY2suCi0gICAgQVNTRVJUKCF2bS0+ZHluYW1pY0dsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKHZtLT5keW5hbWljR2xvYmFsT2JqZWN0KQorICAgIEFTU0VSVCghdm0tPmVu
dHJ5U2NvcGUpOworICAgIGlmICh2bS0+ZW50cnlTY29wZSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIHZtLT5wcmVwYXJlVG9EaXNjYXJkQ29kZSgpOwpAQCAtNDM4LDggKzQzOSw4IEBAIHZv
aWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoQ2FsbEZyYW1lKiAKICAgICBpZiAobV9pc1BhdXNl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxP
YmplY3QgPSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKLSAgICBpZiAoIW5lZWRQ
YXVzZUhhbmRsaW5nKGR5bmFtaWNHbG9iYWxPYmplY3QpKQorICAgIEpTR2xvYmFsT2JqZWN0KiB2
bUVudHJ5R2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7Cisg
ICAgaWYgKCFuZWVkUGF1c2VIYW5kbGluZyh2bUVudHJ5R2xvYmFsT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQnJlYWtwb2ludCBicmVha3BvaW50OwpAQCAtNDcwLDcgKzQ3MSw3IEBA
IHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoQ2FsbEZyYW1lKiAKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBoYW5kbGVQYXVzZShtX3JlYXNvbkZvclBhdXNlLCBkeW5hbWlj
R2xvYmFsT2JqZWN0KTsKKyAgICBoYW5kbGVQYXVzZShtX3JlYXNvbkZvclBhdXNlLCB2bUVudHJ5
R2xvYmFsT2JqZWN0KTsKIAogICAgIGlmICghbV9wYXVzZU9uTmV4dFN0YXRlbWVudCAmJiAhbV9w
YXVzZU9uQ2FsbEZyYW1lKSB7CiAgICAgICAgIHNldFNob3VsZFBhdXNlKGZhbHNlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRl
ICJTdGFja1Zpc2l0b3IuaCIKKyNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKQEAgLTc3LDEyICs3OCwxMiBAQCBQYXNzUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1l
PiBEZWJ1Z2dlckNhCiAgICAgcmV0dXJuIG1fY2FsbGVyOwogfQogCi1KU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBEZWJ1Z2dlckNhbGxGcmFtZTo6ZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0CitKU0M6
OkpTR2xvYmFsT2JqZWN0KiBEZWJ1Z2dlckNhbGxGcmFtZTo6dm1FbnRyeUdsb2JhbE9iamVjdCgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSk7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX2NhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9i
amVjdCgpOworICAgIHJldHVybiBtX2NhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOwog
fQogCiBTb3VyY2VJRCBEZWJ1Z2dlckNhbGxGcmFtZTo6c291cmNlSUQoKSBjb25zdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1l
LmgJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlckNhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHB1Ymxp
YzoKICAgICBpbnQgY29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbi5tX2NvbHVtbi56
ZXJvQmFzZWRJbnQoKTsgfQogICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFRleHRQb3NpdGlv
biYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCgpIGNvbnN0Owor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0
KCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNTY29wZSogc2NvcGUoKSBjb25zdDsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZnVuY3Rpb25OYW1lKCkgY29uc3Q7CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgVHlwZSB0eXBlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMSw5ICszMzEsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24o
KQogICAgIC8vIHNvIGVudGVyIGFmdGVyIHRoaXMuCiAgICAgTGFiZWwgZnJvbUFyaXR5Q2hlY2so
dGhpcyk7CiAgICAgLy8gUGxhbnQgYSBjaGVjayB0aGF0IHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZh
aWxhYmxlIGluIHRoZSBKU1N0YWNrLgotICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTEKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykub2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQ
UkluZm86OnJlZ1QxKTsKLSAgICBKdW1wIHN0YWNrQ2hlY2sgPSBicmFuY2hQdHIoQWJvdmUsIEFi
c29sdXRlQWRkcmVzcyhtX3ZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5hZGRyZXNzT2ZFbmQoKSks
IEdQUkluZm86OnJlZ1QxKTsKKyAgICBKdW1wIHN0YWNrQ2hlY2sgPSBicmFuY2hQdHIoQWJvdmUs
IEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRyZXNzT2ZTdGFja0xpbWl0KCkpLCBHUFJJbmZvOjpy
ZWdUMSk7CiAgICAgLy8gUmV0dXJuIGhlcmUgYWZ0ZXIgc3RhY2sgY2hlY2suCiAgICAgTGFiZWwg
ZnJvbVN0YWNrQ2hlY2sgPSBsYWJlbCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgogI2luY2x1
ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVt
cCBzdGFja0NoZWNrID0gaml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
QWJvdmUsCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhzdGF0ZS5n
cmFwaC5tX3ZtLmludGVycHJldGVyLT5zdGFjaygpLmFkZHJlc3NPZkVuZCgpKSwKKyAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKHN0YXRlLmdyYXBoLm1fdm0uYWRkcmVz
c09mU3RhY2tMaW1pdCgpKSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBmcm9tU3RhY2tDaGVjayA9IGppdC5sYWJlbCgpOwogICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCShyZXZp
c2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENv
ZGUuaCIKKyNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogCiAjaWYgRU5BQkxFKEZUTF9KSVQp
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNTk1MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjkxLDcgKzI5MSw3IEBAIGJvb2wgSGVhcDo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUp
CiAvLyBSdW4gYWxsIHBlbmRpbmcgZmluYWxpemVycyBub3cgYmVjYXVzZSB3ZSB3b24ndCBnZXQg
YW5vdGhlciBjaGFuY2UuCiB2b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKLSAg
ICBSRUxFQVNFX0FTU0VSVCghbV92bS0+ZHluYW1pY0dsb2JhbE9iamVjdCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoIW1fdm0tPmVudHJ5U2NvcGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAKICAgICBtX29iamVjdFNwYWNlLmxhc3RD
aGFuY2VUb0ZpbmFsaXplKCk7CkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVB
bGxDb21waWxlZENvZGUoKQogewogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVubmluZywgaXQn
cyBub3Qgc2FmZSB0byBkZWxldGUgY29kZSwgc2luY2Ugd2UnbGwgZW5kCiAgICAgLy8gdXAgZGVs
ZXRpbmcgY29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgotICAgIGlmIChtX3ZtLT5keW5h
bWljR2xvYmFsT2JqZWN0KQorICAgIGlmIChtX3ZtLT5lbnRyeVNjb3BlKQogICAgICAgICByZXR1
cm47CiAKICAgICBmb3IgKEV4ZWN1dGFibGVCYXNlKiBjdXJyZW50ID0gbV9jb21waWxlZENvZGUu
aGVhZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHJldmlzaW9u
IDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDExIEBACiAjZGVmaW5lIENhY2hlZENhbGxf
aAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lQ2xvc3VyZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhl
bHBlcnMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlZNRW50cnlTY29wZS5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDYWNoZWRDYWxsIHsKQEAgLTM4LDEwICs0
MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FjaGVkQ2FsbChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50KQogICAgICAg
ICAgICAgOiBtX3ZhbGlkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2ludGVycHJldGVyKGNhbGxG
cmFtZS0+aW50ZXJwcmV0ZXIoKSkKLSAgICAgICAgICAgICwgbV9nbG9iYWxPYmplY3RTY29wZShj
YWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKSkKKyAgICAg
ICAgICAgICwgbV9lbnRyeVNjb3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rpb24tPnNjb3BlKCkt
Pmdsb2JhbE9iamVjdCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9u
LT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0
ZXItPnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZy
YW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29wZSgpKTsKKyAg
ICAgICAgICAgIGlmIChtX2VudHJ5U2NvcGUuaGFzRW5vdWdoU3RhY2tUb0VudGVyVk0oKSkKKyAg
ICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0
Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgZnVuY3Rpb24sIGFyZ3Vt
ZW50Q291bnQgKyAxLCBmdW5jdGlvbi0+c2NvcGUoKSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKICAgICAgICAg
ICAgIG1fdmFsaWQgPSAhY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTY5LDcgKzc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCBtX3ZhbGlkOwogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsK
LSAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIG1fZ2xvYmFsT2JqZWN0U2NvcGU7Cisg
ICAgICAgIFZNRW50cnlTY29wZSBtX2VudHJ5U2NvcGU7CiAgICAgICAgIENhbGxGcmFtZUNsb3N1
cmUgbV9jbG9zdXJlOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJWTUVudHJ5U2Nv
cGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTEyMiw0ICsxMjMsMTUgQEAgUmVnaXN0ZXIq
IENhbGxGcmFtZTo6ZnJhbWVFeHRlbnRJbnRlcm5hbAogICAgIHJldHVybiByZWdpc3RlcnMoKSAr
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
Lm9mZnNldCgpOwogfQogCitKU0dsb2JhbE9iamVjdCogQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFs
T2JqZWN0KCkKK3sKKyAgICBpZiAodGhpcyA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2Jh
bEV4ZWMoKSkKKyAgICAgICAgcmV0dXJuIGxleGljYWxHbG9iYWxPYmplY3QoKTsKKworICAgIC8v
IEZvciBhbnkgRXhlY1N0YXRlIHRoYXQncyBub3QgYSBnbG9iYWxFeGVjLCB0aGUgCisgICAgLy8g
ZHluYW1pYyBnbG9iYWwgb2JqZWN0IG11c3QgYmUgc2V0IHNpbmNlIGNvZGUgaXMgcnVubmluZwor
ICAgIEFTU0VSVCh2bSgpLmVudHJ5U2NvcGUpOworICAgIHJldHVybiB2bSgpLmVudHJ5U2NvcGUt
Pmdsb2JhbE9iamVjdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDE1OTUy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBHbG9iYWwgb2JqZWN0IGluIHdoaWNoIGV4ZWN1dGlvbiBiZWdhbi4KLSAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmplY3QoKTsKIAog
ICAgICAgICAvLyBHbG9iYWwgb2JqZWN0IGluIHdoaWNoIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5n
IGNvZGUgd2FzIGRlZmluZWQuCiAgICAgICAgIC8vIERpZmZlcnMgZnJvbSBkeW5hbWljR2xvYmFs
T2JqZWN0KCkgZHVyaW5nIGZ1bmN0aW9uIGNhbGxzIGFjcm9zcyB3ZWIgYnJvd3NlciBmcmFtZXMu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAK
ICNpbmNsdWRlICJTdGFja1Zpc2l0b3IuaCIKICNpbmNsdWRlICJTdHJpY3RFdmFsQWN0aXZhdGlv
bi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJWTUVudHJ5U2NvcGUu
aCIKICNpbmNsdWRlICJWTVN0YWNrQm91bmRzLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVy
LmgiCiAKQEAgLTM5NSw3ICszOTYsNyBAQCBzdGF0aWMgYm9vbCB1bndpbmRDYWxsRnJhbWUoU3Rh
Y2tWaXNpdG9yCiAgICAgQ29kZUJsb2NrKiBvbGRDb2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAgICAg
SlNTY29wZSogc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7CiAKLSAgICBpZiAoRGVidWdnZXIq
IGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkp
IHsKKyAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+Y2FsbGVlKCkp
CiAgICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoY2FsbEZyYW1lKTsKICAgICAgICAg
ZWxzZQpAQCAtNjUwLDcgKzY1MSw3IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJw
cmV0ZXI6OnUKICAgICBBU1NFUlQoY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvblN0YWNrKCkuc2l6
ZSgpKTsKICAgICBBU1NFUlQoIWV4Y2VwdGlvblZhbHVlLmlzT2JqZWN0KCkgfHwgYXNPYmplY3Qo
ZXhjZXB0aW9uVmFsdWUpLT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dm0oKS5w
cm9wZXJ0eU5hbWVzLT5zdGFjaykpOwogCi0gICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZy
YW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CisgICAgRGVidWdnZXIqIGRl
YnVnZ2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CiAg
ICAgaWYgKGRlYnVnZ2VyICYmIGRlYnVnZ2VyLT5uZWVkc0V4Y2VwdGlvbkNhbGxiYWNrcygpKSB7
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xlYXIgdGhlIGV4Y2VwdGlvbiBhbmQgdGhlIGV4Y2Vw
dGlvbiBzdGFjayBoZXJlIGluIG9yZGVyIHRvIHNlZSBpZiBhIG5ldyBleGNlcHRpb24gaGFwcGVu
cy4KICAgICAgICAgLy8gQWZ0ZXJ3YXJkcywgdGhlIHZhbHVlcyBhcmUgcHV0IGJhY2sgdG8gY29u
dGludWUgcHJvY2Vzc2luZyB0aGlzIGVycm9yLgpAQCAtNzM5LDE1ICs3NDAsMTQgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgIGlmICh2bS5pc0NvbGxlY3Rv
ckJ1c3koKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCi0gICAgU3RhY2tTdGF0czo6Q2hl
Y2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7Ci0gICAgY29uc3QgVk1TdGFja0JvdW5kcyB2bVN0YWNr
Qm91bmRzKHZtLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKSk7Ci0gICAgaWYgKCF2bVN0YWNrQm91
bmRzLmlzU2FmZVRvUmVjdXJzZSgpKQorICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghZW50cnlTY29wZS5oYXNFbm91Z2hTdGFj
a1RvRW50ZXJWTSgpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZSAicHJv
Z3JhbSIgaXMgYWN0dWFsbHkganVzdCBhIEpTT04gb2JqZWN0LiBJZiBzbywKICAgICAvLyB3ZSds
bCBoYW5kbGUgdGhlIEpTT04gb2JqZWN0IGhlcmUuIEVsc2UsIHdlJ2xsIGhhbmRsZSByZWFsIEpT
IGNvZGUKICAgICAvLyBiZWxvdyBhdCBmYWlsZWRKU09OUC4KLSAgICBEeW5hbWljR2xvYmFsT2Jq
ZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisK
ICAgICBWZWN0b3I8SlNPTlBEYXRhPiBKU09OUERhdGE7CiAgICAgYm9vbCBwYXJzZVJlc3VsdDsK
ICAgICBjb25zdCBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJjZSgpLnRvU3Ry
aW5nKCk7CkBAIC05MDAsMTEgKzkwMCw2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
YWxsKENhbGxGcmEKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCiAgICAgICAgIHJldHVy
biBqc051bGwoKTsKIAotICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50
OwotICAgIGNvbnN0IFZNU3RhY2tCb3VuZHMgdm1TdGFja0JvdW5kcyh2bSwgd3RmVGhyZWFkRGF0
YSgpLnN0YWNrKCkpOwotICAgIGlmICghdm1TdGFja0JvdW5kcy5pc1NhZmVUb1JlY3Vyc2UoKSkK
LSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKSk7Ci0KICAgICBib29sIGlzSlNDYWxsID0gKGNhbGxUeXBlID09IENhbGxUeXBlSlMp
OwogICAgIEpTU2NvcGUqIHNjb3BlOwogICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrOwpAQCAt
OTE2LDcgKzkxMSwxMCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJh
CiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpOwogICAgICAgICBzY29w
ZSA9IGNhbGxGcmFtZS0+c2NvcGUoKTsKICAgICB9Ci0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNj
b3BlIGdsb2JhbE9iamVjdFNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAg
Vk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAg
aWYgKCFlbnRyeVNjb3BlLmhhc0Vub3VnaFN0YWNrVG9FbnRlclZNKCkpCisgICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCiAg
ICAgaWYgKGlzSlNDYWxsKSB7CiAgICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKQEAgLTk3
OCwxMSArOTc2LDYgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAog
ICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKLSAgICBTdGFja1N0YXRz
OjpDaGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKLSAgICBjb25zdCBWTVN0YWNrQm91bmRzIHZt
U3RhY2tCb3VuZHModm0sIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpKTsKLSAgICBpZiAoIXZtU3Rh
Y2tCb3VuZHMuaXNTYWZlVG9SZWN1cnNlKCkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwotCiAgICAgYm9vbCBpc0pTQ29u
c3RydWN0ID0gKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUpTKTsKICAgICBKU1Njb3Bl
KiBzY29wZTsKICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jazsKQEAgLTk5NSw3ICs5ODgsOSBA
QCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgIHNjb3Bl
ID0gY2FsbEZyYW1lLT5zY29wZSgpOwogICAgIH0KIAotICAgIER5bmFtaWNHbG9iYWxPYmplY3RT
Y29wZSBnbG9iYWxPYmplY3RTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBW
TUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBp
ZiAoIWVudHJ5U2NvcGUuaGFzRW5vdWdoU3RhY2tUb0VudGVyVk0oKSkKKyAgICAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKICAg
ICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CkBA
IC0xMDY1LDEzICsxMDYwLDYgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFy
ZUZvcgogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKICAgICAgICAgcmV0dXJuIENhbGxG
cmFtZUNsb3N1cmUoKTsKIAotICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1Bv
aW50OwotICAgIGNvbnN0IFZNU3RhY2tCb3VuZHMgdm1TdGFja0JvdW5kcyh2bSwgd3RmVGhyZWFk
RGF0YSgpLnN0YWNrKCkpOwotICAgIGlmICghdm1TdGFja0JvdW5kcy5pc1NhZmVUb1JlY3Vyc2Uo
KSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwotICAgICAg
ICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwotICAgIH0KLQogICAgIC8vIENvbXBpbGUgdGhl
IGNhbGxlZToKICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBh
cmVGb3JFeGVjdXRpb24oY2FsbEZyYW1lLCBzY29wZSwgQ29kZUZvckNhbGwpOwogICAgIGlmIChl
cnJvcikgewpAQCAtMTE2NSwxMiArMTE1Myw5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoRXZhbEV4ZWN1dGEKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCiAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKIAotICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmpl
Y3RTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKLQotICAgIFN0YWNrU3RhdHM6OkNo
ZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50OwotICAgIGNvbnN0IFZNU3RhY2tCb3VuZHMgdm1TdGFj
a0JvdW5kcyh2bSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkpOwotICAgIGlmICghdm1TdGFja0Jv
dW5kcy5pc1NhZmVUb1JlY3Vyc2UoKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgVk1FbnRyeVNjb3BlIGVudHJ5
U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCFlbnRyeVNjb3BlLmhh
c0Vub3VnaFN0YWNrVG9FbnRlclZNKCkpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOyAgICAgICAgCiAKICAgICB1bnNpZ25l
ZCBudW1WYXJpYWJsZXMgPSBldmFsLT5udW1WYXJpYWJsZXMoKTsKICAgICBpbnQgbnVtRnVuY3Rp
b25zID0gZXZhbC0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7CkBAIC0xMjUxLDcgKzEyMzYsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKIE5FVkVSX0lOTElO
RSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29r
SUQgZGVidWdIb29rSUQpCiB7Ci0gICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CisgICAgRGVidWdnZXIqIGRlYnVnZ2Vy
ID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CiAgICAgaWYg
KCFkZWJ1Z2dlciB8fCAhZGVidWdnZXItPm5lZWRzT3BEZWJ1Z0NhbGxiYWNrcygpKQogICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0
YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SlNTdGFjay5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9KU1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsMTMgKzQ0LDE0IEBAIHN0
YXRpYyBNdXRleCYgc3RhY2tTdGF0aXN0aWNzTXV0ZXgoKQogfSAgICAKIAogSlNTdGFjazo6SlNT
dGFjayhWTSYgdm0sIHNpemVfdCBjYXBhY2l0eSkKLSAgICA6IG1fZW5kKDApCisgICAgOiBtX3Zt
KHZtKQorICAgICwgbV9lbmQoMCkKICAgICAsIG1fdG9wQ2FsbEZyYW1lKHZtLnRvcENhbGxGcmFt
ZSkKIHsKICAgICBBU1NFUlQoY2FwYWNpdHkgJiYgaXNQYWdlQWxpZ25lZChjYXBhY2l0eSkpOwog
CiAgICAgbV9yZXNlcnZhdGlvbiA9IFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZShyb3VuZFVwQWxs
b2NhdGlvblNpemUoY2FwYWNpdHkgKiBzaXplb2YoUmVnaXN0ZXIpLCBjb21taXRTaXplKSwgT1NB
bGxvY2F0b3I6OkpTVk1TdGFja1BhZ2VzKTsKLSAgICBtX2VuZCA9IGhpZ2hBZGRyZXNzKCk7Cisg
ICAgdXBkYXRlU3RhY2tMaW1pdChoaWdoQWRkcmVzcygpKTsKICAgICBtX2NvbW1pdEVuZCA9IGhp
Z2hBZGRyZXNzKCk7CiAKICAgICBkaXNhYmxlRXJyb3JTdGFja1Jlc2VydmUoKTsKQEAgLTcxLDcg
KzcyLDcgQEAgYm9vbCBKU1N0YWNrOjpncm93U2xvd0Nhc2UoUmVnaXN0ZXIqIG5ldwogICAgIC8v
IElmIHdlIGhhdmUgYWxyZWFkeSBjb21taXR0ZWQgZW5vdWdoIG1lbW9yeSB0byBzYXRpc2Z5IHRo
aXMgcmVxdWVzdCwKICAgICAvLyBqdXN0IHVwZGF0ZSB0aGUgZW5kIHBvaW50ZXIgYW5kIHJldHVy
bi4KICAgICBpZiAobmV3RW5kID49IG1fY29tbWl0RW5kKSB7Ci0gICAgICAgIG1fZW5kID0gbmV3
RW5kOworICAgICAgICB1cGRhdGVTdGFja0xpbWl0KG5ld0VuZCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtODcsNyArODgsNyBAQCBib29sIEpTU3RhY2s6Omdyb3dTbG93Q2Fz
ZShSZWdpc3RlciogbmV3CiAgICAgbV9yZXNlcnZhdGlvbi5jb21taXQocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obV9jb21taXRFbmQpIC0gZGVsdGEsIGRlbHRhKTsKICAgICBhZGRUb0NvbW1pdHRl
ZEJ5dGVDb3VudChkZWx0YSk7CiAgICAgbV9jb21taXRFbmQgPSByZWludGVycHJldF9jYXN0X3B0
cjxSZWdpc3Rlcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fY29tbWl0RW5kKSAtIGRlbHRh
KTsKLSAgICBtX2VuZCA9IG5ld0VuZDsKKyAgICB1cGRhdGVTdGFja0xpbWl0KG5ld0VuZCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0pTU3RhY2suaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODcs
NyArODcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBoaWdoQWRkcmVz
cygpIC0gMTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZ2lzdGVyKiBnZXRMaW1pdE9mU3RhY2so
KSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIGhpZ2hBZGRyZXNzKCkgLSBsb3dBZGRyZXNzKCk7IH0KIAogICAgICAgICBib29sIGdy
b3coUmVnaXN0ZXIqKTsKQEAgLTk1LDE1ICs5NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgc2l6ZV90IGNvbW1pdHRlZEJ5dGVDb3VudCgpOwogICAgICAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICAgICAgUmVnaXN0ZXIqIGNvbnN0ICogYWRk
cmVzc09mRW5kKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZtX2VuZDsK
LSAgICAgICAgfQotCiAgICAgICAgIFJlZ2lzdGVyKiBnZXRUb3BPZkZyYW1lKENhbGxGcmFtZSop
OwogICAgICAgICBSZWdpc3RlciogZ2V0U3RhcnRPZkZyYW1lKENhbGxGcmFtZSopOwogICAgICAg
ICBSZWdpc3RlciogZ2V0VG9wT2ZTdGFjaygpOwotICAgICAgICBSZWdpc3RlciogZW5kKCkgY29u
c3QgeyByZXR1cm4gbV9lbmQ7IH0KIAogICAgICAgICBDYWxsRnJhbWUqIHB1c2hGcmFtZShDYWxs
RnJhbWUqIGNhbGxlckZyYW1lLCBjbGFzcyBDb2RlQmxvY2sqLAogICAgICAgICAgICAgSlNTY29w
ZSosIGludCBhcmdzQ291bnQsIEpTT2JqZWN0KiBjYWxsZWUpOwpAQCAtMTUzLDYgKzE0Niw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwog
ICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwogCisgICAgICAgIHZv
aWQgdXBkYXRlU3RhY2tMaW1pdChSZWdpc3RlciogbmV3RW5kKTsKKworICAgICAgICBWTSYgbV92
bTsKICAgICAgICAgUmVnaXN0ZXIqIG1fZW5kOwogICAgICAgICBSZWdpc3RlciogbV9jb21taXRF
bmQ7CiAgICAgICAgIFJlZ2lzdGVyKiBtX3VzZWFibGVFbmQ7CkBAIC0xNjIsMjIgKzE1OCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIH07CiAKLSAgICBpbmxpbmUgdm9pZCBKU1N0YWNrOjpzaHJpbmsoUmVnaXN0ZXIq
IG5ld0VuZCkKLSAgICB7Ci0gICAgICAgIGlmIChuZXdFbmQgPj0gbV9lbmQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fZW5kID0gbmV3RW5kOwotICAgICAgICBpZiAobV9lbmQgPT0g
Z2V0QmFzZU9mU3RhY2soKSAmJiAobV9jb21taXRFbmQgLSBnZXRCYXNlT2ZTdGFjaygpKSA+PSBt
YXhFeGNlc3NDYXBhY2l0eSkKLSAgICAgICAgICAgIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwot
ICAgIH0KLQotICAgIGlubGluZSBib29sIEpTU3RhY2s6Omdyb3coUmVnaXN0ZXIqIG5ld0VuZCkK
LSAgICB7Ci0gICAgICAgIGlmIChuZXdFbmQgPj0gbV9lbmQpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIGdyb3dTbG93Q2FzZShuZXdFbmQpOwotICAgIH0KLQogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU1N0YWNrX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZpc2lv
biAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKKyNpbmNs
dWRlICJWTS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTM1LDYgKzEzNiwyNyBAQCBpbmxp
bmUgdm9pZCBKU1N0YWNrOjpwb3BGcmFtZShDYWxsRnJhbWUqCiAgICAgaW5zdGFsbFRyYXBzQWZ0
ZXJGcmFtZShjYWxsZXJGcmFtZSk7CiB9CiAKK2lubGluZSB2b2lkIEpTU3RhY2s6OnNocmluayhS
ZWdpc3RlciogbmV3RW5kKQoreworICAgIGlmIChuZXdFbmQgPj0gbV9lbmQpCisgICAgICAgIHJl
dHVybjsKKyAgICB1cGRhdGVTdGFja0xpbWl0KG5ld0VuZCk7CisgICAgaWYgKG1fZW5kID09IGdl
dEJhc2VPZlN0YWNrKCkgJiYgKG1fY29tbWl0RW5kIC0gZ2V0QmFzZU9mU3RhY2soKSkgPj0gbWF4
RXhjZXNzQ2FwYWNpdHkpCisgICAgICAgIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOworfQorCitp
bmxpbmUgYm9vbCBKU1N0YWNrOjpncm93KFJlZ2lzdGVyKiBuZXdFbmQpCit7CisgICAgaWYgKG5l
d0VuZCA+PSBtX2VuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGdyb3dTbG93
Q2FzZShuZXdFbmQpOworfQorCitpbmxpbmUgdm9pZCBKU1N0YWNrOjp1cGRhdGVTdGFja0xpbWl0
KFJlZ2lzdGVyKiBuZXdFbmQpCit7CisgICAgbV9lbmQgPSBuZXdFbmQ7CisgICAgbV92bS5zZXRT
dGFja0xpbWl0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG5ld0VuZCkpOworfQogCiAjaWYgRU5B
QkxFKERFQlVHX0pTU1RBQ0spCiBpbmxpbmUgSlNWYWx1ZSBKU1N0YWNrOjpnZW5lcmF0ZUZlbmNl
VmFsdWUoc2l6ZV90IGFyZ0luZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAko
cmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NjgsNyArNTY4LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpw
cml2YXRlQ29tcGlsZShKSQogI2VuZGlmCiAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
Lm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMSk7
Ci0gICAgICAgIHN0YWNrQ2hlY2sgPSBicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyht
X3ZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5hZGRyZXNzT2ZFbmQoKSksIHJlZ1QxKTsKKyAgICAg
ICAgc3RhY2tDaGVjayA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFk
ZHJlc3NPZlN0YWNrTGltaXQoKSksIHJlZ1QxKTsKICAgICB9CiAKICAgICBMYWJlbCBmdW5jdGlv
bkJvZHkgPSBsYWJlbCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9p
ZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogICAgICAgICBhZGRQdHIoY2Fs
bEZyYW1lUmVnaXN0ZXIsIHJlZ1QzKTsKICAgICAgICAgLy8gcmVnVDM6IG5ld0NhbGxGcmFtZQog
Ci0gICAgICAgIHNsb3dDYXNlLmFwcGVuZChicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVz
cyhtX3ZtLT5pbnRlcnByZXRlci0+c3RhY2soKS5hZGRyZXNzT2ZFbmQoKSksIHJlZ1QzKSk7Cisg
ICAgICAgIHNsb3dDYXNlLmFwcGVuZChicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyht
X3ZtLT5hZGRyZXNzT2ZTdGFja0xpbWl0KCkpLCByZWdUMykpOwogCiAgICAgICAgIC8vIEluaXRp
YWxpemUgQXJndW1lbnRDb3VudC4KICAgICAgICAgc3RvcmUzMihyZWdUMiwgcGF5bG9hZEZvcihK
U1N0YWNrOjpBcmd1bWVudENvdW50LCByZWdUMykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQg
SklUOjpjb21waWxlTG9hZFZhcmFyZ3MoSW5zdHJ1Y3Rpb24KICAgICAgICAgYWRkUHRyKGNhbGxG
cmFtZVJlZ2lzdGVyLCByZWdUMSk7CiAgICAgICAgIC8vIHJlZ1QxOiBuZXdDYWxsRnJhbWUKIAot
ICAgICAgICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3Mo
bV92bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCkuYWRkcmVzc09mRW5kKCkpLCByZWdUMSkpOworICAg
ICAgICBzbG93Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKEFib3ZlLCBBYnNvbHV0ZUFkZHJlc3MobV92
bS0+YWRkcmVzc09mU3RhY2tMaW1pdCgpKSwgcmVnVDEpKTsKIAogICAgICAgICAvLyBJbml0aWFs
aXplIEFyZ3VtZW50Q291bnQuCiAgICAgICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVnVDEs
IEpTU3RhY2s6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXls
b2FkKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2lu
Y2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YWNrSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM4MywxMCArMzgz
LDkgQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnUwogICAgIGxvYWRp
IENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAogICAgIGFkZGkgMSwgdDAg
IyBBY2NvdW50IHRoYXQgbG9jYWwwIGdvZXMgYXQgc2xvdCAtMQogICAgIGxvYWRwIENvZGVCbG9j
azo6bV92bVt0MV0sIHQyCi0gICAgbG9hZHAgVk06OmludGVycHJldGVyW3QyXSwgdDIKICAgICBs
c2hpZnRwIDMsIHQwCiAgICAgc3VicCBjZnIsIHQwLCB0MAotICAgIGJwYmVxIEludGVycHJldGVy
OjptX3N0YWNrICsgSlNTdGFjazo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKyAgICBi
cGJlcSBWTTo6bV9zdGFja0xpbWl0W3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCiAKICAgICAjIFN0
YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBzbG93X3BhdGguCiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zdGFja19jaGVjaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxNTk1MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJz
LmgiCisjaW5jbHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2Uu
aCIKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0
ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAo
cG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNyBBcHBsZSBJbmMuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDEzIEFwcGxlIEluYy4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC03OCw3ICs3OCw3IEBAIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCAKICAgICB9CiAKICAgICBpZiAoIXRoaXNWYWx1ZSB8fCB0aGlzVmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+ZHluYW1pY0dsb2Jh
bE9iamVjdCgpOworICAgICAgICB0aGlzVmFsdWUgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUu
dG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMt
PmludGVycHJldGVyKCktPmV4ZWN1dGUocHJvZ3JhbSwgZXhlYywgdGhpc09iaik7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xMTIsNyArMTEyLDcgQEAg
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRQogCiAgICAgU291cmNlQ29k
ZSBzb3VyY2UgPSBtYWtlU291cmNlKHByb2dyYW0sIHNvdXJjZVVSTCwgcG9zaXRpb24pOwogICAg
IEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgZXhl
YywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZleGNl
cHRpb24pOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBGdW5jdGlvbkV4ZWN1
dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgZXhlYywgZXhlYy0+dm1FbnRyeUds
b2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZleGNlcHRpb24pOwogICAgIGlmICgh
ZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lv
biAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNiwyNiArNzA2LDYgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6Y2xlYXJSYXJlRGF0YShKU0NlbAogICAgIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGNl
bGwpLT5tX3JhcmVEYXRhLmNsZWFyKCk7CiB9CiAKLUR5bmFtaWNHbG9iYWxPYmplY3RTY29wZTo6
RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNH
bG9iYWxPYmplY3QpCi0gICAgOiBtX2R5bmFtaWNHbG9iYWxPYmplY3RTbG90KHZtLmR5bmFtaWNH
bG9iYWxPYmplY3QpCi0gICAgLCBtX3NhdmVkRHluYW1pY0dsb2JhbE9iamVjdChtX2R5bmFtaWNH
bG9iYWxPYmplY3RTbG90KQotewotICAgIGlmICghbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdCkg
ewotI2lmIEVOQUJMRShBU1NFTUJMRVIpCi0gICAgICAgIGlmIChFeGVjdXRhYmxlQWxsb2NhdG9y
Ojp1bmRlck1lbW9yeVByZXNzdXJlKCkpCi0gICAgICAgICAgICB2bS5oZWFwLmRlbGV0ZUFsbENv
bXBpbGVkQ29kZSgpOwotI2VuZGlmCi0KLSAgICAgICAgbV9keW5hbWljR2xvYmFsT2JqZWN0U2xv
dCA9IGR5bmFtaWNHbG9iYWxPYmplY3Q7Ci0KLSAgICAgICAgLy8gUmVzZXQgdGhlIGRhdGUgY2Fj
aGUgYmV0d2VlbiBKUyBpbnZvY2F0aW9ucyB0byBmb3JjZSB0aGUgVk0KLSAgICAgICAgLy8gdG8g
b2JzZXJ2ZSB0aW1lIHpvbmUgY2hhbmdlcy4KLSAgICAgICAgdm0ucmVzZXREYXRlQ2FjaGUoKTsK
LSAgICB9Ci0gICAgLy8gQ2xlYXIgdGhlIGV4Y2VwdGlvbiBzdGFjayBiZXR3ZWVuIGVudHJpZXMK
LSAgICB2bS5jbGVhckV4Y2VwdGlvblN0YWNrKCk7Ci19Ci0KIHZvaWQgc2xvd1ZhbGlkYXRlQ2Vs
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGds
b2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU4NiwxNyArNTg2LDYgQEAgaW5saW5lIGJvb2wgSlNHbG9iYWxPYmplY3Q6OnN5bWJv
bFRhYmxlSAogICAgIHJldHVybiAhZW50cnkuaXNOdWxsKCk7CiB9CiAKLWlubGluZSBKU0dsb2Jh
bE9iamVjdCogRXhlY1N0YXRlOjpkeW5hbWljR2xvYmFsT2JqZWN0KCkKLXsKLSAgICBpZiAodGhp
cyA9PSBsZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkKLSAgICAgICAgcmV0dXJu
IGxleGljYWxHbG9iYWxPYmplY3QoKTsKLQotICAgIC8vIEZvciBhbnkgRXhlY1N0YXRlIHRoYXQn
cyBub3QgYSBnbG9iYWxFeGVjLCB0aGUgCi0gICAgLy8gZHluYW1pYyBnbG9iYWwgb2JqZWN0IG11
c3QgYmUgc2V0IHNpbmNlIGNvZGUgaXMgcnVubmluZwotICAgIEFTU0VSVCh2bSgpLmR5bmFtaWNH
bG9iYWxPYmplY3QpOwotICAgIHJldHVybiB2bSgpLmR5bmFtaWNHbG9iYWxPYmplY3Q7Ci19Ci0K
IGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RFbXB0eUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCA9IDApCiB7CiAgICAgcmV0dXJuIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIEpTQXJyYXk6OmNy
ZWF0ZShleGVjLT52bSgpLCBpbml0aWFsTGVuZ3RoID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgg
PyBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpIDogZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvclByb2ZpbGVEdXJpbmdBbGxvY2F0aW9uKHByb2ZpbGUpLCBpbml0aWFsTGVuZ3RoKSk7CkBA
IC02MzcsMjEgKzYyNiw2IEBAIGlubGluZSBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZl
SW4KICAgICByZXR1cm4gY29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoZXhlYywgcHJvZmls
ZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCB2YWx1ZXMsIGxlbmd0aCk7CiB9CiAKLWNs
YXNzIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKTsKLXB1YmxpYzoKLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoVk0mLCBKU0dsb2JhbE9iamVjdCopOwotCi0gICAg
fkR5bmFtaWNHbG9iYWxPYmplY3RTY29wZSgpCi0gICAgewotICAgICAgICBtX2R5bmFtaWNHbG9i
YWxPYmplY3RTbG90ID0gbV9zYXZlZER5bmFtaWNHbG9iYWxPYmplY3Q7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEpTR2xvYmFsT2JqZWN0KiYgbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdDsKLSAg
ICBKU0dsb2JhbE9iamVjdCogbV9zYXZlZER5bmFtaWNHbG9iYWxPYmplY3Q7Ci19OwotCiBpbmxp
bmUgSlNPYmplY3QqIEpTU2NvcGU6Omdsb2JhbFRoaXMoKQogeyAKICAgICByZXR1cm4gZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbFRoaXMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIFZNOjpWTShWTVR5cGUg
dm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGpzQXJyYXlDbGFzc0luZm8oSlNBcnJh
eTo6aW5mbygpKQogICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbyhKU0ZpbmFsT2JqZWN0Ojpp
bmZvKCkpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQotICAgICwgZHluYW1pY0ds
b2JhbE9iamVjdCgwKQorICAgICwgZW50cnlTY29wZSgwKQogICAgICwgbV9lbmFibGVkUHJvZmls
ZXIoMCkKICAgICAsIG1fcmVnRXhwQ2FjaGUobmV3IFJlZ0V4cENhY2hlKHRoaXMpKQogI2lmIEVO
QUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIFZNOjpyZWxlYXNl
RXhlY3V0YWJsZU1lbW9yeSgpCiB7CiAgICAgcHJlcGFyZVRvRGlzY2FyZENvZGUoKTsKICAgICAK
LSAgICBpZiAoZHluYW1pY0dsb2JhbE9iamVjdCkgeworICAgIGlmIChlbnRyeVNjb3BlKSB7CiAg
ICAgICAgIFN0YWNrUHJlc2VydmluZ1JlY29tcGlsZXIgcmVjb21waWxlcjsKICAgICAgICAgSGVh
cEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKGhlYXApOwogICAgICAgICBIYXNoU2V0PEpT
Q2VsbCo+IHJvb3RzOwpAQCAtNjE4LDcgKzYxOCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJj
ZVRvRXJyb3IoQ2FsbEZyYW0KICAgICAKIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikKIHsKLSAgICBBU1NFUlQoZXhlYyA9PSB0b3BDYWxs
RnJhbWUgfHwgZXhlYyA9PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSB8fCBleGVjID09IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsK
KyAgICBBU1NFUlQoZXhlYyA9PSB0b3BDYWxsRnJhbWUgfHwgZXhlYyA9PSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSB8fCBleGVjID09IGV4ZWMtPnZtRW50cnlHbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKICAgICAKICAgICBWZWN0b3I8U3RhY2tGcmFtZT4g
c3RhY2tUcmFjZTsKICAgICBpbnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShzdGFja1RyYWNlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTU5NTI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtOTAs
NiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxv
Y2s7CiAgICAgY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgVW5s
aW5rZWRQcm9ncmFtQ29kZUJsb2NrOworICAgIGNsYXNzIFZNRW50cnlTY29wZTsKIAogI2lmIEVO
QUJMRShERkdfSklUKQogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMzYxLDYgKzM2MiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAgICAgICAg
IAorICAgICAgICB2b2lkKiogYWRkcmVzc09mU3RhY2tMaW1pdCgpIHsgcmV0dXJuICZtX3N0YWNr
TGltaXQ7IH0KKyAgICAgICAgdm9pZCogc3RhY2tMaW1pdCgpIHsgcmV0dXJuIG1fc3RhY2tMaW1p
dDsgfQorICAgICAgICB2b2lkIHNldFN0YWNrTGltaXQodm9pZCogbGltaXQpIHsgbV9zdGFja0xp
bWl0ID0gbGltaXQ7IH0KKwogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlD
bGFzc0luZm87CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENs
YXNzSW5mbzsKIApAQCAtMzk2LDcgKzQwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKIAotICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdDsKKyAgICAgICAgVk1FbnRy
eVNjb3BlKiBlbnRyeVNjb3BlOwogCiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdS
ZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzOwogCkBAIC00NzUsNiArNDgwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgICAgIGNvbnN0IENsYXNz
SW5mbyogbV9pbml0aWFsaXppbmdPYmplY3RDbGFzczsKICNlbmRpZgorICAgICAgICB2b2lkKiBt
X3N0YWNrTGltaXQ7CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wg
bV9pbkRlZmluZU93blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVD
YWNoZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNj
b3BlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
RW50cnlTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCisKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUg
PHd0Zi9TdGFja0JvdW5kcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworVk1FbnRyeVNjb3BlOjpW
TUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDog
bV92bSh2bSkKKyAgICAsIG1fcHJldih2bS5lbnRyeVNjb3BlKQorICAgICwgbV9nbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0KQorICAgICwgbV9zdGFja0JvdW5kcyh2bSwgd3RmVGhyZWFkRGF0YSgp
LnN0YWNrKCkpCisgICAgLCBtX3ByZXZTdGFja0xpbWl0KHZtLnN0YWNrTGltaXQoKSkKK3sKKyAg
ICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKKyNpZiBFTkFCTEUoQVNTRU1CTEUpCisgICAgICAgIGlm
IChFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZXNzdXJlKCkpCisgICAgICAgICAg
ICB2bS5oZWFwLmRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpOworI2VuZGlmCisgICAgICAgIHZtLmVu
dHJ5U2NvcGUgPSB0aGlzOworCisgICAgICAgIC8vIFJlc2V0IHRoZSBkYXRlIGNhY2hlIGJldHdl
ZW4gSlMgaW52b2NhdGlvbnMgdG8gZm9yY2UgdGhlIFZNIHRvCisgICAgICAgIC8vIG9ic2VydmUg
dGltZSB4b25lIGNoYW5nZXMuCisgICAgICAgIHZtLnJlc2V0RGF0ZUNhY2hlKCk7CisgICAgfQor
ICAgIC8vIENsZWFyIHRoZSBleGNlcHRpb24gc3RhY2sgYmV0d2VlbiBlbnRyaWVzCisgICAgdm0u
Y2xlYXJFeGNlcHRpb25TdGFjaygpOworCisgICAgLy8gRklYTUU6IFdlIGN1cnJlbnQgdW5jb25k
aXRpb25hbGx5IGRpc2FibGUgdGhpcyBzZXR0aW5nIG9mIHRoZSBzdGFjayBsaW1pdC4KKyAgICAv
LyBXaGVuIHdlIGFkb3B0IHRoZSBuYXRpdmUgQyBzdGFjayBmb3IgSlMgZXhlY3V0aW9uLCB0aGUg
Zm9sbG93aW5nIG5lZWRzCisgICAgLy8gdG8gYmUgY2hhbmdlZCB0byBiZSBjb25kaXRpb25hbCBv
biAhRU5BQkxFKExMSU5UX0NMT09QKSBvbmx5LCBhbmQgZG8gdGhlCisgICAgLy8gc2FtZSBpbiB0
aGUgZGVzdHJ1Y3RvciBiZWxvdy4KKyNpZiAhRU5BQkxFKExMSU5UX0NMT09QKSAmJiAwCisgICAg
dm0uc2V0U3RhY2tMaW1pdChtX3N0YWNrQm91bmRzLnN0YWNrTGltaXQoKSk7CisjZW5kaWYKK30K
KworVk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3BlKCkKK3sKKyAgICBtX3ZtLmVudHJ5U2NvcGUg
PSBtX3ByZXY7CisjaWYgIUVOQUJMRShMTElOVF9DTE9PUCkgJiYgMAorICAgIG1fdm0uc2V0U3Rh
Y2tMaW1pdChtX3ByZXZTdGFja0xpbWl0KTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3Bl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVk1FbnRyeVNjb3BlX2gKKyNk
ZWZpbmUgVk1FbnRyeVNjb3BlX2gKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiVk1TdGFja0JvdW5kcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbE9iamVjdDsKK2NsYXNzIFZNOworCitjbGFzcyBW
TUVudHJ5U2NvcGUgeworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIFZNRW50cnlTY29w
ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgflZNRW50cnlT
Y29wZSgpOworCisgICAgYm9vbCBoYXNFbm91Z2hTdGFja1RvRW50ZXJWTSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhY2tCb3VuZHMuaXNTYWZlVG9SZWN1cnNlKCk7IH0KKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KKworcHJp
dmF0ZToKKyAgICBWTSYgbV92bTsKKyAgICBWTUVudHJ5U2NvcGUqIG1fcHJldjsKKyAgICBKU0ds
b2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CisgICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBt
X3N0YWNrQ2hlY2tQb2ludDsKKyAgICBWTVN0YWNrQm91bmRzIG1fc3RhY2tCb3VuZHM7CisgICAg
dm9pZCogbV9wcmV2U3RhY2tMaW1pdDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gVk1FbnRyeVNjb3BlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1TdGFja0JvdW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNU3RhY2tCb3VuZHMuaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1TdGFja0JvdW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5
ICszNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92bSh2bSkKICAgICAgICAgLCBtX2JvdW5k
cyhib3VuZHMpCiAgICAgeworICAgICAgICBtX3JlcXVpcmVkQ2FwYWNpdHkgPSByZXF1aXJlZENh
cGFjaXR5KCk7CiAgICAgfQogCi0gICAgYm9vbCBpc1NhZmVUb1JlY3Vyc2UoKSBjb25zdCB7IHJl
dHVybiBtX2JvdW5kcy5pc1NhZmVUb1JlY3Vyc2UocmVxdWlyZWRDYXBhY2l0eSgpKTsgfQorICAg
IGJvb2wgaXNTYWZlVG9SZWN1cnNlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHMuaXNTYWZlVG9S
ZWN1cnNlKG1fcmVxdWlyZWRDYXBhY2l0eSk7IH0KKyAgICB2b2lkKiBzdGFja0xpbWl0KCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZHMucmVjdXJzaW9uTGltaXQobV9yZXF1aXJlZENhcGFjaXR5KTsg
fQogCiBwcml2YXRlOgogICAgIGlubGluZSBzaXplX3QgcmVxdWlyZWRDYXBhY2l0eSgpIGNvbnN0
CkBAIC02Myw2ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICBWTSYgbV92bTsKICAgICBjb25zdCBT
dGFja0JvdW5kcyYgbV9ib3VuZHM7CisgICAgc2l6ZV90IG1fcmVxdWlyZWRDYXBhY2l0eTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTU2OCkKKysrIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMTEt
MjAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5n
IFZNRW50cnlTY29wZSB0byB1cGRhdGUgdGhlIFZNIHN0YWNrIGxpbWl0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjM0LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1N0YWNrQm91bmRzLmg6
CisgICAgICAgIChXVEY6OlN0YWNrQm91bmRzOjpyZWN1cnNpb25MaW1pdCk6CisgICAgICAgIC0g
bWFkZSB0aGlzIGZ1bmN0aW9uIHB1YmxpYyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGJ5IEpTQyBm
b3IgSklUIHN0YWNrCisgICAgICAgICAgY2hlY2tzIGxhdGVyLiAKKwogMjAxMy0xMS0xOCAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHRoZSBGVEwgZGVi
dWcgZHVtcHMgdG8gaW5jbHVkZSB0aGUgbmV3IHNpemUgZmllbGQKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tCb3Vu
ZHMuaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fb3JpZ2lu
KTsKICAgICB9CiAKKyAgICB2b2lkKiByZWN1cnNpb25MaW1pdChzaXplX3QgbWluQXZhaWxhYmxl
RGVsdGEgPSBzX2RlZmF1bHRBdmFpbGFiaWxpdHlEZWx0YSkgY29uc3QKKyAgICB7CisgICAgICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICAgICAgaWYgKGlzR3Jvd2luZ0Rvd253YXJkKCkpCisg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYm91bmQpICsgbWluQXZhaWxh
YmxlRGVsdGE7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgLSBt
aW5BdmFpbGFibGVEZWx0YTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgU3RhY2tCb3VuZHMoKQog
ICAgICAgICA6IG1fb3JpZ2luKDApCkBAIC04NiwxNCArOTQsNiBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogICAgIH0KIAotICAgIHZvaWQqIHJlY3Vyc2lvbkxp
bWl0KHNpemVfdCBtaW5BdmFpbGFibGVEZWx0YSA9IHNfZGVmYXVsdEF2YWlsYWJpbGl0eURlbHRh
KSBjb25zdAotICAgIHsKLSAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICBpZiAo
aXNHcm93aW5nRG93bndhcmQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFy
Kj4obV9ib3VuZCkgKyBtaW5BdmFpbGFibGVEZWx0YTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNoYXIqPihtX2JvdW5kKSAtIG1pbkF2YWlsYWJsZURlbHRhOwotICAgIH0KLQogICAgIGJv
b2wgaXNHcm93aW5nRG93bndhcmQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fb3Jp
Z2luICYmIG1fYm91bmQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTY4KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIw
MTMtMTEtMjAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJv
ZHVjaW5nIFZNRW50cnlTY29wZSB0byB1cGRhdGUgdGhlIFZNIHN0YWNrIGxpbWl0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0NjM0LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4K
KworICAgICAgICAxLiBUaGUgVk1FbnRyeVNjb3BlIGNsYXNzIHN1YnN1bWVzIER5bmFtaWNHbG9i
YWxPYmplY3RTY29wZS4gSXQgYWxzbworICAgICAgICAgICBjb21wdXRlcyB0aGUgY3VycmVudCBz
dGFjayBib3VuZHMgYW5kIHNldHMgdGhlIHN0YWNrIGxpbWl0IGluIHRoZSBWTS4KKworICAgICAg
ICAgICBGb3Igbm93LCB0aGUgc2V0dGluZyBvZiB0aGUgc3RhY2sgbGltaXQgaXMgZGlzYWJsZWQg
dW50aWwgd2Ugc3dpdGNoCisgICAgICAgICAgIHRvIHVzaW5nIHRoZSBDIHN0YWNrIGZvciBKUyBD
YWxsRnJhbWVzLgorCisgICAgICAgIDIuIFJlbmFtZWQgZHluYW1pY0dsb2JhbE9iamVjdCgpIHRv
IHZtRW50cnlHbG9iYWxPYmplY3QoKSBzaW5jZSB0aGF0IGlzCisgICAgICAgICAgIHRoZSB2YWx1
ZSB0aGF0IHRoZSBmdW5jdGlvbiByZXRyaWV2ZXMuCisKKyAgICAgICAgMy4gQ2hhbmdlZCBKSVQg
YW5kIExMSU5UIGNvZGUgdG8gZG8gc3RhY2sgY2hlY2tzIGFnYWluc3QgdGhlIHN0YWNrIGxpbWl0
CisgICAgICAgICAgIGluIHRoZSBWTSBjbGFzcyBpbnN0ZWFkIG9mIHRoZSBKU1N0YWNrLgorCisg
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9WTUVudHJ5U2NvcGUuaDogQWRkZWQu
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRo
TlNSZXNvbHZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXJyb3JIYW5k
bGVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmFkZEV4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgICogYnJpZGdlL2MvY191dGlsaXR5
LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KToK
KyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0lu
c3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRW
YWx1ZVRvT2JqY09iamVjdCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1t
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9PYmpjVmFsdWUpOgorCiAy
MDEzLTExLTIwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
bHBoYWJldGl6YXRpb24gZm9sbG93dXAgdG8gcjE1OTU2NwpJbmRleDogU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9WTUVudHJ5U2NvcGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1ZNRW50cnlTY29wZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9W
TUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2Vi
Q29yZV9GV0RfVk1FbnRyeVNjb3BlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfVk1FbnRyeVNjb3Bl
X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTUVudHJ5U2NvcGUuaD4KKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShy
ZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODU3OCw2ICsxODU3OCw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEpTRXhwb3J0TWFj
cm9zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xy
dW50aW1lXEpTRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndh
cmRpbmdIZWFkZXJzXHJ1bnRpbWVcVk0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEpTR2xvYmFsT2JqZWN0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50
aW1lXEpTUHJveHkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdI
ZWFkZXJzXHJ1bnRpbWVcSlNXaXRoU2NvcGUuaCIgLz4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMTI2NDYsNiArMTI2NDYsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxWTS5oIj4K
ICAgICAgIDxGaWx0ZXI+Rm9yd2FyZGluZ0hlYWRlcnNccnVudGltZTwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNc
cnVudGltZVxWTUVudHJ5U2NvcGUuaCI+CisgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJz
XHJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWVcSlNHbG9iYWxPYmplY3QuaCI+CiAgICAg
ICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGht
QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzEsNyArNzEsOCBAQCB2b2lkIEpTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlcjo6YWRk
KGNvbnN0CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwogICAgIElkZW50aWZpZXIgaWRlbnRp
Zmllcigmdm0sIGtleSk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5VmlldyA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBtX2RpY3Rp
b25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgYXJyYXlWaWV3LT53cmFwKG1fZXhlYywg
dm0uZHluYW1pY0dsb2JhbE9iamVjdCkpOworICAgIEFTU0VSVCh2bS5lbnRyeVNjb3BlKTsKKyAg
ICBtX2RpY3Rpb25hcnktPnB1dERpcmVjdCh2bSwgaWRlbnRpZmllciwgYXJyYXlWaWV3LT53cmFw
KG1fZXhlYywgdm0uZW50cnlTY29wZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogdm9pZCBKU0Ny
eXB0b0FsZ29yaXRobUJ1aWxkZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IENyeXB0b0Fs
Z29yaXRobURlc2NyaXB0aW9uQnVpbGRlciYgbmVzdGVkQnVpbGRlcikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5j
cHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29t
KQorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEzIEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55
cG9wLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNyArNTIsNyBA
QCBQYXNzUmVmUHRyPEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyPiBKU0N1CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIoZXhlYywgcmVzb2x2ZXJPYmplY3QsIGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIoZXhlYywgcmVzb2x2ZXJPYmplY3QsIGFzSlNET01XaW5kb3coZXhlYy0+dm1FbnRy
eUdsb2JhbE9iamVjdCgpKSkpOwogfQogCiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6SlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY3VzdG9tUmVzb2x2
ZXIsIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHly
aWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KICAqICBDb3B5cmln
aHQgKEMpIDIwMTMgTWljaGFlbCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4KICAqCkBAIC00OTQs
NyArNDk0LDcgQEAgRE9NV2luZG93JiBhY3RpdmVET01XaW5kb3coRXhlY1N0YXRlKiBleAogCiBE
T01XaW5kb3cmIGZpcnN0RE9NV2luZG93KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4g
YXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7CisgICAg
cmV0dXJuIGFzSlNET01XaW5kb3coZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+aW1wbCgp
OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgY2FuQWNjZXNzRG9jdW1lbnQoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBEb2N1bWVudCogdGFyZ2V0RG9jdW1lbnQsIFNlY3VyaXR5UmVwb3J0aW5nT3B0
aW9uIHJlcG9ydGluZ09wdGlvbiA9IFJlcG9ydFNlY3VyaXR5RXJyb3IpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNTk1
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMzksNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTRXZlbnQuaCIKICNpbmNsdWRl
ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtOTQsNyArOTYsNyBAQCB2b2lkIEpTRXJyb3JIYW5k
bGVyOjpoYW5kbGVFdmVudChTY3JpcHRFCiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGVy
cm9yRXZlbnQtPmNvbG5vKCkpKTsKIAogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7Ci0gICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSh2
bSwgdm0uZHluYW1pY0dsb2JhbE9iamVjdCA/IHZtLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9i
YWxPYmplY3QpOworICAgICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgdm0uZW50cnlT
Y29wZSA/IHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpIDogZ2xvYmFsT2JqZWN0KTsKIAog
ICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNE
b2N1bWVudCgpCiAgICAgICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVj
LCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJncykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAko
cmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldvcmtl
ckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNRW50cnlTY29w
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtD
b3VudGVyLmg+CiAKQEAgLTEyMyw3ICsxMjQsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFu
ZGxlRXZlbnQoU2NyaXB0CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KGV2
ZW50KTsKIAogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgIER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSh2bSwgdm0uZHluYW1pY0ds
b2JhbE9iamVjdCA/IHZtLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOworICAg
ICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5
U2NvcGUtPmdsb2JhbE9iamVjdCgpIDogZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpp
bnN0cnVtZW50RnVuY3Rpb25DYWxsKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBj
YWxsRGF0YSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRD
YWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZh
U2NyaXB0Q2FsbEZyYW1lLmgJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVidWdnZXJDYWxsRnJhbWUtPmZ1bmN0aW9uTmFtZSgpOyB9CiAgICAgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFt
ZS0+dHlwZSgpOyB9CiAgICAgSlNDOjpKU1Njb3BlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1
cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+c2NvcGUoKTsgfQotICAgIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGR5bmFtaWNHbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZy
YW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7IH0KKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiB2
bUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+
dm1FbnRyeUdsb2JhbE9iamVjdCgpOyB9CiAKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7IH0KICAgICBK
U0M6OkpTVmFsdWUgZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6SlNWYWx1ZSYg
ZXhjZXB0aW9uKSBjb25zdCAgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGUo
c2NyaXB0LCBleGNlcHRpb24pOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMTE1LDcgKzExNiw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpy
ZWNvbXBpbGVBbGwKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9u
Vk0oKSk7CiAgICAgLy8gSWYgSmF2YVNjcmlwdCBzdGFjayBpcyBub3QgZW1wdHkgcG9zdHBvbmUg
cmVjb21waWxhdGlvbi4KLSAgICBpZiAoSlNET01XaW5kb3c6OmNvbW1vblZNKCktPmR5bmFtaWNH
bG9iYWxPYmplY3QpCisgICAgaWYgKEpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5lbnRyeVNjb3Bl
KQogICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICBlbHNlCiAgICAg
ICAgIERlYnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0RPTVdpbmRvdzo6Y29tbW9u
Vk0oKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcg
QEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaQogICAgIERlYnVnZ2Vy
Q2FsbEZyYW1lKiBkZWJ1Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgp
OwogICAgIHN3aXRjaCAoYnJlYWtwb2ludEFjdGlvbi50eXBlKSB7CiAgICAgY2FzZSBTY3JpcHRC
cmVha3BvaW50QWN0aW9uVHlwZUxvZzogewotICAgICAgICBET01XaW5kb3cmIHdpbmRvdyA9IGFz
SlNET01XaW5kb3coZGVidWdnZXJDYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmlt
cGwoKTsKKyAgICAgICAgRE9NV2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGRlYnVnZ2Vy
Q2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7CiAgICAgICAgIGlmIChQ
YWdlQ29uc29sZSogY29uc29sZSA9IHdpbmRvdy5wYWdlQ29uc29sZSgpKQogICAgICAgICAgICAg
Y29uc29sZS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgYnJl
YWtwb2ludEFjdGlvbi5kYXRhKTsKICAgICAgICAgYnJlYWs7CkBAIC0yODgsMTAgKzI4OCwxMCBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVFeGNlcHRpb25JCiAgICAgcmVwb3J0RXhj
ZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Omhh
bmRsZVBhdXNlKERlYnVnZ2VyOjpSZWFzb25Gb3JQYXVzZSwgSlNHbG9iYWxPYmplY3QqIGR5bmFt
aWNHbG9iYWxPYmplY3QpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZShEZWJ1
Z2dlcjo6UmVhc29uRm9yUGF1c2UsIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0
KQogewotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6
OmRpc3BhdGNoRGlkUGF1c2UsIGR5bmFtaWNHbG9iYWxPYmplY3QpOwotICAgIGRpZFBhdXNlKGR5
bmFtaWNHbG9iYWxPYmplY3QpOworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2Ny
aXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UsIHZtRW50cnlHbG9iYWxPYmplY3QpOwor
ICAgIGRpZFBhdXNlKHZtRW50cnlHbG9iYWxPYmplY3QpOwogCiAgICAgVGltZXJCYXNlOjpmaXJl
VGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIApAQCAtMzAwLDkgKzMwMCwxMCBAQCB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZShEZWJ1CiAgICAgcnVuRXZlbnRMb29wV2hpbGVQ
YXVzZWQoKTsKICAgICBtX3J1bm5pbmdOZXN0ZWRNZXNzYWdlTG9vcCA9IGZhbHNlOwogCi0gICAg
ZGlkQ29udGludWUoZHluYW1pY0dsb2JhbE9iamVjdCk7Ci0gICAgZGlzcGF0Y2hGdW5jdGlvblRv
TGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwgZHluYW1p
Y0dsb2JhbE9iamVjdCk7CisgICAgZGlkQ29udGludWUodm1FbnRyeUdsb2JhbE9iamVjdCk7Cisg
ICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0
Y2hEaWRDb250aW51ZSwgdm1FbnRyeUdsb2JhbE9iamVjdCk7CiB9CisKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpCiB7CiAgICAgbV9yZWNvbXBp
bGVUaW1lci5zdGFydE9uZVNob3QoMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAxNTk1
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cmVjb21waWxlQQogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CiAgICAgLy8gSWYgSmF2YVNjcmlwdCBzdGFjayBpcyBub3QgZW1wdHkgcG9zdHBvbmUgcmVjb21w
aWxhdGlvbi4KLSAgICBpZiAodm0tPmR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAgaWYgKHZtLT5l
bnRyeVNjb3BlKQogICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICBl
bHNlCiAgICAgICAgIEpTQzo6RGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKHZtKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTI0LDcgKzEyNCw3IEBAIGlkIGNyZWF0ZUpTV3JhcHBlcihKU0M6OkpTT2Jq
ZWN0KiBvYmplY3QKIAogc3RhdGljIHZvaWQgYWRkRXhjZXB0aW9uVG9Db25zb2xlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gYXNKU0RPTVdpbmRvdyhleGVj
LT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBhc0pT
RE9NV2luZG93KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCF3aW5kb3cg
fHwgIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAgICAgcmVwb3J0Q3Vy
cmVudEV4Y2VwdGlvbihleGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRp
bGl0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5
LmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGls
aXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMTMgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3Nr
dXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtOTQsNyArOTQsNyBA
QCB2b2lkIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICAg
ICAgT0JKRUNUX1RPX05QVkFSSUFOVChvYmosICpyZXN1bHQpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAg
ICAgIFJvb3RPYmplY3QqIHJvb3RPYmplY3QgPSBmaW5kUm9vdE9iamVjdChnbG9iYWxPYmplY3Qp
OwogICAgICAgICAgICAgaWYgKHJvb3RPYmplY3QpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE9iamNJbnN0YW5jZTo6bW92
ZUdsb2JhbEV4Y2VwdGlvblRvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXNf
ZXhjZXB0aW9uRW52aXJvbm1lbnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCkpIHsKKyAgICBpZiAoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQg
fHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkp
IHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgc19leGNlcHRpb24pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTEzLDcgKzExMyw3IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGUK
IAogc3RhdGljIGlkIGNvbnZlcnRWYWx1ZVRvT2JqY09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QgPSBmaW5k
Um9vdE9iamVjdChleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAgIFJlZlB0cjxSb290
T2JqZWN0PiByb290T2JqZWN0ID0gZmluZFJvb3RPYmplY3QoZXhlYy0+dm1FbnRyeUdsb2JhbE9i
amVjdCgpKTsKICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIFt3ZWJTY3JpcHRPYmplY3RDbGFzcygpIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTp2
YWx1ZSBvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3QuZ2V0KCkgcm9vdE9iamVjdDpyb290T2Jq
ZWN0LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0
eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxp
dHkubW0JKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfdXRpbGl0eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMTMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDcg
Kzg4LDcgQEAgT2JqY1ZhbHVlIGNvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlKEV4ZWNTdAogICAgICAg
ICBjYXNlIE9iamNPYmplY3RUeXBlOiB7CiAgICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhl
eGVjKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QgKm9yaWdpbkds
b2JhbE9iamVjdCA9IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0ICpvcmlnaW5HbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCk7CiAgICAgICAgICAgICBSb290T2JqZWN0KiBvcmlnaW5Sb290T2JqZWN0ID0gZmluZFJv
b3RPYmplY3Qob3JpZ2luR2xvYmFsT2JqZWN0KTsKIAogICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTk1
NjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0xMS0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgSW50cm9kdWNpbmcgVk1FbnRyeVNjb3BlIHRvIHVwZGF0ZSB0aGUgVk0gc3RhY2sg
bGltaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjQ2MzQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdn
ZXI6OnNvdXJjZVBhcnNlZCk6CisKIDIwMTMtMTEtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRW5hYmxlIEhUTUxUZW1wbGF0ZUVsZW1lbnQgb24gTWFjIHBv
cnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJT
Y3JpcHREZWJ1Z2dlci5tbQkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdl
YlNjcmlwdERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQoRXhlCiAgICAgTlNVUkwgKm5zVVJMID0gdG9O
U1VSTChzb3VyY2VQcm92aWRlci0+dXJsKCkpOwogICAgIGludCBmaXJzdExpbmUgPSBzb3VyY2VQ
cm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOwogCi0gICAgV2Vi
RnJhbWUgKndlYkZyYW1lID0gdG9XZWJGcmFtZShleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkp
OworICAgIFdlYkZyYW1lICp3ZWJGcmFtZSA9IHRvV2ViRnJhbWUoZXhlYy0+dm1FbnRyeUdsb2Jh
bE9iamVjdCgpKTsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwog
ICAgIFdlYlNjcmlwdERlYnVnRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRh
dGlvbnMgPSBXZWJWaWV3R2V0U2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJW
aWV3KTsKIAo=
</data>
<flag name="review"
          id="240584"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217503</attachid>
            <date>2013-11-20 17:30:19 -0800</date>
            <delta_ts>2013-11-20 20:44:57 -0800</delta_ts>
            <desc>patch 4: addresses Geoff&apos;s feedback.</desc>
            <filename>bug-124634c.patch</filename>
            <type>text/plain</type>
            <size>91646</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0OCBA
QAorMjAxMy0xMS0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNpbmcgVk1FbnRyeVNjb3BlIHRvIHVwZGF0ZSB0aGUgVk0gc3RhY2sgbGltaXQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MzQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gSW50cm9k
dWNlZCBVU0UoU0VQQVJBVEVfQ19BTkRfSlNfU1RBQ0spIChkZWZpbmVkIGluIFBsYXRmb3JtLmgp
LgorICAgICAgICAgICBDdXJyZW50bHksIGl0IGlzIGhhcmRjb2RlZCB0byB1c2Ugc2VwYXJhdGUg
QyBhbmQgSlMgc3RhY2tzLiBPbmNlIHdlCisgICAgICAgICAgIHN3aXRjaCB0byB1c2luZyB0aGUg
QyBzdGFjayBmb3IgSlMgZnJhbWVzLCB3ZSdsbCBuZWVkIHRvIGZpeCB0aGlzIHRvCisgICAgICAg
ICAgIG9ubHkgYmUgZW5hYmxlZCB3aGVuIEVOQUJMRShMTElOVF9DX0xPT1ApLgorCisgICAgICAg
IDIuIFN0YWNrIGxpbWl0cyBhcmUgbm93IHRyYWNrZWQgaW4gdGhlIFZNLgorCisgICAgICAgICAg
IExvZ2ljYWxseSwgdGhlcmUgYXJlIDIgc3RhY2sgbGltaXRzOgorICAgICAgICAgICBhLiBtX3N0
YWNrTGltaXQgZm9yIHRoZSBuYXRpdmUgQyBzdGFjaywgYW5kCisgICAgICAgICAgIGIuIG1fanNT
dGFja0xpbWl0IGZvciB0aGUgSlMgc3RhY2suCisKKyAgICAgICAgICAgSWYgVVNFKFNFUEFSQVRF
X0NfQU5EX0pTX1NUQUNLKSwgdGhlbiB0aGUgMiBsaW1pdHMgYXJlIHRoZSBzYW1lCisgICAgICAg
ICAgIHZhbHVlLCBhbmQgYXJlIGltcGxlbWVudGVkIGFzIDIgZmllbGRzIGluIGEgdW5pb24uCisK
KyAgICAgICAgMy4gVGhlIFZNIG5hdGl2ZSBzdGFja0xpbWl0IGlzIHNldCBhcyBmb2xsb3dzOgor
ICAgICAgICAgICBhLiBJbml0aWFsbHksIHRoZSBWTSBzZXRzIGl0IHRvIHRoZSBsaW1pdCBvZiB0
aGUgc3RhY2sgb2YgdGhlIHRocmVhZCB0aGF0CisgICAgICAgICAgICAgIGluc3RhbnRpYXRlZCB0
aGUgVk0uIFRoaXMgYWxsb3dzIHRoZSBwYXJzZXIgYW5kIGJ5dGVjb2RlIGdlbmVyYXRvciB0bwor
ICAgICAgICAgICAgICBydW4gYmVmb3JlIHdlIGVudGVyIHRoZSBWTSB0byBleGVjdXRlIEpTIGNv
ZGUuCisKKyAgICAgICAgICAgYi4gVXBvbiBlbnRyeSBpbnRvIHRoZSBWTSB0byBleGVjdXRlIEpT
IGNvZGUgKHZpYSBvbmUgb2YgdGhlCisgICAgICAgICAgICAgIEludGVycHJldGVyOjpleGVjdXRl
Li4uKCkgZnVuY3Rpb25zKSwgd2UgaW5zdGFudGlhdGUgYSBWTUVudHJ5U2NvcGUKKyAgICAgICAg
ICAgICAgdGhhdCBzZXRzIHRoZSBWTSdzIHN0YWNrTGltaXQgdG8gdGhlIGxpbWl0IG9mIHRoZSBj
dXJyZW50IHRocmVhZCdzCisgICAgICAgICAgICAgIHN0YWNrLiBUaGUgVk1FbnRyeVNjb3BlIHdp
bGwgYXV0b21hdGljYWxseSByZXN0b3JlIHRoZSBwcmV2aW91cworICAgICAgICAgICAgICBlbnRy
eVNjb3BlIGFuZCBzdGFjayBsaW1pdCB1cG9uIGRlc3RydWN0aW9uLgorCisgICAgICAgICAgIElm
IFVTRShTRVBBUkFURV9DX0FORF9KU19TVEFDSyksIHRoZSBKU1N0YWNrJ3MgbWV0aG9kcyB3aWxs
IHNldCB0aGUgVk0ncworICAgICAgICAgICBqc1N0YWNrTGltaXQgd2hlbmV2ZXIgaXQgZ3Jvd3Mg
b3Igc2hyaW5rcy4KKworICAgICAgICA0LiBUaGUgVk0gbm93IHByb3ZpZGVzIGEgaXNTYWZlVG9S
ZWN1cnNlKCkgZnVuY3Rpb24gdGhhdCBjb21wYXJlcyB0aGUKKyAgICAgICAgICAgY3VycmVudCBz
dGFjayBwb2ludGVyIGFnYWluc3QgaXRzIG5hdGl2ZSBzdGFja0xpbWl0LiBUaGlzIHN1YnN1bWVz
IGFuZAorICAgICAgICAgICBvYnNvbGV0ZXMgdGhlIFZNU3RhY2tCb3VuZHMgY2xhc3MuCisKKyAg
ICAgICAgNS4gVGhlIFZNRW50cnlTY29wZSBjbGFzcyBhbHNvIHN1YnN1bWVzIER5bmFtaWNHbG9i
YWxPYmplY3RTY29wZSBmb3IKKyAgICAgICAgICAgdHJhY2tpbmcgdGhlIEpTR2xvYmFsT2JqZWN0
IHRoYXQgd2UgbGFzdCBlbnRlcmVkIHRoZSBWTSB3aXRoLgorCisgICAgICAgIDYuIFJlbmFtZWQg
ZHluYW1pY0dsb2JhbE9iamVjdCgpIHRvIHZtRW50cnlHbG9iYWxPYmplY3QoKSBzaW5jZSB0aGF0
IGlzCisgICAgICAgICAgIHRoZSB2YWx1ZSB0aGF0IHRoZSBmdW5jdGlvbiByZXRyaWV2ZXMuCisK
KyAgICAgICAgNy4gQ2hhbmdlZCBKSVQgYW5kIExMSU5UIGNvZGUgdG8gZG8gc3RhY2sgY2hlY2tz
IGFnYWluc3QgdGhlIGpzU3RhY2tMaW1pdAorICAgICAgICAgICBpbiB0aGUgVk0gY2xhc3MgaW5z
dGVhZCBvZiB0aGUgSlNTdGFjay4KKworICAgICAgICAqIEFQSS9KU0Jhc2UuY3BwOgorICAgICAg
ICAoSlNFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChKU0NoZWNrU2NyaXB0U3ludGF4KToKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dFJl
dGFpbik6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRSZWxlYXNlKToKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Tm9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJl
Y29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnBhdXNlSWZO
ZWVkZWQpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXJDYWxsRnJhbWU6OnZtRW50cnlHbG9iYWxPYmplY3QpOgorICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmg6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0
aW9uKToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAqIGZ0bC9GVExM
aW5rLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBmdGwvRlRMT1NS
RW50cnkuY3BwOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6
Omxhc3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGVsZXRlQWxsQ29t
cGlsZWRDb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWNoZWRDYWxsLmg6CisgICAgICAg
IChKU0M6OkNhY2hlZENhbGw6OkNhY2hlZENhbGwpOgorICAgICAgICAqIGludGVycHJldGVyL0Nh
bGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6dm1FbnRyeUdsb2JhbE9iamVj
dCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjp1bndpbmRDYWxsRnJhbWUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpkZWJ1Zyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHA6
CisgICAgICAgIChKU0M6OkpTU3RhY2s6OkpTU3RhY2spOgorICAgICAgICAoSlNDOjpKU1N0YWNr
Ojpncm93U2xvd0Nhc2UpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2suaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1N0YWNr
OjpzaHJpbmspOgorICAgICAgICAoSlNDOjpKU1N0YWNrOjpncm93KToKKyAgICAgICAgLSBNb3Zl
ZCB0aGVzZSBpbmxpbmVkIGZ1bmN0aW9ucyBoZXJlIGZyb20gSlNTdGFjay5oLiBJdCByZWR1Y2Vz
IHNvbWUKKyAgICAgICAgICAjaW5jbHVkZSBkZXBlbmRlbmNpZXMgb2YgSlNTVGFjay5oIHdoaWNo
IGhhZCBwcmV2aW91c2x5IHJlc3VsdGVkCisgICAgICAgICAgaW4gc29tZSBFV1MgYm90cycgdW5o
YXBwaW5lc3Mgd2l0aCB0aGlzIHBhdGNoLgorICAgICAgICAoSlNDOjpKU1N0YWNrOjp1cGRhdGVT
dGFja0xpbWl0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OlBhcnNlcik6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNhblJlY3Vyc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uU2tp
cHBpbmdFdmFsRW5hYmxlZENoZWNrKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1JlY3Vy
c2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVjayk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6Cisg
ICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjpyZWxlYXNlRXhlY3V0YWJs
ZU1lbW9yeSk6CisgICAgICAgIChKU0M6OlZNOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6YWRkcmVzc09mSlNTdGFja0xpbWl0KToK
KyAgICAgICAgKEpTQzo6Vk06OmpzU3RhY2tMaW1pdCk6CisgICAgICAgIChKU0M6OlZNOjpzZXRK
U1N0YWNrTGltaXQpOgorICAgICAgICAoSlNDOjpWTTo6c3RhY2tMaW1pdCk6CisgICAgICAgIChK
U0M6OlZNOjpzZXRTdGFja0xpbWl0KToKKyAgICAgICAgKEpTQzo6Vk06OmlzU2FmZVRvUmVjdXJz
ZSk6CisgICAgICAgICogcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAoSlNDOjpWTUVudHJ5
U2NvcGU6On5WTUVudHJ5U2NvcGUpOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnJlcXVp
cmVkQ2FwYWNpdHkpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6Omdsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9WTVN0YWNrQm91bmRzLmg6IFJlbW92ZWQuCisKIDIwMTMtMTEtMjAgIE1pY2hhZWwgU2Fi
b2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gSmF2YVNjcmlwdCBKSVQg
Y3Jhc2ggKHdpdGggREZHIGVuYWJsZWQpLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1R5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogICAg
IHJ1bnRpbWUvVHlwZWRBcnJheVR5cGUuY3BwCiAgICAgcnVudGltZS9WTS5jcHAKKyAgICBydW50
aW1lL1ZNRW50cnlTY29wZS5jcHAKICAgICBydW50aW1lL1dhdGNoZG9nLmNwcAogICAgIHJ1bnRp
bWUvV2F0Y2hkb2dOb25lLmNwcAogICAgIHJ1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC05MTMsNiArOTEzLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVu
dHJ5U2NvcGUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2Nv
cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3Rvci5oIFwKQEAgLTExMjcsNyArMTEyOSw2IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQzMkFycmF5
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQ4QXJyYXkuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVWludDhDbGFtcGVkQXJyYXkuaCBcCi0JU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1TdGFja0JvdW5kcy5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dhdGNoZG9nLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNo
ZG9nTm9uZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkocmV2
aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWVSZWYgSlNFdmFs
dWF0ZVNjcmlwdChKU0NvbnRleHRSZWYKICAgICBKU09iamVjdCoganNUaGlzT2JqZWN0ID0gdG9K
Uyh0aGlzT2JqZWN0KTsKIAogICAgIC8vIGV2YWx1YXRlIHNldHMgInRoaXMiIHRvIHRoZSBnbG9i
YWwgb2JqZWN0IGlmIGl0IGlzIE5VTEwKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAgU291cmNlQ29kZSBz
b3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+c3RyaW5nKCksIHNvdXJjZVVSTC0+c3RyaW5nKCks
IFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5l
TnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSkpOwogCiAgICAgSlNWYWx1ZSBldmFsdWF0
aW9uRXhjZXB0aW9uOwpAQCAtODUsNyArODUsNyBAQCBib29sIEpTQ2hlY2tTY3JpcHRTeW50YXgo
SlNDb250ZXh0UmVmIGN0CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlw
dC0+c3RyaW5nKCksIHNvdXJjZVVSTC0+c3RyaW5nKCksIFRleHRQb3NpdGlvbihPcmRpbmFsTnVt
YmVyOjpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6
Zmlyc3QoKSkpOwogICAgIAogICAgIEpTVmFsdWUgc3ludGF4RXhjZXB0aW9uOwotICAgIGJvb2wg
aXNWYWxpZFN5bnRheCA9IGNoZWNrU3ludGF4KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpLCBzb3VyY2UsICZzeW50YXhFeGNlcHRpb24pOworICAgIGJvb2wgaXNWYWxp
ZFN5bnRheCA9IGNoZWNrU3ludGF4KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpLCBzb3VyY2UsICZzeW50YXhFeGNlcHRpb24pOwogCiAgICAgaWYgKCFpc1ZhbGlkU3lu
dGF4KSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE0OCw3ICsxNDgsNyBAQCBKU0dsb2JhbENvbnRleHRSZWYgSlNHbG9iYWxDb250ZXh0UmV0
YWluCiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgZ2NQcm90ZWN0KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7Cisg
ICAgZ2NQcm90ZWN0KGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSk7CiAgICAgdm0ucmVmKCk7
CiAgICAgcmV0dXJuIGN0eDsKIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEpTR2xvYmFsQ29u
dGV4dFJlbGVhc2UoSlNHbG9iYWxDb250CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgICAgIHNhdmVkSWRlbnRpZmllclRhYmxlID0gd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJ
ZGVudGlmaWVyVGFibGUodm0uaWRlbnRpZmllclRhYmxlKTsKIAotICAgICAgICBib29sIHByb3Rl
Y3RDb3VudElzWmVybyA9IEhlYXA6OmhlYXAoZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+
dW5wcm90ZWN0KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGJvb2wgcHJv
dGVjdENvdW50SXNaZXJvID0gSGVhcDo6aGVhcChleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkp
LT51bnByb3RlY3QoZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgaWYgKHBy
b3RlY3RDb3VudElzWmVybykKICAgICAgICAgICAgIHZtLmhlYXAucmVwb3J0QWJhbmRvbmVkT2Jq
ZWN0R3JhcGgoKTsKICAgICAgICAgdm0uZGVyZWYoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNjYyLDYgKzY2Miw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXFR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcVHlwZWRBcnJheVR5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxWTS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXFZNRW50cnlTY29wZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXFdhdGNoZG9nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcV2F0Y2hkb2dOb25lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcV2Vha01hcENvbnN0cnVjdG9yLmNwcCIgLz4KQEAgLTEyODksNiArMTI5MCw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFVpbnQzMkFycmF5LmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFVpbnQ4QXJyYXkuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFdhdGNoZG9nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFdlYWtHQ01hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxXZWFrTWFwQ29uc3RydWN0b3IuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtODAxLDYgKzgwMSw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFZNLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxT
b3VyY2VDb2RlLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpAQCAtMjQxOCw2ICsyNDIxLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVk1FbnRyeVNjb3Bl
LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU5NTI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMzgsNyArMTIzOCw4IEBACiAJCUZFMjBDRTlF
MTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRD
TG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFNEEzMzFGMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRBMzMxRDE1QkQyRTA3MDA2RjU0
RjMgLyogVk1JbnNwZWN0b3IuY3BwICovOyB9OwogCQlGRTRBMzMyMDE1QkQyRTA3MDA2RjU0RjMg
LyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFNEEzMzFFMTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFNjYxNzI4MTc3NEUw
MzUwMDQ5NUIwMCAvKiBWTVN0YWNrQm91bmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY2MTcyNzE3NzRFMDM1MDA0OTVCMDAgLyogVk1TdGFja0Jv
dW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTUxODNDNUEyNjAwQTFF
Q0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi87IH07CisJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUND
QyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYyMDE4
MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9p
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RUEwODYyMTE4MkI3QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEwODYxRjE4MkI3QTA0MDBG
NkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVEMjg3QjIxNUVDOUE1NzAwREE4MTYxIC8qIExMSW50
T3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUQyODdCMTE1RUM5QTU3MDBEQTgxNjEgLyogTExJbnRPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjU2Niw3ICsyNTY3LDggQEAKIAkJ
RkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBwYXRoID0gbGxpbnQvTExJbnRDTG9vcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTRBMzMxRDE1QkQyRTA3MDA2RjU0RjMg
LyogVk1JbnNwZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Vk1JbnNwZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTRBMzMxRTE1
QkQyRTA3MDA2RjU0RjMgLyogVk1JbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVk1JbnNwZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkU2
NjE3MjcxNzc0RTAzNTAwNDk1QjAwIC8qIFZNU3RhY2tCb3VuZHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVk1TdGFja0JvdW5kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZNRW50cnlTY29wZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVu
dHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1FbnRyeVNjb3Bl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1
MSAvKiBCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFr
cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2MUYxODJCN0EwNDAw
RjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWJ1Z2dlclByaW1pdGl2ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVEMjg3QjExNUVDOUE1NzAwREE4MTYxIC8qIExMSW50T3Bjb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T3Bjb2RlLmg7IHBhdGggPSBsbGludC9MTEludE9w
Y29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMxNiw2ICszMzE4LDggQEAK
IAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAv
KiBWTUVudHJ5U2NvcGUuY3BwICovLAorCQkJCUZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBW
TUVudHJ5U2NvcGUuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlz
dC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywK
IAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNwcCAqLywKQEAgLTM2
NjIsNyArMzY2Niw2IEBACiAJCQkJQTdBOEFGMzExN0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQ4Q2xh
bXBlZEFycmF5LmggKi8sCiAJCQkJRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAq
LywKIAkJCQlFMThFM0E1NjBERjkyNzhDMDBEOTBCMzQgLyogVk0uaCAqLywKLQkJCQlGRTY2MTcy
NzE3NzRFMDM1MDA0OTVCMDAgLyogVk1TdGFja0JvdW5kcy5oICovLAogCQkJCUZFRDk0RjJCMTcx
RTNFMjMwMEJFNzdBNCAvKiBXYXRjaGRvZy5jcHAgKi8sCiAJCQkJRkVEOTRGMkMxNzFFM0UyMzAw
QkU3N0E0IC8qIFdhdGNoZG9nLmggKi8sCiAJCQkJRkVEOTRGMkQxNzFFM0UyMzAwQkU3N0E0IC8q
IFdhdGNoZG9nTWFjLmNwcCAqLywKQEAgLTQxNzcsNiArNDE4MCw3IEBACiAJCQkJODZEM0IyQzQx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZB
REQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjI0RTU0RjE3RUUyNzQ5MDBBQkIyMTcgLyogVGVtcFJlZ2lzdGVy
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0JGRjNDMDE3OTg2ODk0MDAwMkY0NjIgLyogREZH
RmlsdHJhdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAw
MzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODI4LDcg
KzQ4MzIsNiBAQAogCQkJCTBGNDI2QTQ5MTQ2MENCQjcwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDIwMEUxNkY1Q0QwMEIzNDQ2MCAvKiBWTS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0QTMzMjAxNUJEMkUwNzAwNkY1NEYzIC8qIFZNSW5zcGVj
dG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTY2MTcyODE3NzRFMDM1MDA0OTVCMDAgLyogVk1T
dGFja0JvdW5kcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0
IC8qIFdhdGNoZG9nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQyNjE1ODUzQ0UzMDA0QTRF
N0QgLyogV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxM0MxMzRGRjBBNjAw
QUZBREI1IC8qIFdlYWsuaCBpbiBIZWFkZXJzICovLApAQCAtNTU2Niw2ICs1NTY5LDcgQEAKIAkJ
CQkxNEJENUEzMjBBM0U5MUY2MDBCQUY1OUMgLyogSlNWYWx1ZVJlZi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDdGMzlENzEwN0VDMzc2MDA0MjdBNDggLyogSlNWYXJpYWJsZU9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkUzQzYxQzE2N0JBQkVFMDA2RDc2MEEgLyogSlNWaXJ0dWFs
TWFjaGluZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAv
KiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDQTNBRTcxN0RBNDFBRTAw
NjUzOEFGIC8qIEpTV2Vha01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzQ4MkI5NDExNjcx
MTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDQyNTY2MTE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9sYXN0T3Bjb2RlUG9zaXRp
b24oMCkKICNlbmRpZgotICAgICwgbV9zdGFjayh2bSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkp
CiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVl
cChmYWxzZSkKIHsKQEAgLTIwNyw3ICsyMDYsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9sYXN0T3Bjb2RlUG9zaXRp
b24oMCkKICNlbmRpZgotICAgICwgbV9zdGFjayh2bSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkp
CiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVl
cChmYWxzZSkKIHsKQEAgLTQyMSw3ICs0MTksNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9sYXN0T3Bjb2RlUG9zaXRp
b24oMCkKICNlbmRpZgotICAgICwgbV9zdGFjayh2bSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkp
CiAgICAgLCBtX3VzZXNFeGNlcHRpb25zKGZhbHNlKQogICAgICwgbV9leHByZXNzaW9uVG9vRGVl
cChmYWxzZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAi
U3RhdGljUHJvcGVydHlBbmFseXplci5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgi
Ci0jaW5jbHVkZSAiVk1TdGFja0JvdW5kcy5oIgogCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KIApA
QCAtMjMzLDcgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBOb2RlOjplbWl0Q29kZSBhc3N1bWVzIHRoYXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0
aGVyIGEgbG9jYWwgb3IgYSByZWZlcmVuY2VkIHRlbXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VS
VCghZHN0IHx8IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8
fCBkc3QtPnJlZkNvdW50KCkpOwotICAgICAgICAgICAgaWYgKCFtX3N0YWNrLmlzU2FmZVRvUmVj
dXJzZSgpKSB7CisgICAgICAgICAgICBpZiAoIW1fdm0tPmlzU2FmZVRvUmVjdXJzZSgpKSB7CiAg
ICAgICAgICAgICAgICAgZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yNDksNyArMjQ4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE5vZGU6OmVtaXRDb2Rl
IGFzc3VtZXMgdGhhdCBkc3QsIGlmIHByb3ZpZGVkLCBpcyBlaXRoZXIgYSBsb2NhbCBvciBhIHJl
ZmVyZW5jZWQgdGVtcG9yYXJ5LgogICAgICAgICAgICAgQVNTRVJUKCFkc3QgfHwgZHN0ID09IGln
bm9yZWRSZXN1bHQoKSB8fCAhZHN0LT5pc1RlbXBvcmFyeSgpIHx8IGRzdC0+cmVmQ291bnQoKSk7
Ci0gICAgICAgICAgICBpZiAoIW1fc3RhY2suaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgICAg
ICBpZiAoIW1fdm0tPmlzU2FmZVRvUmVjdXJzZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBl
bWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogICAgICAgICAgICAgcmV0dXJu
IG4tPmVtaXRCeXRlY29kZSgqdGhpcywgZHN0KTsKICAgICAgICAgfQpAQCAtMjYxLDcgKzI2MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdE5vZGVJbkNvbmRpdGlvbkNv
bnRleHQoRXhwcmVzc2lvbk5vZGUqIG4sIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VU
YXJnZXQsIEZhbGxUaHJvdWdoTW9kZSBmYWxsVGhyb3VnaE1vZGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9zdGFjay5pc1NhZmVUb1JlY3Vyc2UoKSkgeworICAgICAgICAgICAgaWYg
KCFtX3ZtLT5pc1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIGVtaXRUaHJvd0V4
cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQpAQCAtNjM5LDggKzYzOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
aXplX3QgbV9sYXN0T3Bjb2RlUG9zaXRpb247CiAjZW5kaWYKIAotICAgICAgICBWTVN0YWNrQm91
bmRzIG1fc3RhY2s7Ci0KICAgICAgICAgYm9vbCBtX3VzZXNFeGNlcHRpb25zOwogICAgICAgICBi
b29sIG1fZXhwcmVzc2lvblRvb0RlZXA7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYXJzZXIu
aCIKICNpbmNsdWRlICJQcm90ZWN0LmgiCisjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKIG5h
bWVzcGFjZSB7CiAKQEAgLTE3Miw3ICsxNzMsNyBAQCB2b2lkIERlYnVnZ2VyOjpkZXRhY2goSlNH
bG9iYWxPYmplY3QqIGdsCiAgICAgLy8gSWYgd2UncmUgZGV0YWNoaW5nIGZyb20gdGhlIGN1cnJl
bnRseSBleGVjdXRpbmcgZ2xvYmFsIG9iamVjdCwgbWFudWFsbHkgdGVhciBkb3duIG91cgogICAg
IC8vIHN0YWNrLCBzaW5jZSB3ZSB3b24ndCBnZXQgZnVydGhlciBkZWJ1Z2dlciBjYWxsYmFja3Mg
dG8gZG8gc28uIEFsc28sIHJlc3VtZSBleGVjdXRpb24sCiAgICAgLy8gc2luY2UgdGhlcmUncyBu
byBwb2ludCBpbiBzdGF5aW5nIHBhdXNlZCBvbmNlIGEgd2luZG93IGNsb3Nlcy4KLSAgICBpZiAo
bV9jdXJyZW50Q2FsbEZyYW1lICYmIG1fY3VycmVudENhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9i
amVjdCgpID09IGdsb2JhbE9iamVjdCkgeworICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgJiYg
bV9jdXJyZW50Q2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0
KSB7CiAgICAgICAgIG1fY3VycmVudENhbGxGcmFtZSA9IDA7CiAgICAgICAgIG1fcGF1c2VPbkNh
bGxGcmFtZSA9IDA7CiAgICAgICAgIGNvbnRpbnVlUHJvZ3JhbSgpOwpAQCAtMTkzLDggKzE5NCw4
IEBAIHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFYKIHsKICAgICAvLyBJ
ZiBKYXZhU2NyaXB0IGlzIHJ1bm5pbmcsIGl0J3Mgbm90IHNhZmUgdG8gcmVjb21waWxlLCBzaW5j
ZSB3ZSdsbCBlbmQKICAgICAvLyB1cCB0aHJvd2luZyBhd2F5IGNvZGUgdGhhdCBpcyBsaXZlIG9u
IHRoZSBzdGFjay4KLSAgICBBU1NFUlQoIXZtLT5keW5hbWljR2xvYmFsT2JqZWN0KTsKLSAgICBp
ZiAodm0tPmR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAgQVNTRVJUKCF2bS0+ZW50cnlTY29wZSk7
CisgICAgaWYgKHZtLT5lbnRyeVNjb3BlKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgdm0t
PnByZXBhcmVUb0Rpc2NhcmRDb2RlKCk7CkBAIC00MzgsOCArNDM5LDggQEAgdm9pZCBEZWJ1Z2dl
cjo6cGF1c2VJZk5lZWRlZChDYWxsRnJhbWUqIAogICAgIGlmIChtX2lzUGF1c2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCA9IGNh
bGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpOwotICAgIGlmICghbmVlZFBhdXNlSGFuZGxp
bmcoZHluYW1pY0dsb2JhbE9iamVjdCkpCisgICAgSlNHbG9iYWxPYmplY3QqIHZtRW50cnlHbG9i
YWxPYmplY3QgPSBjYWxsRnJhbWUtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIW5l
ZWRQYXVzZUhhbmRsaW5nKHZtRW50cnlHbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBCcmVha3BvaW50IGJyZWFrcG9pbnQ7CkBAIC00NzAsNyArNDcxLDcgQEAgdm9pZCBEZWJ1
Z2dlcjo6cGF1c2VJZk5lZWRlZChDYWxsRnJhbWUqIAogICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGhhbmRsZVBhdXNlKG1fcmVhc29uRm9yUGF1c2UsIGR5bmFtaWNHbG9iYWxPYmpl
Y3QpOworICAgIGhhbmRsZVBhdXNlKG1fcmVhc29uRm9yUGF1c2UsIHZtRW50cnlHbG9iYWxPYmpl
Y3QpOwogCiAgICAgaWYgKCFtX3BhdXNlT25OZXh0U3RhdGVtZW50ICYmICFtX3BhdXNlT25DYWxs
RnJhbWUpIHsKICAgICAgICAgc2V0U2hvdWxkUGF1c2UoZmFsc2UpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShy
ZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgogI2luY2x1ZGUgIlN0YWNrVmlz
aXRvci5oIgorI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtNzcsMTIgKzc4LDEyIEBAIFBhc3NSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IERlYnVnZ2Vy
Q2EKICAgICByZXR1cm4gbV9jYWxsZXI7CiB9CiAKLUpTQzo6SlNHbG9iYWxPYmplY3QqIERlYnVn
Z2VyQ2FsbEZyYW1lOjpkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3QKK0pTQzo6SlNHbG9iYWxP
YmplY3QqIERlYnVnZ2VyQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsT2JqZWN0KCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIG1fY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7Cisg
ICAgcmV0dXJuIG1fY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiB9CiAKIFNvdXJj
ZUlEIERlYnVnZ2VyQ2FsbEZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaAkocmV2aXNp
b24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2Fs
bEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIGlu
dCBjb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZElu
dCgpOyB9CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCkgY29uc3Q7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNHbG9iYWxPYmplY3QqIHZtRW50cnlHbG9iYWxPYmplY3QoKSBjb25zdDsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1Njb3BlKiBzY29wZSgpIGNvbnN0OwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBmdW5jdGlvbk5hbWUoKSBjb25zdDsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMx
LDkgKzMzMSw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgLy8g
c28gZW50ZXIgYWZ0ZXIgdGhpcy4KICAgICBMYWJlbCBmcm9tQXJpdHlDaGVjayh0aGlzKTsKICAg
ICAvLyBQbGFudCBhIGNoZWNrIHRoYXQgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUgaW4g
dGhlIEpTU3RhY2suCi0gICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NjI5MQogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQoKSAqIHNp
emVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVn
VDEpOwotICAgIEp1bXAgc3RhY2tDaGVjayA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRy
ZXNzKG1fdm0tPmludGVycHJldGVyLT5zdGFjaygpLmFkZHJlc3NPZkVuZCgpKSwgR1BSSW5mbzo6
cmVnVDEpOworICAgIEp1bXAgc3RhY2tDaGVjayA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVB
ZGRyZXNzKG1fdm0tPmFkZHJlc3NPZkpTU3RhY2tMaW1pdCgpKSwgR1BSSW5mbzo6cmVnVDEpOwog
ICAgIC8vIFJldHVybiBoZXJlIGFmdGVyIHN0YWNrIGNoZWNrLgogICAgIExhYmVsIGZyb21TdGFj
a0NoZWNrID0gbGFiZWwoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNpbmNsdWRlICJKSVQu
aCIKKyNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgc3RhY2tD
aGVjayA9IGppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFib3ZlLAot
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3Moc3RhdGUuZ3JhcGgubV92
bS5pbnRlcnByZXRlci0+c3RhY2soKS5hZGRyZXNzT2ZFbmQoKSksCisgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhzdGF0ZS5ncmFwaC5tX3ZtLmFkZHJlc3NPZkpTU3Rh
Y2tMaW1pdCgpKSwKICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBmcm9tU3RhY2tDaGVjayA9IGppdC5sYWJlbCgpOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRW50cnkuY3BwCShyZXZpc2lvbiAx
NTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIK
KyNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkx
LDcgKzI5MSw3IEBAIGJvb2wgSGVhcDo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiAvLyBS
dW4gYWxsIHBlbmRpbmcgZmluYWxpemVycyBub3cgYmVjYXVzZSB3ZSB3b24ndCBnZXQgYW5vdGhl
ciBjaGFuY2UuCiB2b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKLSAgICBSRUxF
QVNFX0FTU0VSVCghbV92bS0+ZHluYW1pY0dsb2JhbE9iamVjdCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIW1fdm0tPmVudHJ5U2NvcGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAKICAgICBtX29iamVjdFNwYWNlLmxhc3RDaGFuY2VU
b0ZpbmFsaXplKCk7CkBAIC02ODksNyArNjg5LDcgQEAgdm9pZCBIZWFwOjpkZWxldGVBbGxDb21w
aWxlZENvZGUoKQogewogICAgIC8vIElmIEphdmFTY3JpcHQgaXMgcnVubmluZywgaXQncyBub3Qg
c2FmZSB0byBkZWxldGUgY29kZSwgc2luY2Ugd2UnbGwgZW5kCiAgICAgLy8gdXAgZGVsZXRpbmcg
Y29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgotICAgIGlmIChtX3ZtLT5keW5hbWljR2xv
YmFsT2JqZWN0KQorICAgIGlmIChtX3ZtLT5lbnRyeVNjb3BlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKEV4ZWN1dGFibGVCYXNlKiBjdXJyZW50ID0gbV9jb21waWxlZENvZGUuaGVhZCgp
OyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHJldmlzaW9uIDE1OTUy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDExIEBACiAjZGVmaW5lIENhY2hlZENhbGxfaAogCiAj
aW5jbHVkZSAiQ2FsbEZyYW1lQ2xvc3VyZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlZNRW50cnlTY29wZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDYWNoZWRDYWxsIHsKQEAgLTM4LDEwICs0MCwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ2FjaGVkQ2FsbChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50KQogICAgICAgICAgICAg
OiBtX3ZhbGlkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2ludGVycHJldGVyKGNhbGxGcmFtZS0+
aW50ZXJwcmV0ZXIoKSkKLSAgICAgICAgICAgICwgbV9nbG9iYWxPYmplY3RTY29wZShjYWxsRnJh
bWUtPnZtKCksIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKSkKKyAgICAgICAgICAg
ICwgbV9lbnRyeVNjb3BlKGNhbGxGcmFtZS0+dm0oKSwgZnVuY3Rpb24tPnNjb3BlKCktPmdsb2Jh
bE9iamVjdCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hv
c3RGdW5jdGlvbigpKTsKLSAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0ZXItPnBy
ZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZyYW1lLCBm
dW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29wZSgpKTsKKyAgICAgICAg
ICAgIGlmIChjYWxsRnJhbWUtPnZtKCkuaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgICAgICAg
ICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rp
b24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsg
MSwgZnVuY3Rpb24tPnNjb3BlKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICBtX3ZhbGlk
ID0gIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC02
OSw3ICs3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
bV92YWxpZDsKICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7Ci0gICAgICAgIER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZSBtX2dsb2JhbE9iamVjdFNjb3BlOworICAgICAgICBWTUVu
dHJ5U2NvcGUgbV9lbnRyeVNjb3BlOwogICAgICAgICBDYWxsRnJhbWVDbG9zdXJlIG1fY2xvc3Vy
ZTsKICAgICB9OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC0xMjIsNCArMTIzLDE1IEBAIFJlZ2lzdGVyKiBDYWxsRnJhbWU6
OmZyYW1lRXh0ZW50SW50ZXJuYWwKICAgICByZXR1cm4gcmVnaXN0ZXJzKCkgKyB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKS5vZmZzZXQoKTsK
IH0KIAorSlNHbG9iYWxPYmplY3QqIENhbGxGcmFtZTo6dm1FbnRyeUdsb2JhbE9iamVjdCgpCit7
CisgICAgaWYgKHRoaXMgPT0gbGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpCisg
ICAgICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisKKyAgICAvLyBGb3IgYW55IEV4
ZWNTdGF0ZSB0aGF0J3Mgbm90IGEgZ2xvYmFsRXhlYywgdGhlIAorICAgIC8vIGR5bmFtaWMgZ2xv
YmFsIG9iamVjdCBtdXN0IGJlIHNldCBzaW5jZSBjb2RlIGlzIHJ1bm5pbmcKKyAgICBBU1NFUlQo
dm0oKS5lbnRyeVNjb3BlKTsKKyAgICByZXR1cm4gdm0oKS5lbnRyeVNjb3BlLT5nbG9iYWxPYmpl
Y3QoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICB9CiAKICAgICAgICAg
Ly8gR2xvYmFsIG9iamVjdCBpbiB3aGljaCBleGVjdXRpb24gYmVnYW4uCi0gICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgLy8g
R2xvYmFsIG9iamVjdCBpbiB3aGljaCB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBjb2RlIHdhcyBk
ZWZpbmVkLgogICAgICAgICAvLyBEaWZmZXJzIGZyb20gZHluYW1pY0dsb2JhbE9iamVjdCgpIGR1
cmluZyBmdW5jdGlvbiBjYWxscyBhY3Jvc3Mgd2ViIGJyb3dzZXIgZnJhbWVzLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBACiAjaW5jbHVkZSAi
U3RhY2tWaXNpdG9yLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJTdHJvbmdJbmxpbmVzLmgiCi0jaW5jbHVkZSAiVk1TdGFja0JvdW5kcy5oIgorI2luY2x1
ZGUgIlZNRW50cnlTY29wZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogCiAjaW5j
bHVkZSA8bGltaXRzLmg+CkBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIGJvb2wgdW53aW5kQ2Fs
bEZyYW1lKFN0YWNrVmlzaXRvcgogICAgIENvZGVCbG9jayogb2xkQ29kZUJsb2NrID0gY29kZUJs
b2NrOwogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbEZyYW1lLT5zY29wZSgpOwogCi0gICAgaWYg
KERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5k
ZWJ1Z2dlcigpKSB7CisgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIGlmIChjYWxsRnJhbWUt
PmNhbGxlZSgpKQogICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSk7
CiAgICAgICAgIGVsc2UKQEAgLTY1MCw3ICs2NTAsNyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlcklu
Zm8qIEludGVycHJldGVyOjp1CiAgICAgQVNTRVJUKGNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb25T
dGFjaygpLnNpemUoKSk7CiAgICAgQVNTRVJUKCFleGNlcHRpb25WYWx1ZS5pc09iamVjdCgpIHx8
IGFzT2JqZWN0KGV4Y2VwdGlvblZhbHVlKS0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPnZtKCkucHJvcGVydHlOYW1lcy0+c3RhY2spKTsKIAotICAgIERlYnVnZ2VyKiBkZWJ1Z2dl
ciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOworICAgIERl
YnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5kZWJ1
Z2dlcigpOwogICAgIGlmIChkZWJ1Z2dlciAmJiBkZWJ1Z2dlci0+bmVlZHNFeGNlcHRpb25DYWxs
YmFja3MoKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIGNsZWFyIHRoZSBleGNlcHRpb24gYW5k
IHRoZSBleGNlcHRpb24gc3RhY2sgaGVyZSBpbiBvcmRlciB0byBzZWUgaWYgYSBuZXcgZXhjZXB0
aW9uIGhhcHBlbnMuCiAgICAgICAgIC8vIEFmdGVyd2FyZHMsIHRoZSB2YWx1ZXMgYXJlIHB1dCBi
YWNrIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhpcyBlcnJvci4KQEAgLTczOSwxNSArNzM5LDE0
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICBpZiAodm0u
aXNDb2xsZWN0b3JCdXN5KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIFN0YWNr
U3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50OwotICAgIGNvbnN0IFZNU3RhY2tCb3Vu
ZHMgdm1TdGFja0JvdW5kcyh2bSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkpOwotICAgIGlmICgh
dm1TdGFja0JvdW5kcy5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICBWTUVudHJ5U2NvcGUgZW50cnlT
Y29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIXZtLmlzU2FmZVRvUmVj
dXJzZSgpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsRnJhbWUpKTsKIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZSAicHJvZ3JhbSIg
aXMgYWN0dWFsbHkganVzdCBhIEpTT04gb2JqZWN0LiBJZiBzbywKICAgICAvLyB3ZSdsbCBoYW5k
bGUgdGhlIEpTT04gb2JqZWN0IGhlcmUuIEVsc2UsIHdlJ2xsIGhhbmRsZSByZWFsIEpTIGNvZGUK
ICAgICAvLyBiZWxvdyBhdCBmYWlsZWRKU09OUC4KLSAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2Nv
cGUgZ2xvYmFsT2JqZWN0U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisKICAgICBW
ZWN0b3I8SlNPTlBEYXRhPiBKU09OUERhdGE7CiAgICAgYm9vbCBwYXJzZVJlc3VsdDsKICAgICBj
b25zdCBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IHByb2dyYW0tPnNvdXJjZSgpLnRvU3RyaW5nKCk7
CkBAIC05MDAsMTEgKzg5OSw2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENh
bGxGcmEKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCiAgICAgICAgIHJldHVybiBqc051
bGwoKTsKIAotICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50OwotICAg
IGNvbnN0IFZNU3RhY2tCb3VuZHMgdm1TdGFja0JvdW5kcyh2bSwgd3RmVGhyZWFkRGF0YSgpLnN0
YWNrKCkpOwotICAgIGlmICghdm1TdGFja0JvdW5kcy5pc1NhZmVUb1JlY3Vyc2UoKSkKLSAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
KSk7Ci0KICAgICBib29sIGlzSlNDYWxsID0gKGNhbGxUeXBlID09IENhbGxUeXBlSlMpOwogICAg
IEpTU2NvcGUqIHNjb3BlOwogICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrOwpAQCAtOTE2LDcg
KzkxMCwxMCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAg
ICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpOwogICAgICAgICBzY29wZSA9IGNh
bGxGcmFtZS0+c2NvcGUoKTsKICAgICB9Ci0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGds
b2JhbE9iamVjdFNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworCisgICAgVk1FbnRy
eVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7CisgICAgaWYgKCF2
bS5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAKICAgICBpZiAoaXNKU0NhbGwpIHsKICAg
ICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgpAQCAtOTc4LDExICs5NzUsNiBAQCBKU09iamVj
dCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeSgpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsRnJhbWUpKTsKIAotICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVj
a1BvaW50OwotICAgIGNvbnN0IFZNU3RhY2tCb3VuZHMgdm1TdGFja0JvdW5kcyh2bSwgd3RmVGhy
ZWFkRGF0YSgpLnN0YWNrKCkpOwotICAgIGlmICghdm1TdGFja0JvdW5kcy5pc1NhZmVUb1JlY3Vy
c2UoKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJy
b3IoY2FsbEZyYW1lKSk7Ci0KICAgICBib29sIGlzSlNDb25zdHJ1Y3QgPSAoY29uc3RydWN0VHlw
ZSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwogICAgIEpTU2NvcGUqIHNjb3BlOwogICAgIENvZGVCbG9j
ayogbmV3Q29kZUJsb2NrOwpAQCAtOTk1LDcgKzk4Nyw5IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRl
cjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgc2NvcGUgPSBjYWxsRnJhbWUtPnNjb3BlKCk7
CiAgICAgfQogCi0gICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3Bl
KHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3Bl
KHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNl
KCkpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSkpOwogCiAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKICAgICAgICAgLy8gQ29t
cGlsZSB0aGUgY2FsbGVlOgpAQCAtMTA2NSwxMyArMTA1OSw2IEBAIENhbGxGcmFtZUNsb3N1cmUg
SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCiAg
ICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAKLSAgICBTdGFja1N0YXRzOjpDaGVj
a1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKLSAgICBjb25zdCBWTVN0YWNrQm91bmRzIHZtU3RhY2tC
b3VuZHModm0sIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpKTsKLSAgICBpZiAoIXZtU3RhY2tCb3Vu
ZHMuaXNTYWZlVG9SZWN1cnNlKCkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lKTsKLSAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKLSAgICB9Ci0K
ICAgICAvLyBDb21waWxlIHRoZSBjYWxsZWU6CiAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIENvZGVG
b3JDYWxsKTsKICAgICBpZiAoZXJyb3IpIHsKQEAgLTExNjUsMTIgKzExNTIsOSBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9y
QnVzeSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBEeW5hbWljR2xvYmFsT2Jq
ZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmplY3QoKSk7Ci0K
LSAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKLSAgICBjb25zdCBW
TVN0YWNrQm91bmRzIHZtU3RhY2tCb3VuZHModm0sIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpKTsK
LSAgICBpZiAoIXZtU3RhY2tCb3VuZHMuaXNTYWZlVG9SZWN1cnNlKCkpCi0gICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAg
IFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOworICAg
IGlmICghdm0uaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOyAgICAgICAgCiAKICAgICB1bnNp
Z25lZCBudW1WYXJpYWJsZXMgPSBldmFsLT5udW1WYXJpYWJsZXMoKTsKICAgICBpbnQgbnVtRnVu
Y3Rpb25zID0gZXZhbC0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7CkBAIC0xMjUxLDcgKzEyMzUs
NyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKIE5FVkVSX0lO
TElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdI
b29rSUQgZGVidWdIb29rSUQpCiB7Ci0gICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1l
LT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CisgICAgRGVidWdnZXIqIGRlYnVn
Z2VyID0gY2FsbEZyYW1lLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CiAgICAg
aWYgKCFkZWJ1Z2dlciB8fCAhZGVidWdnZXItPm5lZWRzT3BEZWJ1Z0NhbGxiYWNrcygpKQogICAg
ICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9K
U1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSlNTdGFjay5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNyArMjcsNiBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVk
ZSAiSlNTdGFja0lubGluZXMuaCIKIAogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCkBA
IC00NCwxMyArNDMsMTQgQEAgc3RhdGljIE11dGV4JiBzdGFja1N0YXRpc3RpY3NNdXRleCgpCiB9
ICAgIAogCiBKU1N0YWNrOjpKU1N0YWNrKFZNJiB2bSwgc2l6ZV90IGNhcGFjaXR5KQotICAgIDog
bV9lbmQoMCkKKyAgICA6IG1fdm0odm0pCisgICAgLCBtX2VuZCgwKQogICAgICwgbV90b3BDYWxs
RnJhbWUodm0udG9wQ2FsbEZyYW1lKQogewogICAgIEFTU0VSVChjYXBhY2l0eSAmJiBpc1BhZ2VB
bGlnbmVkKGNhcGFjaXR5KSk7CiAKICAgICBtX3Jlc2VydmF0aW9uID0gUGFnZVJlc2VydmF0aW9u
OjpyZXNlcnZlKHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShjYXBhY2l0eSAqIHNpemVvZihSZWdpc3Rl
ciksIGNvbW1pdFNpemUpLCBPU0FsbG9jYXRvcjo6SlNWTVN0YWNrUGFnZXMpOwotICAgIG1fZW5k
ID0gaGlnaEFkZHJlc3MoKTsKKyAgICB1cGRhdGVTdGFja0xpbWl0KGhpZ2hBZGRyZXNzKCkpOwog
ICAgIG1fY29tbWl0RW5kID0gaGlnaEFkZHJlc3MoKTsKIAogICAgIGRpc2FibGVFcnJvclN0YWNr
UmVzZXJ2ZSgpOwpAQCAtNzEsNyArNzEsNyBAQCBib29sIEpTU3RhY2s6Omdyb3dTbG93Q2FzZShS
ZWdpc3RlciogbmV3CiAgICAgLy8gSWYgd2UgaGF2ZSBhbHJlYWR5IGNvbW1pdHRlZCBlbm91Z2gg
bWVtb3J5IHRvIHNhdGlzZnkgdGhpcyByZXF1ZXN0LAogICAgIC8vIGp1c3QgdXBkYXRlIHRoZSBl
bmQgcG9pbnRlciBhbmQgcmV0dXJuLgogICAgIGlmIChuZXdFbmQgPj0gbV9jb21taXRFbmQpIHsK
LSAgICAgICAgbV9lbmQgPSBuZXdFbmQ7CisgICAgICAgIHVwZGF0ZVN0YWNrTGltaXQobmV3RW5k
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wg
SlNTdGFjazo6Z3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKiBuZXcKICAgICBtX3Jlc2VydmF0aW9uLmNv
bW1pdChyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCkgLSBkZWx0YSwgZGVsdGEp
OwogICAgIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGRlbHRhKTsKICAgICBtX2NvbW1pdEVuZCA9
IHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFJlZ2lzdGVyKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV9jb21taXRFbmQpIC0gZGVsdGEpOwotICAgIG1fZW5kID0gbmV3RW5kOworICAgIHVwZGF0ZVN0
YWNrTGltaXQobmV3RW5kKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCShyZXZpc2lvbiAxNTk1MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDks
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC04Nyw3ICs4Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIGhpZ2hBZGRyZXNzKCkgLSAxOwogICAgICAgICB9CiAKLSAgICAgICAgUmVnaXN0
ZXIqIGdldExpbWl0T2ZTdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CiAgICAgICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gaGlnaEFkZHJlc3MoKSAtIGxvd0FkZHJlc3MoKTsg
fQogCiAgICAgICAgIGJvb2wgZ3JvdyhSZWdpc3RlciopOwpAQCAtOTUsMTUgKzk0LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCk7
CiAgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKIAotICAgICAgICBS
ZWdpc3RlciogY29uc3QgKiBhZGRyZXNzT2ZFbmQoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gJm1fZW5kOwotICAgICAgICB9Ci0KICAgICAgICAgUmVnaXN0ZXIqIGdldFRv
cE9mRnJhbWUoQ2FsbEZyYW1lKik7CiAgICAgICAgIFJlZ2lzdGVyKiBnZXRTdGFydE9mRnJhbWUo
Q2FsbEZyYW1lKik7CiAgICAgICAgIFJlZ2lzdGVyKiBnZXRUb3BPZlN0YWNrKCk7Ci0gICAgICAg
IFJlZ2lzdGVyKiBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQogCiAgICAgICAgIENhbGxG
cmFtZSogcHVzaEZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIGNsYXNzIENvZGVCbG9jayos
CiAgICAgICAgICAgICBKU1Njb3BlKiwgaW50IGFyZ3NDb3VudCwgSlNPYmplY3QqIGNhbGxlZSk7
CkBAIC0xNTMsNiArMTQ2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVsZWFz
ZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQo
bG9uZyk7CiAKKyAgICAgICAgdm9pZCB1cGRhdGVTdGFja0xpbWl0KFJlZ2lzdGVyKiBuZXdFbmQp
OworCisgICAgICAgIFZNJiBtX3ZtOwogICAgICAgICBSZWdpc3RlciogbV9lbmQ7CiAgICAgICAg
IFJlZ2lzdGVyKiBtX2NvbW1pdEVuZDsKICAgICAgICAgUmVnaXN0ZXIqIG1fdXNlYWJsZUVuZDsK
QEAgLTE2MiwyMiArMTU4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgfTsKIAotICAgIGlubGluZSB2b2lkIEpTU3Rh
Y2s6OnNocmluayhSZWdpc3RlciogbmV3RW5kKQotICAgIHsKLSAgICAgICAgaWYgKG5ld0VuZCA+
PSBtX2VuZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9lbmQgPSBuZXdFbmQ7Ci0g
ICAgICAgIGlmIChtX2VuZCA9PSBnZXRCYXNlT2ZTdGFjaygpICYmIChtX2NvbW1pdEVuZCAtIGdl
dEJhc2VPZlN0YWNrKCkpID49IG1heEV4Y2Vzc0NhcGFjaXR5KQotICAgICAgICAgICAgcmVsZWFz
ZUV4Y2Vzc0NhcGFjaXR5KCk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgSlNTdGFjazo6Z3Jv
dyhSZWdpc3RlciogbmV3RW5kKQotICAgIHsKLSAgICAgICAgaWYgKG5ld0VuZCA+PSBtX2VuZCkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gZ3Jvd1Nsb3dDYXNlKG5l
d0VuZCk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTU3RhY2tf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3Rh
Y2tJbmxpbmVzLmgJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiSlNTdGFjay5oIgorI2luY2x1ZGUgIlZNLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0x
MzUsNiArMTM2LDI5IEBAIGlubGluZSB2b2lkIEpTU3RhY2s6OnBvcEZyYW1lKENhbGxGcmFtZSoK
ICAgICBpbnN0YWxsVHJhcHNBZnRlckZyYW1lKGNhbGxlckZyYW1lKTsKIH0KIAoraW5saW5lIHZv
aWQgSlNTdGFjazo6c2hyaW5rKFJlZ2lzdGVyKiBuZXdFbmQpCit7CisgICAgaWYgKG5ld0VuZCA+
PSBtX2VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIHVwZGF0ZVN0YWNrTGltaXQobmV3RW5kKTsK
KyAgICBpZiAobV9lbmQgPT0gZ2V0QmFzZU9mU3RhY2soKSAmJiAobV9jb21taXRFbmQgLSBnZXRC
YXNlT2ZTdGFjaygpKSA+PSBtYXhFeGNlc3NDYXBhY2l0eSkKKyAgICAgICAgcmVsZWFzZUV4Y2Vz
c0NhcGFjaXR5KCk7Cit9CisKK2lubGluZSBib29sIEpTU3RhY2s6Omdyb3coUmVnaXN0ZXIqIG5l
d0VuZCkKK3sKKyAgICBpZiAobmV3RW5kID49IG1fZW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gZ3Jvd1Nsb3dDYXNlKG5ld0VuZCk7Cit9CisKK2lubGluZSB2b2lkIEpTU3Rh
Y2s6OnVwZGF0ZVN0YWNrTGltaXQoUmVnaXN0ZXIqIG5ld0VuZCkKK3sKKyAgICBtX2VuZCA9IG5l
d0VuZDsKKyNpZiBVU0UoU0VQQVJBVEVfQ19BTkRfSlNfU1RBQ0spCisgICAgbV92bS5zZXRKU1N0
YWNrTGltaXQobmV3RW5kKTsKKyNlbmRpZgorfQogCiAjaWYgRU5BQkxFKERFQlVHX0pTU1RBQ0sp
CiBpbmxpbmUgSlNWYWx1ZSBKU1N0YWNrOjpnZW5lcmF0ZUZlbmNlVmFsdWUoc2l6ZV90IGFyZ0lu
ZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTU5NTI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjgsNyArNTY4LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQog
I2VuZGlmCiAKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMih2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpLm9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMSk7Ci0gICAgICAgIHN0YWNrQ2hl
Y2sgPSBicmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5pbnRlcnByZXRlci0+
c3RhY2soKS5hZGRyZXNzT2ZFbmQoKSksIHJlZ1QxKTsKKyAgICAgICAgc3RhY2tDaGVjayA9IGJy
YW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZkpTU3RhY2tMaW1p
dCgpKSwgcmVnVDEpOwogICAgIH0KIAogICAgIExhYmVsIGZ1bmN0aW9uQm9keSA9IGxhYmVsKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZp
c2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUxv
YWRWYXJhcmdzKEluc3RydWN0aW9uCiAgICAgICAgIGFkZFB0cihjYWxsRnJhbWVSZWdpc3Rlciwg
cmVnVDMpOwogICAgICAgICAvLyByZWdUMzogbmV3Q2FsbEZyYW1lCiAKLSAgICAgICAgc2xvd0Nh
c2UuYXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmludGVycHJl
dGVyLT5zdGFjaygpLmFkZHJlc3NPZkVuZCgpKSwgcmVnVDMpKTsKKyAgICAgICAgc2xvd0Nhc2Uu
YXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZkpT
U3RhY2tMaW1pdCgpKSwgcmVnVDMpKTsKIAogICAgICAgICAvLyBJbml0aWFsaXplIEFyZ3VtZW50
Q291bnQuCiAgICAgICAgIHN0b3JlMzIocmVnVDIsIHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1l
bnRDb3VudCwgcmVnVDMpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUxv
YWRWYXJhcmdzKEluc3RydWN0aW9uCiAgICAgICAgIGFkZFB0cihjYWxsRnJhbWVSZWdpc3Rlciwg
cmVnVDEpOwogICAgICAgICAvLyByZWdUMTogbmV3Q2FsbEZyYW1lCiAKLSAgICAgICAgc2xvd0Nh
c2UuYXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmludGVycHJl
dGVyLT5zdGFjaygpLmFkZHJlc3NPZkVuZCgpKSwgcmVnVDEpKTsKKyAgICAgICAgc2xvd0Nhc2Uu
YXBwZW5kKGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZkpT
U3RhY2tMaW1pdCgpKSwgcmVnVDEpKTsKIAogICAgICAgICAvLyBJbml0aWFsaXplIEFyZ3VtZW50
Q291bnQuCiAgICAgICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVnVDEsIEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNU
X09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUg
IkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRl
ICJKU1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShy
ZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM4MywxMCArMzgzLDkgQEAgbWFjcm8g
ZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnUwogICAgIGxvYWRpIENvZGVCbG9jazo6
bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAogICAgIGFkZGkgMSwgdDAgIyBBY2NvdW50IHRo
YXQgbG9jYWwwIGdvZXMgYXQgc2xvdCAtMQogICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVt0MV0s
IHQyCi0gICAgbG9hZHAgVk06OmludGVycHJldGVyW3QyXSwgdDIKICAgICBsc2hpZnRwIDMsIHQw
CiAgICAgc3VicCBjZnIsIHQwLCB0MAotICAgIGJwYmVxIEludGVycHJldGVyOjptX3N0YWNrICsg
SlNTdGFjazo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKyAgICBicGJlcSBWTTo6bV9q
c1N0YWNrTGltaXRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKIAogICAgICMgU3RhY2sgaGVpZ2h0
IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIHNsb3dfcGF0aC4KICAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3N0YWNrX2NoZWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDYgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZt
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVy
cywgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3Ms
IEpTUGFyc2VyTW9kZSBwYXJzZXJNb2RlKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fc291cmNl
KCZzb3VyY2UpCi0gICAgLCBtX3N0YWNrKCp2bSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkpCiAg
ICAgLCBtX2hhc1N0YWNrT3ZlcmZsb3coZmFsc2UpCiAgICAgLCBtX2FsbG93c0luKHRydWUpCiAg
ICAgLCBtX2Fzc2lnbm1lbnRDb3VudCgwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAi
U291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlckNhY2hlLmgiCiAjaW5j
bHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCIKLSNpbmNsdWRlICJWTVN0YWNrQm91bmRz
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC03NTgsNyArNzU3LDcgQEAgcHJpdmF0ZToK
ICAgICAKICAgICBib29sIGNhblJlY3Vyc2UoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3Rh
Y2suaXNTYWZlVG9SZWN1cnNlKCk7CisgICAgICAgIHJldHVybiBtX3ZtLT5pc1NhZmVUb1JlY3Vy
c2UoKTsKICAgICB9CiAgICAgCiAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24mIGxhc3RUb2tlbkVu
ZFBvc2l0aW9uKCkgY29uc3QKQEAgLTgyNyw3ICs4MjYsNiBAQCBwcml2YXRlOgogICAgIFBhcnNl
ckFyZW5hKiBtX2FyZW5hOwogICAgIE93blB0cjxMZXhlclR5cGU+IG1fbGV4ZXI7CiAgICAgCi0g
ICAgVk1TdGFja0JvdW5kcyBtX3N0YWNrOwogICAgIGJvb2wgbV9oYXNTdGFja092ZXJmbG93Owog
ICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBKU1Rva2VuIG1fdG9rZW47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2
aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiAx
NTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDcgQXBwbGUgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAxMyBBcHBsZSBJ
bmMuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVlIGV2YWx1
YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgCiAgICAgfQogCiAgICAgaWYgKCF0aGlzVmFsdWUg
fHwgdGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHRoaXNWYWx1ZSA9IGV4
ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgdGhpc1ZhbHVlID0gZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTT2Jq
ZWN0Kj4odGhpc1ZhbHVlLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKHByb2dyYW0sIGV4ZWMsIHRo
aXNPYmopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MTEyLDcgKzExMiw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEUK
IAogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJjZShwcm9ncmFtLCBzb3VyY2VVUkws
IHBvc2l0aW9uKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsKLSAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShm
dW5jdGlvbk5hbWUsIGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIo
KSwgc291cmNlLCAmZXhjZXB0aW9uKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
ID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5hbWUsIGV4ZWMs
IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSwgc291cmNlLCAmZXhjZXB0
aW9uKTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwog
ICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MDYsMjYgKzcwNiw2IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmNsZWFyUmFyZURhdGEoSlNDZWwKICAgICBqc0Nhc3Q8SlNH
bG9iYWxPYmplY3QqPihjZWxsKS0+bV9yYXJlRGF0YS5jbGVhcigpOwogfQogCi1EeW5hbWljR2xv
YmFsT2JqZWN0U2NvcGU6OkR5bmFtaWNHbG9iYWxPYmplY3RTY29wZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KQotICAgIDogbV9keW5hbWljR2xvYmFsT2JqZWN0
U2xvdCh2bS5keW5hbWljR2xvYmFsT2JqZWN0KQotICAgICwgbV9zYXZlZER5bmFtaWNHbG9iYWxP
YmplY3QobV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdCkKLXsKLSAgICBpZiAoIW1fZHluYW1pY0ds
b2JhbE9iamVjdFNsb3QpIHsKLSNpZiBFTkFCTEUoQVNTRU1CTEVSKQotICAgICAgICBpZiAoRXhl
Y3V0YWJsZUFsbG9jYXRvcjo6dW5kZXJNZW1vcnlQcmVzc3VyZSgpKQotICAgICAgICAgICAgdm0u
aGVhcC5kZWxldGVBbGxDb21waWxlZENvZGUoKTsKLSNlbmRpZgotCi0gICAgICAgIG1fZHluYW1p
Y0dsb2JhbE9iamVjdFNsb3QgPSBkeW5hbWljR2xvYmFsT2JqZWN0OwotCi0gICAgICAgIC8vIFJl
c2V0IHRoZSBkYXRlIGNhY2hlIGJldHdlZW4gSlMgaW52b2NhdGlvbnMgdG8gZm9yY2UgdGhlIFZN
Ci0gICAgICAgIC8vIHRvIG9ic2VydmUgdGltZSB6b25lIGNoYW5nZXMuCi0gICAgICAgIHZtLnJl
c2V0RGF0ZUNhY2hlKCk7Ci0gICAgfQotICAgIC8vIENsZWFyIHRoZSBleGNlcHRpb24gc3RhY2sg
YmV0d2VlbiBlbnRyaWVzCi0gICAgdm0uY2xlYXJFeGNlcHRpb25TdGFjaygpOwotfQotCiB2b2lk
IHNsb3dWYWxpZGF0ZUNlbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lv
biAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODYsMTcgKzU4Niw2IEBAIGlubGluZSBib29sIEpTR2xv
YmFsT2JqZWN0OjpzeW1ib2xUYWJsZUgKICAgICByZXR1cm4gIWVudHJ5LmlzTnVsbCgpOwogfQog
Ci1pbmxpbmUgSlNHbG9iYWxPYmplY3QqIEV4ZWNTdGF0ZTo6ZHluYW1pY0dsb2JhbE9iamVjdCgp
Ci17Ci0gICAgaWYgKHRoaXMgPT0gbGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkp
Ci0gICAgICAgIHJldHVybiBsZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0KLSAgICAvLyBGb3IgYW55
IEV4ZWNTdGF0ZSB0aGF0J3Mgbm90IGEgZ2xvYmFsRXhlYywgdGhlIAotICAgIC8vIGR5bmFtaWMg
Z2xvYmFsIG9iamVjdCBtdXN0IGJlIHNldCBzaW5jZSBjb2RlIGlzIHJ1bm5pbmcKLSAgICBBU1NF
UlQodm0oKS5keW5hbWljR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gdm0oKS5keW5hbWljR2xv
YmFsT2JqZWN0OwotfQotCiBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVj
U3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGggPSAwKQogewogICAgIHJl
dHVybiBBcnJheUFsbG9jYXRpb25Qcm9maWxlOjp1cGRhdGVMYXN0QWxsb2NhdGlvbkZvcihwcm9m
aWxlLCBKU0FycmF5OjpjcmVhdGUoZXhlYy0+dm0oKSwgaW5pdGlhbExlbmd0aCA+PSBNSU5fU1BB
UlNFX0FSUkFZX0lOREVYID8gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSA6IGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JQcm9maWxlRHVyaW5nQWxsb2NhdGlvbihwcm9maWxlKSwgaW5p
dGlhbExlbmd0aCkpOwpAQCAtNjM3LDIxICs2MjYsNiBAQCBpbmxpbmUgSlNBcnJheSogY29uc3Ry
dWN0QXJyYXlOZWdhdGl2ZUluCiAgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRl
eGVkKGV4ZWMsIHByb2ZpbGUsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgdmFsdWVzLCBs
ZW5ndGgpOwogfQogCi1jbGFzcyBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSk7Ci1wdWJsaWM6Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlKFZNJiwgSlNHbG9iYWxP
YmplY3QqKTsKLQotICAgIH5EeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUoKQotICAgIHsKLSAgICAg
ICAgbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdCA9IG1fc2F2ZWREeW5hbWljR2xvYmFsT2JqZWN0
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU0dsb2JhbE9iamVjdComIG1fZHluYW1pY0dsb2Jh
bE9iamVjdFNsb3Q7Ci0gICAgSlNHbG9iYWxPYmplY3QqIG1fc2F2ZWREeW5hbWljR2xvYmFsT2Jq
ZWN0OwotfTsKLQogaW5saW5lIEpTT2JqZWN0KiBKU1Njb3BlOjpnbG9iYWxUaGlzKCkKIHsgCiAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxUaGlzKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5o
CShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdSZWN1cnNpb25DaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNk
ZWZpbmUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcl9oCiAKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgotI2luY2x1ZGUgIlZNU3RhY2tCb3VuZHMuaCIKICNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5o
PgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKQEAgLTUxLDggKzUwLDcgQEAgcHJp
dmF0ZToKIGlubGluZSBKU1ZhbHVlIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnBlcmZvcm1DaGVj
aygpCiB7CiAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwotICAgIGNvbnN0IFZNU3RhY2tCb3Vu
ZHMgbmF0aXZlU3RhY2sodm0sIHd0ZlRocmVhZERhdGEoKS5zdGFjaygpKTsKLSAgICBpZiAoIW5h
dGl2ZVN0YWNrLmlzU2FmZVRvUmVjdXJzZSgpKQorICAgIGlmICghdm0uaXNTYWZlVG9SZWN1cnNl
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcigpOwogICAgIGJvb2wg
YWxyZWFkeVZpc2l0ZWQgPSAhdm0uc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNpdGVkT2JqZWN0cy5h
ZGQobV90aGlzT2JqZWN0KS5pc05ld0VudHJ5OwogICAgIGlmIChhbHJlYWR5VmlzaXRlZCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk1LDcgKzE5NSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIGpzQXJyYXlDbGFzc0luZm8oSlNBcnJheTo6aW5mbygpKQogICAgICwganNGaW5hbE9i
amVjdENsYXNzSW5mbyhKU0ZpbmFsT2JqZWN0OjppbmZvKCkpCiAgICAgLCBzaXplT2ZMYXN0U2Ny
YXRjaEJ1ZmZlcigwKQotICAgICwgZHluYW1pY0dsb2JhbE9iamVjdCgwKQorICAgICwgZW50cnlT
Y29wZSgwKQogICAgICwgbV9lbmFibGVkUHJvZmlsZXIoMCkKICAgICAsIG1fcmVnRXhwQ2FjaGUo
bmV3IFJlZ0V4cENhY2hlKHRoaXMpKQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTIx
NSwxMCArMjE1LDE2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAsIG1faW5pdGlhbGl6aW5nT2JqZWN0Q2xh
c3MoMCkKICNlbmRpZgorICAgICwgbV9zdGFja0xpbWl0KDApCisjaWYgVVNFKFNFUEFSQVRFX0Nf
QU5EX0pTX1NUQUNLKQorICAgICwgbV9qc1N0YWNrTGltaXQoMCkKKyNlbmRpZgogICAgICwgbV9p
bkRlZmluZU93blByb3BlcnR5KGZhbHNlKQogICAgICwgbV9jb2RlQ2FjaGUoQ29kZUNhY2hlOjpj
cmVhdGUoKSkKIHsKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7Cisg
ICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKKyAgICBzZXRT
dGFja0xpbWl0KHN0YWNrLnJlY3Vyc2lvbkxpbWl0KCkpOwogCiAgICAgLy8gTmVlZCB0byBiZSBj
YXJlZnVsIHRvIGtlZXAgZXZlcnl0aGluZyBjb25zaXN0ZW50IGhlcmUKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh0aGlzKTsKQEAgLTUzMiw3ICs1MzgsNyBAQCB2b2lkIFZNOjpyZWxlYXNlRXhlY3V0
YWJsZU1lbW9yeSgpCiB7CiAgICAgcHJlcGFyZVRvRGlzY2FyZENvZGUoKTsKICAgICAKLSAgICBp
ZiAoZHluYW1pY0dsb2JhbE9iamVjdCkgeworICAgIGlmIChlbnRyeVNjb3BlKSB7CiAgICAgICAg
IFN0YWNrUHJlc2VydmluZ1JlY29tcGlsZXIgcmVjb21waWxlcjsKICAgICAgICAgSGVhcEl0ZXJh
dGlvblNjb3BlIGl0ZXJhdGlvblNjb3BlKGhlYXApOwogICAgICAgICBIYXNoU2V0PEpTQ2VsbCo+
IHJvb3RzOwpAQCAtNjE4LDcgKzYyNCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJy
b3IoQ2FsbEZyYW0KICAgICAKIEpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBlcnJvcikKIHsKLSAgICBBU1NFUlQoZXhlYyA9PSB0b3BDYWxsRnJhbWUg
fHwgZXhlYyA9PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSB8fCBl
eGVjID09IGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKKyAgICBB
U1NFUlQoZXhlYyA9PSB0b3BDYWxsRnJhbWUgfHwgZXhlYyA9PSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSB8fCBleGVjID09IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpKTsKICAgICAKICAgICBWZWN0b3I8U3RhY2tGcmFtZT4gc3RhY2tU
cmFjZTsKICAgICBpbnRlcnByZXRlci0+Z2V0U3RhY2tUcmFjZShzdGFja1RyYWNlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQs
NyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9TaW1wbGVTdGF0cy5oPgorI2luY2x1ZGUgPHd0Zi9TdGFj
a0JvdW5kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+
CkBAIC05MCw2ICs5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFVubGlua2VkRXZh
bENvZGVCbG9jazsKICAgICBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBj
bGFzcyBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s7CisgICAgY2xhc3MgVk1FbnRyeVNjb3BlOwog
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0zNjEsNiArMzYz
LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVl
IHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsK
ICAgICAgICAgCisgICAgICAgIHZvaWQqKiBhZGRyZXNzT2ZKU1N0YWNrTGltaXQoKSB7IHJldHVy
biAmbV9qc1N0YWNrTGltaXQ7IH0KKyAgICAgICAgdm9pZCoganNTdGFja0xpbWl0KCkgeyByZXR1
cm4gbV9qc1N0YWNrTGltaXQ7IH0KKyAgICAgICAgdm9pZCBzZXRKU1N0YWNrTGltaXQodm9pZCog
bGltaXQpIHsgbV9qc1N0YWNrTGltaXQgPSBsaW1pdDsgfQorCisgICAgICAgIHZvaWQqIHN0YWNr
TGltaXQoKSB7IHJldHVybiBtX3N0YWNrTGltaXQ7IH0KKyAgICAgICAgdm9pZCBzZXRTdGFja0xp
bWl0KHZvaWQqIGxpbWl0KSB7IG1fc3RhY2tMaW1pdCA9IGxpbWl0OyB9CisgICAgICAgIGJvb2wg
aXNTYWZlVG9SZWN1cnNlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHd0
ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOworICAgICAgICAgICAg
dm9pZCogY3VycjsKKyAgICAgICAgICAgIHJldHVybiAmY3VyciA+PSBtX3N0YWNrTGltaXQ7Cisg
ICAgICAgIH0KKwogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0lu
Zm87CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5m
bzsKIApAQCAtMzk2LDcgKzQxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQg
Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKIAotICAgICAgICBK
U0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdDsKKyAgICAgICAgVk1FbnRyeVNjb3Bl
KiBlbnRyeVNjb3BlOwogCiAgICAgICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNp
b25DaGVja1Zpc2l0ZWRPYmplY3RzOwogCkBAIC00NzUsNiArNDkwLDE4IEBAIG5hbWVzcGFjZSBK
U0MgewogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgICAgICBjb25zdCBDbGFzc0luZm8q
IG1faW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3M7CiAjZW5kaWYKKworI2lmIFVTRShTRVBBUkFURV9D
X0FORF9KU19TVEFDSykKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHZvaWQqIG1fc3Rh
Y2tMaW1pdDsKKyAgICAgICAgICAgIHZvaWQqIG1fanNTdGFja0xpbWl0OworICAgICAgICB9Owor
I2Vsc2UKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgdm9pZCogbV9zdGFja0xpbWl0Owor
ICAgICAgICAgICAgdm9pZCogbV9qc1N0YWNrTGltaXQ7CisgICAgICAgIH07CisjZW5kaWYKICAg
ICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAgICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJv
cGVydHk7CiAgICAgICAgIE93blB0cjxDb2RlQ2FjaGU+IG1fY29kZUNhY2hlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWTUVu
dHJ5U2NvcGUuaCIKKworI2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8d3RmL1N0YWNrQm91bmRz
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBtX3ZtKHZtKQorICAgICwg
bV9zdGFjayh3dGZUaHJlYWREYXRhKCkuc3RhY2soKSkKKyAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKKyAgICAsIG1fcHJldih2bS5lbnRyeVNjb3BlKQorICAgICwgbV9wcmV2U3Rh
Y2tMaW1pdCh2bS5zdGFja0xpbWl0KCkpCit7CisgICAgaWYgKCF2bS5lbnRyeVNjb3BlKSB7Cisj
aWYgRU5BQkxFKEFTU0VNQkxFUikKKyAgICAgICAgaWYgKEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVu
ZGVyTWVtb3J5UHJlc3N1cmUoKSkKKyAgICAgICAgICAgIHZtLmhlYXAuZGVsZXRlQWxsQ29tcGls
ZWRDb2RlKCk7CisjZW5kaWYKKyAgICAgICAgdm0uZW50cnlTY29wZSA9IHRoaXM7CisKKyAgICAg
ICAgLy8gUmVzZXQgdGhlIGRhdGUgY2FjaGUgYmV0d2VlbiBKUyBpbnZvY2F0aW9ucyB0byBmb3Jj
ZSB0aGUgVk0gdG8KKyAgICAgICAgLy8gb2JzZXJ2ZSB0aW1lIHhvbmUgY2hhbmdlcy4KKyAgICAg
ICAgdm0ucmVzZXREYXRlQ2FjaGUoKTsKKyAgICB9CisgICAgLy8gQ2xlYXIgdGhlIGV4Y2VwdGlv
biBzdGFjayBiZXR3ZWVuIGVudHJpZXMKKyAgICB2bS5jbGVhckV4Y2VwdGlvblN0YWNrKCk7CisK
KyAgICB2b2lkKiBsaW1pdCA9IG1fc3RhY2sucmVjdXJzaW9uTGltaXQocmVxdWlyZWRDYXBhY2l0
eSgpKTsKKyAgICB2bS5zZXRTdGFja0xpbWl0KGxpbWl0KTsKK30KKworVk1FbnRyeVNjb3BlOjp+
Vk1FbnRyeVNjb3BlKCkKK3sKKyAgICBtX3ZtLmVudHJ5U2NvcGUgPSBtX3ByZXY7CisgICAgbV92
bS5zZXRTdGFja0xpbWl0KG1fcHJldlN0YWNrTGltaXQpOworfQorCitzaXplX3QgVk1FbnRyeVNj
b3BlOjpyZXF1aXJlZENhcGFjaXR5KCkgY29uc3QKK3sKKyAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBtX3ZtLmludGVycHJldGVyOworCisgICAgLy8gV2UgcmVxdWlyZSBhIHNtYWxsZXIg
c3RhY2sgYnVkZ2V0IGZvciB0aGUgZXJyb3Igc3RhY2suIFRoaXMgaXMgdG8gYWxsb3cKKyAgICAv
LyBzb21lIG1pbmltYWwgSlMgZXhlY3V0aW9uIHRvIHByb2NlZWQgYW5kIGRvIHRoZSB3b3JrIG9m
IHRocm93aW5nIGEgc3RhY2sKKyAgICAvLyBvdmVyZmxvdyBlcnJvciBpZiBuZWVkZWQuIEluIGNv
bnRyYXN0LCBhcmJpdHJhcnkgSlMgY29kZSB3aWxsIHJlcXVpcmUgdGhlCisgICAgLy8gbW9yZSBn
ZW5lcm91cyBzdGFjayBidWRnZXQgaW4gb3JkZXIgdG8gcHJvY2VlZC4KKyAgICAvLworICAgIC8v
IFRoZXNlIHNpemVzIHdlcmUgZGVyaXZlZCBmcm9tIHRoZSBzdGFjayB1c2FnZSBvZiBhIG51bWJl
ciBvZiBzaXRlcyB3aGVuCisgICAgLy8gbGF5b3V0IG9jY3VycyB3aGVuIHdlJ3ZlIGFscmVhZHkg
Y29uc3VtZWQgbW9zdCBvZiB0aGUgQyBzdGFjay4KKyAgICBjb25zdCBzaXplX3QgcmVxdWlyZWRT
dGFjayA9IDEyOCAqIEtCOworICAgIGNvbnN0IHNpemVfdCBlcnJvck1vZGVSZXF1aXJlZFN0YWNr
ID0gNjQgKiBLQjsKKworICAgIHNpemVfdCByZXF1aXJlZENhcGFjaXR5ID0gaW50ZXJwcmV0ZXIt
PmlzSW5FcnJvckhhbmRsaW5nTW9kZSgpID8gZXJyb3JNb2RlUmVxdWlyZWRTdGFjayA6IHJlcXVp
cmVkU3RhY2s7CisgICAgUkVMRUFTRV9BU1NFUlQobV9zdGFjay5zaXplKCkgPj0gcmVxdWlyZWRD
YXBhY2l0eSk7CisgICAgcmV0dXJuIHJlcXVpcmVkQ2FwYWNpdHk7IAorfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNj
b3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRy
eVNjb3BlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVk1FbnRyeVNjb3Bl
X2gKKyNkZWZpbmUgVk1FbnRyeVNjb3BlX2gKKworI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisj
aW5jbHVkZSA8d3RmL1N0YWNrQm91bmRzLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OworY2xhc3MgVk07CisK
K2NsYXNzIFZNRW50cnlTY29wZSB7CitwdWJsaWM6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVk1F
bnRyeVNjb3BlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+
Vk1FbnRyeVNjb3BlKCk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KKworcHJpdmF0ZToKKyAgICBzaXplX3QgcmVx
dWlyZWRDYXBhY2l0eSgpIGNvbnN0OworCisgICAgVk0mIG1fdm07CisgICAgU3RhY2tTdGF0czo6
Q2hlY2tQb2ludCBtX3N0YWNrQ2hlY2tQb2ludDsKKyAgICBTdGFja0JvdW5kcyBtX3N0YWNrOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdDsKKworICAgIC8vIG1fcHJldiBhbmQg
bV9wcmV2U3RhY2tMaW1pdCBtYXkgYmVsb25nIHRvIGEgZGlmZmVyZW50IHRocmVhZCdzIHN0YWNr
LgorICAgIFZNRW50cnlTY29wZSogbV9wcmV2OworICAgIHZvaWQqIG1fcHJldlN0YWNrTGltaXQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFZNRW50cnlTY29wZV9oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNU3RhY2tCb3VuZHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVN0YWNrQm91bmRzLmgJ
KHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNU3Rh
Y2tCb3VuZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgVk1TdGFja0JvdW5kc19o
Ci0jZGVmaW5lIFZNU3RhY2tCb3VuZHNfaAotCi0jaW5jbHVkZSAiVk0uaCIKLSNpbmNsdWRlIDx3
dGYvU3RhY2tCb3VuZHMuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIFZNU3RhY2tCb3Vu
ZHMgewotcHVibGljOgotICAgIFZNU3RhY2tCb3VuZHMoVk0mIHZtLCBjb25zdCBTdGFja0JvdW5k
cyYgYm91bmRzKQotICAgICAgICA6IG1fdm0odm0pCi0gICAgICAgICwgbV9ib3VuZHMoYm91bmRz
KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzU2FmZVRvUmVjdXJzZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYm91bmRzLmlzU2FmZVRvUmVjdXJzZShyZXF1aXJlZENhcGFjaXR5KCkpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgaW5saW5lIHNpemVfdCByZXF1aXJlZENhcGFjaXR5KCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fdm0uaW50ZXJwcmV0ZXI7Ci0K
LSAgICAgICAgLy8gV2UgaGF2ZSB0d28gc2VwYXJhdGUgc3RhY2sgbGltaXRzLCBvbmUgZm9yIHJl
Z3VsYXIgSlMgZXhlY3V0aW9uLCBhbmQgb25lCi0gICAgICAgIC8vIGZvciB3aGVuIHdlJ3JlIGhh
bmRsaW5nIGVycm9ycy4gV2UgbmVlZCB0aGUgZXJyb3Igc3RhY2sgdG8gYmUgc21hbGxlcgotICAg
ICAgICAvLyBvdGhlcndpc2UgdGhlcmUgd291bGQgb2J2aW91c2x5IG5vdCBiZSBhbnkgc3RhY2sg
bGVmdCB0byBleGVjdXRlIEpTIGluIHdoZW4KLSAgICAgICAgLy8gdGhlcmUncyBhIHN0YWNrIG92
ZXJmbG93LgotICAgICAgICAvLwotICAgICAgICAvLyBUaGVzZSBzaXplcyB3ZXJlIGRlcml2ZWQg
ZnJvbSB0aGUgc3RhY2sgdXNhZ2Ugb2YgYSBudW1iZXIgb2Ygc2l0ZXMgd2hlbgotICAgICAgICAv
LyBsYXlvdXQgb2NjdXJzIHdoZW4gd2UndmUgYWxyZWFkeSBjb25zdW1lZCBtb3N0IG9mIHRoZSBD
IHN0YWNrLgotICAgICAgICBjb25zdCBzaXplX3QgcmVxdWlyZWRTdGFjayA9IDEyOCAqIEtCOwot
ICAgICAgICBjb25zdCBzaXplX3QgZXJyb3JNb2RlUmVxdWlyZWRTdGFjayA9IDY0ICogS0I7Ci0K
LSAgICAgICAgc2l6ZV90IHJlcXVpcmVkQ2FwYWNpdHkgPSBpbnRlcnByZXRlci0+aXNJbkVycm9y
SGFuZGxpbmdNb2RlKCkgPyBlcnJvck1vZGVSZXF1aXJlZFN0YWNrIDogcmVxdWlyZWRTdGFjazsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ib3VuZHMuc2l6ZSgpID49IHJlcXVpcmVkQ2FwYWNp
dHkpOwotICAgICAgICByZXR1cm4gcmVxdWlyZWRDYXBhY2l0eTsgCi0gICAgfQotCi0gICAgVk0m
IG1fdm07Ci0gICAgY29uc3QgU3RhY2tCb3VuZHMmIG1fYm91bmRzOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBWTVN0YWNrQm91bmRzX2gKLQpJbmRleDogU291cmNlL1dU
Ri9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE1OTU5NykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTMtMTEtMjAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIEludHJvZHVjaW5nIFZNRW50cnlTY29wZSB0byB1cGRhdGUgdGhlIFZNIHN0YWNrIGxp
bWl0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
NjM0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1N0YWNrQm91bmRzLmg6CisgICAgICAgIChX
VEY6OlN0YWNrQm91bmRzOjpTdGFja0JvdW5kcyk6CisKIDIwMTMtMTEtMTggIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB0aGUgRlRMIGRlYnVnIGR1bXBz
IHRvIGluY2x1ZGUgdGhlIG5ldyBzaXplIGZpZWxkCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDE1OTUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg2OCw2ICs4NjgsMTQgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qIEZJWE1FOiBXZSBjdXJyZW50
bHkgdW5jb25kaXRpb25hbGx5IHVzZSBzcGVhcmF0ZSBzdGFja3MuIFdoZW4gd2Ugc3dpdGNoIHRv
IHVzaW5nIHRoZQorICAgQyBzdGFjayBmb3IgSlMgZnJhbWVzLCB3ZSdsbCBuZWVkIHRvIG1ha2Ug
dGhlIGZvbGxvd2luZyBjb25kaXRpb25hbCBvbiBFTkFCTEUoTExJTlRfQ0xPT1ApCisgICBvbmx5
LgorKi8KKyNpZiBFTkFCTEUoTExJTlRfQ0xPT1ApIHx8IDEKKyNkZWZpbmUgV1RGX1VTRV9TRVBB
UkFURV9DX0FORF9KU19TVEFDSyAxCisjZW5kaWYKKwogLyogUGljayB3aGljaCBhbGxvY2F0b3Ig
dG8gdXNlOyB3ZSBvbmx5IG5lZWQgYW4gZXhlY3V0YWJsZSBhbGxvY2F0b3IgaWYgdGhlIGFzc2Vt
YmxlciBpcyBjb21waWxlZCBpbi4KICAgIE9uIHg4Ni02NCB3ZSB1c2UgYSBzaW5nbGUgZml4ZWQg
bW1hcCwgb24gb3RoZXIgcGxhdGZvcm1zIHdlIG1tYXAgb24gZGVtYW5kLiAqLwogI2lmIEVOQUJM
RShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgJKHJldmlzaW9uIDE1OTUyNSkKKysr
IFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMw
LDYgQEAKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdGFja0JvdW5kcyB7Ci0gICAgLy8gaXNT
YWZlVG9SZWN1cnNlKCkgLyByZWN1cnNpb25MaW1pdCgpIHRlc3RzIChieSBkZWZhdWx0KQotICAg
IC8vIHRoYXQgd2UgYXJlIGF0IGxlYXN0IHRoaXMgZmFyIGZyb20gdGhlIGVuZCBvZiB0aGUgc3Rh
Y2suCi0gICAgLy8KICAgICAvLyBUaGlzIDY0ayBudW1iZXIgd2FzIHBpY2tlZCBiZWNhdXNlIGEg
c2FtcGxpbmcgb2Ygc3RhY2sgdXNhZ2UgZGlmZmVyZW5jZXMKICAgICAvLyBiZXR3ZWVuIGNvbnNl
Y3V0aXZlIGVudHJpZXMgaW50byBvbmUgb2YgdGhlIEludGVycHJldGVyOjpleGVjdXRlLi4uKCkK
ICAgICAvLyBmdW5jdGlvbnMgd2FzIHNlZW4gdG8gYmUgYXMgaGlnaCBhcyAyN2suIEhlbmNlLCA2
NGsgaXMgY2hvc2VuIGFzIGEKQEAgLTQ5LDE0ICs0Niw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGJvdW5kczsKICAgICB9CiAKLSAgICBib29sIGlzU2FmZVRvUmVjdXJzZShzaXplX3QgbWlu
QXZhaWxhYmxlRGVsdGEgPSBzX2RlZmF1bHRBdmFpbGFiaWxpdHlEZWx0YSkgY29uc3QKLSAgICB7
Ci0gICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKLSAgICAgICAgaWYgKGlzR3Jvd2luZ0Rvd253
YXJkKCkpCi0gICAgICAgICAgICByZXR1cm4gY3VycmVudCgpID49IHJlY3Vyc2lvbkxpbWl0KG1p
bkF2YWlsYWJsZURlbHRhKTsKLSAgICAgICAgcmV0dXJuIGN1cnJlbnQoKSA8PSByZWN1cnNpb25M
aW1pdChtaW5BdmFpbGFibGVEZWx0YSk7Ci0gICAgfQotCiAgICAgdm9pZCogb3JpZ2luKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX29yaWdpbik7CkBAIC03MCwyMiArNTksNiBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4obV9ib3VuZCkgLSBzdGF0
aWNfY2FzdDxjaGFyKj4obV9vcmlnaW4pOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBTdGFja0Jv
dW5kcygpCi0gICAgICAgIDogbV9vcmlnaW4oMCkKLSAgICAgICAgLCBtX2JvdW5kKDApCi0gICAg
ewotICAgIH0KLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemUoKTsKLQot
ICAgIHZvaWQqIGN1cnJlbnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwotICAgICAgICB2b2lkKiBjdXJyZW50UG9zaXRpb24gPSAmY3VycmVudFBvc2l0aW9uOwot
ICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwotICAgIH0KLQogICAgIHZvaWQqIHJlY3Vy
c2lvbkxpbWl0KHNpemVfdCBtaW5BdmFpbGFibGVEZWx0YSA9IHNfZGVmYXVsdEF2YWlsYWJpbGl0
eURlbHRhKSBjb25zdAogICAgIHsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpAQCAtMTA0
LDYgKzc3LDE1IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB9CiAKK3ByaXZhdGU6CisgICAgU3Rh
Y2tCb3VuZHMoKQorICAgICAgICA6IG1fb3JpZ2luKDApCisgICAgICAgICwgbV9ib3VuZCgwKQor
ICAgIHsKKyAgICB9CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0aWFsaXplKCk7
CisKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIHsKICNpZiAhQVNTRVJU
X0RJU0FCTEVECkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTk1OTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OCBAQAorMjAxMy0xMS0y
MCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcg
Vk1FbnRyeVNjb3BlIHRvIHVwZGF0ZSB0aGUgVk0gc3RhY2sgbGltaXQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MzQuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgIFJlbmFtZWQgZHluYW1pY0dsb2JhbE9iamVjdCgpIHRvIHZtRW50cnlHbG9iYWxPYmplY3Qo
KS4KKyAgICAgICAgUmVwbGFjZWQgdXNlcyBvZiBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgd2l0
aCBWTUVudHJ5U2NvcGUuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1ZN
RW50cnlTY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1CdWlsZGVyOjphZGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdERPTVdpbmRv
dyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3Rl
bmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxG
cmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdENhbGxGcmFtZTo6dm1FbnRyeUds
b2JhbE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxl
QWxsSlNGdW5jdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpldmFsdWF0ZUJyZWFr
cG9pbnRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRs
ZVBhdXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxl
QWxsSlNGdW5jdGlvbnMpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6YWRkRXhjZXB0aW9uVG9Db25zb2xlKToKKyAgICAgICAg
KiBicmlkZ2UvYy9jX3V0aWxpdHkuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVy
dFZhbHVlVG9OUFZhcmlhbnQpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0
ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6Y29udmVydFZhbHVlVG9PYmpjT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uv
b2JqYy9vYmpjX3V0aWxpdHkubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFs
dWVUb09iamNWYWx1ZSk6CisKIDIwMTMtMTEtMjAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQ2xlYXIgVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudDo6
bV9ob3N0IHdoZW4gSFRNTFRlbXBsYXRlRWxlbWVudCBpcyBkZXN0cm95ZWQKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9WTUVudHJ5
U2NvcGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX1ZNRW50cnlTY29wZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1ZN
RW50cnlTY29wZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk1FbnRyeVNjb3BlLmg+Cisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg1NzgsNiArMTg1NzgsNyBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxK
U0V4cG9ydE1hY3Jvcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGlu
Z0hlYWRlcnNccnVudGltZVxKU0Z1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXFZNLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXFZNRW50cnlTY29wZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hlYWRlcnNccnVudGltZVxKU0ds
b2JhbE9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cRm9yd2FyZGluZ0hl
YWRlcnNccnVudGltZVxKU1Byb3h5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxG
b3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEpTV2l0aFNjb3BlLmgiIC8+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTEyNjQ2LDYgKzEyNjQ2
LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRpbmdIZWFkZXJzXHJ1bnRp
bWVcVk0uaCI+CiAgICAgICA8RmlsdGVyPkZvcndhcmRpbmdIZWFkZXJzXHJ1bnRpbWU8L0ZpbHRl
cj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEZvcndhcmRp
bmdIZWFkZXJzXHJ1bnRpbWVcVk1FbnRyeVNjb3BlLmgiPgorICAgICAgPEZpbHRlcj5Gb3J3YXJk
aW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lXEpTR2xvYmFsT2JqZWN0
LmgiPgogICAgICAgPEZpbHRlcj5Gb3J3YXJkaW5nSGVhZGVyc1xydW50aW1lPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1
aWxkZXI6OmFkZChjb25zdAogICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIoJnZtLCBrZXkpOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBhcnJheVZp
ZXcgPSBVaW50OEFycmF5OjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0g
ICAgbV9kaWN0aW9uYXJ5LT5wdXREaXJlY3Qodm0sIGlkZW50aWZpZXIsIGFycmF5Vmlldy0+d3Jh
cChtX2V4ZWMsIHZtLmR5bmFtaWNHbG9iYWxPYmplY3QpKTsKKyAgICBtX2RpY3Rpb25hcnktPnB1
dERpcmVjdCh2bSwgaWRlbnRpZmllciwgYXJyYXlWaWV3LT53cmFwKG1fZXhlYywgdm0uZW50cnlT
Y29wZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogdm9pZCBKU0NyeXB0b0FsZ29yaXRobUJ1aWxk
ZXI6OmFkZChjb25zdCBjaGFyKiBrZXksIGNvbnN0IENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9u
QnVpbGRlciYgbmVzdGVkQnVpbGRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAJKHJldmlzaW9uIDE1OTUy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChD
KSAyMDA3LCAyMDEzIEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyPiBKU0N1CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIoZXhlYywgcmVzb2x2
ZXJPYmplY3QsIGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIoZXhlYywgcmVz
b2x2ZXJPYmplY3QsIGFzSlNET01XaW5kb3coZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKSkp
OwogfQogCiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY3VzdG9tUmVzb2x2ZXIsIEpTRE9NV2luZG93KiBn
bG9iYWxPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBTYW11
ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTWljaGFl
bCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4KICAqCkBAIC00OTQsNyArNDk0LDcgQEAgRE9NV2lu
ZG93JiBhY3RpdmVET01XaW5kb3coRXhlY1N0YXRlKiBleAogCiBET01XaW5kb3cmIGZpcnN0RE9N
V2luZG93KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gYXNKU0RPTVdpbmRvdyhleGVj
LT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7CisgICAgcmV0dXJuIGFzSlNET01XaW5k
b3coZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKS0+aW1wbCgpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgY2FuQWNjZXNzRG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEb2N1bWVu
dCogdGFyZ2V0RG9jdW1lbnQsIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uIHJlcG9ydGluZ09wdGlv
biA9IFJlcG9ydFNlY3VyaXR5RXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Vycm9ySGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzksNiAr
NDAsNyBAQAogI2luY2x1ZGUgIkpTRXZlbnQuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVj
U3RhdGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
Vk1FbnRyeVNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
SlNDOwpAQCAtOTQsNyArOTYsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChT
Y3JpcHRFCiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGVycm9yRXZlbnQtPmNvbG5vKCkp
KTsKIAogICAgICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgIER5bmFt
aWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZSh2bSwgdm0uZHluYW1pY0dsb2Jh
bE9iamVjdCA/IHZtLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOworICAgICAg
ICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5U2Nv
cGUtPmdsb2JhbE9iamVjdCgpIDogZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBKU1ZhbHVlIHJl
dHVyblZhbHVlID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpCiAgICAgICAg
ICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGdsb2JhbE9iamVjdCwgYXJncykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMTU5NTI1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAj
aW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL1ZNRW50cnlTY29wZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAKQEAgLTEy
Myw3ICsxMjQsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0CiAg
ICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KGV2ZW50KTsKIAogICAgICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RT
Y29wZSBnbG9iYWxPYmplY3RTY29wZSh2bSwgdm0uZHluYW1pY0dsb2JhbE9iamVjdCA/IHZtLmR5
bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOworICAgICAgICBWTUVudHJ5U2NvcGUg
ZW50cnlTY29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVj
dCgpIDogZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25D
YWxsKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgJ
KHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIGZ1bmN0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJDYWxsRnJh
bWUtPmZ1bmN0aW9uTmFtZSgpOyB9CiAgICAgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZTo6VHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+dHlwZSgpOyB9CiAgICAg
SlNDOjpKU1Njb3BlKiBzY29wZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxG
cmFtZS0+c2NvcGUoKTsgfQotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyQ2FsbEZyYW1lLT5keW5hbWljR2xvYmFs
T2JqZWN0KCk7IH0KKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+dm1FbnRyeUdsb2JhbE9iamVj
dCgpOyB9CiAKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWJ1Z2dlckNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7IH0KICAgICBKU0M6OkpTVmFsdWUgZXZhbHVh
dGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIEpTQzo6SlNWYWx1ZSYgZXhjZXB0aW9uKSBjb25zdCAg
eyByZXR1cm4gbV9kZWJ1Z2dlckNhbGxGcmFtZS0+ZXZhbHVhdGUoc2NyaXB0LCBleGNlcHRpb24p
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTE1LDcg
KzExNiw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGwKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSk7CiAgICAgLy8gSWYg
SmF2YVNjcmlwdCBzdGFjayBpcyBub3QgZW1wdHkgcG9zdHBvbmUgcmVjb21waWxhdGlvbi4KLSAg
ICBpZiAoSlNET01XaW5kb3c6OmNvbW1vblZNKCktPmR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAg
aWYgKEpTRE9NV2luZG93Ojpjb21tb25WTSgpLT5lbnRyeVNjb3BlKQogICAgICAgICByZWNvbXBp
bGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICBlbHNlCiAgICAgICAgIERlYnVnZ2VyOjpyZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0RPTVdpbmRvdzo6Y29tbW9uVk0oKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZp
c2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBTY3JpcHREZWJ1
Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaQogICAgIERlYnVnZ2VyQ2FsbEZyYW1lKiBkZWJ1Z2dl
ckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwogICAgIHN3aXRjaCAoYnJl
YWtwb2ludEFjdGlvbi50eXBlKSB7CiAgICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlw
ZUxvZzogewotICAgICAgICBET01XaW5kb3cmIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZGVidWdn
ZXJDYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKKyAgICAgICAgRE9N
V2luZG93JiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGRlYnVnZ2VyQ2FsbEZyYW1lLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCkpLT5pbXBsKCk7CiAgICAgICAgIGlmIChQYWdlQ29uc29sZSogY29uc29s
ZSA9IHdpbmRvdy5wYWdlQ29uc29sZSgpKQogICAgICAgICAgICAgY29uc29sZS0+YWRkTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgYnJlYWtwb2ludEFjdGlvbi5kYXRh
KTsKICAgICAgICAgYnJlYWs7CkBAIC0yODgsMTAgKzI4OCwxMCBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpoYW5kbGVFeGNlcHRpb25JCiAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVBhdXNlKERlYnVnZ2Vy
OjpSZWFzb25Gb3JQYXVzZSwgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpCit2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZShEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1
c2UsIEpTR2xvYmFsT2JqZWN0KiB2bUVudHJ5R2xvYmFsT2JqZWN0KQogewotICAgIGRpc3BhdGNo
RnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2Us
IGR5bmFtaWNHbG9iYWxPYmplY3QpOwotICAgIGRpZFBhdXNlKGR5bmFtaWNHbG9iYWxPYmplY3Qp
OworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
c3BhdGNoRGlkUGF1c2UsIHZtRW50cnlHbG9iYWxPYmplY3QpOworICAgIGRpZFBhdXNlKHZtRW50
cnlHbG9iYWxPYmplY3QpOwogCiAgICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVu
dExvb3AoKTsKIApAQCAtMzAwLDkgKzMwMCwxMCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpo
YW5kbGVQYXVzZShEZWJ1CiAgICAgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKICAgICBtX3J1
bm5pbmdOZXN0ZWRNZXNzYWdlTG9vcCA9IGZhbHNlOwogCi0gICAgZGlkQ29udGludWUoZHluYW1p
Y0dsb2JhbE9iamVjdCk7Ci0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCZTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwgZHluYW1pY0dsb2JhbE9iamVjdCk7Cisg
ICAgZGlkQ29udGludWUodm1FbnRyeUdsb2JhbE9iamVjdCk7CisgICAgZGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwgdm1F
bnRyeUdsb2JhbE9iamVjdCk7CiB9CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zU29vbigpCiB7CiAgICAgbV9yZWNvbXBpbGVUaW1lci5zdGFydE9uZVNo
b3QoMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCShyZXZpc2lvbiAxNTk1MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21w
aWxlQQogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgLy8gSWYgSmF2YVNj
cmlwdCBzdGFjayBpcyBub3QgZW1wdHkgcG9zdHBvbmUgcmVjb21waWxhdGlvbi4KLSAgICBpZiAo
dm0tPmR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAgaWYgKHZtLT5lbnRyeVNjb3BlKQogICAgICAg
ICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICBlbHNlCiAgICAgICAgIEpTQzo6
RGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKHZtKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCShyZXZpc2lvbiAxNTk1
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI0LDcg
KzEyNCw3IEBAIGlkIGNyZWF0ZUpTV3JhcHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QKIAogc3Rh
dGljIHZvaWQgYWRkRXhjZXB0aW9uVG9Db25zb2xlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBK
U0RPTVdpbmRvdyogd2luZG93ID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2Jq
ZWN0KCkpOworICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPnZt
RW50cnlHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCF3aW5kb3cgfHwgIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm47CiAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVj
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAkocmV2aXNpb24gMTU5
NTI1KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY191dGlsaXR5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDYsIDIwMTMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3Au
Y29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIGNvbnZlcnRWYWx1
ZVRvTlBWYXJpYW50KEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICAgICAgT0JKRUNUX1RPX05QVkFS
SUFOVChvYmosICpyZXN1bHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmR5bmFtaWNHbG9i
YWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBl
eGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgICAgIFJvb3RPYmplY3QqIHJv
b3RPYmplY3QgPSBmaW5kUm9vdE9iamVjdChnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgaWYg
KHJvb3RPYmplY3QpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbQkocmV2aXNpb24gMTU5NTI1KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtOTIsNyArOTIsNyBAQCB2b2lkIE9iamNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRv
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXNfZXhjZXB0aW9uRW52aXJvbm1l
bnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0
KCkpIHsKKyAgICBpZiAoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQgfHwgc19leGNlcHRpb25FbnZp
cm9ubWVudCA9PSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCkpIHsKICAgICAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soZXhlYyk7CiAgICAgICAgIHRocm93RXJyb3IoZXhlYywgc19leGNlcHRpb24p
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0JKHJldmlzaW9uIDE1OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEzLDcgKzExMyw3IEBAIEpT
VmFsdWUgT2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGUKIAogc3RhdGljIGlkIGNvbnZl
cnRWYWx1ZVRvT2JqY09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0g
ICAgUmVmUHRyPFJvb3RPYmplY3Q+IHJvb3RPYmplY3QgPSBmaW5kUm9vdE9iamVjdChleGVjLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAgIFJlZlB0cjxSb290T2JqZWN0PiByb290T2JqZWN0
ID0gZmluZFJvb3RPYmplY3QoZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAo
IXJvb3RPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIFt3ZWJTY3JpcHRP
YmplY3RDbGFzcygpIF9jb252ZXJ0VmFsdWVUb09iamNWYWx1ZTp2YWx1ZSBvcmlnaW5Sb290T2Jq
ZWN0OnJvb3RPYmplY3QuZ2V0KCkgcm9vdE9iamVjdDpyb290T2JqZWN0LmdldCgpXTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHJldmlzaW9uIDE1
OTUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMTMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDcgKzg4LDcgQEAgT2JqY1ZhbHVl
IGNvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlKEV4ZWNTdAogICAgICAgICBjYXNlIE9iamNPYmplY3RU
eXBlOiB7CiAgICAgICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QgKm9yaWdpbkdsb2JhbE9iamVjdCA9IGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0ICpvcmln
aW5HbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAg
ICBSb290T2JqZWN0KiBvcmlnaW5Sb290T2JqZWN0ID0gZmluZFJvb3RPYmplY3Qob3JpZ2luR2xv
YmFsT2JqZWN0KTsKIAogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTk1OTcpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0x
MS0yMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgVk1FbnRyeVNjb3BlIHRvIHVwZGF0ZSB0aGUgVk0gc3RhY2sgbGltaXQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ2MzQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlw
dERlYnVnZ2VyLm1tOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNlZCk6
CisKIDIwMTMtMTEtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRW5hYmxlIEhUTUxUZW1wbGF0ZUVsZW1lbnQgb24gTWFjIHBvcnQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQkocmV2aXNpb24gMTU5
NTI1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpz
b3VyY2VQYXJzZWQoRXhlCiAgICAgTlNVUkwgKm5zVVJMID0gdG9OU1VSTChzb3VyY2VQcm92aWRl
ci0+dXJsKCkpOwogICAgIGludCBmaXJzdExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3Np
dGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOwogCi0gICAgV2ViRnJhbWUgKndlYkZyYW1lID0g
dG9XZWJGcmFtZShleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpOworICAgIFdlYkZyYW1lICp3
ZWJGcmFtZSA9IHRvV2ViRnJhbWUoZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpKTsKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gW3dlYkZyYW1lIHdlYlZpZXddOwogICAgIFdlYlNjcmlwdERlYnVn
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0
U2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKIAo=
</data>
<flag name="review"
          id="240636"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>