<?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>152176</bug_id>
          
          <creation_ts>2015-12-11 10:30:40 -0800</creation_ts>
          <short_desc>[JSC] Add Floating Point Abs() to B3</short_desc>
          <delta_ts>2015-12-12 18:45:30 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148479</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-11 10:30:40 -0800</bug_when>
    <thetext>[JSC] Add Floating Point Abs() to B3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148480</commentid>
    <comment_count>1</comment_count>
      <attachid>267172</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-11 10:36:24 -0800</bug_when>
    <thetext>Created attachment 267172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148493</commentid>
    <comment_count>2</comment_count>
      <attachid>267172</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-11 11:28:13 -0800</bug_when>
    <thetext>Comment on attachment 267172
Patch

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

r=me

&gt; Source/JavaScriptCore/b3/B3LowerMacrosAfterOptimizations.cpp:81
&gt; +                if (m_value-&gt;type() == Double)
&gt; +                    mask = m_insertionSet.insert&lt;ConstDoubleValue&gt;(m_index, m_origin, bitwise_cast&lt;double&gt;(~(1l &lt;&lt; 63)));
&gt; +                if (m_value-&gt;type() == Float)
&gt; +                    mask = m_insertionSet.insert&lt;ConstFloatValue&gt;(m_index, m_origin, bitwise_cast&lt;float&gt;(~(1 &lt;&lt; 31)));

I think this would be clearest as else-if or switch.

&gt; Source/JavaScriptCore/b3/B3LowerMacrosAfterOptimizations.h:35
&gt; +// Lower certain high level Opcodes to lower-level opcode to help code generation.

opcodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148498</commentid>
    <comment_count>3</comment_count>
      <attachid>267177</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-11 11:35:03 -0800</bug_when>
    <thetext>Created attachment 267177
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148512</commentid>
    <comment_count>4</comment_count>
      <attachid>267177</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-11 12:20:00 -0800</bug_when>
    <thetext>Comment on attachment 267177
Patch for landing

Rejecting attachment 267177 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ce/JavaScriptCore/b3/B3PatchpointValue.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/B3PatchpointValue.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/JavaScriptCore.build/Release/JavaScriptCore.build/Objects-normal/x86_64/B3LowerMacrosAfterOptimizations.o b3/B3LowerMacrosAfterOptimizations.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/546312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148533</commentid>
    <comment_count>5</comment_count>
      <attachid>267186</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-11 13:53:41 -0800</bug_when>
    <thetext>Created attachment 267186
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148637</commentid>
    <comment_count>6</comment_count>
      <attachid>267186</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-11 17:55:03 -0800</bug_when>
    <thetext>Comment on attachment 267186
Patch for landing

Rejecting attachment 267186 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 267186, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ource/JavaScriptCore/b3/B3Value.h
patching file Source/JavaScriptCore/b3/air/AirOpcode.opcodes
patching file Source/JavaScriptCore/b3/testb3.cpp
Hunk #1 succeeded at 1942 (offset 1 line).
Hunk #2 succeeded at 3031 (offset 1 line).
Hunk #3 succeeded at 7845 (offset 16 lines).
Hunk #4 succeeded at 8085 (offset 16 lines).
patching file Source/JavaScriptCore/ftl/FTLB3Output.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/547523</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148651</commentid>
    <comment_count>7</comment_count>
      <attachid>267217</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-11 21:14:48 -0800</bug_when>
    <thetext>Created attachment 267217
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148661</commentid>
    <comment_count>8</comment_count>
      <attachid>267217</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-11 22:10:31 -0800</bug_when>
    <thetext>Comment on attachment 267217
Patch for landing

Clearing flags on attachment: 267217

Committed r194003: &lt;http://trac.webkit.org/changeset/194003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148662</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-11 22:10:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148759</commentid>
    <comment_count>10</comment_count>
      <attachid>267217</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-12 18:41:35 -0800</bug_when>
    <thetext>Comment on attachment 267217
Patch for landing

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

&gt; Source/JavaScriptCore/b3/B3Validate.cpp:157
&gt; +            case BitAnd:

This is super cool. :-)  Are you going to add BitXor for floating point neg as well? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148760</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-12 18:45:30 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 267217 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267217&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3Validate.cpp:157
&gt; &gt; +            case BitAnd:
&gt; 
&gt; This is super cool. :-)  Are you going to add BitXor for floating point neg
&gt; as well? :-)

Very likely yep.

I&apos;ll do ceil() next though. We need it asap for ArithRound()</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267172</attachid>
            <date>2015-12-11 10:36:24 -0800</date>
            <delta_ts>2015-12-11 11:35:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152176-20151211103551.patch</filename>
            <type>text/plain</type>
            <size>55307</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
YTE1YmZkNDI1NTJhMjFlM2VkY2NhYTg2MjNmYjk4MTQzNzI4NDA4Li43ZWU1ZTE3NTU4YjBkZDhk
ZjU5NmRkYjI2ZThkOTMwZjFkNDI1ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNS0xMi0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgRmxvYXRpbmcgUG9pbnQgQWJzKCkgdG8gQjMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjE3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhbiBBYnMoKSBvcGVyYXRpb24gZm9yIGZsb2F0aW5nIHBvaW50LgorCisgICAgICAgIE9u
IHg4NiwgQWJzKCkgaXMgaW1wbGVtZW50ZWQgYnkgbWFza2luZyB0aGUgdG9wIGJpdAorICAgICAg
ICBvZiB0aGUgZmxvYXRpbmcgcG9pbnQgdmFsdWUuIE9uIEFSTTY0LCB0aGVyZSBpcyBhIGJ1aWx0
aW4KKyAgICAgICAgYWJzIG9wY29kZS4KKworICAgICAgICBUbyBhY2NvdW50IGZvciB0aG9zZSBk
aWZmZXJlbmNlcywgQjMgdXNlICJBYnMiIGFzCisgICAgICAgIHRoZSBjYW5ub25pY2FsIG9wZXJh
dGlvbi4gV2hlbiB3ZSBhcmUgYWJvdXQgdG8gbG93ZXIKKyAgICAgICAgdG8gQWlyLCBBYnMgaXMg
ZXh0ZW5kZWQgb24geDg2IHRvIGdldCBhIGNsZWFuIGhhbmRsaW5nCisgICAgICAgIG9mIHRoZSBt
YXNrIGNvbnN0YW50cy4KKworICAgICAgICBUaGlzIHBhdGNoIGhhcyBvbmUgY29vbCB0aGluZyBy
ZWxhdGVkIHRvIEZUTC4KKyAgICAgICAgSWYgeW91IGRvOgorICAgICAgICAgICBAMSA9IHVuYm94
RG91YmxlKEAwKQorICAgICAgICAgICBAMiA9IGFicyhAMSkKKyAgICAgICAgICAgQDMgPSBib3hE
b3VibGUoQDIpCisKKyAgICAgICAgQjNSZWR1Y2VTdHJlbmd0aCBjb21wbGV0ZWx5IGVsaW1pbmF0
ZSB0aGUgRG91YmxlLUludGVnZXIKKyAgICAgICAgY29udmVyc2lvbi4KKworICAgICAgICBUaGUg
c3RyZW5ndGggcmVkdWN0aW9uIG9mIEFicyBpcyBhd2FyZSB0aGF0IGl0IGNhbiBkbyBhIGJpdAor
ICAgICAgICBtYXNrIG92ZXIgdGhlIGJpdGNhc3QgdXNlZCBieSB1bmJveGluZy4KKyAgICAgICAg
SWYgZXZlbiB3b3JrcyBpZiB5b3UgdXNlIGZsb2F0cyBieSBmb3JjaW5nIGZyb3VuZDogcmVkdWNl
RG91YmxlVG9GbG9hdCgpCisgICAgICAgIGVsbWluaWF0ZXMgdGhlIHVzZWxlc3MgY29udmVyc2lv
bnMsIGZvbGxvd2VkIGJ5IFJlZHVjZVN0cmVuZ3RoCisgICAgICAgIHRoYXQgcmVtb3ZlcyB0aGUg
c3dpdGNoIGZyb20gR1AgdG8gRlAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmFuZEZsb2F0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcHNfcnIpOgorICAgICAgICAq
IGIzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJs
ZVZhbHVlOjpiaXRBbmRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJsZVZh
bHVlOjphYnNDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmg6Cisg
ICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29u
c3RGbG9hdFZhbHVlOjpiaXRBbmRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmFic0NvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5o
OgorICAgICAgICAqIGIzL0IzR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJh
dGVUb0Fpcik6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMpOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaDogQWRk
ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAg
ICAgKiBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNl
U3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIz
L0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFic0NvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVl
OjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgorICAgICAgICAqIGIz
L0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAg
ICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmJpdEFuZERvdWJsZSk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJnRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRBcmdzRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdJbW1E
b3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEltbXNEb3VibGUpOgorICAgICAg
ICAoSlNDOjpCMzo6Yml0QW5kRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFy
Z0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdzRmxvYXQpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFyZ0ltbUZsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRJbW1zRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFyZ3NGbG9h
dFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJz
QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBYnNJbW0pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEFic01lbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJzQWJzQXJnKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJz
QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RB
YnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlQWJzKToKKwogMjAxNS0xMi0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5m
YWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIEJpbmRpbmcgYW5kIGJ1aWx0aW4gZ2VuZXJh
dG9ycyBzaG91bGQgbG93ZXJjYXNlIFJUQ1hYIGFzIHJ0Y1hYIGFuZCBub3QgclRDWFgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3MGRiYjJlZmY3OTg5YzM5MDk2YTIxMzMy
YWU1Mzc2MmNjMjZjNjg1Li5mZmI1ZDg1ZTgyOTljZjcxYjQ0NmFlZGFhNzI5YmUzZDhjYTM4ODdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTQsNiArMTE0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9CM0hlYXBSYW5nZS5jcHAKICAgICBi
My9CM0luc2VydGlvblNldC5jcHAKICAgICBiMy9CM0xvd2VyTWFjcm9zLmNwcAorICAgIGIzL0Iz
TG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCiAgICAgYjMvQjNMb3dlclRvQWlyLmNw
cAogICAgIGIzL0IzTWVtb3J5VmFsdWUuY3BwCiAgICAgYjMvQjNNb3ZlQ29uc3RhbnRzLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YmVlMTZmYjE0YzllZTEzYTZmYjM0Y2Ey
Nzg3MTViNDQ1NjExMTc3Li40OThjMTc3YTQ5ZjFmN2JjM2FmM2Y0ODY5MmE4M2MwZTViYmZjYjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEzNSw2ICsxMTM1LDggQEAKIAkJ
NDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzQyMkE2MTFDMTU4NzFCMDBF
MkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCAqLzsgfTsKIAkJNDM0MjJBNjYxQzE2MjY3NTAw
RTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzQyMkE2NDFDMTYyMjFFMDBFMkVCOTggLyogQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCAqLzsgfTsKIAkJNDM0MjJBNjcxQzE2MjY3ODAwRTJFQjk4
IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91
YmxlVG9GbG9hdC5oICovOyB9OworCQk0MzdDRDgwNjFDMUIzNUQ5MDBCNDI1NjUgLyogQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM3Q0Q4MDUxQzFCMzVCQzAwQjQyNTY1IC8qIEIzTG93ZXJNYWNy
b3NBZnRlck9wdGltaXphdGlvbnMuaCAqLzsgfTsKKwkJNDM3Q0Q4MDcxQzFCMzVEQzAwQjQyNTY1
IC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM3Q0Q4MDQxQzFCMzVCQzAwQjQyNTY1IC8q
IEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwICovOyB9OwogCQk0NDQzQUUzMzE2
RTE4OEQ5MDA3NkYxMTAgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIg
LyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTQ1MTUzOUI5MTJEQzk5NDUwMEVGN0FD
NCAvKiBZYXJyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyNjc4RjhFMUEwMzEwMDkwMDZBMzA2RCAv
KiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTI2NzhGOEMxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2Nh
dGlvbi5jcHAgKi87IH07CkBAIC0yMDE2LDE3ICsyMDE4LDE3IEBACiAJCUZFMzkxMzU0MUI3OTRG
NkUwMEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM5MTM1MjFCNzk0QUM5MDBFREFGNzEgLyogTGl2ZU9i
amVjdExpc3QuY3BwICovOyB9OwogCQlGRTM5MTM1NTFCNzk0RjhBMDBFREFGNzEgLyogTGl2ZU9i
amVjdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMzkxMzUxMUI3OTRBQzkwMEVEQUY3MSAvKiBMaXZlT2JqZWN0RGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzkxMzU2MUI3OTRGOEYw
MEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzOTEzNTMxQjc5NEFDOTAwRURBRjcxIC8qIExpdmVPYmplY3RM
aXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
RkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZBNDFDMTBCNzA4MDAz
OTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9
ICgpOyB9OyB9OwotCQlGRTNBMDZBODFDMTBCQzgxMDAzOTBGREQgLyogSklUQml0QmluYXJ5T3BH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFM0EwNkE3MUMxMEJDNzQwMDM5MEZERCAvKiBKSVRCaXRCaW5hcnlPcEdlbmVyYXRvci5oICov
OyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUZFM0EwNkFDMUMxMEMzOUUw
MDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZBMzFDMTBCNzA4MDAzOTBGREQgLyogSklUQml0
T3JHZW5lcmF0b3IuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0J
CUZFM0EwNkIxMUMxMENCODQwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QUQxQzEwQ0I2
RjAwMzkwRkREIC8qIEpJVEJpdEFuZEdlbmVyYXRvci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VU
X1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUzQTA2QjIxQzEwQ0I4OTAwMzkwRkREIC8qIEpJVEJpdEFu
ZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUzQTA2QUUxQzEwQ0I2RjAwMzkwRkREIC8qIEpJVEJpdEFuZEdlbmVyYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUZFM0EwNkIzMUMxMENCOEUwMDM5
MEZERCAvKiBKSVRCaXRYb3JHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QUYxQzEwQ0I2RjAwMzkwRkREIC8qIEpJVEJpdFhv
ckdlbmVyYXRvci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJ
RkUzQTA2QjQxQzEwQ0I5MzAwMzkwRkREIC8qIEpJVEJpdFhvckdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QjAxQzEwQ0I2RjAw
MzkwRkREIC8qIEpJVEJpdFhvckdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdT
ID0gKCk7IH07IH07Ci0JCUZFM0EwNkJEMUMxMTA0MEQwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRH
ZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUzQTA2QjYxQzExMDNEOTAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdlbmVyYXRvci5jcHAg
Ki87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUzQTA2QkUxQzExMDQx
MjAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QjcxQzExMDNEOTAwMzkwRkREIC8qIEpJ
VExlZnRTaGlmdEdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07
IH07Ci0JCUZFM0EwNkJGMUMxMTA0MTYwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0Ew
NkI4MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcCAqLzsgc2V0
dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTNBMDZDMDFDMTEwNDFBMDAzOTBG
REQgLyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QjkxQzExMDNEOTAwMzkwRkREIC8qIEpJVFJpZ2h0
U2hpZnRHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9Owor
CQlGRTNBMDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkE0MUMxMEI3MDgw
MDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oICovOyB9OworCQlGRTNBMDZBODFDMTBCQzgx
MDAzOTBGREQgLyogSklUQml0QmluYXJ5T3BHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkE3MUMxMEJDNzQwMDM5MEZERCAvKiBK
SVRCaXRCaW5hcnlPcEdlbmVyYXRvci5oICovOyB9OworCQlGRTNBMDZBQzFDMTBDMzlFMDAzOTBG
REQgLyogSklUQml0T3JHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QTMxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2Vu
ZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkUzQTA2QjExQzEwQ0I4NDAwMzkwRkREIC8qIEpJVEJpdEFu
ZEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTNBMDZBRDFDMTBDQjZGMDAzOTBGREQgLyogSklUQml0QW5kR2VuZXJhdG9yLmNwcCAq
LzsgfTsKKwkJRkUzQTA2QjIxQzEwQ0I4OTAwMzkwRkREIC8qIEpJVEJpdEFuZEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QUUx
QzEwQ0I2RjAwMzkwRkREIC8qIEpJVEJpdEFuZEdlbmVyYXRvci5oICovOyB9OworCQlGRTNBMDZC
MzFDMTBDQjhFMDAzOTBGREQgLyogSklUQml0WG9yR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkFGMUMxMENCNkYwMDM5MEZE
RCAvKiBKSVRCaXRYb3JHZW5lcmF0b3IuY3BwICovOyB9OworCQlGRTNBMDZCNDFDMTBDQjkzMDAz
OTBGREQgLyogSklUQml0WG9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZCMDFDMTBDQjZGMDAzOTBGREQgLyogSklUQml0WG9y
R2VuZXJhdG9yLmggKi87IH07CisJCUZFM0EwNkJEMUMxMTA0MEQwMDM5MEZERCAvKiBKSVRMZWZ0
U2hpZnRHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUzQTA2QjYxQzExMDNEOTAwMzkwRkREIC8qIEpJVExlZnRTaGlmdEdlbmVyYXRv
ci5jcHAgKi87IH07CisJCUZFM0EwNkJFMUMxMTA0MTIwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFM0EwNkI3MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuaCAqLzsg
fTsKKwkJRkUzQTA2QkYxQzExMDQxNjAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2
QjgxQzExMDNEOTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwICovOyB9Owor
CQlGRTNBMDZDMDFDMTEwNDFBMDAzOTBGREQgLyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QjkxQzEx
MDNEOTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCAqLzsgfTsKIAkJRkU0MjM4
OTAxQkUxOEMzQzAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQyMzg4RjFCRTE4QzEyMDA1MTQ3Mzcg
LyogSklUU3ViR2VuZXJhdG9yLmNwcCAqLzsgfTsKIAkJRkU0QkZGMkIxQUQ0NzZFNzAwMDg4Rjg3
IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNEJGRjI5MUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92ZXJy
aWRlcy5jcHAgKi87IH07CiAJCUZFNEJGRjJDMUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92
ZXJyaWRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU0QkZGMkExQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1bmN0aW9uT3ZlcnJpZGVzLmggKi87IH07CkBA
IC0zMjEyLDYgKzMyMTQsOCBAQAogCQk0MzQyMkE2MTFDMTU4NzFCMDBFMkVCOTggLyogQjNDb25z
dEZsb2F0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNDb25zdEZs
b2F0VmFsdWUuaDsgcGF0aCA9IGIzL0IzQ29uc3RGbG9hdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQzNDIyQTY0MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJs
ZVRvRmxvYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1
Y2VEb3VibGVUb0Zsb2F0LmNwcDsgcGF0aCA9IGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAv
KiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmg7IHBhdGggPSBiMy9CM1JlZHVjZURvdWJsZVRvRmxv
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM3Q0Q4MDQxQzFCMzVCQzAwQjQy
NTY1IC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHA7IHBhdGggPSBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM3Q0Q4MDUxQzFCMzVCQzAwQjQyNTY1IC8qIEIzTG93
ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oOyBwYXRoID0gYjMvQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MTUzOUI4MTJEQzk5NDUwMEVGN0FDNCAvKiBZ
YXJyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnIuaDsgcGF0aCA9IHlh
cnIvWWFyci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NUUxMkQ4ODA2QTQ5QjBG
MDBFOURGODQgLyoganNjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGpzYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gNDsgfTsKQEAgLTQ2MzcsNiArNDY0MSw4IEBACiAJCQkJMEZFQzg1QjYxQkUxNDYyRjAw
ODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oICovLAogCQkJCTBGMzM4RTE5MUJGMjg2
RUEwMDEzQzg4RiAvKiBCM0xvd2VyTWFjcm9zLmNwcCAqLywKIAkJCQkwRjMzOEUxQTFCRjI4NkVB
MDAxM0M4OEYgLyogQjNMb3dlck1hY3Jvcy5oICovLAorCQkJCTQzN0NEODA0MUMxQjM1QkMwMEI0
MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCAqLywKKwkJCQk0MzdD
RDgwNTFDMUIzNUJDMDBCNDI1NjUgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5o
ICovLAogCQkJCTBGRUM4NEQzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuY3BwICov
LAogCQkJCTBGRUM4NEQ0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuaCAqLywKIAkJ
CQkwRkVDODRENTFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5jcHAgKi8sCkBAIC03
NzI3LDYgKzc3MzMsNyBAQAogCQkJCTBGMTM5MTJDMTY3NzFDM0QwMDlDQ0IwNyAvKiBQcm9maWxl
clByb2ZpbGVkQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTNBMDZCMjFDMTBDQjg5
MDAzOTBGREQgLyogSklUQml0QW5kR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQz
RTQwRTFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTQzN0NEODA2MUMxQjM1RDkwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYg
LyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk1NDM3RDBFQkE3
MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5hbWUuaCBpbiBIZWFkZXJzICov
LApAQCAtODQ4NSw2ICs4NDkyLDcgQEAKIAkJCQkwRkVDODVCOTFCRTE0NjJGMDA4MEZGNzQgLyog
QjNJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MUQxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUxRjFC
REFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
MzdDRDgwNzFDMUIzNURDMDBCNDI1NjUgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyMTFCREFDREFDMDA4MEZGNzQgLyogQjNP
cGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjMxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI1MUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1BhdGNocG9pbnRTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oCmluZGV4IDZjMmY2NmI1OWJmNjcyOWQ1MGEwMGZiNjJmNjc3MTE2NGQ1ZjI2MjkuLmE4NTA0
NWVmYWQ1ZjdlMmRmOGU2NjdhMzJhNDRiNDJiODAxNjE4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
QEAgLTEwMTMsNiArMTAxMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bHNz
X21yKHNyYy5vZmZzZXQsIHNyYy5iYXNlLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZERv
dWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAg
Ly8gQU5EUFMgaXMgZGVmaW5lZCBvbiAxMjhiaXRzIGFuZCBpcyBzaG9ydGVyIHRoYW4gQU5EUEQu
CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZHBzX3JyKHNyYywgZHN0KTsKKyAgICB9CisKKyAgICB2
b2lkIGFuZEZsb2F0KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRwc19ycihzcmMsIGRzdCk7CisgICAgfQorCiAgICAgdm9p
ZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IDMyZTNjMGQxNmIxMGZm
MTc0YmU0ZTYxMjM1MjQzYTY3YjY1ZjY4OTcuLjg4YjNjZGY1NWIyZTFmMWYwMjg2MTYyZDlkNjgz
NTY5MjA0NGQ2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaApAQCAtMjczLDYgKzI3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9QMl9ESVZT
RF9Wc2RXc2QgICAgPSAweDVFLAogICAgICAgICBPUDJfTU9WTVNLUERfVmRFZCAgID0gMHg1MCwK
ICAgICAgICAgT1AyX1NRUlRTRF9Wc2RXc2QgICA9IDB4NTEsCisgICAgICAgIE9QMl9BTkRQU19W
cGRXcGQgICAgPSAweDU0LAogICAgICAgICBPUDJfQU5ETlBEX1ZwZFdwZCAgID0gMHg1NSwKICAg
ICAgICAgT1AyX1hPUlBEX1ZwZFdwZCAgICA9IDB4NTcsCiAgICAgICAgIE9QMl9NT1ZEX1ZkRWQg
ICAgICAgPSAweDZFLApAQCAtMjI4Myw2ICsyMjg0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9m
b3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9ESVZTRF9Wc2RXc2QsIChSZWdpc3RlcklEKWRzdCwgYmFz
ZSwgb2Zmc2V0KTsKICAgICB9CiAKKyAgICB2b2lkIGFuZHBzX3JyKFhNTVJlZ2lzdGVySUQgc3Jj
LCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfQU5EUFNfVnBkV3BkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7Cisg
ICAgfQorCiAgICAgdm9pZCB4b3Jwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJ
RCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hPUlBEX1Zw
ZFdwZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAppbmRleCA3OTA4OGY3OWNmOWIy
NWEzNWIxZmJjN2ZjZmU1ZjViODMzMTA0MDgyLi5hMDQxYzBmZGEzNDZkNTU5OWQ3ZDgwNWM3Yzdk
ZDU1MWFmZTYyOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dERvdWJsZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERv
dWJsZVZhbHVlLmNwcApAQCAtNjksNiArNjksMTQgQEAgVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6
Om11bENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAog
ICAgIHJldHVybiBwcm9jLmFkZDxDb25zdERvdWJsZVZhbHVlPihvcmlnaW4oKSwgbV92YWx1ZSAq
IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAorVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6OmJpdEFu
ZENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAorewor
ICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBkb3VibGUgcmVzdWx0ID0gYml0d2lzZV9jYXN0PGRvdWJsZT4oYml0d2lzZV9jYXN0PHVpbnQ2
NF90PihtX3ZhbHVlKSAmIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4ob3RoZXItPmFzRG91YmxlKCkp
KTsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIHJlc3Vs
dCk7Cit9CisKIFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpiaXR3aXNlQ2FzdENvbnN0YW50KFBy
b2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVl
PihvcmlnaW4oKSwgYml0d2lzZV9jYXN0PGludDY0X3Q+KG1fdmFsdWUpKTsKQEAgLTc5LDYgKzg3
LDExIEBAIFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpkb3VibGVUb0Zsb2F0Q29uc3RhbnQoUHJv
Y2VkdXJlJiBwcm9jKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdEZsb2F0VmFsdWU+
KG9yaWdpbigpLCBzdGF0aWNfY2FzdDxmbG9hdD4obV92YWx1ZSkpOwogfQogCitWYWx1ZSogQ29u
c3REb3VibGVWYWx1ZTo6YWJzQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAoreworICAg
IHJldHVybiBwcm9jLmFkZDxDb25zdERvdWJsZVZhbHVlPihvcmlnaW4oKSwgZmFicyhtX3ZhbHVl
KSk7Cit9CisKIFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpzcXJ0Q29uc3RhbnQoUHJvY2VkdXJl
JiBwcm9jKSBjb25zdAogewogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdERvdWJsZVZhbHVlPihv
cmlnaW4oKSwgc3FydChtX3ZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
b25zdERvdWJsZVZhbHVlLmgKaW5kZXggZTNiNzljMmE0MDIxZDRkZjEwNWExMmYzMjlmMmQ2ZTA3
ZDJlZWM4OS4uZGE5YTM5NWViODhjMWY3MWVhZmRhOTE1MjAxZTI1M2M5Mjk1NmQzYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaApAQCAtNDcsOCAr
NDcsMTAgQEAgcHVibGljOgogICAgIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUmLCBjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBtb2RDb25zdGFudChQ
cm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVl
KiBtdWxDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJy
aWRlOworICAgIFZhbHVlKiBiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBiaXR3aXNlQ2FzdENvbnN0YW50KFBy
b2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBkb3VibGVUb0Zsb2F0Q29uc3Rh
bnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGFic0NvbnN0YW50KFBy
b2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBzcXJ0Q29uc3RhbnQoUHJvY2Vk
dXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBUcmlTdGF0ZSBlcXVhbENvbnN0YW50KGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcAppbmRleCA0NDcxMmMzNmJmNjJjZThmOTY0ZTVlNTVi
MDJhNDhmOTZhOWJlOWMzLi40NTg3YTg3NDhlY2M2ZjRkZDFmMzExZTQ5NmNjMzMwMzQ4MzEzYWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAK
QEAgLTY5LDYgKzY5LDE0IEBAIFZhbHVlKiBDb25zdEZsb2F0VmFsdWU6Om11bENvbnN0YW50KFBy
b2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogICAgIHJldHVybiBwcm9j
LmFkZDxDb25zdEZsb2F0VmFsdWU+KG9yaWdpbigpLCBtX3ZhbHVlICogb3RoZXItPmFzRmxvYXQo
KSk7CiB9CiAKK1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6OmJpdEFuZENvbnN0YW50KFByb2NlZHVy
ZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXItPmhh
c0Zsb2F0KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGZsb2F0IHJlc3VsdCA9IGJp
dHdpc2VfY2FzdDxmbG9hdD4oYml0d2lzZV9jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSAmIGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4ob3RoZXItPmFzRmxvYXQoKSkpOworICAgIHJldHVybiBwcm9jLmFk
ZDxDb25zdEZsb2F0VmFsdWU+KG9yaWdpbigpLCByZXN1bHQpOworfQorCiBWYWx1ZSogQ29uc3RG
bG9hdFZhbHVlOjpiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsK
ICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KG1fdmFsdWUpKTsKQEAgLTc5LDYgKzg3LDExIEBAIFZhbHVlKiBDb25zdEZsb2F0
VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CiAgICAg
cmV0dXJuIHByb2MuYWRkPENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbigpLCBzdGF0aWNfY2FzdDxk
b3VibGU+KG1fdmFsdWUpKTsKIH0KIAorVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6YWJzQ29uc3Rh
bnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAoreworICAgIHJldHVybiBwcm9jLmFkZDxDb25zdEZs
b2F0VmFsdWU+KG9yaWdpbigpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhtX3ZhbHVlKSkpOwor
fQorCiBWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjpzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9j
KSBjb25zdAogewogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdEZsb2F0VmFsdWU+KG9yaWdpbigp
LCBzdGF0aWNfY2FzdDxmbG9hdD4oc3FydChtX3ZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuaAppbmRleCAxZmZmMTRhMDVlYTkwYjJiYjQ3YWFh
YzI2MDE2OWE4OWVkZjhjZjQyLi5kYzM4YmUzZjU0NTQ0N2M4NWE3Y2E0OGRjZTFjYTdiMDE0MWFm
MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFs
dWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuaApA
QCAtNDYsOCArNDYsMTAgQEAgcHVibGljOgogICAgIFZhbHVlKiBzdWJDb25zdGFudChQcm9jZWR1
cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBkaXZD
b25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZhbHVlKiBtdWxDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNv
bnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBiaXR3aXNlQ2FzdENv
bnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBmbG9hdFRvRG91
YmxlQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGFic0Nv
bnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBzcXJ0Q29uc3Rh
bnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBUcmlTdGF0ZSBlcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNHZW5lcmF0ZS5jcHAKaW5kZXggMzMwMjgyZTZmMWUxMTU5OGVhODFmYzBiMTE2N2Zi
ZjliMTNkZWRjZi4uMDg2ZDU2NTU0OTBiOGMyZDZlZmI1YWE4ZjE2YjA1MzM5NDliMDJiZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDb21tb24uaCIKICNpbmNs
dWRlICJCM0xvd2VyTWFjcm9zLmgiCisjaW5jbHVkZSAiQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1p
emF0aW9ucy5oIgogI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgogI2luY2x1ZGUgIkIzTW92ZUNv
bnN0YW50cy5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCkBAIC04Miw2ICs4Myw4IEBAIHZv
aWQgZ2VuZXJhdGVUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwp
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA1
MDcKICAgICB9CiAKKyAgICBsb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyhwcm9jZWR1cmUp
OworCiAgICAgbW92ZUNvbnN0YW50cyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKHNob3VsZFZhbGlk
YXRlSVIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFj
cm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzc3YzEyMGM1M2Fj
ZGVhNjBhZDk5ZGM2OGZlNmE5MjdmZTVlNDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRl
ICJCM0NvbnN0RG91YmxlVmFsdWUuaCIKKyNpbmNsdWRlICJCM0NvbnN0RmxvYXRWYWx1ZS5oIgor
I2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgorI2luY2x1ZGUgIkIzUGhhc2VTY29w
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKworbmFtZXNwYWNlIHsKKwor
Y2xhc3MgTG93ZXJNYWNyb3MgeworcHVibGljOgorICAgIExvd2VyTWFjcm9zKFByb2NlZHVyZSYg
cHJvYykKKyAgICAgICAgOiBtX3Byb2MocHJvYykKKyAgICAgICAgLCBtX2Jsb2NrSW5zZXJ0aW9u
U2V0KHByb2MpCisgICAgICAgICwgbV9pbnNlcnRpb25TZXQocHJvYykKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBydW4oKQorICAgIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6
IG1fcHJvYykgeworICAgICAgICAgICAgbV9ibG9jayA9IGJsb2NrOworICAgICAgICAgICAgcHJv
Y2Vzc0N1cnJlbnRCbG9jaygpOworICAgICAgICB9CisgICAgICAgIG1fY2hhbmdlZCB8PSBtX2Js
b2NrSW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKyAgICAgICAgaWYgKG1fY2hhbmdlZCkgeworICAg
ICAgICAgICAgbV9wcm9jLnJlc2V0UmVhY2hhYmlsaXR5KCk7CisgICAgICAgICAgICBtX3Byb2Mu
aW52YWxpZGF0ZUNGRygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2NoYW5nZWQ7Cisg
ICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB2b2lkIHByb2Nlc3NDdXJyZW50QmxvY2soKQorICAg
IHsKKyAgICAgICAgZm9yIChtX2luZGV4ID0gMDsgbV9pbmRleCA8IG1fYmxvY2stPnNpemUoKTsg
KyttX2luZGV4KSB7CisgICAgICAgICAgICBtX3ZhbHVlID0gbV9ibG9jay0+YXQobV9pbmRleCk7
CisgICAgICAgICAgICBtX29yaWdpbiA9IG1fdmFsdWUtPm9yaWdpbigpOworICAgICAgICAgICAg
c3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgeworICAgICAgICAgICAgY2FzZSBBYnM6IHsKKyAg
ICAgICAgICAgICAgICAvLyBBUk0gc3VwcG9ydHMgdGhpcyBpbnN0cnVjdGlvbiBuYXRpdmVseS4K
KyAgICAgICAgICAgICAgICBpZiAoaXNBUk02NCgpKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrOworICAgICAgICAgICAgICAgIGlmICht
X3ZhbHVlLT50eXBlKCkgPT0gRG91YmxlKQorICAgICAgICAgICAgICAgICAgICBtYXNrID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0RG91YmxlVmFsdWU+KG1faW5kZXgsIG1fb3JpZ2luLCBi
aXR3aXNlX2Nhc3Q8ZG91YmxlPih+KDFsIDw8IDYzKSkpOworICAgICAgICAgICAgICAgIGlmICht
X3ZhbHVlLT50eXBlKCkgPT0gRmxvYXQpCisgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBtX2lu
c2VydGlvblNldC5pbnNlcnQ8Q29uc3RGbG9hdFZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgYml0
d2lzZV9jYXN0PGZsb2F0Pih+KDEgPDwgMzEpKSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIHJl
c3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgQml0QW5kLCBtX29y
aWdpbiwgbV92YWx1ZS0+Y2hpbGQoMCksIG1hc2spOworICAgICAgICAgICAgICAgIG1fdmFsdWUt
PnJlcGxhY2VXaXRoSWRlbnRpdHkocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0
ZShtX2Jsb2NrKTsKKyAgICB9CisgICAgCisgICAgUHJvY2VkdXJlJiBtX3Byb2M7CisgICAgQmxv
Y2tJbnNlcnRpb25TZXQgbV9ibG9ja0luc2VydGlvblNldDsKKyAgICBJbnNlcnRpb25TZXQgbV9p
bnNlcnRpb25TZXQ7CisgICAgQmFzaWNCbG9jayogbV9ibG9jazsKKyAgICB1bnNpZ25lZCBtX2lu
ZGV4OworICAgIFZhbHVlKiBtX3ZhbHVlOworICAgIE9yaWdpbiBtX29yaWdpbjsKKyAgICBib29s
IG1fY2hhbmdlZCB7IGZhbHNlIH07Cit9OworCitib29sIGxvd2VyTWFjcm9zSW1wbChQcm9jZWR1
cmUmIHByb2MpCit7CisgICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7CisgICAgcmV0
dXJuIGxvd2VyTWFjcm9zLnJ1bigpOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwor
Ym9vbCBsb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyhQcm9jZWR1cmUmIHByb2MpCit7Cisg
ICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHByb2MsICJsb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0
aW9ucyIpOworICAgIGJvb2wgcmVzdWx0ID0gbG93ZXJNYWNyb3NJbXBsKHByb2MpOworICAgIGlm
IChzaG91bGRWYWxpZGF0ZUlSKCkpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dlck1hY3Jv
c0ltcGwocHJvYykpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMworCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDk0ODE0MmQxYzkwZGQ3MTUwYjY0OTVlZDI4MmMzMTMyZGUwZDdmMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0
ZXJPcHRpbWl6YXRpb25zLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEIzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnNfaAorI2RlZmluZSBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zX2gKKwor
I2lmIEVOQUJMRShCM19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitj
bGFzcyBQcm9jZWR1cmU7CisKKy8vIExvd2VyIGNlcnRhaW4gaGlnaCBsZXZlbCBPcGNvZGVzIHRv
IGxvd2VyLWxldmVsIG9wY29kZSB0byBoZWxwIGNvZGUgZ2VuZXJhdGlvbi4KKworYm9vbCBsb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyhQcm9jZWR1cmUmKTsKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5kaWYgLy8gQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9uc19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAKaW5kZXggZjE2NmY0ZTViZjk5NzIyZTQxZTdlZTMxNGIzYzVhOGY2NzI1
NDk2NS4uYmJlMDkyZThhOWY4ZDBlZTc5NmEyYjEwMWQ0ZDgzNzUxMTMwOTMwNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTE0NTksNyArMTQ1OSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEJpdEFuZDogewotICAgICAgICAg
ICAgYXBwZW5kQmluT3A8QW5kMzIsIEFuZDY0LCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBh
cHBlbmRCaW5PcDxBbmQzMiwgQW5kNjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZl
PigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
T3Bjb2RlLmNwcAppbmRleCBiYzYwOTM1NzNiMzA3NzhjZWNjMDVkMGYyOGY3MWJhOTJiOTIzYmEw
Li4zNmUyMGVjMGRiNTBlYmM1NjM2OWY1OWMzNDJlMzQzYmU1YjY1ZjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTE0Niw2ICsxNDYsOSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENsejoKICAg
ICAgICAgb3V0LnByaW50KCJDbHoiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzOgor
ICAgICAgICBvdXQucHJpbnQoIkFicyIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcXJ0
OgogICAgICAgICBvdXQucHJpbnQoIlNxcnQiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuaAppbmRleCAxNGFlYzRhMmE0ODdlZDA0YWIzNzAwMWY1OTc1NDIy
MDNjMTE3MTQzLi4xYzBiODZhMzZlYjgxZWUzNjFjYzVmODhhMmFjZTNkZTY3ZDdhMzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaApAQCAtODQsNyArODQsOCBAQCBlbnVtIE9wY29k
ZSA6IGludDE2X3QgewogICAgIFpTaHIsIC8vIExvZ2ljYWwgU2hpZnQuCiAgICAgQ2x6LCAvLyBD
b3VudCBsZWFkaW5nIHplcm9zLgogCi0gICAgLy8gRG91YmxlIG1hdGguCisgICAgLy8gRmxvYXRp
bmcgcG9pbnQgbWF0aC4KKyAgICBBYnMsCiAgICAgU3FydCwKIAogICAgIC8vIENhc3RzIGFuZCBz
dWNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91Ymxl
VG9GbG9hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zs
b2F0LmNwcAppbmRleCA4YTEzZTc2YTEwMjkxMjY4N2UyODViZWY0MzIyNzBlMzNiMWY5NjFlLi44
Njg4NGZhYjk0NGEzN2RlNGFkMTdlNmM5NmY1Yzc1MGQ0NGM4MDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcApAQCAtNDgsNiAr
NDgsNyBAQCB2b2lkIGF0dGVtcHRTaW1wbGlmaWNhdGlvbihWYWx1ZSogY2FuZGlkYXRlKQogICAg
ICAgICAgICAgY2FuZGlkYXRlLT5zZXRUeXBlKEZsb2F0KTsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFiczoKICAgICBjYXNlIFNxcnQ6CiAgICAgICAgIGlmIChjYW5kaWRh
dGUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBGbG9hdFRvRG91YmxlKSB7CiAgICAgICAgICAgICBj
YW5kaWRhdGUtPmNoaWxkKDApID0gY2FuZGlkYXRlLT5jaGlsZCgwKS0+Y2hpbGQoMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggZDdhYTA5
YjcyODA5YTcxMTZlNDI1ZTU0MDg1YTc3NjA3Mjg4ZmQzMy4uMWI2YTcwMjZjMzk5NDA1NWVmM2Yy
ZTVhNjIyNDlhMzU4Y2U0ZDJmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUmVkdWNlU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcApAQCAtNDk0LDYgKzQ5NCwzOSBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEFiczoKKyAgICAgICAgICAgIC8vIFR1cm4gdGhp
czogQWJzKGNvbnN0YW50KQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiBmYWJzPHZhbHVlLT50
eXBlKCk+KGNvbnN0YW50KQorICAgICAgICAgICAgaWYgKFZhbHVlKiBjb25zdGFudCA9IG1fdmFs
dWUtPmNoaWxkKDApLT5hYnNDb25zdGFudChtX3Byb2MpKSB7CisgICAgICAgICAgICAgICAgcmVw
bGFjZVdpdGhOZXdWYWx1ZShjb25zdGFudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQWJzKEFicyh2YWx1ZSkpCisg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEFicyh2YWx1ZSkKKyAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQWJzKSB7CisgICAgICAgICAgICAgICAgbV92YWx1
ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQWJz
KEJpdHdpc2VDYXN0KHZhbHVlKSkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogQml0d2lzZUNh
c3QoQW5kKHZhbHVlLCBtYXNrLXRvcC1iaXQpKQorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDApLT5vcGNvZGUoKSA9PSBCaXR3aXNlQ2FzdCkgeworICAgICAgICAgICAgICAgIFZhbHVl
KiBtYXNrOworICAgICAgICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRG91YmxlKQor
ICAgICAgICAgICAgICAgICAgICBtYXNrID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0NjRW
YWx1ZT4obV9pbmRleCwgbV92YWx1ZS0+b3JpZ2luKCksIH4oMWwgPDwgNjMpKTsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBtX2luc2VydGlvblNldC5p
bnNlcnQ8Q29uc3QzMlZhbHVlPihtX2luZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgfigxbCA8PCAz
MSkpOworCisgICAgICAgICAgICAgICAgVmFsdWUqIGJpdEFuZCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydDxWYWx1ZT4obV9pbmRleCwgQml0QW5kLCBtX3ZhbHVlLT5vcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLAorICAgICAgICAgICAgICAg
ICAgICBtYXNrKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogY2FzdCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgQml0d2lzZUNhc3QsIG1fdmFsdWUtPm9yaWdpbigpLCBi
aXRBbmQpOworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkoY2Fz
dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICBjYXNlIFNxcnQ6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNx
cnQoY29uc3RhbnQpCiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IHNxcnQ8dmFsdWUtPnR5cGUo
KT4oY29uc3RhbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxp
ZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXgg
Zjk5NjVlNmI3ODg3NWU0YzY5OWRlZjdmZjhjNTM4NGQxNTZlOWM5OS4uMjNkZDMzMzFmMTY3OTBl
NGNiZGQxYTBhZTQzZjY2OWNhY2NhNWJlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bGlkYXRlLmNwcApAQCAtMTU0LDYgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhc2Ug
TXVsOgogICAgICAgICAgICAgY2FzZSBEaXY6CiAgICAgICAgICAgICBjYXNlIE1vZDoKKyAgICAg
ICAgICAgIGNhc2UgQml0QW5kOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1D
aGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFs
dWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5j
aGlsZCgxKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtMTYxLDcgKzE2Miw2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ2hpbGxEaXY6
CiAgICAgICAgICAgICBjYXNlIENoaWxsTW9kOgotICAgICAgICAgICAgY2FzZSBCaXRBbmQ6CiAg
ICAgICAgICAgICBjYXNlIEJpdE9yOgogICAgICAgICAgICAgY2FzZSBCaXRYb3I6CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFs
dWUpKTsKQEAgLTIwOSw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gSW50NjQsICgiQXQgIiwgKnZhbHVlKSk7CiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWJzOgog
ICAgICAgICAgICAgY2FzZSBTcXJ0OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5u
dW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUoaXNGbG9hdCh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKaW5kZXggNjdjYjIyNjQ3OTQyYTJjYzEx
YmYxNWY2MjgzZDRmMzY3YjIxNDlmNy4uZDJmMDFjMmY1NDE2Zjg0MjdhZjEyZDQxNjMzZDRiMDJh
Zjc2YjVmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtMjE0LDYgKzIx
NCwxMSBAQCBWYWx1ZSogVmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmKSBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitWYWx1ZSogVmFsdWU6OmFic0NvbnN0YW50
KFByb2NlZHVyZSYpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFZhbHVlKiBW
YWx1ZTo6c3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0zNTAsNiArMzU1LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAg
ICAgY2FzZSBTU2hyOgogICAgIGNhc2UgWlNocjoKICAgICBjYXNlIENsejoKKyAgICBjYXNlIEFi
czoKICAgICBjYXNlIFNxcnQ6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIFNFeHQ4
OgpAQCAtNDI2LDYgKzQzMiw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNh
c2UgRnJhbWVQb2ludGVyOgogICAgICAgICByZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUo
KSk7CiAgICAgY2FzZSBJZGVudGl0eToKKyAgICBjYXNlIEFiczoKICAgICBjYXNlIFNxcnQ6CiAg
ICAgY2FzZSBTRXh0ODoKICAgICBjYXNlIFNFeHQxNjoKQEAgLTUzMSw2ICs1MzgsNyBAQCBUeXBl
IFZhbHVlOjp0eXBlRm9yKE9wY29kZSBvcGNvZGUsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSog
c2Vjb25kQ2hpbGQpCiAgICAgY2FzZSBTU2hyOgogICAgIGNhc2UgWlNocjoKICAgICBjYXNlIENs
ejoKKyAgICBjYXNlIEFiczoKICAgICBjYXNlIFNxcnQ6CiAgICAgY2FzZSBDaGVja0FkZDoKICAg
ICBjYXNlIENoZWNrU3ViOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXggN2FlN2Qy
YjYyZDkzM2MxYTdiZjVhMjYyNWNmNDFmYTZhMTAzYmY3Mi4uYTYxMThiMTExMTgzYjYwZDljYjc4
NWMzMWU4OTZkYzI5OTZiNjY0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBAIC0x
MzEsNiArMTMxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmFsdWUqIGJpdHdpc2VDYXN0Q29u
c3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogZG91YmxlVG9GbG9h
dENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGZsb2F0VG9E
b3VibGVDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlKiBhYnND
b25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBzcXJ0Q29uc3Rh
bnQoUHJvY2VkdXJlJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFRyaVN0YXRlIGVxdWFsQ29uc3Rh
bnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDFiZDk0ODBjODk4NTU4MzViODg3M2U2MGMz
MTNkYmEzZGZiYTU4MmYuLmRiOTM4ODU5N2MxYWNjNzdjZjc0YTM3ODhmMDIwMzVmODEyMjRhMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29k
ZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpA
QCAtMTcwLDYgKzE3MCwxMiBAQCBBbmQ2NCBVOkcsIFVEOkcKICAgICBUbXAsIFRtcAogICAgIElt
bSwgVG1wCiAKK0FuZERvdWJsZSBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorCitBbmRGbG9hdCBV
OkYsIFVEOkYKKyAgICBUbXAsIFRtcAorCiBMc2hpZnQzMiBVOkcsIFVEOkcKICAgICBUbXAqLCBU
bXAKICAgICBJbW0sIFRtcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCBkNzg0
Yzg4ODE0NmQwNTFjNTAyOWM0M2QzOWFkNjc3ZGE1M2JjY2QyLi5mNjkwYjMzZGY2ZTllMWQ0NmQ1
MjEzNDUyNmRhZjk2ODRmNWRlZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApA
QCAtMTk0MSw2ICsxOTQxLDE0MCBAQCB2b2lkIHRlc3RCaXRBbmRXaXRoTWFza1JldHVybnNCb29s
ZWFucyhpbnQ2NF90IGEsIGludDY0X3QgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIGEsIGIpID09IGV4cGVjdGVkKTsKIH0KIAorZG91YmxlIGJpdEFuZERvdWJsZShk
b3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KGJp
dHdpc2VfY2FzdDx1aW50NjRfdD4oYSkgJiBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGIpKTsKK30K
Kwordm9pZCB0ZXN0Qml0QW5kQXJnRG91YmxlKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVu
dCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCBhKSwgYml0QW5kRG91YmxlKGEsIGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFu
ZEFyZ3NEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjEpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBi
aXRBbmREb3VibGUoYSwgYikpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kQXJnSW1tRG91YmxlKGRv
dWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERv
dWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1
bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwg
T3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGRvdWJsZT4ocHJvYywgYSwgYiksIGJpdEFuZERvdWJsZShhLCBiKSkpOworfQorCit2b2lkIHRl
c3RCaXRBbmRJbW1zRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3RE
b3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJn
dW1lbnRCKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxkb3VibGU+KHByb2MpLCBiaXRBbmREb3VibGUoYSwgYikpKTsKK30KKworZmxvYXQgYml0QW5k
RmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGZsb2F0
PihiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGEpICYgYml0d2lzZV9jYXN0PHVpbnQzMl90PihiKSk7
Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ0Zsb2F0KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1
ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1ZSogcmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVu
dCwgYXJndW1lbnQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXRBbmRGbG9h
dChhLCBhKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQg
YikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkp
KTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmln
aW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
YSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihiKSksIGJpdEFuZEZsb2F0KGEsIGIpKSk7Cit9CisK
K3ZvaWQgdGVzdEJpdEFuZEFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUq
IGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBiKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0QW5kRmxvYXQo
YSwgYikpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kSW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0Rmxv
YXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290
LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4o
KSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jKSwgYml0QW5kRmxvYXQoYSwgYikpKTsKK30K
Kwordm9pZCB0ZXN0Qml0QW5kQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZs
b2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKSkpOworICAgIFZhbHVlKiBhcmd1bWVudEFhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50QSk7CisgICAgVmFs
dWUqIGFyZ3VtZW50QmFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9h
dFRvRG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnRCKTsKKyAgICBWYWx1ZSogZG91YmxlUmVzdWx0
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVu
dEFhc0RvdWJsZSwgYXJndW1lbnRCYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGRv
dWJsZVJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworCisgICAgZG91YmxlIGRvdWJsZUEgPSBhOwor
ICAgIGRvdWJsZSBkb3VibGVCID0gYjsKKyAgICBmbG9hdCBleHBlY3RlZCA9IHN0YXRpY19jYXN0
PGZsb2F0PihiaXRBbmREb3VibGUoZG91YmxlQSwgZG91YmxlQikpOworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihh
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgZXhwZWN0ZWQpKTsKK30KKwogdm9pZCB0ZXN0
Qml0T3JBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpA
QCAtMjg5Niw2ICszMDMwLDIwMiBAQCB2b2lkIHRlc3RDbHpNZW0zMihpbnQzMl90IGEpCiAgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjx1bnNpZ25lZD4ocHJvYywgJmEpID09IGNvdW50TGVhZGluZ1pl
cm8oYSkpOwogfQogCit2b2lkIHRlc3RBYnNBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFi
cywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKSk7CisKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGZhYnMoYSkp
KTsKK30KKwordm9pZCB0ZXN0QWJzSW1tKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBhKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
YnMsIE9yaWdpbigpLCBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MpLCBmYWJzKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEFic01lbShk
b3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIE1lbW9yeVZhbHVlKiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVl
Pihwcm9jLCBMb2FkLCBEb3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBsb2FkRG91
YmxlKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJv
YywgJmEpLCBmYWJzKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0Fic0FyZyhkb3VibGUgYSkKK3sK
KyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9j
aygpOworICAgIFZhbHVlKiBmaXJzdEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWJzLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKTsKKyAgICBWYWx1ZSogc2Vj
b25kQWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBmaXJz
dEFicyk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgc2Vjb25kQWJzKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRS
dW48ZG91YmxlPihwcm9jLCBhKSwgZmFicyhhKSkpOworfQorCit2b2lkIHRlc3RBYnNCaXR3aXNl
Q2FzdEFyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEFzSW50NjQgPSBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QXNEb3VibGUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnRBc0ludDY0
KTsKKyAgICBWYWx1ZSogYWJzVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFi
cywgT3JpZ2luKCksIGFyZ3VtZW50QXNEb3VibGUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFic1ZhbHVlKTsKKworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50
NjRfdD4oYSkpLCBmYWJzKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0QWJzQml0d2lz
ZUNhc3RBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0ludDY0ID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQ2
NCk7CisgICAgVmFsdWUqIGFic1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
YnMsIE9yaWdpbigpLCBhcmd1bWVudEFzRG91YmxlKTsKKyAgICBWYWx1ZSogcmVzdWx0QXNJbnQ2
NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
YnNWYWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHRBc0ludDY0KTsKKworICAgIGludDY0X3QgZXhwZWN0ZWRSZXN1
bHQgPSBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oZmFicyhhKSk7CisgICAgQ0hFQ0soaXNJZGVudGlj
YWwoY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oYSkp
LCBleHBlY3RlZFJlc3VsdCkpOworfQorCit2b2lkIHRlc3RBYnNBcmcoZmxvYXQgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFy
Z3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFi
c0ltbShmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiByZXN1
bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3VtZW50
KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJp
dHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhh
KSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic01lbShmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRGbG9hdCA9
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigp
LCBhZGRyZXNzKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBBYnMsIE9yaWdpbigpLCBsb2FkRmxvYXQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGZhYnMoYSkpKSkpOworfQorCit2b2lkIHRlc3RBYnNBYnNBcmcoZmxvYXQgYSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
IGFyZ3VtZW50MzIpOworICAgIFZhbHVlKiBmaXJzdEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBzZWNvbmRBYnMg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGZpcnN0QWJzKTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBzZWNvbmRBYnMpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9h
dD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZh
YnMoYSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGZsb2F0IGEpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0ludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFs
dWUqIGFyZ3VtZW50QXNmbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lz
ZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEFzSW50MzIpOworICAgIFZhbHVlKiBhYnNWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnRBc2Zs
b2F0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBhYnNWYWx1ZSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBzdGF0aWNfY2FzdDxmbG9h
dD4oZmFicyhhKSkpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFy
ZyhmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QXNJbnQzMiA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpOworICAgIFZhbHVlKiBhcmd1bWVudEFzZmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnRBc0ludDMyKTsKKyAgICBW
YWx1ZSogYWJzVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2lu
KCksIGFyZ3VtZW50QXNmbG9hdCk7CisgICAgVmFsdWUqIHJlc3VsdEFzSW50NjQgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYWJzVmFsdWUpOwor
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0QXNJbnQ2NCk7CisKKyAgICBpbnQzMl90IGV4cGVjdGVkUmVzdWx0ID0gYml0d2lz
ZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSk7CisgICAgQ0hFQ0so
aXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oYSkpLCBleHBlY3RlZFJlc3VsdCkpOworfQorCit2b2lkIHRlc3RBYnNBcmdXaXRoVXNl
bGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Cisg
ICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXNEb3VibGUpOworICAgIFZh
bHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9G
bG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMy
X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZ1dp
dGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50
MzIpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFzRG91YmxlKTsK
KyAgICBWYWx1ZSogZmxvYXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERv
dWJsZVRvRmxvYXQsIE9yaWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJl
c3VsdCk7CisgICAgVmFsdWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3Vs
dCwgZG91YmxlQWRkcmVzcyk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgZG91YmxlIGVmZmVjdCA9IDA7
CisgICAgaW50MzJfdCByZXN1bHRWYWx1ZSA9IGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCAmZWZmZWN0KTsKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChyZXN1bHRWYWx1ZSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihm
YWJzKGEpKSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIGZhYnMoYSkpKTsKK30K
Kwogdm9pZCB0ZXN0U3FydEFyZyhkb3VibGUgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAg
LTc0OTksNiArNzgyOSwxNSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVO
KHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0zMig2LCAxLCA2KSk7CiAgICAgUlVOKHRlc3RCaXRB
bmRJbW1CaXRBbmRBcmdJbW0zMigyNCwgMHhmZmZmLCA3KSk7CiAgICAgUlVOX0JJTkFSWSh0ZXN0
Qml0QW5kV2l0aE1hc2tSZXR1cm5zQm9vbGVhbnMsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVy
YW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdEFuZEFyZ0RvdWJsZSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kQXJnc0RvdWJs
ZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kQXJnSW1tRG91YmxlLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRJbW1zRG91YmxlLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAg
ICBSVU5fVU5BUlkodGVzdEJpdEFuZEFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ3NGbG9hdCwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGZsb2F0PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9CSU5BUlkodGVzdEJpdEFuZEFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8
ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFS
WSh0ZXN0Qml0QW5kSW1tc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5k
QXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CiAKICAgICBSVU4o
dGVzdEJpdE9yQXJncyg0MywgNDMpKTsKICAgICBSVU4odGVzdEJpdE9yQXJncyg0MywgMCkpOwpA
QCAtNzczMCw2ICs4MDY5LDIxIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBS
VU5fVU5BUlkodGVzdENsekFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0
ZXN0Q2x6TWVtMzIsIGludDY0T3BlcmFuZHMoKSk7CiAKKyAgICBSVU5fVU5BUlkodGVzdEFic0Fy
ZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RB
YnNJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0
ZXN0QWJzTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5B
UlkodGVzdEFic0Fic0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAg
UlVOX1VOQVJZKHRlc3RBYnNCaXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdEFic0JpdHdpc2VDYXN0QXJn
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFi
c0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVz
dEFic0ltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlko
dGVzdEFic01lbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5B
UlkodGVzdEFic0Fic0FyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBS
VU5fVU5BUlkodGVzdEFic0JpdHdpc2VDYXN0QXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8Zmxv
YXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZywg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0Fy
Z1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0FyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJz
aW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworCiAgICAgUlVOX1VOQVJZKHRl
c3RTcXJ0QXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKICAgICBSVU5fVU5B
UlkodGVzdFNxcnRJbW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJV
Tl9VTkFSWSh0ZXN0U3FydE1lbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKaW5kZXggNmM2OTViNmU1MWM2NjZh
NGZjY2UzZTM5ODJjMzBjNTFlMmZhMzg4Zi4uMTMxMmYwYzVlNWFjOWIzMGRjZTk4YWE5ZmFkYmJl
MmYyMzI5M2VjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091
dHB1dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaApAQCAt
MTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgYWRkV2l0aE92ZXJmbG93NjQoTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIHN1YldpdGhP
dmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogICAgIExW
YWx1ZSBtdWxXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNI
KCk7IH0KLSAgICBMVmFsdWUgZG91YmxlQWJzKExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9Cisg
ICAgTFZhbHVlIGRvdWJsZUFicyhMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFicywgb3JpZ2luKCksIHZhbHVlKTsgfQogCiAg
ICAgTFZhbHVlIGRvdWJsZVNpbihMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGNhbGxXaXRob3V0U2lk
ZUVmZmVjdHMoQjM6OkRvdWJsZSwgc2luLCB2YWx1ZSk7IH0KICAgICBMVmFsdWUgZG91YmxlQ29z
KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91Ymxl
LCBjb3MsIHZhbHVlKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267177</attachid>
            <date>2015-12-11 11:35:03 -0800</date>
            <delta_ts>2015-12-11 13:53:37 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-152176-20151211113430.patch</filename>
            <type>text/plain</type>
            <size>55292</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZWViY2JjOWE0NWI3ODFkOThhNWM0ZjEwOTljMDU2YTBiYWEwOThhLi5lY2E2M2E3NzY1NDZhNjlm
OTMwNDlhNDYwMDJiOGQ3MTMwMjRhZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNS0xMi0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgRmxvYXRpbmcgUG9pbnQgQWJzKCkgdG8gQjMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjE3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhbiBBYnMoKSBvcGVyYXRpb24gZm9yIGZsb2F0aW5nIHBvaW50LgorCisgICAgICAgIE9u
IHg4NiwgQWJzKCkgaXMgaW1wbGVtZW50ZWQgYnkgbWFza2luZyB0aGUgdG9wIGJpdAorICAgICAg
ICBvZiB0aGUgZmxvYXRpbmcgcG9pbnQgdmFsdWUuIE9uIEFSTTY0LCB0aGVyZSBpcyBhIGJ1aWx0
aW4KKyAgICAgICAgYWJzIG9wY29kZS4KKworICAgICAgICBUbyBhY2NvdW50IGZvciB0aG9zZSBk
aWZmZXJlbmNlcywgQjMgdXNlICJBYnMiIGFzCisgICAgICAgIHRoZSBjYW5ub25pY2FsIG9wZXJh
dGlvbi4gV2hlbiB3ZSBhcmUgYWJvdXQgdG8gbG93ZXIKKyAgICAgICAgdG8gQWlyLCBBYnMgaXMg
ZXh0ZW5kZWQgb24geDg2IHRvIGdldCBhIGNsZWFuIGhhbmRsaW5nCisgICAgICAgIG9mIHRoZSBt
YXNrIGNvbnN0YW50cy4KKworICAgICAgICBUaGlzIHBhdGNoIGhhcyBvbmUgY29vbCB0aGluZyBy
ZWxhdGVkIHRvIEZUTC4KKyAgICAgICAgSWYgeW91IGRvOgorICAgICAgICAgICBAMSA9IHVuYm94
RG91YmxlKEAwKQorICAgICAgICAgICBAMiA9IGFicyhAMSkKKyAgICAgICAgICAgQDMgPSBib3hE
b3VibGUoQDIpCisKKyAgICAgICAgQjNSZWR1Y2VTdHJlbmd0aCBjb21wbGV0ZWx5IGVsaW1pbmF0
ZSB0aGUgRG91YmxlLUludGVnZXIKKyAgICAgICAgY29udmVyc2lvbi4KKworICAgICAgICBUaGUg
c3RyZW5ndGggcmVkdWN0aW9uIG9mIEFicyBpcyBhd2FyZSB0aGF0IGl0IGNhbiBkbyBhIGJpdAor
ICAgICAgICBtYXNrIG92ZXIgdGhlIGJpdGNhc3QgdXNlZCBieSB1bmJveGluZy4KKyAgICAgICAg
SWYgZXZlbiB3b3JrcyBpZiB5b3UgdXNlIGZsb2F0cyBieSBmb3JjaW5nIGZyb3VuZDogcmVkdWNl
RG91YmxlVG9GbG9hdCgpCisgICAgICAgIGVsbWluaWF0ZXMgdGhlIHVzZWxlc3MgY29udmVyc2lv
bnMsIGZvbGxvd2VkIGJ5IFJlZHVjZVN0cmVuZ3RoCisgICAgICAgIHRoYXQgcmVtb3ZlcyB0aGUg
c3dpdGNoIGZyb20gR1AgdG8gRlAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmFuZEZsb2F0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcHNfcnIpOgorICAgICAgICAq
IGIzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJs
ZVZhbHVlOjpiaXRBbmRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJsZVZh
bHVlOjphYnNDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmg6Cisg
ICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29u
c3RGbG9hdFZhbHVlOjpiaXRBbmRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmFic0NvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5o
OgorICAgICAgICAqIGIzL0IzR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJh
dGVUb0Fpcik6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMpOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaDogQWRk
ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAg
ICAgKiBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNl
U3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIz
L0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFic0NvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVl
OjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgorICAgICAgICAqIGIz
L0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAg
ICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmJpdEFuZERvdWJsZSk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJnRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRBcmdzRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdJbW1E
b3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEltbXNEb3VibGUpOgorICAgICAg
ICAoSlNDOjpCMzo6Yml0QW5kRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFy
Z0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdzRmxvYXQpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFyZ0ltbUZsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRJbW1zRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFyZ3NGbG9h
dFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJz
QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBYnNJbW0pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEFic01lbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJzQWJzQXJnKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJz
QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RB
YnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlQWJzKToKKwogMjAxNS0xMi0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmph
bWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0pTQ10gTGl0dGxlIGNsZWFudXAgb2YgRlRMT3V0
cHV0IHR5cGUgY2FzdHMgYW5kIGNvbnZlcnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNzBkYmIyZWZmNzk4OWMzOTA5NmEyMTMzMmFlNTM3NjJjYzI2YzY4NS4uZmZi
NWQ4NWU4Mjk5Y2Y3MWI0NDZhZWRhYTcyOWJlM2Q4Y2EzODg3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE0LDYgKzExNCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgYjMvQjNIZWFwUmFuZ2UuY3BwCiAgICAgYjMvQjNJbnNlcnRpb25TZXQuY3Bw
CiAgICAgYjMvQjNMb3dlck1hY3Jvcy5jcHAKKyAgICBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcAogICAgIGIzL0IzTG93ZXJUb0Fpci5jcHAKICAgICBiMy9CM01lbW9yeVZh
bHVlLmNwcAogICAgIGIzL0IzTW92ZUNvbnN0YW50cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGJlZTE2ZmIxNGM5ZWUxM2E2ZmIzNGNhMjc4NzE1YjQ0NTYxMTE3Ny4uNDk4
YzE3N2E0OWYxZjdiYzNhZjNmNDg2OTJhODNjMGU1YmJmY2IxZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTExMzUsNiArMTEzNSw4IEBACiAJCTQzNDIyQTYzMUMxNThFNkQwMEUy
RUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjExQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9h
dFZhbHVlLmggKi87IH07CiAJCTQzNDIyQTY2MUMxNjI2NzUwMEUyRUI5OCAvKiBCM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5j
cHAgKi87IH07CiAJCTQzNDIyQTY3MUMxNjI2NzgwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRv
RmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
NDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCAqLzsgfTsK
KwkJNDM3Q0Q4MDYxQzFCMzVEOTAwQjQyNTY1IC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXph
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
N0NEODA1MUMxQjM1QkMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25z
LmggKi87IH07CisJCTQzN0NEODA3MUMxQjM1REMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0
ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQzN0NEODA0MUMxQjM1QkMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MjY3OEY4RTFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjc4
RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovOyB9OwpAQCAt
MjAxNiwxNyArMjAxOCwxNyBAQAogCQlGRTM5MTM1NDFCNzk0RjZFMDBFREFGNzEgLyogTGl2ZU9i
amVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUzOTEzNTIxQjc5NEFDOTAwRURBRjcxIC8qIExpdmVPYmplY3RMaXN0LmNwcCAqLzsgfTsK
IAkJRkUzOTEzNTUxQjc5NEY4QTAwRURBRjcxIC8qIExpdmVPYmplY3REYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM5MTM1MTFCNzk0QUM5MDBF
REFGNzEgLyogTGl2ZU9iamVjdERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTM5MTM1NjFCNzk0RjhGMDBFREFGNzEgLyogTGl2ZU9iamVj
dExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MzkxMzUzMUI3OTRBQzkwMEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFM0EwNkE2MUMxMEI3MkQwMDM5
MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QTQxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2Vu
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUzQTA2
QTgxQzEwQkM4MTAwMzkwRkREIC8qIEpJVEJpdEJpbmFyeU9wR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZBNzFDMTBCQzc0MDAz
OTBGREQgLyogSklUQml0QmluYXJ5T3BHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRf
VEFHUyA9ICgpOyB9OyB9OwotCQlGRTNBMDZBQzFDMTBDMzlFMDAzOTBGREQgLyogSklUQml0T3JH
ZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUzQTA2QTMxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmNwcCAqLzsg
c2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTNBMDZCMTFDMTBDQjg0MDAz
OTBGREQgLyogSklUQml0QW5kR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkFEMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRB
bmRHZW5lcmF0b3IuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0J
CUZFM0EwNkIyMUMxMENCODkwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkFFMUMxMENCNkYw
MDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFH
UyA9ICgpOyB9OyB9OwotCQlGRTNBMDZCMzFDMTBDQjhFMDAzOTBGREQgLyogSklUQml0WG9yR2Vu
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFM0EwNkFGMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRYb3JHZW5lcmF0b3IuY3BwICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUZFM0EwNkI0MUMxMENCOTMwMDM5
MEZERCAvKiBKSVRCaXRYb3JHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkIwMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRYb3JH
ZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTNB
MDZCRDFDMTEwNDBEMDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkI2MUMxMTAzRDkw
MDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NF
VF9UQUdTID0gKCk7IH07IH07Ci0JCUZFM0EwNkJFMUMxMTA0MTIwMDM5MEZERCAvKiBKSVRMZWZ0
U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFM0EwNkI3MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTNBMDZCRjFDMTEw
NDE2MDAzOTBGREQgLyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZCODFDMTEwM0Q5MDAzOTBGREQg
LyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1Mg
PSAoKTsgfTsgfTsKLQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFM0EwNkI5MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJRkUzQTA2QTYxQzEwQjcyRDAw
MzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZBNDFDMTBCNzA4MDAzOTBGREQgLyogSklUQml0T3JH
ZW5lcmF0b3IuaCAqLzsgfTsKKwkJRkUzQTA2QTgxQzEwQkM4MTAwMzkwRkREIC8qIEpJVEJpdEJp
bmFyeU9wR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTNBMDZBNzFDMTBCQzc0MDAzOTBGREQgLyogSklUQml0QmluYXJ5T3BHZW5lcmF0
b3IuaCAqLzsgfTsKKwkJRkUzQTA2QUMxQzEwQzM5RTAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJh
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
M0EwNkEzMUMxMEI3MDgwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5jcHAgKi87IH07CisJ
CUZFM0EwNkIxMUMxMENCODQwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QUQxQzEwQ0I2
RjAwMzkwRkREIC8qIEpJVEJpdEFuZEdlbmVyYXRvci5jcHAgKi87IH07CisJCUZFM0EwNkIyMUMx
MENCODkwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkFFMUMxMENCNkYwMDM5MEZERCAvKiBK
SVRCaXRBbmRHZW5lcmF0b3IuaCAqLzsgfTsKKwkJRkUzQTA2QjMxQzEwQ0I4RTAwMzkwRkREIC8q
IEpJVEJpdFhvckdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTNBMDZBRjFDMTBDQjZGMDAzOTBGREQgLyogSklUQml0WG9yR2VuZXJh
dG9yLmNwcCAqLzsgfTsKKwkJRkUzQTA2QjQxQzEwQ0I5MzAwMzkwRkREIC8qIEpJVEJpdFhvckdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUzQTA2QjAxQzEwQ0I2RjAwMzkwRkREIC8qIEpJVEJpdFhvckdlbmVyYXRvci5oICovOyB9Owor
CQlGRTNBMDZCRDFDMTEwNDBEMDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkI2MUMx
MTAzRDkwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3BwICovOyB9OworCQlGRTNB
MDZCRTFDMTEwNDEyMDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZCNzFDMTEwM0Q5MDAz
OTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggKi87IH07CisJCUZFM0EwNkJGMUMxMTA0
MTYwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkI4MUMxMTAzRDkwMDM5MEZERCAv
KiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkUzQTA2QzAxQzExMDQxQTAw
MzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkI5MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRS
aWdodFNoaWZ0R2VuZXJhdG9yLmggKi87IH07CiAJCUZFNDIzODkwMUJFMThDM0MwMDUxNDczNyAv
KiBKSVRTdWJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU0MjM4OEYxQkUxOEMxMjAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5j
cHAgKi87IH07CiAJCUZFNEJGRjJCMUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92ZXJyaWRl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRC
RkYyOTFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuY3BwICovOyB9OwogCQlG
RTRCRkYyQzFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEJGRjJBMUFENDc2RTcwMDA4
OEY4NyAvKiBGdW5jdGlvbk92ZXJyaWRlcy5oICovOyB9OwpAQCAtMzIxMiw2ICszMjE0LDggQEAK
IAkJNDM0MjJBNjExQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQ29uc3RGbG9hdFZhbHVlLmg7IHBhdGggPSBi
My9CM0NvbnN0RmxvYXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQy
MkE2NDFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA7
IHBhdGggPSBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzQyMkE2NTFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zs
b2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9G
bG9hdC5oOyBwYXRoID0gYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQzN0NEODA0MUMxQjM1QkMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOyBwYXRoID0gYjMvQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQzN0NEODA1MUMxQjM1QkMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMuaDsgcGF0aCA9IGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXph
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5MDk3RUUwRjhGODFCNTAw
NzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyLmg7IHBhdGggPSB5YXJyL1lhcnIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBq
c2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IH07CkBAIC00NjM3
LDYgKzQ2NDEsOCBAQAogCQkJCTBGRUM4NUI2MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlv
blNldElubGluZXMuaCAqLywKIAkJCQkwRjMzOEUxOTFCRjI4NkVBMDAxM0M4OEYgLyogQjNMb3dl
ck1hY3Jvcy5jcHAgKi8sCiAJCQkJMEYzMzhFMUExQkYyODZFQTAwMTNDODhGIC8qIEIzTG93ZXJN
YWNyb3MuaCAqLywKKwkJCQk0MzdDRDgwNDFDMUIzNUJDMDBCNDI1NjUgLyogQjNMb3dlck1hY3Jv
c0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgKi8sCisJCQkJNDM3Q0Q4MDUxQzFCMzVCQzAwQjQyNTY1
IC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCAqLywKIAkJCQkwRkVDODREMzFC
REFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmNwcCAqLywKIAkJCQkwRkVDODRENDFCREFD
REFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi8sCiAJCQkJMEZFQzg0RDUxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuY3BwICovLApAQCAtNzcyNyw2ICs3NzMzLDcgQEAKIAkJ
CQkwRjEzOTEyQzE2NzcxQzNEMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QjIxQzEwQ0I4OTAwMzkwRkREIC8qIEpJVEJpdEFu
ZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFF
IC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MzdDRDgwNjFDMUIz
NUQ5MDBCNDI1NjUgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3Bl
cnR5TWFwSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBC
NDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTg0ODUsNiArODQ5Miw3
IEBACiAJCQkJMEZFQzg1QjkxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRUM4NTFEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9B
aXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MUYxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
TWVtb3J5VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDM3Q0Q4MDcxQzFCMzVEQzAwQjQy
NTY1IC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZFQzg1MjExQkRBQ0RBQzAwODBGRjc0IC8qIEIzT3Bjb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRUM4NTIzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM09yaWdpbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVDODUyNTFCREFDREFDMDA4MEZGNzQgLyogQjNQYXRjaHBvaW50U3Bl
Y2lhbC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCA2YzJmNjZiNTli
ZjY3MjlkNTBhMDBmYjYyZjY3NzExNjRkNWYyNjI5Li5hODUwNDVlZmFkNWY3ZTJkZjhlNjY3YTMy
YTQ0YjQyYjgwMTYxODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0xMDEzLDYgKzEwMTMsMTcg
QEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tdWxzc19tcihzcmMub2Zmc2V0LCBzcmMu
YmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmREb3VibGUoRlBSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIC8vIEFORFBTIGlzIGRlZmluZWQg
b24gMTI4Yml0cyBhbmQgaXMgc2hvcnRlciB0aGFuIEFORFBELgorICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRwc19ycihzcmMsIGRzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmRGbG9hdChGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YW5kcHNfcnIoc3JjLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3Vi
bGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzU1NFMlByZXNlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAppbmRleCAzMmUzYzBkMTZiMTBmZjE3NGJlNGU2MTIzNTI0M2E2N2I2
NWY2ODk3Li44OGIzY2RmNTViMmUxZjFmMDI4NjE2MmQ5ZDY4MzU2OTIwNDRkNjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTI3Myw2
ICsyNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBPUDJfRElWU0RfVnNkV3NkICAgID0gMHg1RSwK
ICAgICAgICAgT1AyX01PVk1TS1BEX1ZkRWQgICA9IDB4NTAsCiAgICAgICAgIE9QMl9TUVJUU0Rf
VnNkV3NkICAgPSAweDUxLAorICAgICAgICBPUDJfQU5EUFNfVnBkV3BkICAgID0gMHg1NCwKICAg
ICAgICAgT1AyX0FORE5QRF9WcGRXcGQgICA9IDB4NTUsCiAgICAgICAgIE9QMl9YT1JQRF9WcGRX
cGQgICAgPSAweDU3LAogICAgICAgICBPUDJfTU9WRF9WZEVkICAgICAgID0gMHg2RSwKQEAgLTIy
ODMsNiArMjI4NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChP
UDJfRElWU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCBhbmRwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0FORFBTX1ZwZFdwZCwg
KFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKwogICAgIHZvaWQgeG9y
cHNfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YT1JQRF9WcGRXcGQsIChSZWdpc3RlcklEKWRz
dCwgKFJlZ2lzdGVySUQpc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0RG91YmxlVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3REb3VibGVWYWx1ZS5jcHAKaW5kZXggNzkwODhmNzljZjliMjVhMzViMWZiYzdmY2ZlNWY1Yjgz
MzEwNDA4Mi4uYTA0MWMwZmRhMzQ2ZDU1OTlkN2Q4MDVjN2M3ZGQ1NTFhZmU2MjkwNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKQEAgLTY5
LDYgKzY5LDE0IEBAIFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjptdWxDb25zdGFudChQcm9jZWR1
cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8
Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgKiBvdGhlci0+YXNEb3VibGUoKSk7
CiB9CiAKK1ZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpiaXRBbmRDb25zdGFudChQcm9jZWR1cmUm
IHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNE
b3VibGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZG91YmxlIHJlc3VsdCA9IGJp
dHdpc2VfY2FzdDxkb3VibGU+KGJpdHdpc2VfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkgJiBiaXR3
aXNlX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0RvdWJsZSgpKSk7CisgICAgcmV0dXJuIHByb2Mu
YWRkPENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbigpLCByZXN1bHQpOworfQorCiBWYWx1ZSogQ29u
c3REb3VibGVWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIGJpdHdpc2Vf
Y2FzdDxpbnQ2NF90PihtX3ZhbHVlKSk7CkBAIC03OSw2ICs4NywxMSBAQCBWYWx1ZSogQ29uc3RE
b3VibGVWYWx1ZTo6ZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QK
ICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG1fdmFsdWUpKTsKIH0KIAorVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6OmFic0Nv
bnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29u
c3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIGZhYnMobV92YWx1ZSkpOworfQorCiBWYWx1ZSogQ29u
c3REb3VibGVWYWx1ZTo6c3FydENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAg
ICByZXR1cm4gcHJvYy5hZGQ8Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIHNxcnQobV92YWx1
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCmlu
ZGV4IGUzYjc5YzJhNDAyMWQ0ZGYxMDVhMTJmMzI5ZjJkNmUwN2QyZWVjODkuLmRhOWEzOTVlYjg4
YzFmNzFlYWZkYTkxNTIwMWUyNTNjOTI5NTZkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmgKQEAgLTQ3LDggKzQ3LDEwIEBAIHB1YmxpYzoKICAg
ICBWYWx1ZSogZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKICAgICBWYWx1ZSogbW9kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbXVsQ29uc3RhbnQoUHJvY2Vk
dXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZSogYml0
QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWYWx1ZSogZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIFZhbHVlKiBhYnNDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWYWx1ZSogc3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgVHJpU3RhdGUgZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RG
bG9hdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1
ZS5jcHAKaW5kZXggNDQ3MTJjMzZiZjYyY2U4Zjk2NGU1ZTU1YjAyYTQ4Zjk2YTliZTljMy4uNDU4
N2E4NzQ4ZWNjNmY0ZGQxZjMxMWU0OTZjYzMzMDM0ODMxM2FkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCkBAIC02OSw2ICs2OSwxNCBAQCBW
YWx1ZSogQ29uc3RGbG9hdFZhbHVlOjptdWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVl
PihvcmlnaW4oKSwgbV92YWx1ZSAqIG90aGVyLT5hc0Zsb2F0KCkpOwogfQogCitWYWx1ZSogQ29u
c3RGbG9hdFZhbHVlOjpiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBmbG9hdCByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KGJp
dHdpc2VfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgJiBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KG90
aGVyLT5hc0Zsb2F0KCkpKTsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihv
cmlnaW4oKSwgcmVzdWx0KTsKK30KKwogVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6Yml0d2lzZUNh
c3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHByb2MuYWRk
PENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSk7
CkBAIC03OSw2ICs4NywxMSBAQCBWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjpmbG9hdFRvRG91Ymxl
Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25z
dERvdWJsZVZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3ZhbHVlKSk7CiB9
CiAKK1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6OmFic0NvbnN0YW50KFByb2NlZHVyZSYgcHJvYykg
Y29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMobV92YWx1ZSkpKTsKK30KKwogVmFsdWUqIENvbnN0Rmxv
YXRWYWx1ZTo6c3FydENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICByZXR1
cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNxcnQobV92YWx1ZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0RmxvYXRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9h
dFZhbHVlLmgKaW5kZXggMWZmZjE0YTA1ZWE5MGIyYmI0N2FhYWMyNjAxNjlhODllZGY4Y2Y0Mi4u
ZGMzOGJlM2Y1NDU0NDdjODVhN2NhNDhkY2UxY2E3YjAxNDFhZjE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKQEAgLTQ2LDggKzQ2LDEwIEBAIHB1
YmxpYzoKICAgICBWYWx1ZSogc3ViQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwg
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbXVsQ29uc3Rh
bnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBW
YWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKICAgICBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBj
b25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogZmxvYXRUb0RvdWJsZUNvbnN0YW50KFByb2NlZHVy
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBhYnNDb25zdGFudChQcm9jZWR1cmUmKSBj
b25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogc3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgVHJpU3RhdGUgZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3Bw
CmluZGV4IDMzMDI4MmU2ZjFlMTE1OThlYTgxZmMwYjExNjdmYmY5YjEzZGVkY2YuLjA4NmQ1NjU1
NDkwYjhjMmQ2ZWZiNWFhOGYxNmIwNTMzOTQ5YjAyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBaXJJbnN0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCiAjaW5jbHVkZSAiQjNMb3dlck1hY3Jvcy5o
IgorI2luY2x1ZGUgIkIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCIKICNpbmNsdWRl
ICJCM0xvd2VyVG9BaXIuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMuaCIKICNpbmNsdWRl
ICJCM1Byb2NlZHVyZS5oIgpAQCAtODIsNiArODMsOCBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJv
Y2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsKQogICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAgfQogCisgICAgbG93
ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMocHJvY2VkdXJlKTsKKwogICAgIG1vdmVDb25zdGFu
dHMocHJvY2VkdXJlKTsKIAogICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1p
emF0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGRkMTljZDgxOGQ2ODBjNDRiNWZhYTVlNTY2Y2JlNTll
Y2M3ODk5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIgorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNs
dWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQjNDb25zdERvdWJsZVZhbHVl
LmgiCisjaW5jbHVkZSAiQjNDb25zdEZsb2F0VmFsdWUuaCIKKyNpbmNsdWRlICJCM0luc2VydGlv
blNldElubGluZXMuaCIKKyNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIExvd2VyTWFjcm9zIHsK
K3B1YmxpYzoKKyAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgICAgIDogbV9w
cm9jKHByb2MpCisgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9jKQorICAgICAgICAs
IG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgeworICAgIH0KKworICAgIGJvb2wgcnVuKCkKKyAg
ICB7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKKyAgICAgICAg
ICAgIG1fYmxvY2sgPSBibG9jazsKKyAgICAgICAgICAgIHByb2Nlc3NDdXJyZW50QmxvY2soKTsK
KyAgICAgICAgfQorICAgICAgICBtX2NoYW5nZWQgfD0gbV9ibG9ja0luc2VydGlvblNldC5leGVj
dXRlKCk7CisgICAgICAgIGlmIChtX2NoYW5nZWQpIHsKKyAgICAgICAgICAgIG1fcHJvYy5yZXNl
dFJlYWNoYWJpbGl0eSgpOworICAgICAgICAgICAgbV9wcm9jLmludmFsaWRhdGVDRkcoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdm9pZCBwcm9jZXNzQ3VycmVudEJsb2NrKCkKKyAgICB7CisgICAgICAgIGZvciAobV9p
bmRleCA9IDA7IG1faW5kZXggPCBtX2Jsb2NrLT5zaXplKCk7ICsrbV9pbmRleCkgeworICAgICAg
ICAgICAgbV92YWx1ZSA9IG1fYmxvY2stPmF0KG1faW5kZXgpOworICAgICAgICAgICAgbV9vcmln
aW4gPSBtX3ZhbHVlLT5vcmlnaW4oKTsKKyAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bj
b2RlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQWJzOiB7CisgICAgICAgICAgICAgICAgLy8gQVJN
IHN1cHBvcnRzIHRoaXMgaW5zdHJ1Y3Rpb24gbmF0aXZlbHkuCisgICAgICAgICAgICAgICAgaWYg
KGlzQVJNNjQoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBWYWx1ZSogbWFzazsKKyAgICAgICAgICAgICAgICBpZiAobV92YWx1ZS0+dHlwZSgpID09IERv
dWJsZSkKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdERvdWJsZVZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgYml0d2lzZV9jYXN0PGRvdWJsZT4o
figxbCA8PCA2MykpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChtX3ZhbHVlLT50eXBlKCkg
PT0gRmxvYXQpCisgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBtX2luc2VydGlvblNldC5pbnNl
cnQ8Q29uc3RGbG9hdFZhbHVlPihtX2luZGV4LCBtX29yaWdpbiwgYml0d2lzZV9jYXN0PGZsb2F0
Pih+KDEgPDwgMzEpKSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIHJlc3VsdCA9IG1faW5zZXJ0
aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgQml0QW5kLCBtX29yaWdpbiwgbV92YWx1ZS0+
Y2hpbGQoMCksIG1hc2spOworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRl
bnRpdHkocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2Jsb2NrKTsKKyAg
ICB9CisgICAgCisgICAgUHJvY2VkdXJlJiBtX3Byb2M7CisgICAgQmxvY2tJbnNlcnRpb25TZXQg
bV9ibG9ja0luc2VydGlvblNldDsKKyAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7Cisg
ICAgQmFzaWNCbG9jayogbV9ibG9jazsKKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIFZhbHVl
KiBtX3ZhbHVlOworICAgIE9yaWdpbiBtX29yaWdpbjsKKyAgICBib29sIG1fY2hhbmdlZCB7IGZh
bHNlIH07Cit9OworCitib29sIGxvd2VyTWFjcm9zSW1wbChQcm9jZWR1cmUmIHByb2MpCit7Cisg
ICAgTG93ZXJNYWNyb3MgbG93ZXJNYWNyb3MocHJvYyk7CisgICAgcmV0dXJuIGxvd2VyTWFjcm9z
LnJ1bigpOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworYm9vbCBsb3dlck1hY3Jv
c0FmdGVyT3B0aW1pemF0aW9ucyhQcm9jZWR1cmUmIHByb2MpCit7CisgICAgUGhhc2VTY29wZSBw
aGFzZVNjb3BlKHByb2MsICJsb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucyIpOworICAgIGJv
b2wgcmVzdWx0ID0gbG93ZXJNYWNyb3NJbXBsKHByb2MpOworICAgIGlmIChzaG91bGRWYWxpZGF0
ZUlSKCkpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsb3dlck1hY3Jvc0ltcGwocHJvYykpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRi
YWY1NjNjZDdjMTQwYjYwYmU5ZWIwMWZlMjE3ZDYxY2UxMmMyNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25z
LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnNfaAorI2Rl
ZmluZSBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zX2gKKworI2lmIEVOQUJMRShCM19K
SVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBQcm9jZWR1cmU7
CisKKy8vIExvd2VyIGNlcnRhaW4gaGlnaCBsZXZlbCBvcGNvZGVzIHRvIGxvd2VyLWxldmVsIG9w
Y29kZSB0byBoZWxwIGNvZGUgZ2VuZXJhdGlvbi4KKworYm9vbCBsb3dlck1hY3Jvc0FmdGVyT3B0
aW1pemF0aW9ucyhQcm9jZWR1cmUmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNl
bmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5kaWYgLy8gQjNMb3dlck1hY3Jvc0FmdGVyT3B0
aW1pemF0aW9uc19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
aW5kZXggZjE2NmY0ZTViZjk5NzIyZTQxZTdlZTMxNGIzYzVhOGY2NzI1NDk2NS4uYmJlMDkyZThh
OWY4ZDBlZTc5NmEyYjEwMWQ0ZDgzNzUxMTMwOTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTE0NTksNyArMTQ1OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIEJpdEFuZDogewotICAgICAgICAgICAgYXBwZW5kQmluT3A8
QW5kMzIsIEFuZDY0LCBDb21tdXRhdGl2ZT4oCisgICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQz
MiwgQW5kNjQsIEFuZERvdWJsZSwgQW5kRmxvYXQsIENvbW11dGF0aXZlPigKICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hpbGQoMSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAppbmRl
eCBiYzYwOTM1NzNiMzA3NzhjZWNjMDVkMGYyOGY3MWJhOTJiOTIzYmEwLi4zNmUyMGVjMGRiNTBl
YmM1NjM2OWY1OWMzNDJlMzQzYmU1YjY1ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09w
Y29kZS5jcHAKQEAgLTE0Niw2ICsxNDYsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIENsejoKICAgICAgICAgb3V0LnByaW50
KCJDbHoiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQWJzOgorICAgICAgICBvdXQucHJp
bnQoIkFicyIpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTcXJ0OgogICAgICAgICBvdXQu
cHJpbnQoIlNxcnQiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNv
ZGUuaAppbmRleCAxNGFlYzRhMmE0ODdlZDA0YWIzNzAwMWY1OTc1NDIyMDNjMTE3MTQzLi4xYzBi
ODZhMzZlYjgxZWUzNjFjYzVmODhhMmFjZTNkZTY3ZDdhMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuaApAQCAtODQsNyArODQsOCBAQCBlbnVtIE9wY29kZSA6IGludDE2X3Qgewog
ICAgIFpTaHIsIC8vIExvZ2ljYWwgU2hpZnQuCiAgICAgQ2x6LCAvLyBDb3VudCBsZWFkaW5nIHpl
cm9zLgogCi0gICAgLy8gRG91YmxlIG1hdGguCisgICAgLy8gRmxvYXRpbmcgcG9pbnQgbWF0aC4K
KyAgICBBYnMsCiAgICAgU3FydCwKIAogICAgIC8vIENhc3RzIGFuZCBzdWNoLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcAppbmRleCA4
YTEzZTc2YTEwMjkxMjY4N2UyODViZWY0MzIyNzBlMzNiMWY5NjFlLi44Njg4NGZhYjk0NGEzN2Rl
NGFkMTdlNmM5NmY1Yzc1MGQ0NGM4MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcApAQCAtNDgsNiArNDgsNyBAQCB2b2lkIGF0
dGVtcHRTaW1wbGlmaWNhdGlvbihWYWx1ZSogY2FuZGlkYXRlKQogICAgICAgICAgICAgY2FuZGlk
YXRlLT5zZXRUeXBlKEZsb2F0KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFiczoKICAgICBjYXNlIFNxcnQ6CiAgICAgICAgIGlmIChjYW5kaWRhdGUtPmNoaWxkKDApLT5v
cGNvZGUoKSA9PSBGbG9hdFRvRG91YmxlKSB7CiAgICAgICAgICAgICBjYW5kaWRhdGUtPmNoaWxk
KDApID0gY2FuZGlkYXRlLT5jaGlsZCgwKS0+Y2hpbGQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggZDdhYTA5YjcyODA5YTcxMTZlNDI1
ZTU0MDg1YTc3NjA3Mjg4ZmQzMy4uMWI2YTcwMjZjMzk5NDA1NWVmM2YyZTVhNjIyNDlhMzU4Y2U0
ZDJmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5n
dGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cApAQCAtNDk0LDYgKzQ5NCwzOSBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBicmVhazsKIAor
ICAgICAgICBjYXNlIEFiczoKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQWJzKGNvbnN0YW50
KQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiBmYWJzPHZhbHVlLT50eXBlKCk+KGNvbnN0YW50
KQorICAgICAgICAgICAgaWYgKFZhbHVlKiBjb25zdGFudCA9IG1fdmFsdWUtPmNoaWxkKDApLT5h
YnNDb25zdGFudChtX3Byb2MpKSB7CisgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdWYWx1
ZShjb25zdGFudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFR1cm4gdGhpczogQWJzKEFicyh2YWx1ZSkpCisgICAgICAgICAgICAvLyBJ
bnRvIHRoaXM6IEFicyh2YWx1ZSkKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+
b3Bjb2RlKCkgPT0gQWJzKSB7CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJ
ZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQWJzKEJpdHdpc2VDYXN0KHZh
bHVlKSkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogQml0d2lzZUNhc3QoQW5kKHZhbHVlLCBt
YXNrLXRvcC1iaXQpKQorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUo
KSA9PSBCaXR3aXNlQ2FzdCkgeworICAgICAgICAgICAgICAgIFZhbHVlKiBtYXNrOworICAgICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT50eXBlKCkgPT0gRG91YmxlKQorICAgICAgICAgICAgICAg
ICAgICBtYXNrID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0NjRWYWx1ZT4obV9pbmRleCwg
bV92YWx1ZS0+b3JpZ2luKCksIH4oMWwgPDwgNjMpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIG1hc2sgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3QzMlZh
bHVlPihtX2luZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgfigxbCA8PCAzMSkpOworCisgICAgICAg
ICAgICAgICAgVmFsdWUqIGJpdEFuZCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9p
bmRleCwgQml0QW5kLCBtX3ZhbHVlLT5vcmlnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgbV92
YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApLAorICAgICAgICAgICAgICAgICAgICBtYXNrKTsKKyAg
ICAgICAgICAgICAgICBWYWx1ZSogY2FzdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4o
bV9pbmRleCwgQml0d2lzZUNhc3QsIG1fdmFsdWUtPm9yaWdpbigpLCBiaXRBbmQpOworICAgICAg
ICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkoY2FzdCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwogICAgICAg
ICBjYXNlIFNxcnQ6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNxcnQoY29uc3RhbnQpCiAg
ICAgICAgICAgICAvLyBJbnRvIHRoaXM6IHNxcnQ8dmFsdWUtPnR5cGUoKT4oY29uc3RhbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggZjk5NjVlNmI3ODg3NWU0
YzY5OWRlZjdmZjhjNTM4NGQxNTZlOWM5OS4uMjNkZDMzMzFmMTY3OTBlNGNiZGQxYTBhZTQzZjY2
OWNhY2NhNWJlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRh
dGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcApAQCAt
MTU0LDYgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgTXVsOgogICAgICAgICAg
ICAgY2FzZSBEaXY6CiAgICAgICAgICAgICBjYXNlIE1vZDoKKyAgICAgICAgICAgIGNhc2UgQml0
QW5kOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIs
ICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUo
KSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgxKS0+dHlwZSgp
LCAoIkF0ICIsICp2YWx1ZSkpOwpAQCAtMTYxLDcgKzE2Miw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ2hpbGxEaXY6CiAgICAgICAgICAgICBj
YXNlIENoaWxsTW9kOgotICAgICAgICAgICAgY2FzZSBCaXRBbmQ6CiAgICAgICAgICAgICBjYXNl
IEJpdE9yOgogICAgICAgICAgICAgY2FzZSBCaXRYb3I6CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKQEAgLTIwOSw2
ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxk
KDApLT50eXBlKCkgPT0gSW50NjQsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWJzOgogICAgICAgICAgICAgY2Fz
ZSBTcXJ0OgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09
IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNGbG9hdCh2
YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSksICgiQXQgIiwgKnZhbHVlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5jcHAKaW5kZXggNjdjYjIyNjQ3OTQyYTJjYzExYmYxNWY2MjgzZDRmMzY3
YjIxNDlmNy4uZDJmMDFjMmY1NDE2Zjg0MjdhZjEyZDQxNjMzZDRiMDJhZjc2YjVmYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtMjE0LDYgKzIxNCwxMSBAQCBWYWx1ZSog
VmFsdWU6OmZsb2F0VG9Eb3VibGVDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAogICAgIHJldHVy
biBudWxscHRyOwogfQogCitWYWx1ZSogVmFsdWU6OmFic0NvbnN0YW50KFByb2NlZHVyZSYpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIFZhbHVlKiBWYWx1ZTo6c3FydENvbnN0
YW50KFByb2NlZHVyZSYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTAsNiAr
MzU1LDcgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNvbnN0CiAgICAgY2FzZSBTU2hyOgog
ICAgIGNhc2UgWlNocjoKICAgICBjYXNlIENsejoKKyAgICBjYXNlIEFiczoKICAgICBjYXNlIFNx
cnQ6CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICBjYXNlIFNFeHQ4OgpAQCAtNDI2LDYgKzQz
Miw3IEBAIFZhbHVlS2V5IFZhbHVlOjprZXkoKSBjb25zdAogICAgIGNhc2UgRnJhbWVQb2ludGVy
OgogICAgICAgICByZXR1cm4gVmFsdWVLZXkob3Bjb2RlKCksIHR5cGUoKSk7CiAgICAgY2FzZSBJ
ZGVudGl0eToKKyAgICBjYXNlIEFiczoKICAgICBjYXNlIFNxcnQ6CiAgICAgY2FzZSBTRXh0ODoK
ICAgICBjYXNlIFNFeHQxNjoKQEAgLTUzMSw2ICs1MzgsNyBAQCBUeXBlIFZhbHVlOjp0eXBlRm9y
KE9wY29kZSBvcGNvZGUsIFZhbHVlKiBmaXJzdENoaWxkLCBWYWx1ZSogc2Vjb25kQ2hpbGQpCiAg
ICAgY2FzZSBTU2hyOgogICAgIGNhc2UgWlNocjoKICAgICBjYXNlIENsejoKKyAgICBjYXNlIEFi
czoKICAgICBjYXNlIFNxcnQ6CiAgICAgY2FzZSBDaGVja0FkZDoKICAgICBjYXNlIENoZWNrU3Vi
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXggN2FlN2QyYjYyZDkzM2MxYTdiZjVh
MjYyNWNmNDFmYTZhMTAzYmY3Mi4uYTYxMThiMTExMTgzYjYwZDljYjc4NWMzMWU4OTZkYzI5OTZi
NjY0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBAIC0xMzEsNiArMTMxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgVmFsdWUqIGJpdHdpc2VDYXN0Q29uc3RhbnQoUHJvY2VkdXJl
JikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2Nl
ZHVyZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGZsb2F0VG9Eb3VibGVDb25zdGFudChQ
cm9jZWR1cmUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlKiBhYnNDb25zdGFudChQcm9jZWR1
cmUmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJikg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIFRyaVN0YXRlIGVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzCmluZGV4IDFiZDk0ODBjODk4NTU4MzViODg3M2U2MGMzMTNkYmEzZGZiYTU4MmYu
LmRiOTM4ODU5N2MxYWNjNzdjZjc0YTM3ODhmMDIwMzVmODEyMjRhMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMTcwLDYgKzE3MCwx
MiBAQCBBbmQ2NCBVOkcsIFVEOkcKICAgICBUbXAsIFRtcAogICAgIEltbSwgVG1wCiAKK0FuZERv
dWJsZSBVOkYsIFVEOkYKKyAgICBUbXAsIFRtcAorCitBbmRGbG9hdCBVOkYsIFVEOkYKKyAgICBU
bXAsIFRtcAorCiBMc2hpZnQzMiBVOkcsIFVEOkcKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRt
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCBkNzg0Yzg4ODE0NmQwNTFjNTAy
OWM0M2QzOWFkNjc3ZGE1M2JjY2QyLi5mNjkwYjMzZGY2ZTllMWQ0NmQ1MjEzNDUyNmRhZjk2ODRm
NWRlZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtMTk0MSw2ICsxOTQx
LDE0MCBAQCB2b2lkIHRlc3RCaXRBbmRXaXRoTWFza1JldHVybnNCb29sZWFucyhpbnQ2NF90IGEs
IGludDY0X3QgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIp
ID09IGV4cGVjdGVkKTsKIH0KIAorZG91YmxlIGJpdEFuZERvdWJsZShkb3VibGUgYSwgZG91Ymxl
IGIpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxkb3VibGU+KGJpdHdpc2VfY2FzdDx1aW50
NjRfdD4oYSkgJiBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KGIpKTsKK30KKwordm9pZCB0ZXN0Qml0
QW5kQXJnRG91YmxlKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjph
cmd1bWVudEZQUjApOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwg
Yml0QW5kRG91YmxlKGEsIGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ3NEb3VibGUoZG91
YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2lu
KCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEsIGIpLCBiaXRBbmREb3VibGUoYSwg
YikpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kQXJnSW1tRG91YmxlKGRvdWJsZSBhLCBkb3VibGUg
YikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAg
VmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywg
YSwgYiksIGJpdEFuZERvdWJsZShhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1zRG91
YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSBy
b290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAg
IFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Mp
LCBiaXRBbmREb3VibGUoYSwgYikpKTsKK30KKworZmxvYXQgYml0QW5kRmxvYXQoZmxvYXQgYSwg
ZmxvYXQgYikKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGZsb2F0PihiaXR3aXNlX2Nhc3Q8
dWludDMyX3Q+KGEpICYgYml0d2lzZV9jYXN0PHVpbnQzMl90PihiKSk7Cit9CisKK3ZvaWQgdGVz
dEJpdEFuZEFyZ0Zsb2F0KGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudCwgYXJndW1lbnQpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihw
cm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXRBbmRGbG9hdChhLCBhKSkpOworfQor
Cit2b2lkIHRlc3RCaXRBbmRBcmdzRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1ZSog
YXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUqIHJlc3VsdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRB
LCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJl
dHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihiKSksIGJpdEFuZEZsb2F0KGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFu
ZEFyZ0ltbUZsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1l
bnRBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJv
b3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBW
YWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdp
bigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihh
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0QW5kRmxvYXQoYSwgYikpKTsKK30KKwor
dm9pZCB0ZXN0Qml0QW5kSW1tc0Zsb2F0KGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGEpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBh
cmd1bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5k
UnVuPGZsb2F0Pihwcm9jKSwgYml0QW5kRmxvYXQoYSwgYikpKTsKK30KKwordm9pZCB0ZXN0Qml0
QW5kQXJnc0Zsb2F0V2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKGZsb2F0IGEsIGZsb2F0IGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7
CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpOworICAgIFZh
bHVlKiBhcmd1bWVudEFhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxv
YXRUb0RvdWJsZSwgT3JpZ2luKCksIGFyZ3VtZW50QSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QmFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgYXJndW1lbnRCKTsKKyAgICBWYWx1ZSogZG91YmxlUmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudEFhc0RvdWJsZSwgYXJn
dW1lbnRCYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGRvdWJsZVJlc3VsdCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
ZmxvYXRSZXN1bHQpOworCisgICAgZG91YmxlIGRvdWJsZUEgPSBhOworICAgIGRvdWJsZSBkb3Vi
bGVCID0gYjsKKyAgICBmbG9hdCBleHBlY3RlZCA9IHN0YXRpY19jYXN0PGZsb2F0PihiaXRBbmRE
b3VibGUoZG91YmxlQSwgZG91YmxlQikpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGIpKSwgZXhwZWN0ZWQpKTsKK30KKwogdm9pZCB0ZXN0Qml0T3JBcmdzKGludDY0
X3QgYSwgaW50NjRfdCBiKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMjg5Niw2ICszMDMw
LDIwMiBAQCB2b2lkIHRlc3RDbHpNZW0zMihpbnQzMl90IGEpCiAgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjx1bnNpZ25lZD4ocHJvYywgJmEpID09IGNvdW50TGVhZGluZ1plcm8oYSkpOwogfQogCit2
b2lkIHRlc3RBYnNBcmcoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEFicywgT3JpZ2luKCksCisg
ICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApKSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSksIGZhYnMoYSkpKTsKK30KKwordm9pZCB0
ZXN0QWJzSW1tKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+
YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBh
cmd1bWVudCkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MpLCBmYWJzKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEFic01lbShkb3VibGUgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhZGRyZXNzID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIE1lbW9yeVZhbHVl
KiBsb2FkRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBE
b3VibGUsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBsb2FkRG91YmxlKSk7CisKKyAgICBD
SEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgJmEpLCBmYWJzKGEp
KSk7Cit9CisKK3ZvaWQgdGVzdEFic0Fic0FyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBmaXJzdEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBGUFJJbmZvOjphcmd1bWVudEZQUjApKTsKKyAgICBWYWx1ZSogc2Vjb25kQWJzID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBmaXJzdEFicyk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgc2Vjb25k
QWJzKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9j
LCBhKSwgZmFicyhhKSkpOworfQorCit2b2lkIHRlc3RBYnNCaXR3aXNlQ2FzdEFyZyhkb3VibGUg
YSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEFzSW50NjQgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgVmFsdWUqIGFyZ3VtZW50QXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnRBc0ludDY0KTsKKyAgICBWYWx1ZSog
YWJzVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFy
Z3VtZW50QXNEb3VibGUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIGFic1ZhbHVlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oYSkpLCBmYWJz
KGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcoZG91Ymxl
IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OworICAgIFZhbHVlKiBhcmd1bWVudEFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQ2NCk7CisgICAgVmFsdWUq
IGFic1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBh
cmd1bWVudEFzRG91YmxlKTsKKyAgICBWYWx1ZSogcmVzdWx0QXNJbnQ2NCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhYnNWYWx1ZSk7CisKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHRBc0ludDY0KTsKKworICAgIGludDY0X3QgZXhwZWN0ZWRSZXN1bHQgPSBiaXR3aXNlX2Nh
c3Q8aW50NjRfdD4oZmFicyhhKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1
bjxpbnQ2NF90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oYSkpLCBleHBlY3RlZFJlc3Vs
dCkpOworfQorCit2b2lkIHRlc3RBYnNBcmcoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJv
YzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBh
cmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywg
T3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQz
Mik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2Ms
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0ltbShmbG9hdCBhKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSog
cmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgcmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7Cit9CisKK3Zv
aWQgdGVzdEFic01lbShmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRGbG9hdCA9IHJvb3QtPmFwcGVuZE5l
dzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBhZGRyZXNzKTsKKyAg
ICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdp
bigpLCBsb2FkRmxvYXQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEp
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKSkpOwor
fQorCit2b2lkIHRlc3RBYnNBYnNBcmcoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1
bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOwor
ICAgIFZhbHVlKiBmaXJzdEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBP
cmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiBzZWNvbmRBYnMgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGZpcnN0QWJzKTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmRBYnMpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKSk7Cit9CisK
K3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnRBc0ludDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QXNm
bG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LCBhcmd1bWVudEFzSW50MzIpOworICAgIFZhbHVlKiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnRBc2Zsb2F0KTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhYnNWYWx1
ZSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkpKTsK
K30KKwordm9pZCB0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZyhmbG9hdCBhKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QXNJbnQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOworICAgIFZh
bHVlKiBhcmd1bWVudEFzZmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdp
c2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnRBc0ludDMyKTsKKyAgICBWYWx1ZSogYWJzVmFsdWUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3VtZW50QXNm
bG9hdCk7CisgICAgVmFsdWUqIHJlc3VsdEFzSW50NjQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYWJzVmFsdWUpOworCisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0QXNJbnQ2
NCk7CisKKyAgICBpbnQzMl90IGV4cGVjdGVkUmVzdWx0ID0gYml0d2lzZV9jYXN0PGludDMyX3Q+
KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29t
cGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBleHBl
Y3RlZFJlc3VsdCkpOworfQorCit2b2lkIHRlc3RBYnNBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZl
cnNpb24oZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGFzRG91
YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4o
KSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCks
IHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxm
bG9hdD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZ1dpdGhFZmZlY3RmdWxEb3Vi
bGVDb252ZXJzaW9uKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQzMiA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpOworICAgIFZhbHVlKiBmbG9hdFZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50MzIpOworICAgIFZhbHVl
KiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0RvdWJsZSwg
T3JpZ2luKCksIGZsb2F0VmFsdWUpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBWYWx1ZSogZmxv
YXRSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9y
aWdpbigpLCByZXN1bHQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisgICAgVmFs
dWUqIGRvdWJsZUFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHJlc3VsdCwgZG91YmxlQWRkcmVz
cyk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmln
aW4oKSwgcmVzdWx0MzIpOworCisgICAgZG91YmxlIGVmZmVjdCA9IDA7CisgICAgaW50MzJfdCBy
ZXN1bHRWYWx1ZSA9IGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEpLCAmZWZmZWN0KTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChyZXN1bHRWYWx1ZSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIGZhYnMoYSkpKTsKK30KKwogdm9pZCB0ZXN0U3Fy
dEFyZyhkb3VibGUgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTc0OTksNiArNzgyOSwx
NSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RCaXRBbmRJbW1C
aXRBbmRBcmdJbW0zMig2LCAxLCA2KSk7CiAgICAgUlVOKHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJ
bW0zMigyNCwgMHhmZmZmLCA3KSk7CiAgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kV2l0aE1hc2tS
ZXR1cm5zQm9vbGVhbnMsIGludDY0T3BlcmFuZHMoKSwgaW50NjRPcGVyYW5kcygpKTsKKyAgICBS
VU5fVU5BUlkodGVzdEJpdEFuZEFyZ0RvdWJsZSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kQXJnc0RvdWJsZSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7Cisg
ICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kQXJnSW1tRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5f
QklOQVJZKHRlc3RCaXRBbmRJbW1zRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVz
dEJpdEFuZEFyZ0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJV
Tl9CSU5BUlkodGVzdEJpdEFuZEFyZ3NGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0
PigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9CSU5BUlkodGVz
dEJpdEFuZEFyZ0ltbUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kSW1t
c0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kQXJnc0Zsb2F0V2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CiAKICAgICBSVU4odGVzdEJpdE9yQXJncyg0
MywgNDMpKTsKICAgICBSVU4odGVzdEJpdE9yQXJncyg0MywgMCkpOwpAQCAtNzczMCw2ICs4MDY5
LDIxIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU5fVU5BUlkodGVzdENs
ekFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0Q2x6TWVtMzIsIGlu
dDY0T3BlcmFuZHMoKSk7CiAKKyAgICBSVU5fVU5BUlkodGVzdEFic0FyZywgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBYnNJbW0sIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJzTWVtLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0Fic0Fy
ZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RB
YnNCaXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAg
UlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdEFic0JpdHdpc2VDYXN0QXJnLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0FyZywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0ltbSwgZmxvYXRp
bmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic01lbSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0Fic0Fy
ZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFi
c0JpdHdpc2VDYXN0QXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJV
Tl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZywgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0FyZ1dpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbiwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5f
VU5BUlkodGVzdEFic0FyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworCiAgICAgUlVOX1VOQVJZKHRlc3RTcXJ0QXJnLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKICAgICBSVU5fVU5BUlkodGVzdFNxcnRJbW0s
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0U3Fy
dE1lbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEIzT3V0cHV0LmgKaW5kZXggYjAxZjNiY2RlNDk2OTQ4YTU4NzlmNTRkNDQ0YWY0
ZGE2NzcwYmMzNS4uOTkxNTUzYzc0YTEzY2UyMzc0MGQwMDMxOTBkMDE0OWMyYTg0Njg5YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaApAQCAtMTYyLDcgKzE2Miw3IEBA
IHB1YmxpYzoKICAgICBMVmFsdWUgYWRkV2l0aE92ZXJmbG93NjQoTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIHN1YldpdGhPdmVyZmxvdzY0KExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQogICAgIExWYWx1ZSBtdWxXaXRoT3Zl
cmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFs
dWUgZG91YmxlQWJzKExWYWx1ZSB2YWx1ZSkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGRvdWJs
ZUFicyhMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkFicywgb3JpZ2luKCksIHZhbHVlKTsgfQogCiAgICAgTFZhbHVlIGRvdWJs
ZVNpbihMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoQjM6OkRv
dWJsZSwgc2luLCB2YWx1ZSk7IH0KICAgICBMVmFsdWUgZG91YmxlQ29zKExWYWx1ZSB2YWx1ZSkg
eyByZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBjb3MsIHZhbHVlKTsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267186</attachid>
            <date>2015-12-11 13:53:41 -0800</date>
            <delta_ts>2015-12-11 21:14:44 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-152176-20151211135308.patch</filename>
            <type>text/plain</type>
            <size>55375</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzOTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZWViY2JjOWE0NWI3ODFkOThhNWM0ZjEwOTljMDU2YTBiYWEwOThhLi5lY2E2M2E3NzY1NDZhNjlm
OTMwNDlhNDYwMDJiOGQ3MTMwMjRhZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNS0xMi0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgRmxvYXRpbmcgUG9pbnQgQWJzKCkgdG8gQjMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjE3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhbiBBYnMoKSBvcGVyYXRpb24gZm9yIGZsb2F0aW5nIHBvaW50LgorCisgICAgICAgIE9u
IHg4NiwgQWJzKCkgaXMgaW1wbGVtZW50ZWQgYnkgbWFza2luZyB0aGUgdG9wIGJpdAorICAgICAg
ICBvZiB0aGUgZmxvYXRpbmcgcG9pbnQgdmFsdWUuIE9uIEFSTTY0LCB0aGVyZSBpcyBhIGJ1aWx0
aW4KKyAgICAgICAgYWJzIG9wY29kZS4KKworICAgICAgICBUbyBhY2NvdW50IGZvciB0aG9zZSBk
aWZmZXJlbmNlcywgQjMgdXNlICJBYnMiIGFzCisgICAgICAgIHRoZSBjYW5ub25pY2FsIG9wZXJh
dGlvbi4gV2hlbiB3ZSBhcmUgYWJvdXQgdG8gbG93ZXIKKyAgICAgICAgdG8gQWlyLCBBYnMgaXMg
ZXh0ZW5kZWQgb24geDg2IHRvIGdldCBhIGNsZWFuIGhhbmRsaW5nCisgICAgICAgIG9mIHRoZSBt
YXNrIGNvbnN0YW50cy4KKworICAgICAgICBUaGlzIHBhdGNoIGhhcyBvbmUgY29vbCB0aGluZyBy
ZWxhdGVkIHRvIEZUTC4KKyAgICAgICAgSWYgeW91IGRvOgorICAgICAgICAgICBAMSA9IHVuYm94
RG91YmxlKEAwKQorICAgICAgICAgICBAMiA9IGFicyhAMSkKKyAgICAgICAgICAgQDMgPSBib3hE
b3VibGUoQDIpCisKKyAgICAgICAgQjNSZWR1Y2VTdHJlbmd0aCBjb21wbGV0ZWx5IGVsaW1pbmF0
ZSB0aGUgRG91YmxlLUludGVnZXIKKyAgICAgICAgY29udmVyc2lvbi4KKworICAgICAgICBUaGUg
c3RyZW5ndGggcmVkdWN0aW9uIG9mIEFicyBpcyBhd2FyZSB0aGF0IGl0IGNhbiBkbyBhIGJpdAor
ICAgICAgICBtYXNrIG92ZXIgdGhlIGJpdGNhc3QgdXNlZCBieSB1bmJveGluZy4KKyAgICAgICAg
SWYgZXZlbiB3b3JrcyBpZiB5b3UgdXNlIGZsb2F0cyBieSBmb3JjaW5nIGZyb3VuZDogcmVkdWNl
RG91YmxlVG9GbG9hdCgpCisgICAgICAgIGVsbWluaWF0ZXMgdGhlIHVzZWxlc3MgY29udmVyc2lv
bnMsIGZvbGxvd2VkIGJ5IFJlZHVjZVN0cmVuZ3RoCisgICAgICAgIHRoYXQgcmVtb3ZlcyB0aGUg
c3dpdGNoIGZyb20gR1AgdG8gRlAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmFuZEZsb2F0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcHNfcnIpOgorICAgICAgICAq
IGIzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJs
ZVZhbHVlOjpiaXRBbmRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJsZVZh
bHVlOjphYnNDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmg6Cisg
ICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29u
c3RGbG9hdFZhbHVlOjpiaXRBbmRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmFic0NvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5o
OgorICAgICAgICAqIGIzL0IzR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJh
dGVUb0Fpcik6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMpOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaDogQWRk
ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAg
ICAgKiBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNl
U3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIz
L0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFic0NvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVl
OjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgorICAgICAgICAqIGIz
L0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAg
ICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmJpdEFuZERvdWJsZSk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJnRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRBcmdzRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdJbW1E
b3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEltbXNEb3VibGUpOgorICAgICAg
ICAoSlNDOjpCMzo6Yml0QW5kRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFy
Z0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdzRmxvYXQpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFyZ0ltbUZsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRJbW1zRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFyZ3NGbG9h
dFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJz
QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBYnNJbW0pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEFic01lbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJzQWJzQXJnKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJz
QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RB
YnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlQWJzKToKKwogMjAxNS0xMi0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmph
bWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0pTQ10gTGl0dGxlIGNsZWFudXAgb2YgRlRMT3V0
cHV0IHR5cGUgY2FzdHMgYW5kIGNvbnZlcnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNzBkYmIyZWZmNzk4OWMzOTA5NmEyMTMzMmFlNTM3NjJjYzI2YzY4NS4uZmZi
NWQ4NWU4Mjk5Y2Y3MWI0NDZhZWRhYTcyOWJlM2Q4Y2EzODg3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE0LDYgKzExNCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgYjMvQjNIZWFwUmFuZ2UuY3BwCiAgICAgYjMvQjNJbnNlcnRpb25TZXQuY3Bw
CiAgICAgYjMvQjNMb3dlck1hY3Jvcy5jcHAKKyAgICBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcAogICAgIGIzL0IzTG93ZXJUb0Fpci5jcHAKICAgICBiMy9CM01lbW9yeVZh
bHVlLmNwcAogICAgIGIzL0IzTW92ZUNvbnN0YW50cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGJlZTE2ZmIxNGM5ZWUxM2E2ZmIzNGNhMjc4NzE1YjQ0NTYxMTE3Ny4uNDk4
YzE3N2E0OWYxZjdiYzNhZjNmNDg2OTJhODNjMGU1YmJmY2IxZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTExMzUsNiArMTEzNSw4IEBACiAJCTQzNDIyQTYzMUMxNThFNkQwMEUy
RUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjExQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9h
dFZhbHVlLmggKi87IH07CiAJCTQzNDIyQTY2MUMxNjI2NzUwMEUyRUI5OCAvKiBCM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5j
cHAgKi87IH07CiAJCTQzNDIyQTY3MUMxNjI2NzgwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRv
RmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
NDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCAqLzsgfTsK
KwkJNDM3Q0Q4MDYxQzFCMzVEOTAwQjQyNTY1IC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXph
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
N0NEODA1MUMxQjM1QkMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25z
LmggKi87IH07CisJCTQzN0NEODA3MUMxQjM1REMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0
ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQzN0NEODA0MUMxQjM1QkMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJP
cHRpbWl6YXRpb25zLmNwcCAqLzsgfTsKIAkJNDQ0M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZv
dW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovOyB9OwogCQk0NTE1MzlCOTEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDUxNTM5QjgxMkRDOTk0NTAw
RUY3QUM0IC8qIFlhcnIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MjY3OEY4RTFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjc4
RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovOyB9OwpAQCAt
MjAxNiwxNyArMjAxOCwxNyBAQAogCQlGRTM5MTM1NDFCNzk0RjZFMDBFREFGNzEgLyogTGl2ZU9i
amVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUzOTEzNTIxQjc5NEFDOTAwRURBRjcxIC8qIExpdmVPYmplY3RMaXN0LmNwcCAqLzsgfTsK
IAkJRkUzOTEzNTUxQjc5NEY4QTAwRURBRjcxIC8qIExpdmVPYmplY3REYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM5MTM1MTFCNzk0QUM5MDBF
REFGNzEgLyogTGl2ZU9iamVjdERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlGRTM5MTM1NjFCNzk0RjhGMDBFREFGNzEgLyogTGl2ZU9iamVj
dExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MzkxMzUzMUI3OTRBQzkwMEVEQUY3MSAvKiBMaXZlT2JqZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFM0EwNkE2MUMxMEI3MkQwMDM5
MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QTQxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2Vu
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKLQkJRkUzQTA2
QTgxQzEwQkM4MTAwMzkwRkREIC8qIEpJVEJpdEJpbmFyeU9wR2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZBNzFDMTBCQzc0MDAz
OTBGREQgLyogSklUQml0QmluYXJ5T3BHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRf
VEFHUyA9ICgpOyB9OyB9OwotCQlGRTNBMDZBQzFDMTBDMzlFMDAzOTBGREQgLyogSklUQml0T3JH
ZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUzQTA2QTMxQzEwQjcwODAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmNwcCAqLzsg
c2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTNBMDZCMTFDMTBDQjg0MDAz
OTBGREQgLyogSklUQml0QW5kR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkFEMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRB
bmRHZW5lcmF0b3IuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0J
CUZFM0EwNkIyMUMxMENCODkwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkFFMUMxMENCNkYw
MDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFH
UyA9ICgpOyB9OyB9OwotCQlGRTNBMDZCMzFDMTBDQjhFMDAzOTBGREQgLyogSklUQml0WG9yR2Vu
ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFM0EwNkFGMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRYb3JHZW5lcmF0b3IuY3BwICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUZFM0EwNkI0MUMxMENCOTMwMDM5
MEZERCAvKiBKSVRCaXRYb3JHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkIwMUMxMENCNkYwMDM5MEZERCAvKiBKSVRCaXRYb3JH
ZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTNB
MDZCRDFDMTEwNDBEMDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkI2MUMxMTAzRDkw
MDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NF
VF9UQUdTID0gKCk7IH07IH07Ci0JCUZFM0EwNkJFMUMxMTA0MTIwMDM5MEZERCAvKiBKSVRMZWZ0
U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFM0EwNkI3MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlGRTNBMDZCRjFDMTEw
NDE2MDAzOTBGREQgLyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZCODFDMTEwM0Q5MDAzOTBGREQg
LyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1Mg
PSAoKTsgfTsgfTsKLQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFM0EwNkI5MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJRkUzQTA2QTYxQzEwQjcyRDAw
MzkwRkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZBNDFDMTBCNzA4MDAzOTBGREQgLyogSklUQml0T3JH
ZW5lcmF0b3IuaCAqLzsgfTsKKwkJRkUzQTA2QTgxQzEwQkM4MTAwMzkwRkREIC8qIEpJVEJpdEJp
bmFyeU9wR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTNBMDZBNzFDMTBCQzc0MDAzOTBGREQgLyogSklUQml0QmluYXJ5T3BHZW5lcmF0
b3IuaCAqLzsgfTsKKwkJRkUzQTA2QUMxQzEwQzM5RTAwMzkwRkREIC8qIEpJVEJpdE9yR2VuZXJh
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
M0EwNkEzMUMxMEI3MDgwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5jcHAgKi87IH07CisJ
CUZFM0EwNkIxMUMxMENCODQwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QUQxQzEwQ0I2
RjAwMzkwRkREIC8qIEpJVEJpdEFuZEdlbmVyYXRvci5jcHAgKi87IH07CisJCUZFM0EwNkIyMUMx
MENCODkwMDM5MEZERCAvKiBKSVRCaXRBbmRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkFFMUMxMENCNkYwMDM5MEZERCAvKiBK
SVRCaXRBbmRHZW5lcmF0b3IuaCAqLzsgfTsKKwkJRkUzQTA2QjMxQzEwQ0I4RTAwMzkwRkREIC8q
IEpJVEJpdFhvckdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTNBMDZBRjFDMTBDQjZGMDAzOTBGREQgLyogSklUQml0WG9yR2VuZXJh
dG9yLmNwcCAqLzsgfTsKKwkJRkUzQTA2QjQxQzEwQ0I5MzAwMzkwRkREIC8qIEpJVEJpdFhvckdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUzQTA2QjAxQzEwQ0I2RjAwMzkwRkREIC8qIEpJVEJpdFhvckdlbmVyYXRvci5oICovOyB9Owor
CQlGRTNBMDZCRDFDMTEwNDBEMDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkI2MUMx
MTAzRDkwMDM5MEZERCAvKiBKSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3BwICovOyB9OworCQlGRTNB
MDZCRTFDMTEwNDEyMDAzOTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTNBMDZCNzFDMTEwM0Q5MDAz
OTBGREQgLyogSklUTGVmdFNoaWZ0R2VuZXJhdG9yLmggKi87IH07CisJCUZFM0EwNkJGMUMxMTA0
MTYwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkI4MUMxMTAzRDkwMDM5MEZERCAv
KiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmNwcCAqLzsgfTsKKwkJRkUzQTA2QzAxQzExMDQxQTAw
MzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkI5MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRS
aWdodFNoaWZ0R2VuZXJhdG9yLmggKi87IH07CiAJCUZFNDIzODkwMUJFMThDM0MwMDUxNDczNyAv
KiBKSVRTdWJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU0MjM4OEYxQkUxOEMxMjAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5j
cHAgKi87IH07CiAJCUZFNEJGRjJCMUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92ZXJyaWRl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTRC
RkYyOTFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuY3BwICovOyB9OwogCQlG
RTRCRkYyQzFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNEJGRjJBMUFENDc2RTcwMDA4
OEY4NyAvKiBGdW5jdGlvbk92ZXJyaWRlcy5oICovOyB9OwpAQCAtMzIxMiw2ICszMjE0LDggQEAK
IAkJNDM0MjJBNjExQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQ29uc3RGbG9hdFZhbHVlLmg7IHBhdGggPSBi
My9CM0NvbnN0RmxvYXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQy
MkE2NDFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA7
IHBhdGggPSBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzQyMkE2NTFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zs
b2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9G
bG9hdC5oOyBwYXRoID0gYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQzN0NEODA0MUMxQjM1QkMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwOyBwYXRoID0gYjMvQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQzN0NEODA1MUMxQjM1QkMwMEI0MjU2NSAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMuaDsgcGF0aCA9IGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXph
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5MDk3RUUwRjhGODFCNTAw
NzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyogWWFyci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyLmg7IHBhdGggPSB5YXJyL1lhcnIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBq
c2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IH07CkBAIC00NjM3
LDYgKzQ2NDEsOCBAQAogCQkJCTBGRUM4NUI2MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlv
blNldElubGluZXMuaCAqLywKIAkJCQkwRjMzOEUxOTFCRjI4NkVBMDAxM0M4OEYgLyogQjNMb3dl
ck1hY3Jvcy5jcHAgKi8sCiAJCQkJMEYzMzhFMUExQkYyODZFQTAwMTNDODhGIC8qIEIzTG93ZXJN
YWNyb3MuaCAqLywKKwkJCQk0MzdDRDgwNDFDMUIzNUJDMDBCNDI1NjUgLyogQjNMb3dlck1hY3Jv
c0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgKi8sCisJCQkJNDM3Q0Q4MDUxQzFCMzVCQzAwQjQyNTY1
IC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCAqLywKIAkJCQkwRkVDODREMzFC
REFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmNwcCAqLywKIAkJCQkwRkVDODRENDFCREFD
REFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi8sCiAJCQkJMEZFQzg0RDUxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuY3BwICovLApAQCAtNzcyNyw2ICs3NzMzLDcgQEAKIAkJ
CQkwRjEzOTEyQzE2NzcxQzNEMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QjIxQzEwQ0I4OTAwMzkwRkREIC8qIEpJVEJpdEFu
ZEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEM0U0MEUxQjYxOEI2NjAwQzgwRTFF
IC8qIFByb3BlcnR5Q29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MzdDRDgwNjFDMUIz
NUQ5MDBCNDI1NjUgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdGQjYxMDAxMDQwQzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5NTQzN0QwRUJBNzBGRDAwNzJCNkQzIC8qIFByb3Bl
cnR5TWFwSGFzaFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjE1OEFCMzE1NUM4QjQwMDBC
NDVDOUMgLyogUHJvcGVydHlOYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTg0ODUsNiArODQ5Miw3
IEBACiAJCQkJMEZFQzg1QjkxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRUM4NTFEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9B
aXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MUYxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
TWVtb3J5VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDM3Q0Q4MDcxQzFCMzVEQzAwQjQy
NTY1IC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZFQzg1MjExQkRBQ0RBQzAwODBGRjc0IC8qIEIzT3Bjb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRUM4NTIzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM09yaWdpbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVDODUyNTFCREFDREFDMDA4MEZGNzQgLyogQjNQYXRjaHBvaW50U3Bl
Y2lhbC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCA2YzJmNjZiNTli
ZjY3MjlkNTBhMDBmYjYyZjY3NzExNjRkNWYyNjI5Li5hODUwNDVlZmFkNWY3ZTJkZjhlNjY3YTMy
YTQ0YjQyYjgwMTYxODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0xMDEzLDYgKzEwMTMsMTcg
QEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tdWxzc19tcihzcmMub2Zmc2V0LCBzcmMu
YmFzZSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBhbmREb3VibGUoRlBSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIC8vIEFORFBTIGlzIGRlZmluZWQg
b24gMTI4Yml0cyBhbmQgaXMgc2hvcnRlciB0aGFuIEFORFBELgorICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRwc19ycihzcmMsIGRzdCk7CisgICAgfQorCisgICAgdm9pZCBhbmRGbG9hdChGUFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YW5kcHNfcnIoc3JjLCBkc3QpOworICAgIH0KKwogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3Vi
bGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzU1NFMlByZXNlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAppbmRleCAzMmUzYzBkMTZiMTBmZjE3NGJlNGU2MTIzNTI0M2E2N2I2
NWY2ODk3Li44OGIzY2RmNTViMmUxZjFmMDI4NjE2MmQ5ZDY4MzU2OTIwNDRkNjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTI3Myw2
ICsyNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBPUDJfRElWU0RfVnNkV3NkICAgID0gMHg1RSwK
ICAgICAgICAgT1AyX01PVk1TS1BEX1ZkRWQgICA9IDB4NTAsCiAgICAgICAgIE9QMl9TUVJUU0Rf
VnNkV3NkICAgPSAweDUxLAorICAgICAgICBPUDJfQU5EUFNfVnBkV3BkICAgID0gMHg1NCwKICAg
ICAgICAgT1AyX0FORE5QRF9WcGRXcGQgICA9IDB4NTUsCiAgICAgICAgIE9QMl9YT1JQRF9WcGRX
cGQgICAgPSAweDU3LAogICAgICAgICBPUDJfTU9WRF9WZEVkICAgICAgID0gMHg2RSwKQEAgLTIy
ODMsNiArMjI4NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChP
UDJfRElWU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQog
CisgICAgdm9pZCBhbmRwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0FORFBTX1ZwZFdwZCwg
KFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKwogICAgIHZvaWQgeG9y
cHNfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YT1JQRF9WcGRXcGQsIChSZWdpc3RlcklEKWRz
dCwgKFJlZ2lzdGVySUQpc3JjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0RG91YmxlVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3REb3VibGVWYWx1ZS5jcHAKaW5kZXggNzkwODhmNzljZjliMjVhMzViMWZiYzdmY2ZlNWY1Yjgz
MzEwNDA4Mi4uYTA0MWMwZmRhMzQ2ZDU1OTlkN2Q4MDVjN2M3ZGQ1NTFhZmU2MjkwNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKQEAgLTY5
LDYgKzY5LDE0IEBAIFZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjptdWxDb25zdGFudChQcm9jZWR1
cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8
Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgKiBvdGhlci0+YXNEb3VibGUoKSk7
CiB9CiAKK1ZhbHVlKiBDb25zdERvdWJsZVZhbHVlOjpiaXRBbmRDb25zdGFudChQcm9jZWR1cmUm
IHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNE
b3VibGUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZG91YmxlIHJlc3VsdCA9IGJp
dHdpc2VfY2FzdDxkb3VibGU+KGJpdHdpc2VfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkgJiBiaXR3
aXNlX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0RvdWJsZSgpKSk7CisgICAgcmV0dXJuIHByb2Mu
YWRkPENvbnN0RG91YmxlVmFsdWU+KG9yaWdpbigpLCByZXN1bHQpOworfQorCiBWYWx1ZSogQ29u
c3REb3VibGVWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIGJpdHdpc2Vf
Y2FzdDxpbnQ2NF90PihtX3ZhbHVlKSk7CkBAIC03OSw2ICs4NywxMSBAQCBWYWx1ZSogQ29uc3RE
b3VibGVWYWx1ZTo6ZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QK
ICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG1fdmFsdWUpKTsKIH0KIAorVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6OmFic0Nv
bnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29u
c3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIGZhYnMobV92YWx1ZSkpOworfQorCiBWYWx1ZSogQ29u
c3REb3VibGVWYWx1ZTo6c3FydENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAg
ICByZXR1cm4gcHJvYy5hZGQ8Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIHNxcnQobV92YWx1
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVW
YWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCmlu
ZGV4IGUzYjc5YzJhNDAyMWQ0ZGYxMDVhMTJmMzI5ZjJkNmUwN2QyZWVjODkuLmRhOWEzOTVlYjg4
YzFmNzFlYWZkYTkxNTIwMWUyNTNjOTI5NTZkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmgKQEAgLTQ3LDggKzQ3LDEwIEBAIHB1YmxpYzoKICAg
ICBWYWx1ZSogZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKICAgICBWYWx1ZSogbW9kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbXVsQ29uc3RhbnQoUHJvY2Vk
dXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZSogYml0
QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWYWx1ZSogZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIFZhbHVlKiBhYnNDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWYWx1ZSogc3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgVHJpU3RhdGUgZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RG
bG9hdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1
ZS5jcHAKaW5kZXggNDQ3MTJjMzZiZjYyY2U4Zjk2NGU1ZTU1YjAyYTQ4Zjk2YTliZTljMy4uNDU4
N2E4NzQ4ZWNjNmY0ZGQxZjMxMWU0OTZjYzMzMDM0ODMxM2FkOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCkBAIC02OSw2ICs2OSwxNCBAQCBW
YWx1ZSogQ29uc3RGbG9hdFZhbHVlOjptdWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVl
PihvcmlnaW4oKSwgbV92YWx1ZSAqIG90aGVyLT5hc0Zsb2F0KCkpOwogfQogCitWYWx1ZSogQ29u
c3RGbG9hdFZhbHVlOjpiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBmbG9hdCByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KGJp
dHdpc2VfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgJiBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KG90
aGVyLT5hc0Zsb2F0KCkpKTsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihv
cmlnaW4oKSwgcmVzdWx0KTsKK30KKwogVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6Yml0d2lzZUNh
c3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHByb2MuYWRk
PENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSk7
CkBAIC03OSw2ICs4NywxMSBAQCBWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjpmbG9hdFRvRG91Ymxl
Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25z
dERvdWJsZVZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3ZhbHVlKSk7CiB9
CiAKK1ZhbHVlKiBDb25zdEZsb2F0VmFsdWU6OmFic0NvbnN0YW50KFByb2NlZHVyZSYgcHJvYykg
Y29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMobV92YWx1ZSkpKTsKK30KKwogVmFsdWUqIENvbnN0Rmxv
YXRWYWx1ZTo6c3FydENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICByZXR1
cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNxcnQobV92YWx1ZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0RmxvYXRWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9h
dFZhbHVlLmgKaW5kZXggMWZmZjE0YTA1ZWE5MGIyYmI0N2FhYWMyNjAxNjlhODllZGY4Y2Y0Mi4u
ZGMzOGJlM2Y1NDU0NDdjODVhN2NhNDhkY2UxY2E3YjAxNDFhZjE5MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKQEAgLTQ2LDggKzQ2LDEwIEBAIHB1
YmxpYzoKICAgICBWYWx1ZSogc3ViQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwg
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbXVsQ29uc3Rh
bnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBW
YWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKICAgICBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBj
b25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogZmxvYXRUb0RvdWJsZUNvbnN0YW50KFByb2NlZHVy
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBhYnNDb25zdGFudChQcm9jZWR1cmUmKSBj
b25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogc3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgVHJpU3RhdGUgZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzR2VuZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3Bw
CmluZGV4IDMzMDI4MmU2ZjFlMTE1OThlYTgxZmMwYjExNjdmYmY5YjEzZGVkY2YuLjA4NmQ1NjU1
NDkwYjhjMmQ2ZWZiNWFhOGYxNmIwNTMzOTQ5YjAyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNHZW5lcmF0ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBaXJJbnN0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCiAjaW5jbHVkZSAiQjNMb3dlck1hY3Jvcy5o
IgorI2luY2x1ZGUgIkIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCIKICNpbmNsdWRl
ICJCM0xvd2VyVG9BaXIuaCIKICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMuaCIKICNpbmNsdWRl
ICJCM1Byb2NlZHVyZS5oIgpAQCAtODIsNiArODMsOCBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJv
Y2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsKQogICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAgfQogCisgICAgbG93
ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMocHJvY2VkdXJlKTsKKwogICAgIG1vdmVDb25zdGFu
dHMocHJvY2VkdXJlKTsKIAogICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1p
emF0aW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcwY2M0MWE1NDIyNTQyMzUzZjVjZTdkODhkNTMzY2Rk
OWQ0NTEyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIgorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNs
dWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQjNDb25zdERvdWJsZVZhbHVl
LmgiCisjaW5jbHVkZSAiQjNDb25zdEZsb2F0VmFsdWUuaCIKKyNpbmNsdWRlICJCM0luc2VydGlv
blNldElubGluZXMuaCIKKyNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIExvd2VyTWFjcm9zIHsK
K3B1YmxpYzoKKyAgICBMb3dlck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgICAgIDogbV9w
cm9jKHByb2MpCisgICAgICAgICwgbV9ibG9ja0luc2VydGlvblNldChwcm9jKQorICAgICAgICAs
IG1faW5zZXJ0aW9uU2V0KHByb2MpCisgICAgeworICAgIH0KKworICAgIGJvb2wgcnVuKCkKKyAg
ICB7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKKyAgICAgICAg
ICAgIG1fYmxvY2sgPSBibG9jazsKKyAgICAgICAgICAgIHByb2Nlc3NDdXJyZW50QmxvY2soKTsK
KyAgICAgICAgfQorICAgICAgICBtX2NoYW5nZWQgfD0gbV9ibG9ja0luc2VydGlvblNldC5leGVj
dXRlKCk7CisgICAgICAgIGlmIChtX2NoYW5nZWQpIHsKKyAgICAgICAgICAgIG1fcHJvYy5yZXNl
dFJlYWNoYWJpbGl0eSgpOworICAgICAgICAgICAgbV9wcm9jLmludmFsaWRhdGVDRkcoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbV9jaGFuZ2VkOworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdm9pZCBwcm9jZXNzQ3VycmVudEJsb2NrKCkKKyAgICB7CisgICAgICAgIGZvciAobV9p
bmRleCA9IDA7IG1faW5kZXggPCBtX2Jsb2NrLT5zaXplKCk7ICsrbV9pbmRleCkgeworICAgICAg
ICAgICAgbV92YWx1ZSA9IG1fYmxvY2stPmF0KG1faW5kZXgpOworICAgICAgICAgICAgbV9vcmln
aW4gPSBtX3ZhbHVlLT5vcmlnaW4oKTsKKyAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bj
b2RlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQWJzOiB7CisgICAgICAgICAgICAgICAgLy8gQVJN
IHN1cHBvcnRzIHRoaXMgaW5zdHJ1Y3Rpb24gbmF0aXZlbHkuCisgICAgICAgICAgICAgICAgaWYg
KGlzQVJNNjQoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBWYWx1ZSogbWFzayA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPnR5
cGUoKSA9PSBEb3VibGUpCisgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBtX2luc2VydGlvblNl
dC5pbnNlcnQ8Q29uc3REb3VibGVWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIGJpdHdpc2VfY2Fz
dDxkb3VibGU+KH4oMWwgPDwgNjMpKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobV92YWx1
ZS0+dHlwZSgpID09IEZsb2F0KQorICAgICAgICAgICAgICAgICAgICBtYXNrID0gbV9pbnNlcnRp
b25TZXQuaW5zZXJ0PENvbnN0RmxvYXRWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIGJpdHdpc2Vf
Y2FzdDxmbG9hdD4ofigxIDw8IDMxKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICBWYWx1ZSogcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBC
aXRBbmQsIG1fb3JpZ2luLCBtX3ZhbHVlLT5jaGlsZCgwKSwgbWFzayk7CisgICAgICAgICAgICAg
ICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShyZXN1bHQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2luc2VydGlv
blNldC5leGVjdXRlKG1fYmxvY2spOworICAgIH0KKyAgICAKKyAgICBQcm9jZWR1cmUmIG1fcHJv
YzsKKyAgICBCbG9ja0luc2VydGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OworICAgIEluc2Vy
dGlvblNldCBtX2luc2VydGlvblNldDsKKyAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOworICAgIHVu
c2lnbmVkIG1faW5kZXg7CisgICAgVmFsdWUqIG1fdmFsdWU7CisgICAgT3JpZ2luIG1fb3JpZ2lu
OworICAgIGJvb2wgbV9jaGFuZ2VkIHsgZmFsc2UgfTsKK307CisKK2Jvb2wgbG93ZXJNYWNyb3NJ
bXBsKFByb2NlZHVyZSYgcHJvYykKK3sKKyAgICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9j
KTsKKyAgICByZXR1cm4gbG93ZXJNYWNyb3MucnVuKCk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQorCitib29sIGxvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zKFByb2NlZHVyZSYg
cHJvYykKK3sKKyAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgImxvd2VyTWFjcm9zQWZ0
ZXJPcHRpbWl6YXRpb25zIik7CisgICAgYm9vbCByZXN1bHQgPSBsb3dlck1hY3Jvc0ltcGwocHJv
Yyk7CisgICAgaWYgKHNob3VsZFZhbGlkYXRlSVIoKSkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IWxvd2VyTWFjcm9zSW1wbChwcm9jKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGJhZjU2M2NkN2MxNDBiNjBiZTllYjAxZmUyMTdkNjFj
ZTEyYzI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQjNMb3dlck1hY3Jv
c0FmdGVyT3B0aW1pemF0aW9uc19oCisjZGVmaW5lIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXph
dGlvbnNfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7CisKK2NsYXNzIFByb2NlZHVyZTsKKworLy8gTG93ZXIgY2VydGFpbiBoaWdoIGxldmVs
IG9wY29kZXMgdG8gbG93ZXItbGV2ZWwgb3Bjb2RlIHRvIGhlbHAgY29kZSBnZW5lcmF0aW9uLgor
Citib29sIGxvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zKFByb2NlZHVyZSYpOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKKyNlbmRp
ZiAvLyBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zX2gKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBmMTY2ZjRlNWJmOTk3MjJlNDFlN2VlMzE0
YjNjNWE4ZjY3MjU0OTY1Li5iYmUwOTJlOGE5ZjhkMGVlNzk2YTJiMTAxZDRkODM3NTExMzA5MzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTQ1OSw3
ICsxNDU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQml0QW5kOiB7
Ci0gICAgICAgICAgICBhcHBlbmRCaW5PcDxBbmQzMiwgQW5kNjQsIENvbW11dGF0aXZlPigKKyAg
ICAgICAgICAgIGFwcGVuZEJpbk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9hdCwg
Q29tbXV0YXRpdmU+KAogICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVl
LT5jaGlsZCgxKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IGJjNjA5MzU3M2IzMDc3OGNlY2MwNWQwZjI4Zjcx
YmE5MmI5MjNiYTAuLjM2ZTIwZWMwZGI1MGViYzU2MzY5ZjU5YzM0MmUzNDNiZTViNjVmMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtMTQ2LDYgKzE0Niw5IEBAIHZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNh
c2UgQ2x6OgogICAgICAgICBvdXQucHJpbnQoIkNseiIpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBBYnM6CisgICAgICAgIG91dC5wcmludCgiQWJzIik7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFNxcnQ6CiAgICAgICAgIG91dC5wcmludCgiU3FydCIpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCmluZGV4IDE0YWVjNGEyYTQ4N2VkMDRhYjM3
MDAxZjU5NzU0MjIwM2MxMTcxNDMuLjFjMGI4NmEzNmViODFlZTM2MWNjNWY4OGEyYWNlM2RlNjdk
N2EzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCkBAIC04NCw3ICs4NCw4IEBA
IGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgWlNociwgLy8gTG9naWNhbCBTaGlmdC4KICAg
ICBDbHosIC8vIENvdW50IGxlYWRpbmcgemVyb3MuCiAKLSAgICAvLyBEb3VibGUgbWF0aC4KKyAg
ICAvLyBGbG9hdGluZyBwb2ludCBtYXRoLgorICAgIEFicywKICAgICBTcXJ0LAogCiAgICAgLy8g
Q2FzdHMgYW5kIHN1Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZURvdWJsZVRvRmxvYXQuY3BwCmluZGV4IDhhMTNlNzZhMTAyOTEyNjg3ZTI4NWJlZjQzMjI3MGUz
M2IxZjk2MWUuLjg2ODg0ZmFiOTQ0YTM3ZGU0YWQxN2U2Yzk2ZjVjNzUwZDQ0YzgwMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3Bw
CkBAIC00OCw2ICs0OCw3IEBAIHZvaWQgYXR0ZW1wdFNpbXBsaWZpY2F0aW9uKFZhbHVlKiBjYW5k
aWRhdGUpCiAgICAgICAgICAgICBjYW5kaWRhdGUtPnNldFR5cGUoRmxvYXQpOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWJzOgogICAgIGNhc2UgU3FydDoKICAgICAgICAg
aWYgKGNhbmRpZGF0ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEZsb2F0VG9Eb3VibGUpIHsKICAg
ICAgICAgICAgIGNhbmRpZGF0ZS0+Y2hpbGQoMCkgPSBjYW5kaWRhdGUtPmNoaWxkKDApLT5jaGls
ZCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApp
bmRleCBkN2FhMDliNzI4MDlhNzExNmU0MjVlNTQwODVhNzc2MDcyODhmZDMzLi4xYjZhNzAyNmMz
OTk0MDU1ZWYzZjJlNWE2MjI0OWEzNThjZTRkMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC00OTQsNiArNDk0LDM5IEBAIHByaXZhdGU6
CiAKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgQWJzOgorICAgICAgICAgICAg
Ly8gVHVybiB0aGlzOiBBYnMoY29uc3RhbnQpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IGZh
YnM8dmFsdWUtPnR5cGUoKT4oY29uc3RhbnQpCisgICAgICAgICAgICBpZiAoVmFsdWUqIGNvbnN0
YW50ID0gbV92YWx1ZS0+Y2hpbGQoMCktPmFic0NvbnN0YW50KG1fcHJvYykpIHsKKyAgICAgICAg
ICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKGNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBBYnMoQWJz
KHZhbHVlKSkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogQWJzKHZhbHVlKQorICAgICAgICAg
ICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApLT5vcGNvZGUoKSA9PSBBYnMpIHsKKyAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVy
biB0aGlzOiBBYnMoQml0d2lzZUNhc3QodmFsdWUpKQorICAgICAgICAgICAgLy8gSW50byB0aGlz
OiBCaXR3aXNlQ2FzdChBbmQodmFsdWUsIG1hc2stdG9wLWJpdCkpCisgICAgICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEJpdHdpc2VDYXN0KSB7CisgICAgICAgICAg
ICAgICAgVmFsdWUqIG1hc2s7CisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPnR5cGUoKSA9
PSBEb3VibGUpCisgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBtX2luc2VydGlvblNldC5pbnNl
cnQ8Q29uc3Q2NFZhbHVlPihtX2luZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgfigxbCA8PCA2Mykp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydDxDb25zdDMyVmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigp
LCB+KDFsIDw8IDMxKSk7CisKKyAgICAgICAgICAgICAgICBWYWx1ZSogYml0QW5kID0gbV9pbnNl
cnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBCaXRBbmQsIG1fdmFsdWUtPm9yaWdpbigp
LAorICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksCisgICAg
ICAgICAgICAgICAgICAgIG1hc2spOworICAgICAgICAgICAgICAgIFZhbHVlKiBjYXN0ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBCaXR3aXNlQ2FzdCwgbV92YWx1ZS0+
b3JpZ2luKCksIGJpdEFuZCk7CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJ
ZGVudGl0eShjYXN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU3FydDoKICAgICAgICAgICAgIC8vIFR1
cm4gdGhpczogU3FydChjb25zdGFudCkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogc3FydDx2
YWx1ZS0+dHlwZSgpPihjb25zdGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRl
LmNwcAppbmRleCBmOTk2NWU2Yjc4ODc1ZTRjNjk5ZGVmN2ZmOGM1Mzg0ZDE1NmU5Yzk5Li4yM2Rk
MzMzMWYxNjc5MGU0Y2JkZDFhMGFlNDNmNjY5Y2FjY2E1YmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0xNTQsNiArMTU0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgY2FzZSBNdWw6CiAgICAgICAgICAgICBjYXNlIERpdjoKICAgICAgICAgICAgIGNhc2Ug
TW9kOgorICAgICAgICAgICAgY2FzZSBCaXRBbmQ6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
PT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0xNjEsNyAr
MTYyLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBDaGlsbERpdjoKICAgICAgICAgICAgIGNhc2UgQ2hpbGxNb2Q6Ci0gICAgICAgICAgICBjYXNl
IEJpdEFuZDoKICAgICAgICAgICAgIGNhc2UgQml0T3I6CiAgICAgICAgICAgICBjYXNlIEJpdFhv
cjoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAo
IkF0ICIsICp2YWx1ZSkpOwpAQCAtMjA5LDYgKzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQ2NCwgKCJBdCAiLCAq
dmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMy
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBBYnM6CiAgICAgICAgICAgICBjYXNlIFNxcnQ6CiAgICAgICAgICAgICAgICAgVkFMSURB
VEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURShpc0Zsb2F0KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAi
LCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCA2N2NiMjI2
NDc5NDJhMmNjMTFiZjE1ZjYyODNkNGYzNjdiMjE0OWY3Li5kMmYwMWMyZjU0MTZmODQyN2FmMTJk
NDE2MzNkNGIwMmFmNzZiNWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBA
IC0yMTQsNiArMjE0LDExIEBAIFZhbHVlKiBWYWx1ZTo6ZmxvYXRUb0RvdWJsZUNvbnN0YW50KFBy
b2NlZHVyZSYpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1ZhbHVlKiBWYWx1ZTo6
YWJzQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KwogVmFsdWUqIFZhbHVlOjpzcXJ0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3QKIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTM1MCw2ICszNTUsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3Rz
KCkgY29uc3QKICAgICBjYXNlIFNTaHI6CiAgICAgY2FzZSBaU2hyOgogICAgIGNhc2UgQ2x6Ogor
ICAgIGNhc2UgQWJzOgogICAgIGNhc2UgU3FydDoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAg
IGNhc2UgU0V4dDg6CkBAIC00MjYsNiArNDMyLDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNv
bnN0CiAgICAgY2FzZSBGcmFtZVBvaW50ZXI6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleShvcGNv
ZGUoKSwgdHlwZSgpKTsKICAgICBjYXNlIElkZW50aXR5OgorICAgIGNhc2UgQWJzOgogICAgIGNh
c2UgU3FydDoKICAgICBjYXNlIFNFeHQ4OgogICAgIGNhc2UgU0V4dDE2OgpAQCAtNTMxLDYgKzUz
OCw3IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoT3Bjb2RlIG9wY29kZSwgVmFsdWUqIGZpcnN0Q2hp
bGQsIFZhbHVlKiBzZWNvbmRDaGlsZCkKICAgICBjYXNlIFNTaHI6CiAgICAgY2FzZSBaU2hyOgog
ICAgIGNhc2UgQ2x6OgorICAgIGNhc2UgQWJzOgogICAgIGNhc2UgU3FydDoKICAgICBjYXNlIENo
ZWNrQWRkOgogICAgIGNhc2UgQ2hlY2tTdWI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaApp
bmRleCA3YWU3ZDJiNjJkOTMzYzFhN2JmNWEyNjI1Y2Y0MWZhNmExMDNiZjcyLi5hNjExOGIxMTEx
ODNiNjBkOWNiNzg1YzMxZTg5NmRjMjk5NmI2NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWYWx1ZSogYml0
d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBk
b3VibGVUb0Zsb2F0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1
ZSogZmxvYXRUb0RvdWJsZUNvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OworICAgIHZpcnR1YWwg
VmFsdWUqIGFic0NvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUq
IHNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgVHJpU3RhdGUg
ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMWJkOTQ4MGM4OTg1NTgz
NWI4ODczZTYwYzMxM2RiYTNkZmJhNTgyZi4uZGI5Mzg4NTk3YzFhY2M3N2NmNzRhMzc4OGYwMjAz
NWY4MTIyNGEyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzCkBAIC0xNzAsNiArMTcwLDEyIEBAIEFuZDY0IFU6RywgVUQ6RwogICAgIFRtcCwg
VG1wCiAgICAgSW1tLCBUbXAKIAorQW5kRG91YmxlIFU6RiwgVUQ6RgorICAgIFRtcCwgVG1wCisK
K0FuZEZsb2F0IFU6RiwgVUQ6RgorICAgIFRtcCwgVG1wCisKIExzaGlmdDMyIFU6RywgVUQ6Rwog
ICAgIFRtcCosIFRtcAogICAgIEltbSwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CmluZGV4IGQ3ODRjODg4MTQ2ZDA1MWM1MDI5YzQzZDM5YWQ2NzdkYTUzYmNjZDIuLmY2OTBiMzNk
ZjZlOWUxZDQ2ZDUyMTM0NTI2ZGFmOTY4NGY1ZGVlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjMuY3BwCkBAIC0xOTQxLDYgKzE5NDEsMTQwIEBAIHZvaWQgdGVzdEJpdEFuZFdpdGhNYXNr
UmV0dXJuc0Jvb2xlYW5zKGludDY0X3QgYSwgaW50NjRfdCBiKQogICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48aW50NjRfdD4ocHJvYywgYSwgYikgPT0gZXhwZWN0ZWQpOwogfQogCitkb3VibGUgYml0
QW5kRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PGRvdWJsZT4oYml0d2lzZV9jYXN0PHVpbnQ2NF90PihhKSAmIGJpdHdpc2VfY2FzdDx1aW50NjRf
dD4oYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdEb3VibGUoZG91YmxlIGEpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIHJlc3Vs
dCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1l
bnQsIGFyZ3VtZW50KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBiaXRBbmREb3VibGUoYSwgYSkpKTsKK30KKwordm9p
ZCB0ZXN0Qml0QW5kQXJnc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2Vk
dXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBW
YWx1ZSogYXJndW1lbnRBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEIg
PSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUklu
Zm86OmFyZ3VtZW50RlBSMSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJl
c3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJv
YywgYSwgYiksIGJpdEFuZERvdWJsZShhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdJ
bW1Eb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50
QSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1
bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhLCBiKSwgYml0QW5kRG91YmxlKGEsIGIpKSk7Cit9
CisKK3ZvaWQgdGVzdEJpdEFuZEltbXNEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJl
c3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJn
dW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGJpdEFuZERvdWJsZShhLCBiKSkpOworfQorCitm
bG9hdCBiaXRBbmRGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8ZmxvYXQ+KGJpdHdpc2VfY2FzdDx1aW50MzJfdD4oYSkgJiBiaXR3aXNlX2Nhc3Q8dWlu
dDMyX3Q+KGIpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kQXJnRmxvYXQoZmxvYXQgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZh
bHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2lu
KCksIGFyZ3VtZW50LCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSks
IGJpdEFuZEZsb2F0KGEsIGEpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ3NGbG9hdChmbG9h
dCBhLCBmbG9hdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MSkpKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAg
IENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0QW5kRmxvYXQoYSwg
YikpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kQXJnSW1tRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
Pihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsK
KyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGIpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBi
aXRBbmRGbG9hdChhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1zRmxvYXQoZmxvYXQg
YSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmRO
ZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBi
KTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRB
bmQsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MpLCBiaXRBbmRGbG9hdChh
LCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNv
bnZlcnNpb24oZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QWFzRG91YmxlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnRB
KTsKKyAgICBWYWx1ZSogYXJndW1lbnRCYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhcmd1bWVudEIpOworICAgIFZhbHVlKiBk
b3VibGVSZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2lu
KCksIGFyZ3VtZW50QWFzRG91YmxlLCBhcmd1bWVudEJhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZs
b2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBP
cmlnaW4oKSwgZG91YmxlUmVzdWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
Pihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAgICBkb3VibGUgZG91
YmxlQSA9IGE7CisgICAgZG91YmxlIGRvdWJsZUIgPSBiOworICAgIGZsb2F0IGV4cGVjdGVkID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdEFuZERvdWJsZShkb3VibGVBLCBkb3VibGVCKSk7CisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBleHBlY3RlZCkpOworfQor
CiB2b2lkIHRlc3RCaXRPckFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCiB7CiAgICAgUHJvY2Vk
dXJlIHByb2M7CkBAIC0yODk2LDYgKzMwMzAsMjAyIEBAIHZvaWQgdGVzdENsek1lbTMyKGludDMy
X3QgYSkKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPHVuc2lnbmVkPihwcm9jLCAmYSkgPT0gY291
bnRMZWFkaW5nWmVybyhhKSk7CiB9CiAKK3ZvaWQgdGVzdEFic0FyZyhkb3VibGUgYSkKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAg
ICAgcHJvYywgQWJzLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkp
KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBh
KSwgZmFicyhhKSkpOworfQorCit2b2lkIHRlc3RBYnNJbW0oZG91YmxlIGEpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGEpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGZhYnMoYSkpKTsKK30KKwordm9pZCB0
ZXN0QWJzTWVtKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KHByb2MsIExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2lu
KCksIGxvYWREb3VibGUpKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
ZG91YmxlPihwcm9jLCAmYSksIGZhYnMoYSkpKTsKK30KKwordm9pZCB0ZXN0QWJzQWJzQXJnKGRv
dWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGZpcnN0QWJzID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOworICAg
IFZhbHVlKiBzZWNvbmRBYnMgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3Jp
Z2luKCksIGZpcnN0QWJzKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCBzZWNvbmRBYnMpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBmYWJzKGEpKSk7Cit9CisKK3ZvaWQgdGVz
dEFic0JpdHdpc2VDYXN0QXJnKGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50
QXNJbnQ2NCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0RvdWJsZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudEFzSW50NjQpOworICAgIFZhbHVlKiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnRBc0RvdWJsZSk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWJzVmFsdWUpOwor
CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQ2NF90PihhKSksIGZhYnMoYSkpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lzZUNh
c3RBYnNCaXR3aXNlQ2FzdEFyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dEFzSW50NjQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QXNEb3VibGUg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnRBc0ludDY0KTsKKyAgICBWYWx1ZSogYWJzVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIEFicywgT3JpZ2luKCksIGFyZ3VtZW50QXNEb3VibGUpOworICAgIFZhbHVlKiBy
ZXN1bHRBc0ludDY0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFic1ZhbHVlKTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdEFzSW50NjQpOworCisgICAgaW50NjRfdCBl
eHBlY3RlZFJlc3VsdCA9IGJpdHdpc2VfY2FzdDxpbnQ2NF90PihmYWJzKGEpKTsKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQ2NF90PihhKSksIGV4cGVjdGVkUmVzdWx0KSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZyhmbG9h
dCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKK30KKwor
dm9pZCB0ZXN0QWJzSW1tKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSBy
b290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAg
VmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4o
KSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKwor
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lz
ZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZs
b2F0PihmYWJzKGEpKSkpKTsKK30KKwordm9pZCB0ZXN0QWJzTWVtKGZsb2F0IGEpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogYWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSog
bG9hZEZsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9h
dCwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGxvYWRGbG9hdCk7CisgICAgVmFsdWUqIHJl
c3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIHJlc3VsdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGls
ZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCAmYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oZmFicyhhKSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0Fic0FyZyhmbG9hdCBh
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBW
YWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0
LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGZpcnN0QWJzID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUq
IHNlY29uZEFicyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwg
Zmlyc3RBYnMpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHNlY29uZEFicyk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGZsb2F0Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oZmFicyhhKSkpKTsKK30KKwordm9pZCB0ZXN0QWJzQml0d2lzZUNhc3RBcmcoZmxv
YXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEFzSW50MzIgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
KTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc2Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFyZ3VtZW50QXNJbnQzMik7CisgICAgVmFsdWUq
IGFic1ZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBh
cmd1bWVudEFzZmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2Ms
IFJldHVybiwgT3JpZ2luKCksIGFic1ZhbHVlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIHN0YXRp
Y19jYXN0PGZsb2F0PihmYWJzKGEpKSkpOworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdEFic0Jp
dHdpc2VDYXN0QXJnKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0ludDMy
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QXNmbG9hdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEFzSW50
MzIpOworICAgIFZhbHVlKiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
QWJzLCBPcmlnaW4oKSwgYXJndW1lbnRBc2Zsb2F0KTsKKyAgICBWYWx1ZSogcmVzdWx0QXNJbnQ2
NCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBh
YnNWYWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHRBc0ludDY0KTsKKworICAgIGludDMyX3QgZXhwZWN0ZWRSZXN1
bHQgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKTsK
KyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdp
c2VfY2FzdDxpbnQzMl90PihhKSksIGV4cGVjdGVkUmVzdWx0KSk7Cit9CisKK3ZvaWQgdGVzdEFi
c0FyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1
bWVudDMyKTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhc0RvdWJs
ZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxv
YXRSZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVy
biwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9j
YXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKK30KKwordm9pZCB0
ZXN0QWJzQXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBhcmd1bWVudDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0
VmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4o
KSwgYXJndW1lbnQzMik7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFs
dWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwg
YXNEb3VibGUpOworICAgIFZhbHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJl
c3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2lu
KCksIGZsb2F0UmVzdWx0KTsKKyAgICBWYWx1ZSogZG91YmxlQWRkcmVzcyA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmln
aW4oKSwgcmVzdWx0LCBkb3VibGVBZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUg
ZWZmZWN0ID0gMDsKKyAgICBpbnQzMl90IHJlc3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQz
Ml90Pihwcm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpOworICAgIENIRUNL
KGlzSWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGZhYnMoYSkpKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgZmFi
cyhhKSkpOworfQorCiB2b2lkIHRlc3RTcXJ0QXJnKGRvdWJsZSBhKQogewogICAgIFByb2NlZHVy
ZSBwcm9jOwpAQCAtNzQ5OSw2ICs3ODI5LDE1IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbTMyKDYsIDEsIDYpKTsKICAgICBS
VU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsKICAgICBSVU5f
QklOQVJZKHRlc3RCaXRBbmRXaXRoTWFza1JldHVybnNCb29sZWFucywgaW50NjRPcGVyYW5kcygp
LCBpbnQ2NE9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0QW5kQXJnRG91YmxlLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRB
bmRBcmdzRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRBcmdJbW1E
b3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEltbXNEb3VibGUsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3Vi
bGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0QW5kQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kQXJnc0Zsb2F0LCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAg
ICBSVU5fQklOQVJZKHRlc3RCaXRBbmRJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxm
bG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZ
KHRlc3RCaXRBbmRBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5n
UG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsK
IAogICAgIFJVTih0ZXN0Qml0T3JBcmdzKDQzLCA0MykpOwogICAgIFJVTih0ZXN0Qml0T3JBcmdz
KDQzLCAwKSk7CkBAIC03NzMwLDYgKzgwNjksMjEgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmls
dGVyKQogICAgIFJVTl9VTkFSWSh0ZXN0Q2x6QXJnMzIsIGludDMyT3BlcmFuZHMoKSk7CiAgICAg
UlVOX1VOQVJZKHRlc3RDbHpNZW0zMiwgaW50NjRPcGVyYW5kcygpKTsKIAorICAgIFJVTl9VTkFS
WSh0ZXN0QWJzQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5f
VU5BUlkodGVzdEFic0ltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAg
UlVOX1VOQVJZKHRlc3RBYnNNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwor
ICAgIFJVTl9VTkFSWSh0ZXN0QWJzQWJzQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0JpdHdpc2VDYXN0QXJnLCBmbG9hdGluZ1BvaW50
T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0QWJzQml0
d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9V
TkFSWSh0ZXN0QWJzQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJV
Tl9VTkFSWSh0ZXN0QWJzSW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAg
IFJVTl9VTkFSWSh0ZXN0QWJzTWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwor
ICAgIFJVTl9VTkFSWSh0ZXN0QWJzQWJzQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+
KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJzQml0d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdEFic0JpdHdp
c2VDYXN0QXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFS
WSh0ZXN0QWJzQXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3Bl
cmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJzQXJnV2l0aEVmZmVjdGZ1bERv
dWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisKICAgICBS
VU5fVU5BUlkodGVzdFNxcnRBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwog
ICAgIFJVTl9VTkFSWSh0ZXN0U3FydEltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4o
KSk7CiAgICAgUlVOX1VOQVJZKHRlc3RTcXJ0TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91
YmxlPigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRw
dXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAppbmRleCBiMDFm
M2JjZGU0OTY5NDhhNTg3OWY1NGQ0NDRhZjRkYTY3NzBiYzM1Li45OTE1NTNjNzRhMTNjZTIzNzQw
ZDAwMzE5MGQwMTQ5YzJhODQ2ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEIzT3V0cHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091
dHB1dC5oCkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBhZGRXaXRoT3Zl
cmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFs
dWUgc3ViV2l0aE92ZXJmbG93NjQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgp
OyB9CiAgICAgTFZhbHVlIG11bFdpdGhPdmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBkb3VibGVBYnMoTFZhbHVlIHZhbHVlKSB7IENS
QVNIKCk7IH0KKyAgICBMVmFsdWUgZG91YmxlQWJzKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWJzLCBvcmlnaW4oKSwgdmFs
dWUpOyB9CiAKICAgICBMVmFsdWUgZG91YmxlU2luKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gY2Fs
bFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBzaW4sIHZhbHVlKTsgfQogICAgIExWYWx1
ZSBkb3VibGVDb3MoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBjYWxsV2l0aG91dFNpZGVFZmZlY3Rz
KEIzOjpEb3VibGUsIGNvcywgdmFsdWUpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267217</attachid>
            <date>2015-12-11 21:14:48 -0800</date>
            <delta_ts>2015-12-11 22:10:31 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-152176-20151211211414.patch</filename>
            <type>text/plain</type>
            <size>51253</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDgxOTc3Y2E4MjcyNWQxYzc5NTNjZDRjYWJmYjQ0NWE5MTI1ODVhLi5lOWVlODVkYjVmZWJjMzAx
NWQ0YWJjNmE0MzkzZmNjZWUzZGIwYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NSBAQAorMjAxNS0xMi0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgRmxvYXRpbmcgUG9pbnQgQWJzKCkgdG8gQjMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjE3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhbiBBYnMoKSBvcGVyYXRpb24gZm9yIGZsb2F0aW5nIHBvaW50LgorCisgICAgICAgIE9u
IHg4NiwgQWJzKCkgaXMgaW1wbGVtZW50ZWQgYnkgbWFza2luZyB0aGUgdG9wIGJpdAorICAgICAg
ICBvZiB0aGUgZmxvYXRpbmcgcG9pbnQgdmFsdWUuIE9uIEFSTTY0LCB0aGVyZSBpcyBhIGJ1aWx0
aW4KKyAgICAgICAgYWJzIG9wY29kZS4KKworICAgICAgICBUbyBhY2NvdW50IGZvciB0aG9zZSBk
aWZmZXJlbmNlcywgQjMgdXNlICJBYnMiIGFzCisgICAgICAgIHRoZSBjYW5ub25pY2FsIG9wZXJh
dGlvbi4gV2hlbiB3ZSBhcmUgYWJvdXQgdG8gbG93ZXIKKyAgICAgICAgdG8gQWlyLCBBYnMgaXMg
ZXh0ZW5kZWQgb24geDg2IHRvIGdldCBhIGNsZWFuIGhhbmRsaW5nCisgICAgICAgIG9mIHRoZSBt
YXNrIGNvbnN0YW50cy4KKworICAgICAgICBUaGlzIHBhdGNoIGhhcyBvbmUgY29vbCB0aGluZyBy
ZWxhdGVkIHRvIEZUTC4KKyAgICAgICAgSWYgeW91IGRvOgorICAgICAgICAgICBAMSA9IHVuYm94
RG91YmxlKEAwKQorICAgICAgICAgICBAMiA9IGFicyhAMSkKKyAgICAgICAgICAgQDMgPSBib3hE
b3VibGUoQDIpCisKKyAgICAgICAgQjNSZWR1Y2VTdHJlbmd0aCBjb21wbGV0ZWx5IGVsaW1pbmF0
ZSB0aGUgRG91YmxlLUludGVnZXIKKyAgICAgICAgY29udmVyc2lvbi4KKworICAgICAgICBUaGUg
c3RyZW5ndGggcmVkdWN0aW9uIG9mIEFicyBpcyBhd2FyZSB0aGF0IGl0IGNhbiBkbyBhIGJpdAor
ICAgICAgICBtYXNrIG92ZXIgdGhlIGJpdGNhc3QgdXNlZCBieSB1bmJveGluZy4KKyAgICAgICAg
SWYgZXZlbiB3b3JrcyBpZiB5b3UgdXNlIGZsb2F0cyBieSBmb3JjaW5nIGZyb3VuZDogcmVkdWNl
RG91YmxlVG9GbG9hdCgpCisgICAgICAgIGVsbWluaWF0ZXMgdGhlIHVzZWxlc3MgY29udmVyc2lv
bnMsIGZvbGxvd2VkIGJ5IFJlZHVjZVN0cmVuZ3RoCisgICAgICAgIHRoYXQgcmVtb3ZlcyB0aGUg
c3dpdGNoIGZyb20gR1AgdG8gRlAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6YW5kRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmFuZEZsb2F0KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YW5kcHNfcnIpOgorICAgICAgICAq
IGIzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJs
ZVZhbHVlOjpiaXRBbmRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdERvdWJsZVZh
bHVlOjphYnNDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmg6Cisg
ICAgICAgICogYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29u
c3RGbG9hdFZhbHVlOjpiaXRBbmRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmFic0NvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5o
OgorICAgICAgICAqIGIzL0IzR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJh
dGVUb0Fpcik6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCMzo6bG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMpOgorICAgICAgICAqIGIzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaDogQWRk
ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmNwcDoKKyAgICAg
ICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvQjNPcGNvZGUuaDoKKyAgICAg
ICAgKiBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOgorICAgICAgICAqIGIzL0IzUmVkdWNl
U3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIz
L0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFic0NvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVl
OjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5cGVGb3IpOgorICAgICAgICAqIGIz
L0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM6CisgICAgICAg
ICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmJpdEFuZERvdWJsZSk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJnRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRBcmdzRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdJbW1E
b3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEltbXNEb3VibGUpOgorICAgICAg
ICAoSlNDOjpCMzo6Yml0QW5kRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFy
Z0Zsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdzRmxvYXQpOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFyZ0ltbUZsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRJbW1zRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZEFyZ3NGbG9h
dFdpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJz
QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBYnNJbW0pOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEFic01lbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJzQWJzQXJnKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0QWJz
QXJnV2l0aFVzZWxlc3NEb3VibGVDb252ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RB
YnNBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmVyc2lvbik6CisgICAgICAgIChKU0M6OkIzOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExCM091dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlQWJzKToKKwogMjAxNS0xMi0xMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlZCBzb21lIGRlYWQgY29kZSwgYW5kIHNpbXBsaWZpZWQg
c29tZSBjb2RlIGluIHRoZSBiYXNlbGluZSBKSVQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggYzA5M2VhZDVhMTQ2NjVlMjk2NjM2Mjc2ZWUxZmNkMzQzMzFiNzYyYi4uNDE3
Y2Y3MDM1ZWUyNGRkOTJmMWEwNGEwMDhlMmI5Nzg0M2MyMzZiMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE0LDYgKzExNCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgYjMvQjNIZWFwUmFuZ2UuY3BwCiAgICAgYjMvQjNJbnNlcnRpb25TZXQuY3Bw
CiAgICAgYjMvQjNMb3dlck1hY3Jvcy5jcHAKKyAgICBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcAogICAgIGIzL0IzTG93ZXJUb0Fpci5jcHAKICAgICBiMy9CM01hdGhFeHRy
YXMuY3BwCiAgICAgYjMvQjNNZW1vcnlWYWx1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNzU5YWNhNGQ1NmZjYjEzYmMyNzExMWUzNGU4ODUxNzUwYzdhMGViNy4uMDllM2E2
MTdlYmQ5Mzc5MjVjZDgyOTM2NjkzOWRhZjEwM2ViNTZmOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTExMjksNiArMTEyOSw4IEBACiAJCTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5
NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87IH07CiAJ
CTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3
OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJCTQxREVBMTMyMUI5RjMxNjMwMDZENjVE
RCAvKiBCdWlsdGluVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxREVBMTMxMUI5RjMxNTQwMDZENjVERCAvKiBCdWlsdGluVXRpbHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MzE5REEwMzFD
MUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzE5REEwMTFDMUJF
M0MxMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgKi87IH07
CisJCTQzMTlEQTA0MUMxQkU0MEQwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MzE5REEwMjFDMUJFM0MxMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
cy5oICovOyB9OwogCQk0MzQwQTQ4NDFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzQwQTQ4MjFB
OTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5jcHAgKi87IH07CiAJCTQzNDBBNDg1MUE5MDUx
QUYwMEQ3M0NDQSAvKiBNYXRoQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MzQwQTQ4MzFBOTA1MUFGMDBENzNDQ0EgLyogTWF0aENvbW1vbi5o
ICovOyB9OwogCQk0MzQyMkE2MjFDMTU4RTZBMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJB
NjAxQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmNwcCAqLzsgfTsKQEAgLTMy
MDcsNiArMzIwOSw4IEBACiAJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJ
RFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFi
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAwRUNG
OTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBh
dGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk0MURF
QTEzMTFCOUYzMTU0MDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJ1aWx0aW5VdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MzE5REEwMTFDMUJFM0MxMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1p
emF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcDsgcGF0aCA9IGIzL0IzTG93ZXJNYWNyb3NBZnRl
ck9wdGltaXphdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MzE5REEw
MjFDMUJFM0MxMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmg7IHBhdGggPSBiMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDBBNDgyMUE5MDUxQUYwMEQ3M0NDQSAvKiBN
YXRoQ29tbW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhD
b21tb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQwQTQ4MzFBOTA1MUFG
MDBENzNDQ0EgLyogTWF0aENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNYXRoQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDIyQTYwMUMx
NTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBCM0NvbnN0RmxvYXRWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0Nv
bnN0RmxvYXRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjE5LDgg
KzQ2MjMsNiBAQAogCQkJCTBGMzM4RTAxMUJGMDI3NkMwMDEzQzg4RiAvKiBCM0RhdGFTZWN0aW9u
LmNwcCAqLywKIAkJCQkwRjMzOEUwMjFCRjAyNzZDMDAxM0M4OEYgLyogQjNEYXRhU2VjdGlvbi5o
ICovLAogCQkJCTBGMzNGQ0ZBMUMxNjI1QkUwMDMyM0Y2NyAvKiBCM0RvbWluYXRvcnMuaCAqLywK
LQkJCQk0MzQyMkE2NDFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNw
cCAqLywKLQkJCQk0MzQyMkE2NTFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zs
b2F0LmggKi8sCiAJCQkJMEZFQzg1QzQxQkUxNkY1QTAwODBGRjc0IC8qIEIzRWZmZWN0cy5jcHAg
Ki8sCiAJCQkJMEZFQzg1QkUxQkUxNjdBMDAwODBGRjc0IC8qIEIzRWZmZWN0cy5oICovLAogCQkJ
CTBGRUM4NENCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0ZyZXF1ZW5jeUNsYXNzLmNwcCAqLywKQEAg
LTQ2MzgsNiArNDY0MCw4IEBACiAJCQkJMEZFQzg1QjYxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5z
ZXJ0aW9uU2V0SW5saW5lcy5oICovLAogCQkJCTBGMzM4RTE5MUJGMjg2RUEwMDEzQzg4RiAvKiBC
M0xvd2VyTWFjcm9zLmNwcCAqLywKIAkJCQkwRjMzOEUxQTFCRjI4NkVBMDAxM0M4OEYgLyogQjNM
b3dlck1hY3Jvcy5oICovLAorCQkJCTQzMTlEQTAxMUMxQkUzQzEwMDFEMjYwQiAvKiBCM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCAqLywKKwkJCQk0MzE5REEwMjFDMUJFM0MxMDAx
RDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oICovLAogCQkJCTBGRUM4
NEQzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuY3BwICovLAogCQkJCTBGRUM4NEQ0
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuaCAqLywKIAkJCQk0M0FCMjZDNDFDMUE1
MkY3MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmNwcCAqLywKQEAgLTQ2NjQsNiArNDY2OCw4IEBA
CiAJCQkJMEZFQzg0RTExQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmNwcCAqLywKIAkJ
CQkwRkVDODRFMjFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuaCAqLywKIAkJCQkwRkVD
ODRFMzFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggKi8sCisJCQkJNDM0
MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgKi8sCisJ
CQkJNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oICov
LAogCQkJCTBGRUM4NUI3MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVuZ3RoLmNwcCAq
LywKIAkJCQkwRkVDODVCODFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oICov
LAogCQkJCTBGMzNGQ0Y1MUMxMzZFMjUwMDMyM0Y2NyAvKiBCM1N0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcy5jcHAgKi8sCkBAIC03NzMwLDYgKzc3MzYsNyBAQAogCQkJCTBGMTM5MTJDMTY3NzFDM0Qw
MDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRTNBMDZCMjFDMTBDQjg5MDAzOTBGREQgLyogSklUQml0QW5kR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkQzRTQwRTFCNjE4QjY2MDBDODBFMUUgLyogUHJvcGVydHlDb25kaXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQzMTlEQTA0MUMxQkU0MEQwMDFEMjYwQiAvKiBCM0xv
d2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0ZCNjEw
MDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzk1NDM3RDBFQkE3MEZEMDA3MkI2RDMgLyogUHJvcGVydHlNYXBIYXNoVGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2MTU4QUIzMTU1QzhCNDAwMEI0NUM5QyAvKiBQcm9wZXJ0eU5h
bWUuaCBpbiBIZWFkZXJzICovLApAQCAtODc4OCw2ICs4Nzk1LDcgQEAKIAkJCQkwRjMzOERGMTFC
RTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY5RDMzOUExODAzQURCNzAwNzNDMkJDIC8qIEZUTFN0YWNrTWFwcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dl
ck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEx
NjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjZCMUNDNTE4NjJDNDc4MDA4NDVEOTcgLyogRlRMVW53aW5kSW5mby5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCA2YzJmNjZiNTliZjY3MjlkNTBhMDBmYjYyZjY3
NzExNjRkNWYyNjI5Li5hODUwNDVlZmFkNWY3ZTJkZjhlNjY3YTMyYTQ0YjQyYjgwMTYxODAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbi5oCkBAIC0xMDEzLDYgKzEwMTMsMTcgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5tdWxzc19tcihzcmMub2Zmc2V0LCBzcmMuYmFzZSwgZGVzdCk7CiAgICAg
fQogCisgICAgdm9pZCBhbmREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRz
dCkKKyAgICB7CisgICAgICAgIC8vIEFORFBTIGlzIGRlZmluZWQgb24gMTI4Yml0cyBhbmQgaXMg
c2hvcnRlciB0aGFuIEFORFBELgorICAgICAgICBtX2Fzc2VtYmxlci5hbmRwc19ycihzcmMsIGRz
dCk7CisgICAgfQorCisgICAgdm9pZCBhbmRGbG9hdChGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kcHNfcnIoc3JjLCBkc3Qp
OworICAgIH0KKwogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaApp
bmRleCAzMmUzYzBkMTZiMTBmZjE3NGJlNGU2MTIzNTI0M2E2N2I2NWY2ODk3Li44OGIzY2RmNTVi
MmUxZjFmMDI4NjE2MmQ5ZDY4MzU2OTIwNDRkNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTI3Myw2ICsyNzMsNyBAQCBwcml2YXRl
OgogICAgICAgICBPUDJfRElWU0RfVnNkV3NkICAgID0gMHg1RSwKICAgICAgICAgT1AyX01PVk1T
S1BEX1ZkRWQgICA9IDB4NTAsCiAgICAgICAgIE9QMl9TUVJUU0RfVnNkV3NkICAgPSAweDUxLAor
ICAgICAgICBPUDJfQU5EUFNfVnBkV3BkICAgID0gMHg1NCwKICAgICAgICAgT1AyX0FORE5QRF9W
cGRXcGQgICA9IDB4NTUsCiAgICAgICAgIE9QMl9YT1JQRF9WcGRXcGQgICAgPSAweDU3LAogICAg
ICAgICBPUDJfTU9WRF9WZEVkICAgICAgID0gMHg2RSwKQEAgLTIyODMsNiArMjI4NCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfRElWU0RfVnNkV3NkLCAo
UmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCBhbmRwc19y
cihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0FORFBTX1ZwZFdwZCwgKFJlZ2lzdGVySUQpZHN0LCAo
UmVnaXN0ZXJJRClzcmMpOworICAgIH0KKwogICAgIHZvaWQgeG9ycHNfcnIoWE1NUmVnaXN0ZXJJ
RCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudHdv
Qnl0ZU9wKE9QMl9YT1JQRF9WcGRXcGQsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3Jj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFs
dWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAK
aW5kZXggNzkwODhmNzljZjliMjVhMzViMWZiYzdmY2ZlNWY1YjgzMzEwNDA4Mi4uYTA0MWMwZmRh
MzQ2ZDU1OTlkN2Q4MDVjN2M3ZGQ1NTFhZmU2MjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAKQEAgLTY5LDYgKzY5LDE0IEBAIFZhbHVl
KiBDb25zdERvdWJsZVZhbHVlOjptdWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZh
bHVlKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3REb3VibGVWYWx1ZT4o
b3JpZ2luKCksIG1fdmFsdWUgKiBvdGhlci0+YXNEb3VibGUoKSk7CiB9CiAKK1ZhbHVlKiBDb25z
dERvdWJsZVZhbHVlOjpiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgZG91YmxlIHJlc3VsdCA9IGJpdHdpc2VfY2FzdDxkb3VibGU+
KGJpdHdpc2VfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkgJiBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+
KG90aGVyLT5hc0RvdWJsZSgpKSk7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0RG91YmxlVmFs
dWU+KG9yaWdpbigpLCByZXN1bHQpOworfQorCiBWYWx1ZSogQ29uc3REb3VibGVWYWx1ZTo6Yml0
d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBy
b2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIGJpdHdpc2VfY2FzdDxpbnQ2NF90PihtX3Zh
bHVlKSk7CkBAIC03OSw2ICs4NywxMSBAQCBWYWx1ZSogQ29uc3REb3VibGVWYWx1ZTo6ZG91Ymxl
VG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKICAgICByZXR1cm4gcHJvYy5h
ZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdmFsdWUp
KTsKIH0KIAorVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6OmFic0NvbnN0YW50KFByb2NlZHVyZSYg
cHJvYykgY29uc3QKK3sKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3REb3VibGVWYWx1ZT4ob3Jp
Z2luKCksIGZhYnMobV92YWx1ZSkpOworfQorCiBWYWx1ZSogQ29uc3REb3VibGVWYWx1ZTo6c3Fy
dENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICByZXR1cm4gcHJvYy5hZGQ8
Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIHNxcnQobV92YWx1ZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5oCmluZGV4IGUzYjc5YzJhNDAyMWQ0
ZGYxMDVhMTJmMzI5ZjJkNmUwN2QyZWVjODkuLmRhOWEzOTVlYjg4YzFmNzFlYWZkYTkxNTIwMWUy
NTNjOTI5NTZkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
RG91YmxlVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJs
ZVZhbHVlLmgKQEAgLTQ3LDggKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBWYWx1ZSogZGl2Q29uc3Rh
bnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBW
YWx1ZSogbW9kQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBv
dmVycmlkZTsKICAgICBWYWx1ZSogbXVsQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2Vk
dXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogYml0
d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSog
ZG91YmxlVG9GbG9hdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZh
bHVlKiBhYnNDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSog
c3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVHJpU3RhdGUg
ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKaW5kZXggNDQ3MTJj
MzZiZjYyY2U4Zjk2NGU1ZTU1YjAyYTQ4Zjk2YTliZTljMy4uNDU4N2E4NzQ4ZWNjNmY0ZGQxZjMx
MWU0OTZjYzMzMDM0ODMxM2FkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3RGbG9hdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
b25zdEZsb2F0VmFsdWUuY3BwCkBAIC02OSw2ICs2OSwxNCBAQCBWYWx1ZSogQ29uc3RGbG9hdFZh
bHVlOjptdWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgbV92YWx1
ZSAqIG90aGVyLT5hc0Zsb2F0KCkpOwogfQogCitWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjpiaXRB
bmRDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sK
KyAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBmbG9hdCByZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KGJpdHdpc2VfY2FzdDx1aW50MzJf
dD4obV92YWx1ZSkgJiBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0Zsb2F0KCkpKTsK
KyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0KTsK
K30KKwogVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1
cmUmIHByb2MpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3Jp
Z2luKCksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSk7CkBAIC03OSw2ICs4NywxMSBA
QCBWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjpmbG9hdFRvRG91YmxlQ29uc3RhbnQoUHJvY2VkdXJl
JiBwcm9jKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdERvdWJsZVZhbHVlPihvcmln
aW4oKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3ZhbHVlKSk7CiB9CiAKK1ZhbHVlKiBDb25zdEZs
b2F0VmFsdWU6OmFic0NvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKK3sKKyAgICByZXR1
cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGZhYnMobV92YWx1ZSkpKTsKK30KKwogVmFsdWUqIENvbnN0RmxvYXRWYWx1ZTo6c3FydENvbnN0
YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RG
bG9hdFZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQobV92YWx1ZSkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKaW5kZXggMWZm
ZjE0YTA1ZWE5MGIyYmI0N2FhYWMyNjAxNjlhODllZGY4Y2Y0Mi4uZGMzOGJlM2Y1NDU0NDdjODVh
N2NhNDhkY2UxY2E3YjAxNDFhZjE5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3RGbG9hdFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3RGbG9hdFZhbHVlLmgKQEAgLTQ2LDggKzQ2LDEwIEBAIHB1YmxpYzoKICAgICBWYWx1ZSog
c3ViQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWYWx1ZSogZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbXVsQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZSogYml0QW5kQ29uc3Rh
bnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBW
YWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAg
ICBWYWx1ZSogZmxvYXRUb0RvdWJsZUNvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZhbHVlKiBhYnNDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlkZTsKICAg
ICBWYWx1ZSogc3FydENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
VHJpU3RhdGUgZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4IDMzMDI4MmU2ZjFl
MTE1OThlYTgxZmMwYjExNjdmYmY5YjEzZGVkY2YuLjA4NmQ1NjU1NDkwYjhjMmQ2ZWZiNWFhOGYx
NmIwNTMzOTQ5YjAyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dl
bmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkIzQ29tbW9uLmgiCiAjaW5jbHVkZSAiQjNMb3dlck1hY3Jvcy5oIgorI2luY2x1ZGUgIkIzTG93
ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaCIKICNpbmNsdWRlICJCM0xvd2VyVG9BaXIuaCIK
ICNpbmNsdWRlICJCM01vdmVDb25zdGFudHMuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgpA
QCAtODIsNiArODMsOCBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUs
IHVuc2lnbmVkIG9wdExldmVsKQogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUwNTA3CiAgICAgfQogCisgICAgbG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMocHJvY2VkdXJlKTsKKwogICAgIG1vdmVDb25zdGFudHMocHJvY2VkdXJlKTsKIAog
ICAgIGlmIChzaG91bGRWYWxpZGF0ZUlSKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjcwY2M0MWE1NDIyNTQyMzUzZjVjZTdkODhkNTMzY2RkOWQ0NTEyZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zQWZ0ZXJPcHRp
bWl6YXRpb25zLmNwcApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNM
b3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIgorCisjaWYgRU5BQkxFKEIzX0pJVCkKKwor
I2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0
aW9uU2V0LmgiCisjaW5jbHVkZSAiQjNDb25zdERvdWJsZVZhbHVlLmgiCisjaW5jbHVkZSAiQjND
b25zdEZsb2F0VmFsdWUuaCIKKyNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKKyNp
bmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIExvd2VyTWFjcm9zIHsKK3B1YmxpYzoKKyAgICBMb3dl
ck1hY3JvcyhQcm9jZWR1cmUmIHByb2MpCisgICAgICAgIDogbV9wcm9jKHByb2MpCisgICAgICAg
ICwgbV9ibG9ja0luc2VydGlvblNldChwcm9jKQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KHBy
b2MpCisgICAgeworICAgIH0KKworICAgIGJvb2wgcnVuKCkKKyAgICB7CisgICAgICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKKyAgICAgICAgICAgIG1fYmxvY2sgPSBibG9j
azsKKyAgICAgICAgICAgIHByb2Nlc3NDdXJyZW50QmxvY2soKTsKKyAgICAgICAgfQorICAgICAg
ICBtX2NoYW5nZWQgfD0gbV9ibG9ja0luc2VydGlvblNldC5leGVjdXRlKCk7CisgICAgICAgIGlm
IChtX2NoYW5nZWQpIHsKKyAgICAgICAgICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwor
ICAgICAgICAgICAgbV9wcm9jLmludmFsaWRhdGVDRkcoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbV9jaGFuZ2VkOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9jZXNz
Q3VycmVudEJsb2NrKCkKKyAgICB7CisgICAgICAgIGZvciAobV9pbmRleCA9IDA7IG1faW5kZXgg
PCBtX2Jsb2NrLT5zaXplKCk7ICsrbV9pbmRleCkgeworICAgICAgICAgICAgbV92YWx1ZSA9IG1f
YmxvY2stPmF0KG1faW5kZXgpOworICAgICAgICAgICAgbV9vcmlnaW4gPSBtX3ZhbHVlLT5vcmln
aW4oKTsKKyAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+b3Bjb2RlKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgQWJzOiB7CisgICAgICAgICAgICAgICAgLy8gQVJNIHN1cHBvcnRzIHRoaXMgaW5z
dHJ1Y3Rpb24gbmF0aXZlbHkuCisgICAgICAgICAgICAgICAgaWYgKGlzQVJNNjQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBWYWx1ZSogbWFzayA9IG51
bGxwdHI7CisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBEb3VibGUpCisg
ICAgICAgICAgICAgICAgICAgIG1hc2sgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3REb3Vi
bGVWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIGJpdHdpc2VfY2FzdDxkb3VibGU+KH4oMWwgPDwg
NjMpKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobV92YWx1ZS0+dHlwZSgpID09IEZsb2F0
KQorICAgICAgICAgICAgICAgICAgICBtYXNrID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0
RmxvYXRWYWx1ZT4obV9pbmRleCwgbV9vcmlnaW4sIGJpdHdpc2VfY2FzdDxmbG9hdD4ofigxIDw8
IDMxKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogcmVzdWx0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBCaXRBbmQsIG1fb3JpZ2luLCBt
X3ZhbHVlLT5jaGlsZCgwKSwgbWFzayk7CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhJZGVudGl0eShyZXN1bHQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKG1fYmxv
Y2spOworICAgIH0KKyAgICAKKyAgICBQcm9jZWR1cmUmIG1fcHJvYzsKKyAgICBCbG9ja0luc2Vy
dGlvblNldCBtX2Jsb2NrSW5zZXJ0aW9uU2V0OworICAgIEluc2VydGlvblNldCBtX2luc2VydGlv
blNldDsKKyAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOworICAgIHVuc2lnbmVkIG1faW5kZXg7Cisg
ICAgVmFsdWUqIG1fdmFsdWU7CisgICAgT3JpZ2luIG1fb3JpZ2luOworICAgIGJvb2wgbV9jaGFu
Z2VkIHsgZmFsc2UgfTsKK307CisKK2Jvb2wgbG93ZXJNYWNyb3NJbXBsKFByb2NlZHVyZSYgcHJv
YykKK3sKKyAgICBMb3dlck1hY3JvcyBsb3dlck1hY3Jvcyhwcm9jKTsKKyAgICByZXR1cm4gbG93
ZXJNYWNyb3MucnVuKCk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitib29sIGxv
d2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zKFByb2NlZHVyZSYgcHJvYykKK3sKKyAgICBQaGFz
ZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgImxvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zIik7
CisgICAgYm9vbCByZXN1bHQgPSBsb3dlck1hY3Jvc0ltcGwocHJvYyk7CisgICAgaWYgKHNob3Vs
ZFZhbGlkYXRlSVIoKSkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWxvd2VyTWFjcm9zSW1wbChw
cm9jKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIz
CisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NGJhZjU2M2NkN2MxNDBiNjBiZTllYjAxZmUyMTdkNjFjZTEyYzI1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9u
c19oCisjZGVmaW5lIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnNfaAorCisjaWYgRU5B
QkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNzIFBy
b2NlZHVyZTsKKworLy8gTG93ZXIgY2VydGFpbiBoaWdoIGxldmVsIG9wY29kZXMgdG8gbG93ZXIt
bGV2ZWwgb3Bjb2RlIHRvIGhlbHAgY29kZSBnZW5lcmF0aW9uLgorCitib29sIGxvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zKFByb2NlZHVyZSYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKKyNlbmRpZiAvLyBCM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcAppbmRleCBmMTY2ZjRlNWJmOTk3MjJlNDFlN2VlMzE0YjNjNWE4ZjY3MjU0OTY1Li5i
YmUwOTJlOGE5ZjhkMGVlNzk2YTJiMTAxZDRkODM3NTExMzA5MzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTQ1OSw3ICsxNDU5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQml0QW5kOiB7Ci0gICAgICAgICAgICBhcHBl
bmRCaW5PcDxBbmQzMiwgQW5kNjQsIENvbW11dGF0aXZlPigKKyAgICAgICAgICAgIGFwcGVuZEJp
bk9wPEFuZDMyLCBBbmQ2NCwgQW5kRG91YmxlLCBBbmRGbG9hdCwgQ29tbXV0YXRpdmU+KAogICAg
ICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUu
Y3BwCmluZGV4IGJjNjA5MzU3M2IzMDc3OGNlY2MwNWQwZjI4ZjcxYmE5MmI5MjNiYTAuLjM2ZTIw
ZWMwZGI1MGViYzU2MzY5ZjU5YzM0MmUzNDNiZTViNjVmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzT3Bjb2RlLmNwcApAQCAtMTQ2LDYgKzE0Niw5IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2UgQ2x6OgogICAgICAgICBv
dXQucHJpbnQoIkNseiIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBBYnM6CisgICAgICAg
IG91dC5wcmludCgiQWJzIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFNxcnQ6CiAgICAg
ICAgIG91dC5wcmludCgiU3FydCIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM09wY29kZS5oCmluZGV4IDE0YWVjNGEyYTQ4N2VkMDRhYjM3MDAxZjU5NzU0MjIwM2MxMTcx
NDMuLjFjMGI4NmEzNmViODFlZTM2MWNjNWY4OGEyYWNlM2RlNjdkN2EzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM09wY29kZS5oCkBAIC04NCw3ICs4NCw4IEBAIGVudW0gT3Bjb2RlIDogaW50
MTZfdCB7CiAgICAgWlNociwgLy8gTG9naWNhbCBTaGlmdC4KICAgICBDbHosIC8vIENvdW50IGxl
YWRpbmcgemVyb3MuCiAKLSAgICAvLyBEb3VibGUgbWF0aC4KKyAgICAvLyBGbG9hdGluZyBwb2lu
dCBtYXRoLgorICAgIEFicywKICAgICBTcXJ0LAogCiAgICAgLy8gQ2FzdHMgYW5kIHN1Y2guCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3Bw
CmluZGV4IDhhMTNlNzZhMTAyOTEyNjg3ZTI4NWJlZjQzMjI3MGUzM2IxZjk2MWUuLjg2ODg0ZmFi
OTQ0YTM3ZGU0YWQxN2U2Yzk2ZjVjNzUwZDQ0YzgwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCkBAIC00OCw2ICs0OCw3IEBA
IHZvaWQgYXR0ZW1wdFNpbXBsaWZpY2F0aW9uKFZhbHVlKiBjYW5kaWRhdGUpCiAgICAgICAgICAg
ICBjYW5kaWRhdGUtPnNldFR5cGUoRmxvYXQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQWJzOgogICAgIGNhc2UgU3FydDoKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+Y2hp
bGQoMCktPm9wY29kZSgpID09IEZsb2F0VG9Eb3VibGUpIHsKICAgICAgICAgICAgIGNhbmRpZGF0
ZS0+Y2hpbGQoMCkgPSBjYW5kaWRhdGUtPmNoaWxkKDApLT5jaGlsZCgwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA0ODZiN2U0ODBhMThj
OGFiNTA3ODkxMTA4MWI2MTg2NDI2NTUwMGUxLi44NTZjMWMxZTY3ZDQzODFlYzMxNzYxYThhMjI4
ODBiN2YxNjRiZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1
Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwCkBAIC01MDUsNiArNTA1LDM5IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgIGNhc2UgQWJzOgorICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBBYnMo
Y29uc3RhbnQpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IGZhYnM8dmFsdWUtPnR5cGUoKT4o
Y29uc3RhbnQpCisgICAgICAgICAgICBpZiAoVmFsdWUqIGNvbnN0YW50ID0gbV92YWx1ZS0+Y2hp
bGQoMCktPmFic0NvbnN0YW50KG1fcHJvYykpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNlV2l0
aE5ld1ZhbHVlKGNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBBYnMoQWJzKHZhbHVlKSkKKyAgICAgICAg
ICAgIC8vIEludG8gdGhpczogQWJzKHZhbHVlKQorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDApLT5vcGNvZGUoKSA9PSBBYnMpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBs
YWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBBYnMoQml0d2lz
ZUNhc3QodmFsdWUpKQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiBCaXR3aXNlQ2FzdChBbmQo
dmFsdWUsIG1hc2stdG9wLWJpdCkpCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCkt
Pm9wY29kZSgpID09IEJpdHdpc2VDYXN0KSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIG1hc2s7
CisgICAgICAgICAgICAgICAgaWYgKG1fdmFsdWUtPnR5cGUoKSA9PSBEb3VibGUpCisgICAgICAg
ICAgICAgICAgICAgIG1hc2sgPSBtX2luc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPiht
X2luZGV4LCBtX3ZhbHVlLT5vcmlnaW4oKSwgfigxbCA8PCA2MykpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdDMyVmFsdWU+KG1faW5kZXgsIG1fdmFsdWUtPm9yaWdpbigpLCB+KDFsIDw8IDMxKSk7CisK
KyAgICAgICAgICAgICAgICBWYWx1ZSogYml0QW5kID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0PFZh
bHVlPihtX2luZGV4LCBCaXRBbmQsIG1fdmFsdWUtPm9yaWdpbigpLAorICAgICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCksCisgICAgICAgICAgICAgICAgICAgIG1h
c2spOworICAgICAgICAgICAgICAgIFZhbHVlKiBjYXN0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
PFZhbHVlPihtX2luZGV4LCBCaXR3aXNlQ2FzdCwgbV92YWx1ZS0+b3JpZ2luKCksIGJpdEFuZCk7
CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShjYXN0KTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGNhc2UgU3FydDoKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogU3FydChjb25z
dGFudCkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogc3FydDx2YWx1ZS0+dHlwZSgpPihjb25z
dGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRleCBmOTk2NWU2
Yjc4ODc1ZTRjNjk5ZGVmN2ZmOGM1Mzg0ZDE1NmU5Yzk5Li4yM2RkMzMzMWYxNjc5MGU0Y2JkZDFh
MGFlNDNmNjY5Y2FjY2E1YmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNWYWxpZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUu
Y3BwCkBAIC0xNTQsNiArMTU0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBNdWw6CiAg
ICAgICAgICAgICBjYXNlIERpdjoKICAgICAgICAgICAgIGNhc2UgTW9kOgorICAgICAgICAgICAg
Y2FzZSBCaXRBbmQ6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVu
KCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwog
ICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gdmFsdWUtPmNoaWxkKDEp
LT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0xNjEsNyArMTYyLDYgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDaGlsbERpdjoKICAgICAg
ICAgICAgIGNhc2UgQ2hpbGxNb2Q6Ci0gICAgICAgICAgICBjYXNlIEJpdEFuZDoKICAgICAgICAg
ICAgIGNhc2UgQml0T3I6CiAgICAgICAgICAgICBjYXNlIEJpdFhvcjoKICAgICAgICAgICAgICAg
ICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwpA
QCAtMjA5LDYgKzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1
ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQ2NCwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBYnM6CiAgICAgICAg
ICAgICBjYXNlIFNxcnQ6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxk
cmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURShp
c0Zsb2F0KHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCAxOWQ5ZDYxMDY2ZWE3Y2JkYTc5MzA0ZWY4
ODI5YWMxNmZiZWRjN2NlLi43OTNhMmYzNTAxNDRhZTFiMjkxZDhjZWRkOGU2ZTI4ODFjMmQ1ZjZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0yMjEsNiArMjIxLDExIEBA
IFZhbHVlKiBWYWx1ZTo6ZmxvYXRUb0RvdWJsZUNvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1ZhbHVlKiBWYWx1ZTo6YWJzQ29uc3RhbnQoUHJvY2Vk
dXJlJikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogVmFsdWUqIFZhbHVlOjpz
cXJ0Q29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTM1Nyw2ICszNjIsNyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICBjYXNl
IFNTaHI6CiAgICAgY2FzZSBaU2hyOgogICAgIGNhc2UgQ2x6OgorICAgIGNhc2UgQWJzOgogICAg
IGNhc2UgU3FydDoKICAgICBjYXNlIEJpdHdpc2VDYXN0OgogICAgIGNhc2UgU0V4dDg6CkBAIC00
MzMsNiArNDM5LDcgQEAgVmFsdWVLZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBGcmFt
ZVBvaW50ZXI6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleShvcGNvZGUoKSwgdHlwZSgpKTsKICAg
ICBjYXNlIElkZW50aXR5OgorICAgIGNhc2UgQWJzOgogICAgIGNhc2UgU3FydDoKICAgICBjYXNl
IFNFeHQ4OgogICAgIGNhc2UgU0V4dDE2OgpAQCAtNTM5LDYgKzU0Niw3IEBAIFR5cGUgVmFsdWU6
OnR5cGVGb3IoT3Bjb2RlIG9wY29kZSwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRD
aGlsZCkKICAgICBjYXNlIFNTaHI6CiAgICAgY2FzZSBaU2hyOgogICAgIGNhc2UgQ2x6OgorICAg
IGNhc2UgQWJzOgogICAgIGNhc2UgU3FydDoKICAgICBjYXNlIENoZWNrQWRkOgogICAgIGNhc2Ug
Q2hlY2tTdWI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAppbmRleCA3YWU3ZDJiNjJkOTMz
YzFhN2JmNWEyNjI1Y2Y0MWZhNmExMDNiZjcyLi5hNjExOGIxMTExODNiNjBkOWNiNzg1YzMxZTg5
NmRjMjk5NmI2NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKQEAgLTEzMSw2ICsx
MzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQ
cm9jZWR1cmUmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBkb3VibGVUb0Zsb2F0Q29uc3Rh
bnQoUHJvY2VkdXJlJikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogZmxvYXRUb0RvdWJsZUNv
bnN0YW50KFByb2NlZHVyZSYpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWUqIGFic0NvbnN0YW50
KFByb2NlZHVyZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIHNxcnRDb25zdGFudChQcm9j
ZWR1cmUmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgVHJpU3RhdGUgZXF1YWxDb25zdGFudChjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMWJkOTQ4MGM4OTg1NTgzNWI4ODczZTYwYzMxM2RiYTNk
ZmJhNTgyZi4uZGI5Mzg4NTk3YzFhY2M3N2NmNzRhMzc4OGYwMjAzNWY4MTIyNGEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0xNzAs
NiArMTcwLDEyIEBAIEFuZDY0IFU6RywgVUQ6RwogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAK
IAorQW5kRG91YmxlIFU6RiwgVUQ6RgorICAgIFRtcCwgVG1wCisKK0FuZEZsb2F0IFU6RiwgVUQ6
RgorICAgIFRtcCwgVG1wCisKIExzaGlmdDMyIFU6RywgVUQ6RwogICAgIFRtcCosIFRtcAogICAg
IEltbSwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IDU4N2VjZmQ1OTNk
NTlkYTkzMWZjYjU5N2E4MDE5ZDJkNDZkYmRjODUuLmU5Nzk4NGUxNDU1NjM5OTQyMzA0MWQ1Yzll
YTNlMjRmNzNmYmJkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0xOTQy
LDYgKzE5NDIsMTQwIEBAIHZvaWQgdGVzdEJpdEFuZFdpdGhNYXNrUmV0dXJuc0Jvb2xlYW5zKGlu
dDY0X3QgYSwgaW50NjRfdCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgYSwgYikgPT0gZXhwZWN0ZWQpOwogfQogCitkb3VibGUgYml0QW5kRG91YmxlKGRvdWJsZSBh
LCBkb3VibGUgYikKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGRvdWJsZT4oYml0d2lzZV9j
YXN0PHVpbnQ2NF90PihhKSAmIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYikpOworfQorCit2b2lk
IHRlc3RCaXRBbmRBcmdEb3VibGUoZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnQsIGFyZ3VtZW50KTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBy
ZXN1bHQpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHBy
b2MsIGEpLCBiaXRBbmREb3VibGUoYSwgYSkpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kQXJnc0Rv
dWJsZShkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBID0g
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjApOworICAgIFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7
CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5k
LCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiksIGJpdEFuZERv
dWJsZShhLCBiKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdJbW1Eb3VibGUoZG91YmxlIGEs
IGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIw
KTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1bWVudEEsIGFyZ3VtZW50Qik7
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91Ymxl
Pihwcm9jLCBhLCBiKSwgYml0QW5kRG91YmxlKGEsIGIpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFu
ZEltbXNEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4ocHJvYywgQml0QW5kLCBPcmlnaW4oKSwgYXJndW1lbnRBLCBhcmd1bWVudEIp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2lu
KCksIHJlc3VsdCk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJs
ZT4ocHJvYyksIGJpdEFuZERvdWJsZShhLCBiKSkpOworfQorCitmbG9hdCBiaXRBbmRGbG9hdChm
bG9hdCBhLCBmbG9hdCBiKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8ZmxvYXQ+KGJpdHdp
c2VfY2FzdDx1aW50MzJfdD4oYSkgJiBiaXR3aXNlX2Nhc3Q8dWludDMyX3Q+KGIpKTsKK30KKwor
dm9pZCB0ZXN0Qml0QW5kQXJnRmxvYXQoZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1
bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50LCBhcmd1
bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48
ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdEFuZEZsb2F0KGEsIGEp
KSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ3NGbG9hdChmbG9hdCBhLCBmbG9hdCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0d2lzZUNhc3QsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworICAg
IFZhbHVlKiBhcmd1bWVudEIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VD
YXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKyAgICBWYWx1ZSog
cmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBh
cmd1bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgYml0
d2lzZV9jYXN0PGludDMyX3Q+KGIpKSwgYml0QW5kRmxvYXQoYSwgYikpKTsKK30KKwordm9pZCB0
ZXN0Qml0QW5kQXJnSW1tRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKyAgICBWYWx1ZSogYXJndW1l
bnRCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RmxvYXRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
OworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFu
ZCwgT3JpZ2luKCksIGFyZ3VtZW50QSwgYXJndW1lbnRCKTsKKyAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQpOworCisgICAgQ0hF
Q0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KGEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBiaXRBbmRGbG9hdChhLCBiKSkp
OworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1zRmxvYXQoZmxvYXQgYSwgZmxvYXQgYikKK3sKKyAg
ICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygp
OworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8Q29uc3RGbG9hdFZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIGFyZ3VtZW50QiA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdEZsb2F0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICBWYWx1ZSogcmVz
dWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRBbmQsIE9yaWdpbigpLCBhcmd1
bWVudEEsIGFyZ3VtZW50Qik7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48ZmxvYXQ+KHByb2MpLCBiaXRBbmRGbG9hdChhLCBiKSkpOworfQorCit2b2lk
IHRlc3RCaXRBbmRBcmdzRmxvYXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSwg
ZmxvYXQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0g
cHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEEgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCkpKTsKKyAgICBWYWx1ZSogYXJndW1lbnRCID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7
CisgICAgVmFsdWUqIGFyZ3VtZW50QWFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXJndW1lbnRBKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnRCYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3Vi
bGUsIE9yaWdpbigpLCBhcmd1bWVudEIpOworICAgIFZhbHVlKiBkb3VibGVSZXN1bHQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdEFuZCwgT3JpZ2luKCksIGFyZ3VtZW50QWFzRG91
YmxlLCBhcmd1bWVudEJhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZsb2F0UmVzdWx0ID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmlnaW4oKSwgZG91YmxlUmVz
dWx0KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLCBmbG9hdFJlc3VsdCk7CisKKyAgICBkb3VibGUgZG91YmxlQSA9IGE7CisgICAgZG91
YmxlIGRvdWJsZUIgPSBiOworICAgIGZsb2F0IGV4cGVjdGVkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGJpdEFuZERvdWJsZShkb3VibGVBLCBkb3VibGVCKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oYikpLCBleHBlY3RlZCkpOworfQorCiB2b2lkIHRlc3RCaXRPckFy
Z3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0yODk3
LDYgKzMwMzEsMjAyIEBAIHZvaWQgdGVzdENsek1lbTMyKGludDMyX3QgYSkKICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPHVuc2lnbmVkPihwcm9jLCAmYSkgPT0gY291bnRMZWFkaW5nWmVybyhhKSk7
CiB9CiAKK3ZvaWQgdGVzdEFic0FyZyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQWJzLCBPcmln
aW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsKKworICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwgZmFicyhhKSkpOworfQor
Cit2b2lkIHRlc3RBYnNJbW0oZG91YmxlIGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3Jp
Z2luKCksIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVu
PGRvdWJsZT4ocHJvYyksIGZhYnMoYSkpKTsKK30KKwordm9pZCB0ZXN0QWJzTWVtKGRvdWJsZSBh
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVt
b3J5VmFsdWUqIGxvYWREb3VibGUgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2Ms
IExvYWQsIERvdWJsZSwgT3JpZ2luKCksIGFkZHJlc3MpOworICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGxvYWREb3VibGUpKTsK
KworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmYSks
IGZhYnMoYSkpKTsKK30KKwordm9pZCB0ZXN0QWJzQWJzQXJnKGRvdWJsZSBhKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGZpcnN0QWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpOworICAgIFZhbHVlKiBzZWNvbmRBYnMg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3JpZ2luKCksIGZpcnN0QWJzKTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LCBzZWNvbmRBYnMpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3Vi
bGU+KHByb2MsIGEpLCBmYWJzKGEpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0JpdHdpc2VDYXN0QXJn
KGRvdWJsZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QXNJbnQ2NCA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEFzSW50NjQpOworICAg
IFZhbHVlKiBhYnNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmln
aW4oKSwgYXJndW1lbnRBc0RvdWJsZSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYWJzVmFsdWUpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQ2NF90Pihh
KSksIGZhYnMoYSkpKTsKK30KKwordm9pZCB0ZXN0Qml0d2lzZUNhc3RBYnNCaXR3aXNlQ2FzdEFy
Zyhkb3VibGUgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudEFzSW50NjQgPSByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgVmFsdWUqIGFyZ3VtZW50QXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnRBc0ludDY0KTsKKyAg
ICBWYWx1ZSogYWJzVmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFicywgT3Jp
Z2luKCksIGFyZ3VtZW50QXNEb3VibGUpOworICAgIFZhbHVlKiByZXN1bHRBc0ludDY0ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGFic1ZhbHVl
KTsKKworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3Jp
Z2luKCksIHJlc3VsdEFzSW50NjQpOworCisgICAgaW50NjRfdCBleHBlY3RlZFJlc3VsdCA9IGJp
dHdpc2VfY2FzdDxpbnQ2NF90PihmYWJzKGEpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21w
aWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQ2NF90PihhKSksIGV4cGVj
dGVkUmVzdWx0KSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZyhmbG9hdCBhKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQg
PSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJn
dW1lbnQzMik7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJf
dD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKK30KKwordm9pZCB0ZXN0QWJzSW1tKGZs
b2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8Q29u
c3RGbG9hdFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJndW1lbnQpOworICAg
IFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCByZXN1bHQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEp
KSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsK
K30KKwordm9pZCB0ZXN0QWJzTWVtKGZsb2F0IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYWRkcmVz
cyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBNZW1vcnlWYWx1ZSogbG9hZEZsb2F0ID0gcm9vdC0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBGbG9hdCwgT3JpZ2luKCksIGFkZHJl
c3MpOworICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFi
cywgT3JpZ2luKCksIGxvYWRGbG9hdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcmVz
dWx0MzIpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihw
cm9jLCAmYSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhh
KSkpKSk7Cit9CisKK3ZvaWQgdGVzdEFic0Fic0FyZyhmbG9hdCBhKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFyZ3VtZW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1l
bnQzMik7CisgICAgVmFsdWUqIGZpcnN0QWJzID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIHNlY29uZEFicyA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgZmlyc3RBYnMpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHNlY29u
ZEFicyk7CisKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9j
LCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oZmFicyhhKSkp
KTsKK30KKwordm9pZCB0ZXN0QWJzQml0d2lzZUNhc3RBcmcoZmxvYXQgYSkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IFZhbHVlKiBhcmd1bWVudEFzSW50MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJn
dW1lbnRBc2Zsb2F0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwg
T3JpZ2luKCksIGFyZ3VtZW50QXNJbnQzMik7CisgICAgVmFsdWUqIGFic1ZhbHVlID0gcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhcmd1bWVudEFzZmxvYXQpOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCks
IGFic1ZhbHVlKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZmxvYXQ+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIHN0YXRpY19jYXN0PGZsb2F0PihmYWJz
KGEpKSkpOworfQorCit2b2lkIHRlc3RCaXR3aXNlQ2FzdEFic0JpdHdpc2VDYXN0QXJnKGZsb2F0
IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnRBc0ludDMyID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CisgICAgVmFsdWUqIGFyZ3VtZW50QXNmbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudEFzSW50MzIpOworICAgIFZhbHVlKiBh
YnNWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXJn
dW1lbnRBc2Zsb2F0KTsKKyAgICBWYWx1ZSogcmVzdWx0QXNJbnQ2NCA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhYnNWYWx1ZSk7CisKKyAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1
bHRBc0ludDY0KTsKKworICAgIGludDMyX3QgZXhwZWN0ZWRSZXN1bHQgPSBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkpKTsKKyAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihh
KSksIGV4cGVjdGVkUmVzdWx0KSk7Cit9CisKK3ZvaWQgdGVzdEFic0FyZ1dpdGhVc2VsZXNzRG91
YmxlQ29udmVyc2lvbihmbG9hdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50MzIgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogZmxvYXRWYWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCBhcmd1bWVudDMyKTsKKyAgICBWYWx1
ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUs
IE9yaWdpbigpLCBmbG9hdFZhbHVlKTsKKyAgICBWYWx1ZSogcmVzdWx0ID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBBYnMsIE9yaWdpbigpLCBhc0RvdWJsZSk7CisgICAgVmFsdWUqIGZs
b2F0UmVzdWx0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBP
cmlnaW4oKSwgcmVzdWx0KTsKKyAgICBWYWx1ZSogcmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgZmxvYXRSZXN1bHQpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3Vs
dDMyKTsKKworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJv
YywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRp
Y19jYXN0PGZsb2F0PihmYWJzKGEpKSkpKTsKK30KKwordm9pZCB0ZXN0QWJzQXJnV2l0aEVmZmVj
dGZ1bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAg
ICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVu
dDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUqIGZsb2F0VmFsdWUgPSByb290LT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmlnaW4oKSwgYXJndW1lbnQzMik7Cisg
ICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRv
RG91YmxlLCBPcmlnaW4oKSwgZmxvYXRWYWx1ZSk7CisgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQWJzLCBPcmlnaW4oKSwgYXNEb3VibGUpOworICAgIFZh
bHVlKiBmbG9hdFJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9G
bG9hdCwgT3JpZ2luKCksIHJlc3VsdCk7CisgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIGZsb2F0UmVzdWx0KTsK
KyAgICBWYWx1ZSogZG91YmxlQWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICByb290LT5h
cHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBPcmlnaW4oKSwgcmVzdWx0LCBkb3Vi
bGVBZGRyZXNzKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1
cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CisKKyAgICBkb3VibGUgZWZmZWN0ID0gMDsKKyAgICBp
bnQzMl90IHJlc3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKHJlc3Vs
dFZhbHVlLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZhYnMoYSkp
KSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgZmFicyhhKSkpOworfQorCiB2b2lk
IHRlc3RTcXJ0QXJnKGRvdWJsZSBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNzUxNSw2
ICs3ODQ1LDE1IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdEJp
dEFuZEltbUJpdEFuZEFyZ0ltbTMyKDYsIDEsIDYpKTsKICAgICBSVU4odGVzdEJpdEFuZEltbUJp
dEFuZEFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsKICAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRX
aXRoTWFza1JldHVybnNCb29sZWFucywgaW50NjRPcGVyYW5kcygpLCBpbnQ2NE9wZXJhbmRzKCkp
OworICAgIFJVTl9VTkFSWSh0ZXN0Qml0QW5kQXJnRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRBcmdzRG91YmxlLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRBcmdJbW1Eb3VibGUsIGZsb2F0aW5nUG9p
bnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwor
ICAgIFJVTl9CSU5BUlkodGVzdEJpdEFuZEltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9V
TkFSWSh0ZXN0Qml0QW5kQXJnRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX0JJTkFSWSh0ZXN0Qml0QW5kQXJnc0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZmxvYXQ+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX0JJ
TkFSWSh0ZXN0Qml0QW5kQXJnSW1tRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4o
KSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RC
aXRBbmRJbW1zRmxvYXQsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSwgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RCaXRBbmRBcmdzRmxv
YXRXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKIAogICAgIFJVTih0ZXN0Qml0
T3JBcmdzKDQzLCA0MykpOwogICAgIFJVTih0ZXN0Qml0T3JBcmdzKDQzLCAwKSk7CkBAIC03NzQ2
LDYgKzgwODUsMjEgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTl9VTkFS
WSh0ZXN0Q2x6QXJnMzIsIGludDMyT3BlcmFuZHMoKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RDbHpN
ZW0zMiwgaW50NjRPcGVyYW5kcygpKTsKIAorICAgIFJVTl9VTkFSWSh0ZXN0QWJzQXJnLCBmbG9h
dGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEFic0ltbSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RBYnNN
ZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
QWJzQWJzQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5B
UlkodGVzdEFic0JpdHdpc2VDYXN0QXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigp
KTsKKyAgICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0QWJzQml0d2lzZUNhc3RBcmcsIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJzQXJnLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJzSW1t
LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJz
TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0
QWJzQWJzQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFS
WSh0ZXN0QWJzQml0d2lzZUNhc3RBcmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7
CisgICAgUlVOX1VOQVJZKHRlc3RCaXR3aXNlQ2FzdEFic0JpdHdpc2VDYXN0QXJnLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0QWJzQXJnV2l0aFVz
ZWxlc3NEb3VibGVDb252ZXJzaW9uLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwor
ICAgIFJVTl9VTkFSWSh0ZXN0QWJzQXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlcnNpb24sIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxmbG9hdD4oKSk7CisKICAgICBSVU5fVU5BUlkodGVzdFNxcnRB
cmcsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0
U3FydEltbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CiAgICAgUlVOX1VOQVJZ
KHRlc3RTcXJ0TWVtLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAppbmRleCA1NjVhNTE2MGJlZGMyMzE5YzViMjI0
NjkxZjRiMTI2Yzg0ZTVlOWRlLi40YTQ0ODJkNDI3MTg3NzUwMTcwY2I4NjBiNzVmMTk1NDliNWJk
YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5oCkBAIC0xNjIsNyAr
MTYyLDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBhZGRXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KICAgICBMVmFsdWUgc3ViV2l0aE92ZXJmbG93
NjQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9CiAgICAgTFZhbHVlIG11
bFdpdGhPdmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQot
ICAgIExWYWx1ZSBkb3VibGVBYnMoTFZhbHVlIHZhbHVlKSB7IENSQVNIKCk7IH0KKyAgICBMVmFs
dWUgZG91YmxlQWJzKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6QWJzLCBvcmlnaW4oKSwgdmFsdWUpOyB9CiAKICAgICBMVmFs
dWUgZG91YmxlU2luKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0
cyhCMzo6RG91YmxlLCBzaW4sIHZhbHVlKTsgfQogICAgIExWYWx1ZSBkb3VibGVDb3MoTFZhbHVl
IHZhbHVlKSB7IHJldHVybiBjYWxsV2l0aG91dFNpZGVFZmZlY3RzKEIzOjpEb3VibGUsIGNvcywg
dmFsdWUpOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>