<?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>158704</bug_id>
          
          <creation_ts>2016-06-13 13:56:54 -0700</creation_ts>
          <short_desc>FTL::Output methods should be out-of-line whenever possible</short_desc>
          <delta_ts>2016-06-13 15:16:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201948</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-13 13:56:54 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201951</commentid>
    <comment_count>1</comment_count>
      <attachid>281199</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-13 13:59:28 -0700</bug_when>
    <thetext>Created attachment 281199
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201953</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 14:00:57 -0700</bug_when>
    <thetext>Attachment 281199 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:249:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:115:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:150:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:155:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:156:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:162:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:164:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:170:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:171:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:171:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:173:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:175:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:176:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:177:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:326:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:327:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:328:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:329:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:340:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:391:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:395:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:400:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:404:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 23 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201965</commentid>
    <comment_count>3</comment_count>
      <attachid>281204</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-13 14:38:44 -0700</bug_when>
    <thetext>Created attachment 281204
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201966</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 14:41:16 -0700</bug_when>
    <thetext>Attachment 281204 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:249:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:340:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201970</commentid>
    <comment_count>5</comment_count>
      <attachid>281206</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-13 14:51:25 -0700</bug_when>
    <thetext>Created attachment 281206
even better

Removed some more pointless parameter names from FTLOutput.h.  I think that add(Lvalue, LValue) looks better than add(LValue left, LValue right).  I retained the parameter names in cases where they make sense, like shl(LValue, LValue shiftAmount).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201971</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 14:52:28 -0700</bug_when>
    <thetext>Attachment 281206 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:249:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.h:339:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201979</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-13 15:16:39 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/202007</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281199</attachid>
            <date>2016-06-13 13:59:28 -0700</date>
            <delta_ts>2016-06-13 14:38:44 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>42395</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyMDAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMSBA
QAorMjAxNi0wNi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTDo6T3V0cHV0IG1ldGhvZHMgc2hvdWxkIGJlIG91dC1vZi1saW5lIHdoZW5ldmVyIHBvc3Np
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFRoZXNlIG1ldGhvZHMgdHVybiBpbnRvIGEgbm9uLXRyaXZpYWwgYW1vdW50IG9mIGNvZGUg
YmVjYXVzZSBvZiB0aGUgdGVtcGxhdGUtYmFzZWQgQjMgQVBJLgorICAgICAgICBJbmxpbmluZyB0
aGVtIGRpZG4ndCBhY2hpZXZlIGFueSBwZXJmb3JtYW5jZSBhZHZhbnRhZ2VzIGZvciB0aGUgRlRM
LCBidXQgaXQgZGlkIG1ha2UgdGhlCisgICAgICAgIGNvZGUgbGFyZ2VyLiBUaGlzIG91dGxpbmVz
IG1vc3QgbWV0aG9kcyBpbiBGVEw6Ok91dHB1dC4gSXQgbWFrZXMgRlRMOjpMb3dlckRGR1RvQjMg
c21hbGxlcgorICAgICAgICBhbmQgaXQgZG9lc24ndCBjaGFuZ2UgcGVyZm9ybWFuY2UuCisKKyAg
ICAgICAgKiBmdGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFw
cGVuZFRvKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmZyYW1lUG9pbnRlcik6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2NrZWRTdGFja1Nsb3QpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6Y29uc3RCb29sKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0
SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnQ2NCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdERvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpwaGkpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YWRkKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OnN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjptdWwpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmNoaWxsRGl2KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om1vZCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpjaGlsbE1vZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjpuZWcpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlQWRkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpkb3VibGVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlRGl2KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU1vZCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjpiaXRBbmQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0T3IpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0WG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OnNobCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphU2hyKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmxTaHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0Tm90
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvZ2ljYWxOb3QpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6Y3RsejMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJs
ZUFicyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVDZWlsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUZsb29yKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZVRydW5jKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVNpbik6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVDb3MpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6ZG91YmxlUG93KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJs
ZVBvd2kpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlU3FydCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMb2cpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6aGFzU2Vuc2libGVEb3VibGVUb0ludCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpk
b3VibGVUb1VJbnQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c2lnbkV4dDMyVG82NCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp6ZXJvRXh0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmludFRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnVuc2ln
bmVkVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2FzdFRvSW50MzIpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlVG9GbG9hdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpmbG9hdFRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OmxvYWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9hZDhTaWduRXh0MzIpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YmFzZUluZGV4KToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdEVxdWFsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFib3ZlKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmFib3ZlT3JFcXVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvdyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvd09yRXF1YWwpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6Z3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Z3Jl
YXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVFcXVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpkb3VibGVFcXVhbE9yVW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRv
dWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91
YmxlTGVzc1RoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVzc1RoYW5P
ckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVk
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9y
VW5vcmRlcmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmlzWmVybzMyKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdFplcm8zMik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0Ojppc1plcm82NCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpub3RaZXJvNjQpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c2VsZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6Omp1bXApOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YnJhbmNoKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNoZWNrKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OnJldCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp1bnJlYWNoYWJsZSk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpzcGVjdWxhdGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6c3BlY3VsYXRlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNwZWN1bGF0ZVN1
Yik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzcGVjdWxhdGVNdWwpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6cGF0Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojp0cmFwKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFuY2hvcik6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpiaXRDYXN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmZy
b3VuZCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6c2V0T3JpZ2luKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om9yaWdpbik6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEludFB0cik6CisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0Ojpkb3VibGVOZWcpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6emVyb0V4
dFB0cik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkMzJOb25OZWdhdGl2ZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojppc051bGwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6bm90TnVsbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp0ZXN0SXNaZXJvUHRy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRlc3ROb25aZXJvUHRyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmNhbGwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6b3Bl
cmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJyYW5jaCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpzd2l0Y2hJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjphZGRJbmNvbWluZ1RvUGhpKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmZy
YW1lUG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEJv
b2wpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnQzMik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEludDY0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0RG91YmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnBoaSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjphZGQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3ViKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjpkaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6Y2hpbGxEaXYpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
bW9kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNoaWxsTW9kKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUFkZCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVTdWIpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTXVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmRvdWJsZURpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpkb3VibGVNb2QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0QW5k
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJpdE9yKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJpdFhvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpzaGwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6YVNocik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpsU2hyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmN0bHozMik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRXaXRoT3ZlcmZsb3czMik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdWJXaXRoT3ZlcmZsb3czMik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjptdWxXaXRoT3ZlcmZsb3czMik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGRXaXRoT3ZlcmZsb3c2NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdWJXaXRoT3ZlcmZsb3c2NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjptdWxXaXRoT3ZlcmZsb3c2NCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVBYnMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6ZG91YmxlQ2VpbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojpkb3VibGVGbG9vcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpkb3VibGVTaW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91Ymxl
Q29zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVBvdyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVTcXJ0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUxvZyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpzaWduRXh0MzJUbzY0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6Onplcm9FeHQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6aW50VG9Eb3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
Y2FzdFRvSW50MzIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91Ymxl
VG9GbG9hdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpmbG9hdFRvRG91
YmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmVxdWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdEVxdWFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFib3ZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmFib3ZlT3JFcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpiZWxvdyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvd09y
RXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Z3JlYXRlclRoYW4p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFs
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVFcXVhbCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVFcXVhbE9yVW5vcmRlcmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVzc1RoYW4pOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTGVzc1RoYW5PckVxdWFsKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JF
cXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVOb3RFcXVh
bEFuZE9yZGVyZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91Ymxl
TGVzc1RoYW5PclVub3JkZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5v
cmRlcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmlzWmVybzMyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdFplcm8zMik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojppc1plcm82NCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpub3RaZXJvNjQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6c2VsZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OmV4dHJhY3RWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpqdW1w
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnJldCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp1bnJlYWNoYWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpzcGVjdWxhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6c3BlY3VsYXRlQWRkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OnNwZWN1bGF0ZVN1Yik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjpzcGVjdWxhdGVNdWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6cGF0
Y2hwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp0cmFwKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFuY2hvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRDYXN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OmZyb3VuZCk6IERlbGV0ZWQuCisKIDIwMTYtMDYtMTMgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZm9sbG93
IHVwIHBhdGNoIGZvciByMjAxOTY0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuY3BwCShyZXZpc2lvbiAyMDE5OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDE2ICs3OCwxMzYgQEAgdm9pZCBP
dXRwdXQ6OmFwcGVuZFRvKExCYXNpY0Jsb2NrIGJsb2NrKQogICAgIG1fYmxvY2sgPSBibG9jazsK
IH0KIAorTFZhbHVlIE91dHB1dDo6ZnJhbWVQb2ludGVyKCkKK3sKKyAgICByZXR1cm4gbV9ibG9j
ay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RnJhbWVQb2ludGVyLCBvcmlnaW4o
KSk7Cit9CisKIFNsb3RCYXNlVmFsdWUqIE91dHB1dDo6bG9ja2VkU3RhY2tTbG90KHNpemVfdCBi
eXRlcykKIHsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PFNsb3RCYXNlVmFsdWU+KG1f
cHJvYywgb3JpZ2luKCksIG1fcHJvYy5hZGRTdGFja1Nsb3QoYnl0ZXMpKTsKIH0KIAorTFZhbHVl
IE91dHB1dDo6Y29uc3RCb29sKGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OmNvbnN0SW50MzIoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZh
bHVlKTsKK30KKworTFZhbHVlIE91dHB1dDo6Y29uc3RJbnQ2NChpbnQ2NF90IHZhbHVlKQorewor
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnN0NjRWYWx1ZT4obV9wcm9jLCBv
cmlnaW4oKSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpjb25zdERvdWJsZShkb3VibGUg
dmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3REb3VibGVW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0OjpwaGko
TFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6UGhpLCB0eXBlLCBvcmlnaW4oKSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmFk
ZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpBZGQsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OnN1YihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQorewor
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTdWIs
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6Om11bChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpNdWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xW
YWx1ZSBPdXRwdXQ6OmRpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpEaXYsIG9yaWdpbigp
LCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmNoaWxsRGl2KExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFs
dWU+KG1fcHJvYywgQjM6OkNoaWxsRGl2LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQorCitM
VmFsdWUgT3V0cHV0Ojptb2QoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TW9kLCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0OjpjaGlsbE1vZChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpDaGlsbE1vZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKwog
TFZhbHVlIE91dHB1dDo6bmVnKExWYWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEIzOjpOZWcsIG9yaWdpbigpLCB2YWx1ZSk7CiB9CiAK
K0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUFkZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQorewor
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpBZGQs
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZVN1YihM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTdWIsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9
CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZU11bChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQor
eworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpN
dWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZURp
dihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZU1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpNb2QsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmJpdEFu
ZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRBbmQsIG9yaWdpbigpLCBsZWZ0LCByaWdo
dCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmJpdE9yKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkJpdE9yLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0OjpiaXRY
b3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0WG9yLCBvcmlnaW4oKSwgbGVmdCwgcmln
aHQpOworfQorCitMVmFsdWUgT3V0cHV0OjpzaGwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkK
K3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
U2hsLCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRvSW50MzIocmlnaHQpKTsKK30KKworTFZhbHVlIE91
dHB1dDo6YVNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTU2hyLCBvcmlnaW4oKSwgbGVm
dCwgY2FzdFRvSW50MzIocmlnaHQpKTsKK30KKworTFZhbHVlIE91dHB1dDo6bFNocihMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpaU2hyLCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRvSW50MzIocmln
aHQpKTsKK30KKwogTFZhbHVlIE91dHB1dDo6Yml0Tm90KExWYWx1ZSB2YWx1ZSkKIHsKICAgICBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0WG9yLCBv
cmlnaW4oKSwKQEAgLTEwMCwxMSArMjIwLDU4IEBAIExWYWx1ZSBPdXRwdXQ6OmxvZ2ljYWxOb3Qo
TFZhbHVlIHZhbHVlKQogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPiht
X3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQzMlplcm8pOwogfQogCi1MVmFs
dWUgT3V0cHV0Ojpsb2FkKFR5cGVkUG9pbnRlciBwb2ludGVyLCBMVHlwZSB0eXBlKQorTFZhbHVl
IE91dHB1dDo6Y3RsejMyKExWYWx1ZSBvcGVyYW5kKQogewotICAgIExWYWx1ZSBsb2FkID0gbV9i
bG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHR5cGUsIG9yaWdpbigp
LCBwb2ludGVyLnZhbHVlKCkpOwotICAgIG1faGVhcHMtPmRlY29yYXRlTWVtb3J5KHBvaW50ZXIu
aGVhcCgpLCBsb2FkKTsKLSAgICByZXR1cm4gbG9hZDsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Q2x6LCBvcmlnaW4oKSwgb3BlcmFuZCk7Cit9
CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUFicyhMVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFicywgb3JpZ2luKCks
IHZhbHVlKTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlQ2VpbChMVmFsdWUgb3BlcmFuZCkK
K3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
Q2VpbCwgb3JpZ2luKCksIG9wZXJhbmQpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVGbG9v
cihMVmFsdWUgb3BlcmFuZCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6Rmxvb3IsIG9yaWdpbigpLCBvcGVyYW5kKTsKK30KKworTFZhbHVl
IE91dHB1dDo6ZG91YmxlVHJ1bmMoTFZhbHVlIHZhbHVlKQoreworICAgIGlmIChNYWNyb0Fzc2Vt
Ymxlcjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50Um91bmRpbmcoKSkgeworICAgICAgICBQYXRjaHBv
aW50VmFsdWUqIHJlc3VsdCA9IHBhdGNocG9pbnQoRG91YmxlKTsKKyAgICAgICAgcmVzdWx0LT5h
cHBlbmQodmFsdWUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICByZXN1bHQtPnNl
dEdlbmVyYXRvcigKKyAgICAgICAgICAgIFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBqaXQucm91
bmRUb3dhcmRaZXJvRG91YmxlKHBhcmFtc1sxXS5mcHIoKSwgcGFyYW1zWzBdLmZwcigpKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICByZXN1bHQtPmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGRvdWJsZSAoKnRydW5jRG91Ymxl
KShkb3VibGUpID0gdHJ1bmM7CisgICAgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoRG91
YmxlLCB0cnVuY0RvdWJsZSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVTaW4o
TFZhbHVlIHZhbHVlKQoreworICAgIGRvdWJsZSAoKnNpbkRvdWJsZSkoZG91YmxlKSA9IHNpbjsK
KyAgICByZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBzaW5Eb3VibGUs
IHZhbHVlKTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlQ29zKExWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBkb3VibGUgKCpjb3NEb3VibGUpKGRvdWJsZSkgPSBjb3M7CisgICAgcmV0dXJuIGNhbGxX
aXRob3V0U2lkZUVmZmVjdHMoQjM6OkRvdWJsZSwgY29zRG91YmxlLCB2YWx1ZSk7Cit9CisKK0xW
YWx1ZSBPdXRwdXQ6OmRvdWJsZVBvdyhMVmFsdWUgeE9wZXJhbmQsIExWYWx1ZSB5T3BlcmFuZCkK
K3sKKyAgICBkb3VibGUgKCpwb3dEb3VibGUpKGRvdWJsZSwgZG91YmxlKSA9IHBvdzsKKyAgICBy
ZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBwb3dEb3VibGUsIHhPcGVy
YW5kLCB5T3BlcmFuZCk7CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmRvdWJsZVBvd2koTFZhbHVlIHgs
IExWYWx1ZSB5KQpAQCAtMTE3LDYgKzI4NCwxNyBAQCBMVmFsdWUgT3V0cHV0Ojpkb3VibGVQb3dp
KExWYWx1ZSB4LCBMVmFsCiAgICAgcmV0dXJuIHJlc3VsdC5zZWNvbmQ7CiB9CiAKK0xWYWx1ZSBP
dXRwdXQ6OmRvdWJsZVNxcnQoTFZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTcXJ0LCBvcmlnaW4oKSwgdmFsdWUpOwor
fQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVMb2coTFZhbHVlIHZhbHVlKQoreworICAgIGRvdWJs
ZSAoKmxvZ0RvdWJsZSkoZG91YmxlKSA9IGxvZzsKKyAgICByZXR1cm4gY2FsbFdpdGhvdXRTaWRl
RWZmZWN0cyhCMzo6RG91YmxlLCBsb2dEb3VibGUsIHZhbHVlKTsKK30KKwogYm9vbCBPdXRwdXQ6
Omhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKQogewogICAgIHJldHVybiBvcHRpbWl6ZUZvclg4Nigp
OwpAQCAtMTQ2LDIwICszMjQsMjEgQEAgTFZhbHVlIE91dHB1dDo6ZG91YmxlVG9VSW50KExWYWx1
ZSB2YWx1ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUxWYWx1ZSBPdXRwdXQ6OmRvdWJsZVRy
dW5jKExWYWx1ZSB2YWx1ZSkKK0xWYWx1ZSBPdXRwdXQ6OnNpZ25FeHQzMlRvNjQoTFZhbHVlIHZh
bHVlKQogewotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50Um91
bmRpbmcoKSkgewotICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHJlc3VsdCA9IHBhdGNocG9pbnQo
RG91YmxlKTsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQodmFsdWUsIFZhbHVlUmVwOjpTb21lUmVn
aXN0ZXIpOwotICAgICAgICByZXN1bHQtPnNldEdlbmVyYXRvcigKLSAgICAgICAgICAgIFtdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKLSAgICAgICAgICAgICAgICBqaXQucm91bmRUb3dhcmRaZXJvRG91YmxlKHBhcmFtc1sxXS5m
cHIoKSwgcGFyYW1zWzBdLmZwcigpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICByZXN1bHQt
PmVmZmVjdHMgPSBFZmZlY3RzOjpub25lKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotICAgIGRvdWJsZSAoKnRydW5jRG91YmxlKShkb3VibGUpID0gdHJ1bmM7Ci0gICAgcmV0dXJu
IGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoRG91YmxlLCB0cnVuY0RvdWJsZSwgdmFsdWUpOworICAg
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTRXh0MzIs
IG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6Onplcm9FeHQoTFZhbHVlIHZh
bHVlLCBMVHlwZSB0eXBlKQoreworICAgIGlmICh2YWx1ZS0+dHlwZSgpID09IHR5cGUpCisgICAg
ICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6WkV4dDMyLCBvcmlnaW4oKSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0
cHV0OjppbnRUb0RvdWJsZShMVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OklUb0QsIG9yaWdpbigpLCB2YWx1ZSk7CiB9
CiAKIExWYWx1ZSBPdXRwdXQ6OnVuc2lnbmVkVG9Eb3VibGUoTFZhbHVlIHZhbHVlKQpAQCAtMTY3
LDYgKzM0NiwyOSBAQCBMVmFsdWUgT3V0cHV0Ojp1bnNpZ25lZFRvRG91YmxlKExWYWx1ZSB2CiAg
ICAgcmV0dXJuIGludFRvRG91YmxlKHplcm9FeHQodmFsdWUsIEludDY0KSk7CiB9CiAKK0xWYWx1
ZSBPdXRwdXQ6OmNhc3RUb0ludDMyKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUt
PnR5cGUoKSA9PSBCMzo6SW50MzIgPyB2YWx1ZSA6CisgICAgICAgIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlRydW5jLCBvcmlnaW4oKSwgdmFsdWUpOworfQorCitM
VmFsdWUgT3V0cHV0Ojpkb3VibGVUb0Zsb2F0KExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RG91YmxlVG9GbG9hdCwg
b3JpZ2luKCksIHZhbHVlKTsKK30KKworTFZhbHVlIE91dHB1dDo6ZmxvYXRUb0RvdWJsZShMVmFs
dWUgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkZsb2F0VG9Eb3VibGUsIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBP
dXRwdXQ6OmxvYWQoVHlwZWRQb2ludGVyIHBvaW50ZXIsIExUeXBlIHR5cGUpCit7CisgICAgTFZh
bHVlIGxvYWQgPSBtX2Jsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwg
dHlwZSwgb3JpZ2luKCksIHBvaW50ZXIudmFsdWUoKSk7CisgICAgbV9oZWFwcy0+ZGVjb3JhdGVN
ZW1vcnkocG9pbnRlci5oZWFwKCksIGxvYWQpOworICAgIHJldHVybiBsb2FkOworfQorCiBMVmFs
dWUgT3V0cHV0Ojpsb2FkOFNpZ25FeHQzMihUeXBlZFBvaW50ZXIgcG9pbnRlcikKIHsKICAgICBM
VmFsdWUgbG9hZCA9IG1fYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
OFMsIEludDMyLCBvcmlnaW4oKSwgcG9pbnRlci52YWx1ZSgpKTsKQEAgLTIzOSw2ICs0NDEsMTQ2
IEBAIExWYWx1ZSBPdXRwdXQ6OmJhc2VJbmRleChMVmFsdWUgYmFzZSwgTFYKICAgICByZXR1cm4g
YWRkKGJhc2UsIGFjY3VtdWxhdGVkT2Zmc2V0KTsKIH0KIAorTFZhbHVlIE91dHB1dDo6ZXF1YWwo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
Cit9CisKK0xWYWx1ZSBPdXRwdXQ6Om5vdEVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
Ok5vdEVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0Ojph
Ym92ZShMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpBYm92ZSwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6YWJvdmVPckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFs
dWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkFib3ZlRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1
ZSBPdXRwdXQ6OmJlbG93KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJlbG93LCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0OjpiZWxvd09yRXF1YWwoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3dFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsK
K30KKworTFZhbHVlIE91dHB1dDo6Z3JlYXRlclRoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6R3JlYXRlclRoYW4sIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRw
dXQ6OmdyZWF0ZXJUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAg
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpHcmVhdGVy
RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6Omxlc3NU
aGFuKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NUaGFuLCBvcmlnaW4oKSwgbGVmdCwg
cmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0OjpsZXNzVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6TGVzc0VxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQorCitM
VmFsdWUgT3V0cHV0Ojpkb3VibGVFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQorewor
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVh
bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlRXF1
YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbE9yVW5vcmRlcmVk
LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVOb3RF
cXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFsLCBvcmln
aW4oKSwgbGVmdCwgcmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVMZXNzVGhhbihM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpMZXNzVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlTGVzc1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFs
dWU+KG1fcHJvYywgQjM6Okxlc3NFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKwor
TFZhbHVlIE91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6R3JlYXRlclRoYW4sIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRw
dXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQor
eworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpH
cmVhdGVyRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6
OmRvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQorewor
ICAgIHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUVxdWFsT3JVbm9yZGVyZWQobGVmdCwgcmlnaHQp
KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlTGVzc1RoYW5PclVub3JkZXJlZChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUdyZWF0
ZXJUaGFuT3JFcXVhbChsZWZ0LCByaWdodCkpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVM
ZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQorewor
ICAgIHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUdyZWF0ZXJUaGFuKGxlZnQsIHJpZ2h0KSk7Cit9
CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbG9naWNhbE5vdChkb3VibGVMZXNzVGhh
bk9yRXF1YWwobGVmdCwgcmlnaHQpKTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlR3JlYXRl
clRoYW5PckVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAg
ICByZXR1cm4gbG9naWNhbE5vdChkb3VibGVMZXNzVGhhbihsZWZ0LCByaWdodCkpOworfQorCitM
VmFsdWUgT3V0cHV0Ojppc1plcm8zMihMVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgdmFs
dWUsIGludDMyWmVybyk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6Om5vdFplcm8zMihMVmFsdWUgdmFs
dWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6Ok5vdEVxdWFsLCBvcmlnaW4oKSwgdmFsdWUsIGludDMyWmVybyk7Cit9CisKK0xWYWx1ZSBP
dXRwdXQ6OmlzWmVybzY0KExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50
NjRaZXJvKTsKK30KKworTFZhbHVlIE91dHB1dDo6bm90WmVybzY0KExWYWx1ZSB2YWx1ZSkKK3sK
KyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Tm90
RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50NjRaZXJvKTsKK30KKworTFZhbHVlIE91dHB1dDo6
c2VsZWN0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIHRha2VuLCBMVmFsdWUgbm90VGFrZW4pCit7Cisg
ICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNlbGVj
dCwgb3JpZ2luKCksIHZhbHVlLCB0YWtlbiwgbm90VGFrZW4pOworfQorCit2b2lkIE91dHB1dDo6
anVtcChMQmFzaWNCbG9jayBkZXN0aW5hdGlvbikKK3sKKyAgICBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBCMzo6SnVtcCwgb3JpZ2luKCksIEIzOjpGcmVxdWVu
dGVkQmxvY2soZGVzdGluYXRpb24pKTsKK30KKwogdm9pZCBPdXRwdXQ6OmJyYW5jaChMVmFsdWUg
Y29uZGl0aW9uLCBMQmFzaWNCbG9jayB0YWtlbiwgV2VpZ2h0IHRha2VuV2VpZ2h0LCBMQmFzaWNC
bG9jayBub3RUYWtlbiwgV2VpZ2h0IG5vdFRha2VuV2VpZ2h0KQogewogICAgIG1fYmxvY2stPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KApAQCAtMjU5LDYgKzYwMSw2MyBAQCB2b2lkIE91dHB1dDo6
Y2hlY2soTFZhbHVlIGNvbmRpdGlvbiwgV2VpCiAgICAgY2hlY2soY29uZGl0aW9uLCB0YWtlbiwg
dGFrZW4ud2VpZ2h0KCkuaW52ZXJzZSgpKTsKIH0KIAordm9pZCBPdXRwdXQ6OnJldChMVmFsdWUg
dmFsdWUpCit7CisgICAgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb250cm9sVmFsdWU+KG1fcHJv
YywgQjM6OlJldHVybiwgb3JpZ2luKCksIHZhbHVlKTsKK30KKwordm9pZCBPdXRwdXQ6OnVucmVh
Y2hhYmxlKCkKK3sKKyAgICBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9w
cm9jLCBCMzo6T29wcywgb3JpZ2luKCkpOworfQorCitDaGVja1ZhbHVlKiBPdXRwdXQ6OnNwZWN1
bGF0ZShMVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
Q2hlY2tWYWx1ZT4obV9wcm9jLCBCMzo6Q2hlY2ssIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0No
ZWNrVmFsdWUqIE91dHB1dDo6c3BlY3VsYXRlQWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q2hlY2tWYWx1ZT4obV9wcm9j
LCBCMzo6Q2hlY2tBZGQsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0NoZWNrVmFsdWUq
IE91dHB1dDo6c3BlY3VsYXRlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q2hlY2tWYWx1ZT4obV9wcm9jLCBCMzo6Q2hl
Y2tTdWIsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0NoZWNrVmFsdWUqIE91dHB1dDo6
c3BlY3VsYXRlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6Q2hlY2tWYWx1ZT4obV9wcm9jLCBCMzo6Q2hlY2tNdWwsIG9y
aWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK1BhdGNocG9pbnRWYWx1ZSogT3V0cHV0OjpwYXRj
aHBvaW50KExUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
UGF0Y2hwb2ludFZhbHVlPihtX3Byb2MsIHR5cGUsIG9yaWdpbigpKTsKK30KKwordm9pZCBPdXRw
dXQ6OnRyYXAoKQoreworICAgIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29udHJvbFZhbHVlPiht
X3Byb2MsIEIzOjpPb3BzLCBvcmlnaW4oKSk7Cit9CisKK1ZhbHVlRnJvbUJsb2NrIE91dHB1dDo6
YW5jaG9yKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICBCMzo6VXBzaWxvblZhbHVlKiB1cHNpbG9uID0g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZh
bHVlKTsKKyAgICByZXR1cm4gVmFsdWVGcm9tQmxvY2sodXBzaWxvbiwgbV9ibG9jayk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OmJpdENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKQoreworICAg
IEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSA9PSBpbnQ2NCB8fCB0eXBlID09IGRvdWJsZVR5cGUp
OworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpC
aXR3aXNlQ2FzdCwgb3JpZ2luKCksIHZhbHVlKTsKK30KKworTFZhbHVlIE91dHB1dDo6ZnJvdW5k
KExWYWx1ZSBkb3VibGVWYWx1ZSkKK3sKKyAgICByZXR1cm4gZmxvYXRUb0RvdWJsZShkb3VibGVU
b0Zsb2F0KGRvdWJsZVZhbHVlKSk7Cit9CisKIExWYWx1ZSBPdXRwdXQ6OmxvYWQoVHlwZWRQb2lu
dGVyIHBvaW50ZXIsIExvYWRUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDIwMTk5NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTk5LDIwICs5OSwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmlnaW4oREZHOjpOb2RlKiBu
b2RlKSB7IG1fb3JpZ2luID0gbm9kZTsgfQogICAgIEIzOjpPcmlnaW4gb3JpZ2luKCkgeyByZXR1
cm4gQjM6Ok9yaWdpbihtX29yaWdpbik7IH0KIAotICAgIExWYWx1ZSBmcmFtZVBvaW50ZXIoKSB7
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBv
aW50ZXIsIG9yaWdpbigpKTsgfQorICAgIExWYWx1ZSBmcmFtZVBvaW50ZXIoKTsKIAogICAgIEIz
OjpTbG90QmFzZVZhbHVlKiBsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90IGJ5dGVzKTsKIAotICAgIExW
YWx1ZSBjb25zdEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQotICAgIExWYWx1ZSBj
b25zdEludDMyKGludDMyX3QgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
Q29uc3QzMlZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KKyAgICBMVmFsdWUgY29u
c3RCb29sKGJvb2wgdmFsdWUpOworICAgIExWYWx1ZSBjb25zdEludDMyKGludDMyX3QgdmFsdWUp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTFZhbHVlIGNvbnN0SW50UHRyKFQqIHZh
bHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnN0UHRyVmFsdWU+KG1fcHJv
Yywgb3JpZ2luKCksIHZhbHVlKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTFZh
bHVlIGNvbnN0SW50UHRyKFQgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9Ci0gICAgTFZhbHVlIGNv
bnN0SW50NjQoaW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpD
b25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQotICAgIExWYWx1ZSBjb25z
dERvdWJsZShkb3VibGUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29u
c3REb3VibGVWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9CisgICAgTFZhbHVlIGNv
bnN0SW50NjQoaW50NjRfdCB2YWx1ZSk7CisgICAgTFZhbHVlIGNvbnN0RG91YmxlKGRvdWJsZSB2
YWx1ZSk7CiAKLSAgICBMVmFsdWUgcGhpKExUeXBlIHR5cGUpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlBoaSwgdHlwZSwgb3JpZ2luKCkpOyB9Cisg
ICAgTFZhbHVlIHBoaShMVHlwZSB0eXBlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJh
bXM+CiAgICAgTFZhbHVlIHBoaShMVHlwZSwgVmFsdWVGcm9tQmxvY2ssIFBhcmFtcy4uLiB0aGVS
ZXN0KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgpAQCAtMTIxLDkxICsxMjEs
NjAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KICAgICB2b2lk
IGFkZEluY29taW5nVG9QaGkoTFZhbHVlIHBoaSwgVmFsdWVGcm9tQmxvY2ssIFBhcmFtcy4uLiB0
aGVSZXN0KTsKIAotICAgIExWYWx1ZSBhZGQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWRkLCBvcmln
aW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIHN1YihMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpTdWIsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgbXVsKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6Ok11bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBk
aXYoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RGl2LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0g
ICAgTFZhbHVlIGNoaWxsRGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkNoaWxsRGl2LCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIG1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpN
b2QsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgY2hpbGxNb2QoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6Q2hpbGxNb2QsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KKyAgICBM
VmFsdWUgYWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBzdWIoTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIG11bChMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KTsKKyAgICBMVmFsdWUgZGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOwor
ICAgIExWYWx1ZSBjaGlsbERpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBMVmFs
dWUgbW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBjaGlsbE1vZChM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKICAgICBMVmFsdWUgbmVnKExWYWx1ZSk7CiAKLSAg
ICBMVmFsdWUgZG91YmxlQWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFkZCwgb3JpZ2luKCksIGxl
ZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkb3VibGVTdWIoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
U3ViLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZU11bChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpNdWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFs
dWUgZG91YmxlRGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkRpdiwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsgfQotICAgIExWYWx1ZSBkb3VibGVNb2QoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkg
eyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TW9kLCBv
cmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZUFkZChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBMVmFsdWUgZG91YmxlU3ViKExWYWx1ZSBsZWZ0LCBMVmFs
dWUgcmlnaHQpOworICAgIExWYWx1ZSBkb3VibGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCk7CisgICAgTFZhbHVlIGRvdWJsZURpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAg
ICBMVmFsdWUgZG91YmxlTW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOwogICAgIExWYWx1
ZSBkb3VibGVOZWcoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBuZWcodmFsdWUpOyB9CiAKLSAgICBM
VmFsdWUgYml0QW5kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdEFuZCwgb3JpZ2luKCksIGxlZnQs
IHJpZ2h0KTsgfQotICAgIExWYWx1ZSBiaXRPcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRPciwg
b3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBiaXRYb3IoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6Qml0WG9yLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIHNo
bChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpTaGwsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihy
aWdodCkpOyB9Ci0gICAgTFZhbHVlIGFTaHIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U1Nociwgb3Jp
Z2luKCksIGxlZnQsIGNhc3RUb0ludDMyKHJpZ2h0KSk7IH0KLSAgICBMVmFsdWUgbFNocihMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpaU2hyLCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRvSW50MzIocmlnaHQp
KTsgfQorICAgIExWYWx1ZSBiaXRBbmQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAg
TFZhbHVlIGJpdE9yKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBiaXRY
b3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIHNobChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBMVmFsdWUgYVNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KTsKKyAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKICAgICBM
VmFsdWUgYml0Tm90KExWYWx1ZSk7CiAgICAgTFZhbHVlIGxvZ2ljYWxOb3QoTFZhbHVlKTsKIAot
ICAgIExWYWx1ZSBjdGx6MzIoTFZhbHVlIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkNseiwgb3JpZ2luKCksIG9wZXJhbmQpOyB9Ci0g
ICAgTFZhbHVlIGFkZFdpdGhPdmVyZmxvdzMyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
Q1JBU0goKTsgfQotICAgIExWYWx1ZSBzdWJXaXRoT3ZlcmZsb3czMihMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93MzIoTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGFkZFdpdGhP
dmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExW
YWx1ZSBzdWJXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNI
KCk7IH0KLSAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93NjQoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUFicyhMVmFsdWUgdmFsdWUpIHsg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFicywgb3Jp
Z2luKCksIHZhbHVlKTsgfQotICAgIExWYWx1ZSBkb3VibGVDZWlsKExWYWx1ZSBvcGVyYW5kKSB7
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDZWlsLCBv
cmlnaW4oKSwgb3BlcmFuZCk7IH0KLSAgICBMVmFsdWUgZG91YmxlRmxvb3IoTFZhbHVlIG9wZXJh
bmQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZs
b29yLCBvcmlnaW4oKSwgb3BlcmFuZCk7IH0KKyAgICBMVmFsdWUgY3RsejMyKExWYWx1ZSBvcGVy
YW5kKTsKKyAgICBMVmFsdWUgZG91YmxlQWJzKExWYWx1ZSB2YWx1ZSk7CisgICAgTFZhbHVlIGRv
dWJsZUNlaWwoTFZhbHVlIG9wZXJhbmQpOworICAgIExWYWx1ZSBkb3VibGVGbG9vcihMVmFsdWUg
b3BlcmFuZCk7CiAgICAgTFZhbHVlIGRvdWJsZVRydW5jKExWYWx1ZSk7CiAKLSAgICBMVmFsdWUg
ZG91YmxlU2luKExWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGRvdWJsZSAoKnNpbkRvdWJs
ZSkoZG91YmxlKSA9IHNpbjsKLSAgICAgICAgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMo
QjM6OkRvdWJsZSwgc2luRG91YmxlLCB2YWx1ZSk7Ci0gICAgfQotICAgIExWYWx1ZSBkb3VibGVD
b3MoTFZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgZG91YmxlICgqY29zRG91YmxlKShkb3Vi
bGUpID0gY29zOwotICAgICAgICByZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91
YmxlLCBjb3NEb3VibGUsIHZhbHVlKTsKLSAgICB9CisgICAgTFZhbHVlIGRvdWJsZVNpbihMVmFs
dWUgdmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVDb3MoTFZhbHVlIHZhbHVlKTsKIAotICAgIExW
YWx1ZSBkb3VibGVQb3coTFZhbHVlIHhPcGVyYW5kLCBMVmFsdWUgeU9wZXJhbmQpCi0gICAgewot
ICAgICAgICBkb3VibGUgKCpwb3dEb3VibGUpKGRvdWJsZSwgZG91YmxlKSA9IHBvdzsKLSAgICAg
ICAgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoQjM6OkRvdWJsZSwgcG93RG91YmxlLCB4
T3BlcmFuZCwgeU9wZXJhbmQpOwotICAgIH0KKyAgICBMVmFsdWUgZG91YmxlUG93KExWYWx1ZSB4
T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5kKTsKIAogICAgIExWYWx1ZSBkb3VibGVQb3dpKExWYWx1
ZSB4T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5kKTsKIAotICAgIExWYWx1ZSBkb3VibGVTcXJ0KExW
YWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6U3FydCwgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExWYWx1ZSBkb3VibGVTcXJ0KExW
YWx1ZSB2YWx1ZSk7CiAKLSAgICBMVmFsdWUgZG91YmxlTG9nKExWYWx1ZSB2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIGRvdWJsZSAoKmxvZ0RvdWJsZSkoZG91YmxlKSA9IGxvZzsKLSAgICAgICAgcmV0
dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoQjM6OkRvdWJsZSwgbG9nRG91YmxlLCB2YWx1ZSk7
Ci0gICAgfQorICAgIExWYWx1ZSBkb3VibGVMb2coTFZhbHVlIHZhbHVlKTsKIAogICAgIHN0YXRp
YyBib29sIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKTsKICAgICBMVmFsdWUgZG91YmxlVG9JbnQo
TFZhbHVlKTsKICAgICBMVmFsdWUgZG91YmxlVG9VSW50KExWYWx1ZSk7CiAKLSAgICBMVmFsdWUg
c2lnbkV4dDMyVG82NChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6OlNFeHQzMiwgb3JpZ2luKCksIHZhbHVlKTsgfQotICAgIExW
YWx1ZSB6ZXJvRXh0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS0+dHlwZSgpID09IHR5cGUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAg
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpaRXh0
MzIsIG9yaWdpbigpLCB2YWx1ZSk7Ci0gICAgfQorICAgIExWYWx1ZSBzaWduRXh0MzJUbzY0KExW
YWx1ZSB2YWx1ZSk7CisgICAgTFZhbHVlIHplcm9FeHQoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBl
KTsKICAgICBMVmFsdWUgemVyb0V4dFB0cihMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIHplcm9FeHQo
dmFsdWUsIEIzOjpJbnQ2NCk7IH0KLSAgICBMVmFsdWUgaW50VG9Eb3VibGUoTFZhbHVlIHZhbHVl
KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpJVG9E
LCBvcmlnaW4oKSwgdmFsdWUpOyB9CisgICAgTFZhbHVlIGludFRvRG91YmxlKExWYWx1ZSB2YWx1
ZSk7CiAgICAgTFZhbHVlIHVuc2lnbmVkVG9Eb3VibGUoTFZhbHVlKTsKLSAgICBMVmFsdWUgY2Fz
dFRvSW50MzIoTFZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlLT50eXBl
KCkgPT0gQjM6OkludDMyID8gdmFsdWUgOgotICAgICAgICAgICAgbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6VHJ1bmMsIG9yaWdpbigpLCB2YWx1ZSk7Ci0gICAgfQot
ICAgIExWYWx1ZSBkb3VibGVUb0Zsb2F0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RG91YmxlVG9GbG9hdCwgb3JpZ2luKCks
IHZhbHVlKTsgfQotICAgIExWYWx1ZSBmbG9hdFRvRG91YmxlKExWYWx1ZSB2YWx1ZSkgeyByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RmxvYXRUb0RvdWJs
ZSwgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExWYWx1ZSBjYXN0VG9JbnQzMihMVmFsdWUgdmFs
dWUpOworICAgIExWYWx1ZSBkb3VibGVUb0Zsb2F0KExWYWx1ZSB2YWx1ZSk7CisgICAgTFZhbHVl
IGZsb2F0VG9Eb3VibGUoTFZhbHVlIHZhbHVlKTsKICAgICBMVmFsdWUgYml0Q2FzdChMVmFsdWUs
IExUeXBlKTsKICAgICBMVmFsdWUgZnJvdW5kKExWYWx1ZSBkb3VibGVWYWx1ZSk7CiAKQEAgLTMz
MCwzNCArMjk5LDM0IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoVHlw
ZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQzMihwb2ludGVyKTsgfQogICAgIExWYWx1
ZSBsb2FkMzJOb25OZWdhdGl2ZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RIZWFwJiBmaWVs
ZCkgeyByZXR1cm4gbG9hZDMyKGJhc2UsIGZpZWxkKTsgfQogCi0gICAgTFZhbHVlIGVxdWFsKExW
YWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAg
TFZhbHVlIG5vdEVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFsLCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGFib3ZlKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFi
b3ZlLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGFib3ZlT3JFcXVhbChM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpBYm92ZUVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9
Ci0gICAgTFZhbHVlIGJlbG93KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJlbG93LCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGJlbG93T3JFcXVhbChMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpCZWxvd0VxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGdy
ZWF0ZXJUaGFuKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJUaGFuLCBvcmlnaW4oKSwgbGVm
dCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGdyZWF0ZXJUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpHcmVhdGVyRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFs
dWUgbGVzc1RoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc1RoYW4sIG9yaWdpbigpLCBsZWZ0
LCByaWdodCk7IH0KLSAgICBMVmFsdWUgbGVzc1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFs
dWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6Okxlc3NFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotCi0gICAgTFZhbHVlIGRv
dWJsZUVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmln
aHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6RXF1YWxPclVub3JkZXJlZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExW
YWx1ZSBkb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
IHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVx
dWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFu
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NUaGFuLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9
Ci0gICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpM
ZXNzRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZG91YmxlR3Jl
YXRlclRoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6R3JlYXRlclRoYW4sIG9yaWdpbigpLCBsZWZ0
LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAg
IExWYWx1ZSBkb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkgeyByZXR1cm4gbG9naWNhbE5vdChkb3VibGVFcXVhbE9yVW5vcmRlcmVkKGxlZnQsIHJpZ2h0
KSk7IH0KLSAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KSB7IHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVh
bChsZWZ0LCByaWdodCkpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5v
cmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxvZ2ljYWxOb3QoZG91
YmxlR3JlYXRlclRoYW4obGVmdCwgcmlnaHQpKTsgfQotICAgIExWYWx1ZSBkb3VibGVHcmVhdGVy
VGhhbk9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxvZ2lj
YWxOb3QoZG91YmxlTGVzc1RoYW5PckVxdWFsKGxlZnQsIHJpZ2h0KSk7IH0KLSAgICBMVmFsdWUg
ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyByZXR1cm4gbG9naWNhbE5vdChkb3VibGVMZXNzVGhhbihsZWZ0LCByaWdodCkpOyB9
Ci0KLSAgICBMVmFsdWUgaXNaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBp
bnQzMlplcm8pOyB9Ci0gICAgTFZhbHVlIG5vdFplcm8zMihMVmFsdWUgdmFsdWUpIHsgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFsLCBvcmln
aW4oKSwgdmFsdWUsIGludDMyWmVybyk7IH0KLSAgICBMVmFsdWUgaXNaZXJvNjQoTFZhbHVlIHZh
bHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpF
cXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQ2NFplcm8pOyB9Ci0gICAgTFZhbHVlIG5vdFplcm82
NChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6Ok5vdEVxdWFsLCBvcmlnaW4oKSwgdmFsdWUsIGludDY0WmVybyk7IH0KKyAgICBM
VmFsdWUgZXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIG5vdEVx
dWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBhYm92ZShMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBMVmFsdWUgYWJvdmVPckVxdWFsKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBiZWxvdyhMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KTsKKyAgICBMVmFsdWUgYmVsb3dPckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
OworICAgIExWYWx1ZSBncmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAg
ICBMVmFsdWUgZ3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOwor
ICAgIExWYWx1ZSBsZXNzVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBMVmFs
dWUgbGVzc1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworCisgICAgTFZh
bHVlIGRvdWJsZUVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBk
b3VibGVFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExW
YWx1ZSBkb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
OworICAgIExWYWx1ZSBkb3VibGVMZXNzVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsK
KyAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpOworICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KTsKKyAgICBMVmFsdWUgZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBM
VmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBkb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuT3JVbm9yZGVy
ZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFu
T3JFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1
ZSBkb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
OworICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KTsKKworICAgIExWYWx1ZSBpc1plcm8zMihMVmFsdWUgdmFsdWUp
OworICAgIExWYWx1ZSBub3RaZXJvMzIoTFZhbHVlIHZhbHVlKTsKKyAgICBMVmFsdWUgaXNaZXJv
NjQoTFZhbHVlIHZhbHVlKTsKKyAgICBMVmFsdWUgbm90WmVybzY0KExWYWx1ZSB2YWx1ZSk7CiAg
ICAgTFZhbHVlIGlzTnVsbChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGlzWmVybzY0KHZhbHVlKTsg
fQogICAgIExWYWx1ZSBub3ROdWxsKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbm90WmVybzY0KHZh
bHVlKTsgfQogCkBAIC0zNjgsOCArMzM3LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSB0ZXN0SXNa
ZXJvUHRyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsgcmV0dXJuIGlzTnVsbChiaXRBbmQo
dmFsdWUsIG1hc2spKTsgfQogICAgIExWYWx1ZSB0ZXN0Tm9uWmVyb1B0cihMVmFsdWUgdmFsdWUs
IExWYWx1ZSBtYXNrKSB7IHJldHVybiBub3ROdWxsKGJpdEFuZCh2YWx1ZSwgbWFzaykpOyB9CiAK
LSAgICBMVmFsdWUgc2VsZWN0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIHRha2VuLCBMVmFsdWUgbm90
VGFrZW4pIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OlNlbGVjdCwgb3JpZ2luKCksIHZhbHVlLCB0YWtlbiwgbm90VGFrZW4pOyB9Ci0gICAgTFZhbHVl
IGV4dHJhY3RWYWx1ZShMVmFsdWUgYWdnVmFsLCB1bnNpZ25lZCBpbmRleCkgeyBDUkFTSCgpOyB9
CisgICAgTFZhbHVlIHNlbGVjdChMVmFsdWUgdmFsdWUsIExWYWx1ZSB0YWtlbiwgTFZhbHVlIG5v
dFRha2VuKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+CiAgICAgTFZhbHVl
IGNhbGwoTFR5cGUgdHlwZSwgTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBWZWN0b3JUeXBlJiB2ZWN0
b3IpCkBAIC0zOTQsNyArMzYyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0aW9uVHlwZT4KICAgICBMVmFsdWUgb3BlcmF0aW9uKEZ1bmN0aW9uVHlwZSBmdW5jdGlvbikg
eyByZXR1cm4gY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PHZvaWQqPihmdW5jdGlvbikpOyB9CiAK
LSAgICB2b2lkIGp1bXAoTEJhc2ljQmxvY2sgZGVzdGluYXRpb24pIHsgbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpDb250cm9sVmFsdWU+KG1fcHJvYywgQjM6Okp1bXAsIG9yaWdpbigpLCBCMzo6RnJl
cXVlbnRlZEJsb2NrKGRlc3RpbmF0aW9uKSk7IH0KKyAgICB2b2lkIGp1bXAoTEJhc2ljQmxvY2sg
ZGVzdGluYXRpb24pOwogICAgIHZvaWQgYnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIExCYXNpY0Js
b2NrIHRha2VuLCBXZWlnaHQgdGFrZW5XZWlnaHQsIExCYXNpY0Jsb2NrIG5vdFRha2VuLCBXZWln
aHQgbm90VGFrZW5XZWlnaHQpOwogICAgIHZvaWQgYnJhbmNoKExWYWx1ZSBjb25kaXRpb24sIFdl
aWdodGVkVGFyZ2V0IHRha2VuLCBXZWlnaHRlZFRhcmdldCBub3RUYWtlbikKICAgICB7CkBAIC00
MjAsNDUgKzM4OCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHJl
dChMVmFsdWUgdmFsdWUpIHsgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb250cm9sVmFsdWU+KG1f
cHJvYywgQjM6OlJldHVybiwgb3JpZ2luKCksIHZhbHVlKTsgfQotCi0gICAgdm9pZCB1bnJlYWNo
YWJsZSgpIHsgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb250cm9sVmFsdWU+KG1fcHJvYywgQjM6
Ok9vcHMsIG9yaWdpbigpKTsgfQotCi0gICAgQjM6OkNoZWNrVmFsdWUqIHNwZWN1bGF0ZShMVmFs
dWUgdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpD
aGVja1ZhbHVlPihtX3Byb2MsIEIzOjpDaGVjaywgb3JpZ2luKCksIHZhbHVlKTsKLSAgICB9Ci0K
LSAgICBCMzo6Q2hlY2tWYWx1ZSogc3BlY3VsYXRlQWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1Zh
bHVlPihtX3Byb2MsIEIzOjpDaGVja0FkZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKLSAgICB9
CisgICAgdm9pZCByZXQoTFZhbHVlIHZhbHVlKTsKIAotICAgIEIzOjpDaGVja1ZhbHVlKiBzcGVj
dWxhdGVTdWIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNoZWNrVmFsdWU+KG1fcHJvYywgQjM6OkNoZWNrU3Vi
LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwotICAgIH0KKyAgICB2b2lkIHVucmVhY2hhYmxlKCk7
CiAKLSAgICBCMzo6Q2hlY2tWYWx1ZSogc3BlY3VsYXRlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVj
a1ZhbHVlPihtX3Byb2MsIEIzOjpDaGVja011bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKLSAg
ICB9CisgICAgQjM6OkNoZWNrVmFsdWUqIHNwZWN1bGF0ZShMVmFsdWUgdmFsdWUpOworICAgIEIz
OjpDaGVja1ZhbHVlKiBzcGVjdWxhdGVBZGQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7Cisg
ICAgQjM6OkNoZWNrVmFsdWUqIHNwZWN1bGF0ZVN1YihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KTsKKyAgICBCMzo6Q2hlY2tWYWx1ZSogc3BlY3VsYXRlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpOwogCi0gICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludChMVHlwZSB0eXBl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2lu
dFZhbHVlPihtX3Byb2MsIHR5cGUsIG9yaWdpbigpKTsKLSAgICB9CisgICAgQjM6OlBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludChMVHlwZSB0eXBlKTsKIAotICAgIHZvaWQgdHJhcCgpCi0gICAg
ewotICAgICAgICBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBC
Mzo6T29wcywgb3JpZ2luKCkpOwotICAgIH0KKyAgICB2b2lkIHRyYXAoKTsKIAotICAgIFZhbHVl
RnJvbUJsb2NrIGFuY2hvcihMVmFsdWUgdmFsdWUpCi0gICAgewotICAgICAgICBCMzo6VXBzaWxv
blZhbHVlKiB1cHNpbG9uID0gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpVcHNpbG9uVmFsdWU+KG1f
cHJvYywgb3JpZ2luKCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFZhbHVlRnJvbUJsb2NrKHVw
c2lsb24sIG1fYmxvY2spOwotICAgIH0KKyAgICBWYWx1ZUZyb21CbG9jayBhbmNob3IoTFZhbHVl
IHZhbHVlKTsKIAogICAgIHZvaWQgaW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICB2
b2lkIGRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50KCk7CkBAIC01MDksMTcgKzQ1Miw2IEBAIGlu
bGluZSB2b2lkIE91dHB1dDo6YWRkSW5jb21pbmdUb1BoaShMVmEKICAgICBhZGRJbmNvbWluZ1Rv
UGhpKHBoaSwgdGhlUmVzdC4uLik7CiB9CiAKLWlubGluZSBMVmFsdWUgT3V0cHV0OjpiaXRDYXN0
KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5
cGUgPT0gaW50NjQgfHwgdHlwZSA9PSBkb3VibGVUeXBlKTsKLSAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0d2lzZUNhc3QsIG9yaWdpbigpLCB2
YWx1ZSk7Ci19Ci0KLWlubGluZSBMVmFsdWUgT3V0cHV0Ojpmcm91bmQoTFZhbHVlIGRvdWJsZVZh
bHVlKQotewotICAgIHJldHVybiBmbG9hdFRvRG91YmxlKGRvdWJsZVRvRmxvYXQoZG91YmxlVmFs
dWUpKTsKLX0KLQogI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKICNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgcG9wCiAjZW5kaWYgLy8gQ09NUElMRVIoR0NDX09SX0NMQU5HKQo=
</data>
<flag name="review"
          id="305055"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281204</attachid>
            <date>2016-06-13 14:38:44 -0700</date>
            <delta_ts>2016-06-13 14:51:25 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>42935</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyMDAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMSBA
QAorMjAxNi0wNi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTDo6T3V0cHV0IG1ldGhvZHMgc2hvdWxkIGJlIG91dC1vZi1saW5lIHdoZW5ldmVyIHBvc3Np
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorICAgICAgICAKKyAg
ICAgICAgVGhlc2UgbWV0aG9kcyB0dXJuIGludG8gYSBub24tdHJpdmlhbCBhbW91bnQgb2YgY29k
ZSBiZWNhdXNlIG9mIHRoZSB0ZW1wbGF0ZS1iYXNlZCBCMyBBUEkuCisgICAgICAgIElubGluaW5n
IHRoZW0gZGlkbid0IGFjaGlldmUgYW55IHBlcmZvcm1hbmNlIGFkdmFudGFnZXMgZm9yIHRoZSBG
VEwsIGJ1dCBpdCBkaWQgbWFrZSB0aGUKKyAgICAgICAgY29kZSBsYXJnZXIuIFRoaXMgb3V0bGlu
ZXMgbW9zdCBtZXRob2RzIGluIEZUTDo6T3V0cHV0LiBJdCBtYWtlcyBGVEw6Okxvd2VyREZHVG9C
MyBzbWFsbGVyCisgICAgICAgIGFuZCBpdCBkb2Vzbid0IGNoYW5nZSBwZXJmb3JtYW5jZS4KKwor
ICAgICAgICAqIGZ0bC9GVExPdXRwdXQuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
YXBwZW5kVG8pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZnJhbWVQb2ludGVyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvY2tlZFN0YWNrU2xvdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0Ojpjb25zdEJvb2wpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29u
c3RJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEludDY0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0RG91YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OnBoaSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGQpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6c3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpkaXYpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6Y2hpbGxEaXYpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bW9kKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNoaWxsTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6Om5lZyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVBZGQpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVEaXYpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTW9kKToKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmJpdEFuZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRPcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRYb3IpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6c2hsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFTaHIpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6bFNocik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRO
b3QpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9naWNhbE5vdCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpjdGx6MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91
YmxlQWJzKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUNlaWwpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlRmxvb3IpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlVHJ1bmMpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlU2lu
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUNvcyk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0Ojpkb3VibGVQb3cpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91
YmxlUG93aSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVTcXJ0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUxvZyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpoYXNTZW5zaWJsZURvdWJsZVRvSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OmRvdWJsZVRvVUludCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzaWduRXh0MzJUbzY0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Onplcm9FeHQpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6aW50VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dW5z
aWduZWRUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjYXN0VG9JbnQzMik6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVUb0Zsb2F0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmZsb2F0VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6bG9hZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkOFNpZ25FeHQzMik6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiYXNlSW5kZXgpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90RXF1YWwpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YWJvdmUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6YWJvdmVPckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJlbG93KToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJlbG93T3JFcXVhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpncmVhdGVyVGhhbik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpn
cmVhdGVyVGhhbk9yRXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1RoYW4p
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1RoYW5PckVxdWFsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZUVxdWFsT3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpk
b3VibGVMZXNzVGhhbik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhh
bk9yRXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW4p
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVk
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVy
ZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFs
T3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6aXNaZXJvMzIpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90WmVybzMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmlzWmVybzY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdFplcm82NCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzZWxlY3QpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6anVtcCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpicmFuY2gpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2hlY2spOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6cmV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnVucmVhY2hhYmxlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpzcGVjdWxhdGVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3BlY3VsYXRl
U3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNwZWN1bGF0ZU11bCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpwYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OnRyYXApOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YW5jaG9yKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmJpdENhc3QpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZnJvdW5kKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjpzZXRPcmlnaW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6b3JpZ2luKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0SW50UHRyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OmRvdWJsZU5lZyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp6ZXJv
RXh0UHRyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQzMk5vbk5lZ2F0aXZlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojpub3ROdWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRlc3RJc1plcm9Q
dHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dGVzdE5vblplcm9QdHIpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpv
cGVyYXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YnJhbmNoKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OnN3aXRjaEluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmFkZEluY29taW5nVG9QaGkpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZnJhbWVQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0
Qm9vbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEludDMyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0SW50NjQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3REb3VibGUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6cGhpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdWIp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bXVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0OjpjaGlsbERpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojptb2QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2hpbGxNb2QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlQWRkKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVN1Yik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVNdWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6ZG91YmxlRGl2KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZU1vZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRB
bmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0T3IpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0WG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OnNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjphU2hyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxTaHIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y3RsejMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFdpdGhPdmVyZmxvdzMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN1YldpdGhPdmVyZmxvdzMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bFdpdGhPdmVyZmxvdzMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFdpdGhPdmVyZmxvdzY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN1YldpdGhPdmVyZmxvdzY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bFdpdGhPdmVyZmxvdzY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUFicyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVDZWlsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmRvdWJsZUZsb29yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZVNpbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVDb3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlUG93KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVNxcnQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTG9nKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNpZ25FeHQzMlRvNjQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6emVyb0V4dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjppbnRUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjpjYXN0VG9JbnQzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVUb0Zsb2F0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmZsb2F0VG9E
b3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZXF1YWwpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90RXF1YWwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YWJvdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6YWJvdmVPckVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmJlbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJlbG93
T3JFcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpncmVhdGVyVGhh
bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpncmVhdGVyVGhhbk9yRXF1
YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1RoYW4pOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1RoYW5PckVxdWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUVxdWFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUVxdWFsT3JVbm9yZGVyZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWwp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW4p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5P
ckVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVx
dWFsQW5kT3JkZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVMZXNzVGhhbk9yVW5vcmRlcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JV
bm9yZGVyZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6aXNaZXJvMzIp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90WmVybzMyKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmlzWmVybzY0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdFplcm82NCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpzZWxlY3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6ZXh0cmFjdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omp1
bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6cmV0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnVucmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNwZWN1bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpzcGVjdWxhdGVBZGQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6c3BlY3VsYXRlU3ViKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OnNwZWN1bGF0ZU11bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpw
YXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRyYXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YW5jaG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJpdENhc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6ZnJvdW5kKTogRGVsZXRlZC4KKwogMjAxNi0wNi0xMyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmb2xs
b3cgdXAgcGF0Y2ggZm9yIHIyMDE5NjQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3V0cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5jcHAJKHJldmlzaW9uIDIwMTk5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTYgKzc4LDEzNiBAQCB2b2lk
IE91dHB1dDo6YXBwZW5kVG8oTEJhc2ljQmxvY2sgYmxvY2spCiAgICAgbV9ibG9jayA9IGJsb2Nr
OwogfQogCitMVmFsdWUgT3V0cHV0OjpmcmFtZVBvaW50ZXIoKQoreworICAgIHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIG9yaWdp
bigpKTsKK30KKwogU2xvdEJhc2VWYWx1ZSogT3V0cHV0Ojpsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90
IGJ5dGVzKQogewogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8U2xvdEJhc2VWYWx1ZT4o
bV9wcm9jLCBvcmlnaW4oKSwgbV9wcm9jLmFkZFN0YWNrU2xvdChieXRlcykpOwogfQogCitMVmFs
dWUgT3V0cHV0Ojpjb25zdEJvb2woYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsKK30K
KworTFZhbHVlIE91dHB1dDo6Y29uc3RJbnQzMihpbnQzMl90IHZhbHVlKQoreworICAgIHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpjb25zdEludDY0KGludDY0X3QgdmFsdWUpCit7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3Q2NFZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmNvbnN0RG91YmxlKGRvdWJs
ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb25zdERvdWJs
ZVZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OnBo
aShMVHlwZSB0eXBlKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVl
PihtX3Byb2MsIEIzOjpQaGksIHR5cGUsIG9yaWdpbigpKTsKK30KKworTFZhbHVlIE91dHB1dDo6
YWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFkZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKK30KKworTFZhbHVlIE91dHB1dDo6c3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlN1
Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6bXVsKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6Ok11bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKwor
TFZhbHVlIE91dHB1dDo6ZGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0
dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkRpdiwgb3JpZ2lu
KCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6Y2hpbGxEaXYoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6Q2hpbGxEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6Om1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpNb2QsIG9yaWdp
bigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmNoaWxsTW9kKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
VmFsdWU+KG1fcHJvYywgQjM6OkNoaWxsTW9kLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQor
CiBMVmFsdWUgT3V0cHV0OjpuZWcoTFZhbHVlIHZhbHVlKQogewogICAgIHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQjM6Ok5lZywgb3JpZ2luKCksIHZhbHVlKTsKIH0K
IAorTFZhbHVlIE91dHB1dDo6ZG91YmxlQWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFk
ZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlU3Vi
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlN1Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsK
K30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
Ok11bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91Ymxl
RGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkRpdiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlTW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6Ok1vZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6Yml0
QW5kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdEFuZCwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6Yml0T3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6Qml0T3IsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmJp
dFhvcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRYb3IsIG9yaWdpbigpLCBsZWZ0LCBy
aWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OnNobChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpTaGwsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOworfQorCitMVmFsdWUg
T3V0cHV0OjphU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNTaHIsIG9yaWdpbigpLCBs
ZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOworfQorCitMVmFsdWUgT3V0cHV0OjpsU2hyKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6OlpTaHIsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihy
aWdodCkpOworfQorCiBMVmFsdWUgT3V0cHV0OjpiaXROb3QoTFZhbHVlIHZhbHVlKQogewogICAg
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRYb3Is
IG9yaWdpbigpLApAQCAtMTAwLDExICsyMjAsNTggQEAgTFZhbHVlIE91dHB1dDo6bG9naWNhbE5v
dChMVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgdmFsdWUsIGludDMyWmVybyk7CiB9CiAKLUxW
YWx1ZSBPdXRwdXQ6OmxvYWQoVHlwZWRQb2ludGVyIHBvaW50ZXIsIExUeXBlIHR5cGUpCitMVmFs
dWUgT3V0cHV0OjpjdGx6MzIoTFZhbHVlIG9wZXJhbmQpCiB7Ci0gICAgTFZhbHVlIGxvYWQgPSBt
X2Jsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgdHlwZSwgb3JpZ2lu
KCksIHBvaW50ZXIudmFsdWUoKSk7Ci0gICAgbV9oZWFwcy0+ZGVjb3JhdGVNZW1vcnkocG9pbnRl
ci5oZWFwKCksIGxvYWQpOwotICAgIHJldHVybiBsb2FkOworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDbHosIG9yaWdpbigpLCBvcGVyYW5kKTsK
K30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlQWJzKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWJzLCBvcmlnaW4o
KSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVDZWlsKExWYWx1ZSBvcGVyYW5k
KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpDZWlsLCBvcmlnaW4oKSwgb3BlcmFuZCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUZs
b29yKExWYWx1ZSBvcGVyYW5kKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpGbG9vciwgb3JpZ2luKCksIG9wZXJhbmQpOworfQorCitMVmFs
dWUgT3V0cHV0Ojpkb3VibGVUcnVuYyhMVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKE1hY3JvQXNz
ZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpKSB7CisgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcmVzdWx0ID0gcGF0Y2hwb2ludChEb3VibGUpOworICAgICAgICByZXN1bHQt
PmFwcGVuZCh2YWx1ZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgIHJlc3VsdC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5y
b3VuZFRvd2FyZFplcm9Eb3VibGUocGFyYW1zWzFdLmZwcigpLCBwYXJhbXNbMF0uZnByKCkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIHJlc3VsdC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUo
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZG91YmxlICgqdHJ1bmNEb3Vi
bGUpKGRvdWJsZSkgPSB0cnVuYzsKKyAgICByZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhE
b3VibGUsIHRydW5jRG91YmxlLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZVNp
bihMVmFsdWUgdmFsdWUpCit7CisgICAgZG91YmxlICgqc2luRG91YmxlKShkb3VibGUpID0gc2lu
OworICAgIHJldHVybiBjYWxsV2l0aG91dFNpZGVFZmZlY3RzKEIzOjpEb3VibGUsIHNpbkRvdWJs
ZSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVDb3MoTFZhbHVlIHZhbHVlKQor
eworICAgIGRvdWJsZSAoKmNvc0RvdWJsZSkoZG91YmxlKSA9IGNvczsKKyAgICByZXR1cm4gY2Fs
bFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBjb3NEb3VibGUsIHZhbHVlKTsKK30KKwor
TFZhbHVlIE91dHB1dDo6ZG91YmxlUG93KExWYWx1ZSB4T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5k
KQoreworICAgIGRvdWJsZSAoKnBvd0RvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gcG93OworICAg
IHJldHVybiBjYWxsV2l0aG91dFNpZGVFZmZlY3RzKEIzOjpEb3VibGUsIHBvd0RvdWJsZSwgeE9w
ZXJhbmQsIHlPcGVyYW5kKTsKIH0KIAogTFZhbHVlIE91dHB1dDo6ZG91YmxlUG93aShMVmFsdWUg
eCwgTFZhbHVlIHkpCkBAIC0xMTcsNiArMjg0LDE3IEBAIExWYWx1ZSBPdXRwdXQ6OmRvdWJsZVBv
d2koTFZhbHVlIHgsIExWYWwKICAgICByZXR1cm4gcmVzdWx0LnNlY29uZDsKIH0KIAorTFZhbHVl
IE91dHB1dDo6ZG91YmxlU3FydChMVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNxcnQsIG9yaWdpbigpLCB2YWx1ZSk7
Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUxvZyhMVmFsdWUgdmFsdWUpCit7CisgICAgZG91
YmxlICgqbG9nRG91YmxlKShkb3VibGUpID0gbG9nOworICAgIHJldHVybiBjYWxsV2l0aG91dFNp
ZGVFZmZlY3RzKEIzOjpEb3VibGUsIGxvZ0RvdWJsZSwgdmFsdWUpOworfQorCiBib29sIE91dHB1
dDo6aGFzU2Vuc2libGVEb3VibGVUb0ludCgpCiB7CiAgICAgcmV0dXJuIG9wdGltaXplRm9yWDg2
KCk7CkBAIC0xNDYsMjAgKzMyNCwyMSBAQCBMVmFsdWUgT3V0cHV0Ojpkb3VibGVUb1VJbnQoTFZh
bHVlIHZhbHVlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotTFZhbHVlIE91dHB1dDo6ZG91Ymxl
VHJ1bmMoTFZhbHVlIHZhbHVlKQorTFZhbHVlIE91dHB1dDo6c2lnbkV4dDMyVG82NChMVmFsdWUg
dmFsdWUpCiB7Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRS
b3VuZGluZygpKSB7Ci0gICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcmVzdWx0ID0gcGF0Y2hwb2lu
dChEb3VibGUpOwotICAgICAgICByZXN1bHQtPmFwcGVuZCh2YWx1ZSwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3Rlcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0R2VuZXJhdG9yKAotICAgICAgICAgICAgW10g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewotICAgICAgICAgICAgICAgIGppdC5yb3VuZFRvd2FyZFplcm9Eb3VibGUocGFyYW1zWzFd
LmZwcigpLCBwYXJhbXNbMF0uZnByKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIHJlc3Vs
dC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0gICAgZG91YmxlICgqdHJ1bmNEb3VibGUpKGRvdWJsZSkgPSB0cnVuYzsKLSAgICByZXR1
cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhEb3VibGUsIHRydW5jRG91YmxlLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNFeHQz
Miwgb3JpZ2luKCksIHZhbHVlKTsKK30KKworTFZhbHVlIE91dHB1dDo6emVyb0V4dChMVmFsdWUg
dmFsdWUsIExUeXBlIHR5cGUpCit7CisgICAgaWYgKHZhbHVlLT50eXBlKCkgPT0gdHlwZSkKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpaRXh0MzIsIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBP
dXRwdXQ6OmludFRvRG91YmxlKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6SVRvRCwgb3JpZ2luKCksIHZhbHVlKTsK
IH0KIAogTFZhbHVlIE91dHB1dDo6dW5zaWduZWRUb0RvdWJsZShMVmFsdWUgdmFsdWUpCkBAIC0x
NjcsNiArMzQ2LDI5IEBAIExWYWx1ZSBPdXRwdXQ6OnVuc2lnbmVkVG9Eb3VibGUoTFZhbHVlIHYK
ICAgICByZXR1cm4gaW50VG9Eb3VibGUoemVyb0V4dCh2YWx1ZSwgSW50NjQpKTsKIH0KIAorTFZh
bHVlIE91dHB1dDo6Y2FzdFRvSW50MzIoTFZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1
ZS0+dHlwZSgpID09IEIzOjpJbnQzMiA/IHZhbHVlIDoKKyAgICAgICAgbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6VHJ1bmMsIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZVRvRmxvYXQoTFZhbHVlIHZhbHVlKQoreworICAgIHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpEb3VibGVUb0Zsb2F0
LCBvcmlnaW4oKSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0OjpmbG9hdFRvRG91YmxlKExW
YWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6RmxvYXRUb0RvdWJsZSwgb3JpZ2luKCksIHZhbHVlKTsKK30KKworTFZhbHVl
IE91dHB1dDo6bG9hZChUeXBlZFBvaW50ZXIgcG9pbnRlciwgTFR5cGUgdHlwZSkKK3sKKyAgICBM
VmFsdWUgbG9hZCA9IG1fYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
LCB0eXBlLCBvcmlnaW4oKSwgcG9pbnRlci52YWx1ZSgpKTsKKyAgICBtX2hlYXBzLT5kZWNvcmF0
ZU1lbW9yeShwb2ludGVyLmhlYXAoKSwgbG9hZCk7CisgICAgcmV0dXJuIGxvYWQ7Cit9CisKIExW
YWx1ZSBPdXRwdXQ6OmxvYWQ4U2lnbkV4dDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKQogewogICAg
IExWYWx1ZSBsb2FkID0gbV9ibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQ4UywgSW50MzIsIG9yaWdpbigpLCBwb2ludGVyLnZhbHVlKCkpOwpAQCAtMjM5LDYgKzQ0MSwx
NDYgQEAgTFZhbHVlIE91dHB1dDo6YmFzZUluZGV4KExWYWx1ZSBiYXNlLCBMVgogICAgIHJldHVy
biBhZGQoYmFzZSwgYWNjdW11bGF0ZWRPZmZzZXQpOwogfQogCitMVmFsdWUgT3V0cHV0OjplcXVh
bChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKK30KKworTFZhbHVlIE91dHB1dDo6bm90RXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6Tm90RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6
OmFib3ZlKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlLCBvcmlnaW4oKSwgbGVmdCwg
cmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0OjphYm92ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6QWJvdmVFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZh
bHVlIE91dHB1dDo6YmVsb3coTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3csIG9yaWdp
bigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmJlbG93T3JFcXVhbChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCZWxvd0VxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQp
OworfQorCitMVmFsdWUgT3V0cHV0OjpncmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91
dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7Cisg
ICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0
ZXJFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6bGVz
c1RoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc1RoYW4sIG9yaWdpbigpLCBsZWZ0
LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpMZXNzRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVx
dWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVF
cXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsT3JVbm9yZGVy
ZWQsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZU5v
dEVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Tm90RXF1YWwsIG9y
aWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUxlc3NUaGFu
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NUaGFuLCBvcmlnaW4oKSwgbGVmdCwgcmln
aHQpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWwoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6TGVzc0VxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQor
CitMVmFsdWUgT3V0cHV0Ojpkb3VibGVHcmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91
dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1
dDo6ZG91YmxlTm90RXF1YWxBbmRPcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIGxvZ2ljYWxOb3QoZG91YmxlRXF1YWxPclVub3JkZXJlZChsZWZ0LCByaWdo
dCkpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIGxvZ2ljYWxOb3QoZG91YmxlR3Jl
YXRlclRoYW5PckVxdWFsKGxlZnQsIHJpZ2h0KSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJs
ZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIGxvZ2ljYWxOb3QoZG91YmxlR3JlYXRlclRoYW4obGVmdCwgcmlnaHQpKTsK
K30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUxlc3NU
aGFuT3JFcXVhbChsZWZ0LCByaWdodCkpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVHcmVh
dGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQorewor
ICAgIHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUxlc3NUaGFuKGxlZnQsIHJpZ2h0KSk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OmlzWmVybzMyKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdpbigpLCB2
YWx1ZSwgaW50MzJaZXJvKTsKK30KKworTFZhbHVlIE91dHB1dDo6bm90WmVybzMyKExWYWx1ZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6Tm90RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsKK30KKworTFZhbHVl
IE91dHB1dDo6aXNaZXJvNjQoTFZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBp
bnQ2NFplcm8pOworfQorCitMVmFsdWUgT3V0cHV0Ojpub3RaZXJvNjQoTFZhbHVlIHZhbHVlKQor
eworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpO
b3RFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQ2NFplcm8pOworfQorCitMVmFsdWUgT3V0cHV0
OjpzZWxlY3QoTFZhbHVlIHZhbHVlLCBMVmFsdWUgdGFrZW4sIExWYWx1ZSBub3RUYWtlbikKK3sK
KyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U2Vs
ZWN0LCBvcmlnaW4oKSwgdmFsdWUsIHRha2VuLCBub3RUYWtlbik7Cit9CisKK3ZvaWQgT3V0cHV0
OjpqdW1wKExCYXNpY0Jsb2NrIGRlc3RpbmF0aW9uKQoreworICAgIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6Q29udHJvbFZhbHVlPihtX3Byb2MsIEIzOjpKdW1wLCBvcmlnaW4oKSwgQjM6OkZyZXF1
ZW50ZWRCbG9jayhkZXN0aW5hdGlvbikpOworfQorCiB2b2lkIE91dHB1dDo6YnJhbmNoKExWYWx1
ZSBjb25kaXRpb24sIExCYXNpY0Jsb2NrIHRha2VuLCBXZWlnaHQgdGFrZW5XZWlnaHQsIExCYXNp
Y0Jsb2NrIG5vdFRha2VuLCBXZWlnaHQgbm90VGFrZW5XZWlnaHQpCiB7CiAgICAgbV9ibG9jay0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCkBAIC0yNTksNiArNjAxLDYzIEBAIHZvaWQgT3V0cHV0
OjpjaGVjayhMVmFsdWUgY29uZGl0aW9uLCBXZWkKICAgICBjaGVjayhjb25kaXRpb24sIHRha2Vu
LCB0YWtlbi53ZWlnaHQoKS5pbnZlcnNlKCkpOwogfQogCit2b2lkIE91dHB1dDo6cmV0KExWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9w
cm9jLCBCMzo6UmV0dXJuLCBvcmlnaW4oKSwgdmFsdWUpOworfQorCit2b2lkIE91dHB1dDo6dW5y
ZWFjaGFibGUoKQoreworICAgIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29udHJvbFZhbHVlPiht
X3Byb2MsIEIzOjpPb3BzLCBvcmlnaW4oKSk7Cit9CisKK0NoZWNrVmFsdWUqIE91dHB1dDo6c3Bl
Y3VsYXRlKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpDaGVja1ZhbHVlPihtX3Byb2MsIEIzOjpDaGVjaywgb3JpZ2luKCksIHZhbHVlKTsKK30KKwor
Q2hlY2tWYWx1ZSogT3V0cHV0OjpzcGVjdWxhdGVBZGQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPihtX3By
b2MsIEIzOjpDaGVja0FkZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworQ2hlY2tWYWx1
ZSogT3V0cHV0OjpzcGVjdWxhdGVTdWIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAg
ICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPihtX3Byb2MsIEIzOjpD
aGVja1N1Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworQ2hlY2tWYWx1ZSogT3V0cHV0
OjpzcGVjdWxhdGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPihtX3Byb2MsIEIzOjpDaGVja011bCwg
b3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworUGF0Y2hwb2ludFZhbHVlKiBPdXRwdXQ6OnBh
dGNocG9pbnQoTFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCkpOworfQorCit2b2lkIE91
dHB1dDo6dHJhcCgpCit7CisgICAgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb250cm9sVmFsdWU+
KG1fcHJvYywgQjM6Ok9vcHMsIG9yaWdpbigpKTsKK30KKworVmFsdWVGcm9tQmxvY2sgT3V0cHV0
OjphbmNob3IoTFZhbHVlIHZhbHVlKQoreworICAgIEIzOjpVcHNpbG9uVmFsdWUqIHVwc2lsb24g
PSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlVwc2lsb25WYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dmFsdWUpOworICAgIHJldHVybiBWYWx1ZUZyb21CbG9jayh1cHNpbG9uLCBtX2Jsb2NrKTsKK30K
KworTFZhbHVlIE91dHB1dDo6Yml0Q2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09IGludDY0IHx8IHR5cGUgPT0gZG91YmxlVHlw
ZSk7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkJpdHdpc2VDYXN0LCBvcmlnaW4oKSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpmcm91
bmQoTFZhbHVlIGRvdWJsZVZhbHVlKQoreworICAgIHJldHVybiBmbG9hdFRvRG91YmxlKGRvdWJs
ZVRvRmxvYXQoZG91YmxlVmFsdWUpKTsKK30KKwogTFZhbHVlIE91dHB1dDo6bG9hZChUeXBlZFBv
aW50ZXIgcG9pbnRlciwgTG9hZFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMjAxOTk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpA
QCAtOTksMjAgKzk5LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpbihERkc6Ok5vZGUq
IG5vZGUpIHsgbV9vcmlnaW4gPSBub2RlOyB9CiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4oKSB7IHJl
dHVybiBCMzo6T3JpZ2luKG1fb3JpZ2luKTsgfQogCi0gICAgTFZhbHVlIGZyYW1lUG9pbnRlcigp
IHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1l
UG9pbnRlciwgb3JpZ2luKCkpOyB9CisgICAgTFZhbHVlIGZyYW1lUG9pbnRlcigpOwogCiAgICAg
QjM6OlNsb3RCYXNlVmFsdWUqIGxvY2tlZFN0YWNrU2xvdChzaXplX3QgYnl0ZXMpOwogCi0gICAg
TFZhbHVlIGNvbnN0Qm9vbChib29sIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OkNvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9Ci0gICAgTFZhbHVl
IGNvbnN0SW50MzIoaW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExWYWx1ZSBj
b25zdEJvb2woYm9vbCB2YWx1ZSk7CisgICAgTFZhbHVlIGNvbnN0SW50MzIoaW50MzJfdCB2YWx1
ZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBMVmFsdWUgY29uc3RJbnRQdHIoVCog
dmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3RQdHJWYWx1ZT4obV9w
cm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBM
VmFsdWUgY29uc3RJbnRQdHIoVCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KLSAgICBMVmFsdWUg
Y29uc3RJbnQ2NChpbnQ2NF90IHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OkNvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9Ci0gICAgTFZhbHVlIGNv
bnN0RG91YmxlKGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpD
b25zdERvdWJsZVZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KKyAgICBMVmFsdWUg
Y29uc3RJbnQ2NChpbnQ2NF90IHZhbHVlKTsKKyAgICBMVmFsdWUgY29uc3REb3VibGUoZG91Ymxl
IHZhbHVlKTsKIAotICAgIExWYWx1ZSBwaGkoTFR5cGUgdHlwZSkgeyByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6UGhpLCB0eXBlLCBvcmlnaW4oKSk7IH0K
KyAgICBMVmFsdWUgcGhpKExUeXBlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+
CiAgICAgTFZhbHVlIHBoaShMVHlwZSwgVmFsdWVGcm9tQmxvY2ssIFBhcmFtcy4uLiB0aGVSZXN0
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgpAQCAtMTIxLDkzICsxMjEsNjIg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KICAgICB2b2lkIGFk
ZEluY29taW5nVG9QaGkoTFZhbHVlIHBoaSwgVmFsdWVGcm9tQmxvY2ssIFBhcmFtcy4uLiB0aGVS
ZXN0KTsKIAotICAgIExWYWx1ZSBhZGQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWRkLCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIHN1YihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpT
dWIsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgbXVsKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6Ok11bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkaXYo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6RGl2LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAg
TFZhbHVlIGNoaWxsRGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkNoaWxsRGl2LCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIG1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpNb2Qs
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgY2hpbGxNb2QoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6Q2hpbGxNb2QsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFs
dWUgYWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBzdWIoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIG11bChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KTsKKyAgICBMVmFsdWUgZGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAg
IExWYWx1ZSBjaGlsbERpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBMVmFsdWUg
bW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBjaGlsbE1vZChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKICAgICBMVmFsdWUgbmVnKExWYWx1ZSk7CiAKLSAgICBM
VmFsdWUgZG91YmxlQWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFkZCwgb3JpZ2luKCksIGxlZnQs
IHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkb3VibGVTdWIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U3Vi
LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZU11bChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVl
PihtX3Byb2MsIEIzOjpNdWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUg
ZG91YmxlRGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkRpdiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsgfQotICAgIExWYWx1ZSBkb3VibGVNb2QoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TW9kLCBvcmln
aW4oKSwgbGVmdCwgcmlnaHQpOyB9CisgICAgTFZhbHVlIGRvdWJsZUFkZChMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KTsKKyAgICBMVmFsdWUgZG91YmxlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUg
cmlnaHQpOworICAgIExWYWx1ZSBkb3VibGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7
CisgICAgTFZhbHVlIGRvdWJsZURpdihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBM
VmFsdWUgZG91YmxlTW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOwogICAgIExWYWx1ZSBk
b3VibGVOZWcoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBuZWcodmFsdWUpOyB9CiAKLSAgICBMVmFs
dWUgYml0QW5kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdEFuZCwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsgfQotICAgIExWYWx1ZSBiaXRPcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRPciwgb3Jp
Z2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBiaXRYb3IoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6Qml0WG9yLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIHNobChM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpTaGwsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihyaWdo
dCkpOyB9Ci0gICAgTFZhbHVlIGFTaHIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U1Nociwgb3JpZ2lu
KCksIGxlZnQsIGNhc3RUb0ludDMyKHJpZ2h0KSk7IH0KLSAgICBMVmFsdWUgbFNocihMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVl
PihtX3Byb2MsIEIzOjpaU2hyLCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRvSW50MzIocmlnaHQpKTsg
fQorICAgIExWYWx1ZSBiaXRBbmQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZh
bHVlIGJpdE9yKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBiaXRYb3Io
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIHNobChMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KTsKKyAgICBMVmFsdWUgYVNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KTsKKyAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKICAgICBMVmFs
dWUgYml0Tm90KExWYWx1ZSk7CiAgICAgTFZhbHVlIGxvZ2ljYWxOb3QoTFZhbHVlKTsKIAotICAg
IExWYWx1ZSBjdGx6MzIoTFZhbHVlIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkNseiwgb3JpZ2luKCksIG9wZXJhbmQpOyB9Ci0gICAg
TFZhbHVlIGFkZFdpdGhPdmVyZmxvdzMyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JB
U0goKTsgfQotICAgIExWYWx1ZSBzdWJXaXRoT3ZlcmZsb3czMihMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93MzIoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGFkZFdpdGhPdmVy
ZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1
ZSBzdWJXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7
IH0KLSAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93NjQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUFicyhMVmFsdWUgdmFsdWUpIHsgcmV0
dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFicywgb3JpZ2lu
KCksIHZhbHVlKTsgfQotICAgIExWYWx1ZSBkb3VibGVDZWlsKExWYWx1ZSBvcGVyYW5kKSB7IHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDZWlsLCBvcmln
aW4oKSwgb3BlcmFuZCk7IH0KLSAgICBMVmFsdWUgZG91YmxlRmxvb3IoTFZhbHVlIG9wZXJhbmQp
IHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZsb29y
LCBvcmlnaW4oKSwgb3BlcmFuZCk7IH0KKyAgICBMVmFsdWUgY3RsejMyKExWYWx1ZSk7CisgICAg
TFZhbHVlIGRvdWJsZUFicyhMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVDZWlsKExWYWx1ZSk7
CisgICAgTFZhbHVlIGRvdWJsZUZsb29yKExWYWx1ZSk7CiAgICAgTFZhbHVlIGRvdWJsZVRydW5j
KExWYWx1ZSk7CiAKLSAgICBMVmFsdWUgZG91YmxlU2luKExWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0g
ICAgICAgIGRvdWJsZSAoKnNpbkRvdWJsZSkoZG91YmxlKSA9IHNpbjsKLSAgICAgICAgcmV0dXJu
IGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoQjM6OkRvdWJsZSwgc2luRG91YmxlLCB2YWx1ZSk7Ci0g
ICAgfQotICAgIExWYWx1ZSBkb3VibGVDb3MoTFZhbHVlIHZhbHVlKQotICAgIHsKLSAgICAgICAg
ZG91YmxlICgqY29zRG91YmxlKShkb3VibGUpID0gY29zOwotICAgICAgICByZXR1cm4gY2FsbFdp
dGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBjb3NEb3VibGUsIHZhbHVlKTsKLSAgICB9Cisg
ICAgTFZhbHVlIGRvdWJsZVNpbihMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVDb3MoTFZhbHVl
KTsKIAotICAgIExWYWx1ZSBkb3VibGVQb3coTFZhbHVlIHhPcGVyYW5kLCBMVmFsdWUgeU9wZXJh
bmQpCi0gICAgewotICAgICAgICBkb3VibGUgKCpwb3dEb3VibGUpKGRvdWJsZSwgZG91YmxlKSA9
IHBvdzsKLSAgICAgICAgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoQjM6OkRvdWJsZSwg
cG93RG91YmxlLCB4T3BlcmFuZCwgeU9wZXJhbmQpOwotICAgIH0KKyAgICBMVmFsdWUgZG91Ymxl
UG93KExWYWx1ZSB4T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5kKTsKIAogICAgIExWYWx1ZSBkb3Vi
bGVQb3dpKExWYWx1ZSB4T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5kKTsKIAotICAgIExWYWx1ZSBk
b3VibGVTcXJ0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6U3FydCwgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExWYWx1ZSBk
b3VibGVTcXJ0KExWYWx1ZSk7CiAKLSAgICBMVmFsdWUgZG91YmxlTG9nKExWYWx1ZSB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIGRvdWJsZSAoKmxvZ0RvdWJsZSkoZG91YmxlKSA9IGxvZzsKLSAgICAg
ICAgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoQjM6OkRvdWJsZSwgbG9nRG91YmxlLCB2
YWx1ZSk7Ci0gICAgfQorICAgIExWYWx1ZSBkb3VibGVMb2coTFZhbHVlKTsKIAogICAgIHN0YXRp
YyBib29sIGhhc1NlbnNpYmxlRG91YmxlVG9JbnQoKTsKICAgICBMVmFsdWUgZG91YmxlVG9JbnQo
TFZhbHVlKTsKICAgICBMVmFsdWUgZG91YmxlVG9VSW50KExWYWx1ZSk7CiAKLSAgICBMVmFsdWUg
c2lnbkV4dDMyVG82NChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6OlNFeHQzMiwgb3JpZ2luKCksIHZhbHVlKTsgfQotICAgIExW
YWx1ZSB6ZXJvRXh0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIGlm
ICh2YWx1ZS0+dHlwZSgpID09IHR5cGUpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAg
ICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpaRXh0
MzIsIG9yaWdpbigpLCB2YWx1ZSk7Ci0gICAgfQorICAgIExWYWx1ZSBzaWduRXh0MzJUbzY0KExW
YWx1ZSk7CisgICAgTFZhbHVlIHplcm9FeHQoTFZhbHVlLCBMVHlwZSk7CiAgICAgTFZhbHVlIHpl
cm9FeHRQdHIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiB6ZXJvRXh0KHZhbHVlLCBCMzo6SW50NjQp
OyB9Ci0gICAgTFZhbHVlIGludFRvRG91YmxlKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9j
ay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6SVRvRCwgb3JpZ2luKCksIHZhbHVl
KTsgfQorICAgIExWYWx1ZSBpbnRUb0RvdWJsZShMVmFsdWUpOwogICAgIExWYWx1ZSB1bnNpZ25l
ZFRvRG91YmxlKExWYWx1ZSk7Ci0gICAgTFZhbHVlIGNhc3RUb0ludDMyKExWYWx1ZSB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZS0+dHlwZSgpID09IEIzOjpJbnQzMiA/IHZhbHVl
IDoKLSAgICAgICAgICAgIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OlRydW5jLCBvcmlnaW4oKSwgdmFsdWUpOwotICAgIH0KLSAgICBMVmFsdWUgZG91YmxlVG9GbG9h
dChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkRvdWJsZVRvRmxvYXQsIG9yaWdpbigpLCB2YWx1ZSk7IH0KLSAgICBMVmFsdWUg
ZmxvYXRUb0RvdWJsZShMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6OkZsb2F0VG9Eb3VibGUsIG9yaWdpbigpLCB2YWx1ZSk7IH0K
KyAgICBMVmFsdWUgY2FzdFRvSW50MzIoTFZhbHVlKTsKKyAgICBMVmFsdWUgZG91YmxlVG9GbG9h
dChMVmFsdWUpOworICAgIExWYWx1ZSBmbG9hdFRvRG91YmxlKExWYWx1ZSk7CiAgICAgTFZhbHVl
IGJpdENhc3QoTFZhbHVlLCBMVHlwZSk7Ci0gICAgTFZhbHVlIGZyb3VuZChMVmFsdWUgZG91Ymxl
VmFsdWUpOworICAgIExWYWx1ZSBmcm91bmQoTFZhbHVlKTsKIAogICAgIExWYWx1ZSBsb2FkKFR5
cGVkUG9pbnRlciwgTFR5cGUpOwogICAgIHZvaWQgc3RvcmUoTFZhbHVlLCBUeXBlZFBvaW50ZXIp
OwpAQCAtMjIxLDggKzE5MCw4IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbG9hZFB0cihUeXBlZFBv
aW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZChwb2ludGVyLCBCMzo6cG9pbnRlclR5cGUoKSk7
IH0KICAgICBMVmFsdWUgbG9hZEZsb2F0KFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBs
b2FkKHBvaW50ZXIsIEIzOjpGbG9hdCk7IH0KICAgICBMVmFsdWUgbG9hZERvdWJsZShUeXBlZFBv
aW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZChwb2ludGVyLCBCMzo6RG91YmxlKTsgfQotICAg
IHZvaWQgc3RvcmUzMkFzOChMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKTsKLSAg
ICB2b2lkIHN0b3JlMzJBczE2KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpOwor
ICAgIHZvaWQgc3RvcmUzMkFzOChMVmFsdWUsIFR5cGVkUG9pbnRlcik7CisgICAgdm9pZCBzdG9y
ZTMyQXMxNihMVmFsdWUsIFR5cGVkUG9pbnRlcik7CiAgICAgdm9pZCBzdG9yZTMyKExWYWx1ZSB2
YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQodmFsdWUt
PnR5cGUoKSA9PSBCMzo6SW50MzIpOwpAQCAtMzMwLDM0ICsyOTksMzQgQEAgcHVibGljOgogICAg
IExWYWx1ZSBsb2FkMzJOb25OZWdhdGl2ZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4g
bG9hZDMyKHBvaW50ZXIpOyB9CiAgICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKExWYWx1ZSBi
YXNlLCBjb25zdCBBYnN0cmFjdEhlYXAmIGZpZWxkKSB7IHJldHVybiBsb2FkMzIoYmFzZSwgZmll
bGQpOyB9CiAKLSAgICBMVmFsdWUgZXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWwsIG9y
aWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9w
cm9jLCBCMzo6Tm90RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUg
YWJvdmUoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWJvdmUsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
IH0KLSAgICBMVmFsdWUgYWJvdmVPckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlRXF1
YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgYmVsb3coTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6QmVsb3csIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUg
YmVsb3dPckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJlbG93RXF1YWwsIG9yaWdpbigpLCBs
ZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZ3JlYXRlclRoYW4oTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6R3JlYXRlclRoYW4sIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZ3Jl
YXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJFcXVhbCwgb3JpZ2lu
KCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBsZXNzVGhhbihMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpMZXNzVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBsZXNz
VGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc0VxdWFsLCBvcmlnaW4oKSwgbGVm
dCwgcmlnaHQpOyB9Ci0KLSAgICBMVmFsdWUgZG91YmxlRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZG91YmxlRXF1
YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbE9yVW5vcmRlcmVkLCBvcmln
aW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsT3JVbm9yZGVy
ZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Tm90RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
IH0KLSAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkg
eyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc1Ro
YW4sIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5P
ckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsgfQotICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkb3Vi
bGVHcmVhdGVyVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6R3JlYXRlckVxdWFsLCBv
cmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsQW5kT3Jk
ZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBsb2dpY2FsTm90KGRvdWJs
ZUVxdWFsT3JVbm9yZGVyZWQobGVmdCwgcmlnaHQpKTsgfQotICAgIExWYWx1ZSBkb3VibGVMZXNz
VGhhbk9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxvZ2lj
YWxOb3QoZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKGxlZnQsIHJpZ2h0KSk7IH0KLSAgICBMVmFs
dWUgZG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSBy
aWdodCkgeyByZXR1cm4gbG9naWNhbE5vdChkb3VibGVHcmVhdGVyVGhhbihsZWZ0LCByaWdodCkp
OyB9Ci0gICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkgeyByZXR1cm4gbG9naWNhbE5vdChkb3VibGVMZXNzVGhhbk9yRXF1YWwo
bGVmdCwgcmlnaHQpKTsgfQotICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVu
b3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBsb2dpY2FsTm90KGRv
dWJsZUxlc3NUaGFuKGxlZnQsIHJpZ2h0KSk7IH0KLQotICAgIExWYWx1ZSBpc1plcm8zMihMVmFs
dWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6OkVxdWFsLCBvcmlnaW4oKSwgdmFsdWUsIGludDMyWmVybyk7IH0KLSAgICBMVmFsdWUgbm90
WmVybzMyKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6Tm90RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsgfQot
ICAgIExWYWx1ZSBpc1plcm82NChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgdmFsdWUsIGludDY0
WmVybyk7IH0KLSAgICBMVmFsdWUgbm90WmVybzY0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Tm90RXF1YWwsIG9yaWdpbigp
LCB2YWx1ZSwgaW50NjRaZXJvKTsgfQorICAgIExWYWx1ZSBlcXVhbChMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KTsKKyAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCk7CisgICAgTFZhbHVlIGFib3ZlKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExW
YWx1ZSBhYm92ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVl
IGJlbG93KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBiZWxvd09yRXF1
YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGdyZWF0ZXJUaGFuKExW
YWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBncmVhdGVyVGhhbk9yRXF1YWwo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGxlc3NUaGFuKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBsZXNzVGhhbk9yRXF1YWwoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCk7CisKKyAgICBMVmFsdWUgZG91YmxlRXF1YWwoTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRvdWJsZUVxdWFsT3JVbm9yZGVyZWQoTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRvdWJsZU5vdEVxdWFsT3JVbm9yZGVy
ZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFu
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBkb3VibGVMZXNzVGhhbk9y
RXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRvdWJsZUdyZWF0
ZXJUaGFuKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIExWYWx1ZSBkb3VibGVHcmVh
dGVyVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRv
dWJsZU5vdEVxdWFsQW5kT3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBM
VmFsdWUgZG91YmxlTGVzc1RoYW5PclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KTsKKyAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVy
ZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CisgICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJU
aGFuT3JFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworCisgICAg
TFZhbHVlIGlzWmVybzMyKExWYWx1ZSk7CisgICAgTFZhbHVlIG5vdFplcm8zMihMVmFsdWUpOwor
ICAgIExWYWx1ZSBpc1plcm82NChMVmFsdWUpOworICAgIExWYWx1ZSBub3RaZXJvNjQoTFZhbHVl
KTsKICAgICBMVmFsdWUgaXNOdWxsKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gaXNaZXJvNjQodmFs
dWUpOyB9CiAgICAgTFZhbHVlIG5vdE51bGwoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBub3RaZXJv
NjQodmFsdWUpOyB9CiAKQEAgLTM2OCw4ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIHRl
c3RJc1plcm9QdHIoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gaXNOdWxsKGJp
dEFuZCh2YWx1ZSwgbWFzaykpOyB9CiAgICAgTFZhbHVlIHRlc3ROb25aZXJvUHRyKExWYWx1ZSB2
YWx1ZSwgTFZhbHVlIG1hc2spIHsgcmV0dXJuIG5vdE51bGwoYml0QW5kKHZhbHVlLCBtYXNrKSk7
IH0KIAotICAgIExWYWx1ZSBzZWxlY3QoTFZhbHVlIHZhbHVlLCBMVmFsdWUgdGFrZW4sIExWYWx1
ZSBub3RUYWtlbikgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6U2VsZWN0LCBvcmlnaW4oKSwgdmFsdWUsIHRha2VuLCBub3RUYWtlbik7IH0KLSAgICBM
VmFsdWUgZXh0cmFjdFZhbHVlKExWYWx1ZSBhZ2dWYWwsIHVuc2lnbmVkIGluZGV4KSB7IENSQVNI
KCk7IH0KKyAgICBMVmFsdWUgc2VsZWN0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIHRha2VuLCBMVmFs
dWUgbm90VGFrZW4pOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KICAgICBM
VmFsdWUgY2FsbChMVHlwZSB0eXBlLCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUm
IHZlY3RvcikKQEAgLTM5NCw3ICszNjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rpb25UeXBlPgogICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rpb25UeXBlIGZ1bmN0
aW9uKSB7IHJldHVybiBjb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSk7
IH0KIAotICAgIHZvaWQganVtcChMQmFzaWNCbG9jayBkZXN0aW5hdGlvbikgeyBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBCMzo6SnVtcCwgb3JpZ2luKCksIEIz
OjpGcmVxdWVudGVkQmxvY2soZGVzdGluYXRpb24pKTsgfQorICAgIHZvaWQganVtcChMQmFzaWNC
bG9jayk7CiAgICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgTEJhc2ljQmxvY2sgdGFr
ZW4sIFdlaWdodCB0YWtlbldlaWdodCwgTEJhc2ljQmxvY2sgbm90VGFrZW4sIFdlaWdodCBub3RU
YWtlbldlaWdodCk7CiAgICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgV2VpZ2h0ZWRU
YXJnZXQgdGFrZW4sIFdlaWdodGVkVGFyZ2V0IG5vdFRha2VuKQogICAgIHsKQEAgLTQyMCw0NSAr
Mzg4LDIwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgcmV0KExWYWx1
ZSB2YWx1ZSkgeyBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBC
Mzo6UmV0dXJuLCBvcmlnaW4oKSwgdmFsdWUpOyB9Ci0KLSAgICB2b2lkIHVucmVhY2hhYmxlKCkg
eyBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBCMzo6T29wcywg
b3JpZ2luKCkpOyB9Ci0KLSAgICBCMzo6Q2hlY2tWYWx1ZSogc3BlY3VsYXRlKExWYWx1ZSB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNoZWNrVmFs
dWU+KG1fcHJvYywgQjM6OkNoZWNrLCBvcmlnaW4oKSwgdmFsdWUpOwotICAgIH0KLQotICAgIEIz
OjpDaGVja1ZhbHVlKiBzcGVjdWxhdGVBZGQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNoZWNrVmFsdWU+KG1f
cHJvYywgQjM6OkNoZWNrQWRkLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwotICAgIH0KKyAgICB2
b2lkIHJldChMVmFsdWUpOwogCi0gICAgQjM6OkNoZWNrVmFsdWUqIHNwZWN1bGF0ZVN1YihMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6Q2hlY2tWYWx1ZT4obV9wcm9jLCBCMzo6Q2hlY2tTdWIsIG9yaWdpbigpLCBs
ZWZ0LCByaWdodCk7Ci0gICAgfQorICAgIHZvaWQgdW5yZWFjaGFibGUoKTsKIAotICAgIEIzOjpD
aGVja1ZhbHVlKiBzcGVjdWxhdGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNoZWNrVmFsdWU+KG1fcHJv
YywgQjM6OkNoZWNrTXVsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwotICAgIH0KKyAgICBCMzo6
Q2hlY2tWYWx1ZSogc3BlY3VsYXRlKExWYWx1ZSk7CisgICAgQjM6OkNoZWNrVmFsdWUqIHNwZWN1
bGF0ZUFkZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KTsKKyAgICBCMzo6Q2hlY2tWYWx1ZSog
c3BlY3VsYXRlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpOworICAgIEIzOjpDaGVja1Zh
bHVlKiBzcGVjdWxhdGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCk7CiAKLSAgICBCMzo6
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KExUeXBlIHR5cGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgdHlw
ZSwgb3JpZ2luKCkpOwotICAgIH0KKyAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
KExUeXBlKTsKIAotICAgIHZvaWQgdHJhcCgpCi0gICAgewotICAgICAgICBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBCMzo6T29wcywgb3JpZ2luKCkpOwotICAg
IH0KKyAgICB2b2lkIHRyYXAoKTsKIAotICAgIFZhbHVlRnJvbUJsb2NrIGFuY2hvcihMVmFsdWUg
dmFsdWUpCi0gICAgewotICAgICAgICBCMzo6VXBzaWxvblZhbHVlKiB1cHNpbG9uID0gbV9ibG9j
ay0+YXBwZW5kTmV3PEIzOjpVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIFZhbHVlRnJvbUJsb2NrKHVwc2lsb24sIG1fYmxvY2spOwotICAgIH0K
KyAgICBWYWx1ZUZyb21CbG9jayBhbmNob3IoTFZhbHVlKTsKIAogICAgIHZvaWQgaW5jcmVtZW50
U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudFN1cGVyU2FtcGxlckNvdW50
KCk7CkBAIC01MDksMTcgKzQ1Miw2IEBAIGlubGluZSB2b2lkIE91dHB1dDo6YWRkSW5jb21pbmdU
b1BoaShMVmEKICAgICBhZGRJbmNvbWluZ1RvUGhpKHBoaSwgdGhlUmVzdC4uLik7CiB9CiAKLWlu
bGluZSBMVmFsdWUgT3V0cHV0OjpiaXRDYXN0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkKLXsK
LSAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gaW50NjQgfHwgdHlwZSA9PSBkb3VibGVU
eXBlKTsKLSAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6Qml0d2lzZUNhc3QsIG9yaWdpbigpLCB2YWx1ZSk7Ci19Ci0KLWlubGluZSBMVmFsdWUgT3V0
cHV0Ojpmcm91bmQoTFZhbHVlIGRvdWJsZVZhbHVlKQotewotICAgIHJldHVybiBmbG9hdFRvRG91
YmxlKGRvdWJsZVRvRmxvYXQoZG91YmxlVmFsdWUpKTsKLX0KLQogI2lmIENPTVBJTEVSKEdDQ19P
Ul9DTEFORykKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYgLy8gQ09NUElMRVIo
R0NDX09SX0NMQU5HKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281206</attachid>
            <date>2016-06-13 14:51:25 -0700</date>
            <delta_ts>2016-06-13 14:51:25 -0700</delta_ts>
            <desc>even better</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>42548</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyMDAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMSBA
QAorMjAxNi0wNi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEZUTDo6T3V0cHV0IG1ldGhvZHMgc2hvdWxkIGJlIG91dC1vZi1saW5lIHdoZW5ldmVyIHBvc3Np
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg3
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorICAgICAgICAKKyAg
ICAgICAgVGhlc2UgbWV0aG9kcyB0dXJuIGludG8gYSBub24tdHJpdmlhbCBhbW91bnQgb2YgY29k
ZSBiZWNhdXNlIG9mIHRoZSB0ZW1wbGF0ZS1iYXNlZCBCMyBBUEkuCisgICAgICAgIElubGluaW5n
IHRoZW0gZGlkbid0IGFjaGlldmUgYW55IHBlcmZvcm1hbmNlIGFkdmFudGFnZXMgZm9yIHRoZSBG
VEwsIGJ1dCBpdCBkaWQgbWFrZSB0aGUKKyAgICAgICAgY29kZSBsYXJnZXIuIFRoaXMgb3V0bGlu
ZXMgbW9zdCBtZXRob2RzIGluIEZUTDo6T3V0cHV0LiBJdCBtYWtlcyBGVEw6Okxvd2VyREZHVG9C
MyBzbWFsbGVyCisgICAgICAgIGFuZCBpdCBkb2Vzbid0IGNoYW5nZSBwZXJmb3JtYW5jZS4KKwor
ICAgICAgICAqIGZ0bC9GVExPdXRwdXQuY3BwOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
YXBwZW5kVG8pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZnJhbWVQb2ludGVyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvY2tlZFN0YWNrU2xvdCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0Ojpjb25zdEJvb2wpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29u
c3RJbnQzMik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEludDY0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0RG91YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OnBoaSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjphZGQpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6c3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpkaXYpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6Y2hpbGxEaXYpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bW9kKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNoaWxsTW9kKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6Om5lZyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVBZGQpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZU11bCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVEaXYpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTW9kKToKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmJpdEFuZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRPcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRYb3IpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6c2hsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFTaHIpOgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6bFNocik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRO
b3QpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bG9naWNhbE5vdCk6CisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0OjpjdGx6MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91
YmxlQWJzKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUNlaWwpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlRmxvb3IpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6ZG91YmxlVHJ1bmMpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlU2lu
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUNvcyk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0Ojpkb3VibGVQb3cpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91
YmxlUG93aSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVTcXJ0KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUxvZyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpoYXNTZW5zaWJsZURvdWJsZVRvSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6
OmRvdWJsZVRvVUludCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzaWduRXh0MzJUbzY0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Onplcm9FeHQpOgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6aW50VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dW5z
aWduZWRUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpjYXN0VG9JbnQzMik6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVUb0Zsb2F0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmZsb2F0VG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6bG9hZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkOFNpZ25FeHQzMik6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiYXNlSW5kZXgpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90RXF1YWwpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YWJvdmUpOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6YWJvdmVPckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJlbG93KToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJlbG93T3JFcXVhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpncmVhdGVyVGhhbik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpn
cmVhdGVyVGhhbk9yRXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1RoYW4p
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1RoYW5PckVxdWFsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZUVxdWFsT3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpk
b3VibGVMZXNzVGhhbik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhh
bk9yRXF1YWwpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW4p
OgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVxdWFsQW5kT3JkZXJlZCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVk
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVy
ZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFs
T3JVbm9yZGVyZWQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6aXNaZXJvMzIpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90WmVybzMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmlzWmVybzY0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdFplcm82NCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzZWxlY3QpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6anVtcCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpicmFuY2gpOgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2hlY2spOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6cmV0KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnVucmVhY2hhYmxlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNwZWN1bGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjpzcGVjdWxhdGVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3BlY3VsYXRl
U3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNwZWN1bGF0ZU11bCk6CisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0OjpwYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OnRyYXApOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YW5jaG9yKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmJpdENhc3QpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZnJvdW5kKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjpzZXRPcmlnaW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6b3JpZ2luKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0SW50UHRyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OmRvdWJsZU5lZyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojp6ZXJv
RXh0UHRyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWQzMk5vbk5lZ2F0aXZlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmlzTnVsbCk6CisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0Ojpub3ROdWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRlc3RJc1plcm9Q
dHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dGVzdE5vblplcm9QdHIpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpv
cGVyYXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YnJhbmNoKToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OnN3aXRjaEluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmFkZEluY29taW5nVG9QaGkpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
ZnJhbWVQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0
Qm9vbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEludDMyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0SW50NjQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3REb3VibGUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6cGhpKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzdWIp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bXVsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZU
TDo6T3V0cHV0OjpjaGlsbERpdik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojptb2QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y2hpbGxNb2QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlQWRkKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVN1Yik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVNdWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6ZG91YmxlRGl2KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZU1vZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiaXRB
bmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0T3IpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Yml0WG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OnNobCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0OjphU2hyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxTaHIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y3RsejMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFdpdGhPdmVyZmxvdzMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN1YldpdGhPdmVyZmxvdzMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bFdpdGhPdmVyZmxvdzMyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFkZFdpdGhPdmVyZmxvdzY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnN1YldpdGhPdmVyZmxvdzY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om11bFdpdGhPdmVyZmxvdzY0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUFicyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVDZWlsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmRvdWJsZUZsb29yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZVNpbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVDb3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlUG93KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZVNxcnQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTG9nKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNpZ25FeHQzMlRvNjQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpGVEw6Ok91dHB1dDo6emVyb0V4dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6
T3V0cHV0OjppbnRUb0RvdWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjpjYXN0VG9JbnQzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVUb0Zsb2F0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmZsb2F0VG9E
b3VibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZXF1YWwpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90RXF1YWwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YWJvdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpG
VEw6Ok91dHB1dDo6YWJvdmVPckVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmJlbG93KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJlbG93
T3JFcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpncmVhdGVyVGhh
bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpncmVhdGVyVGhhbk9yRXF1
YWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1RoYW4pOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bGVzc1RoYW5PckVxdWFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUVxdWFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUVxdWFsT3JVbm9yZGVyZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlTm90RXF1YWxPclVub3JkZXJlZCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWwp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW4p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5P
ckVxdWFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZU5vdEVx
dWFsQW5kT3JkZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpkb3Vi
bGVMZXNzVGhhbk9yVW5vcmRlcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OmRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmRvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JV
bm9yZGVyZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6aXNaZXJvMzIp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6bm90WmVybzMyKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmlzWmVybzY0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdFplcm82NCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpzZWxlY3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6ZXh0cmFjdFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omp1
bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6cmV0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnVucmVhY2hhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnNwZWN1bGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkZUTDo6T3V0cHV0OjpzcGVjdWxhdGVBZGQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6c3BlY3VsYXRlU3ViKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRw
dXQ6OnNwZWN1bGF0ZU11bCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpw
YXRjaHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OnRyYXApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6YW5jaG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmJpdENhc3QpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6ZnJvdW5kKTogRGVsZXRlZC4KKwogMjAxNi0wNi0xMyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmb2xs
b3cgdXAgcGF0Y2ggZm9yIHIyMDE5NjQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3V0cHV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5jcHAJKHJldmlzaW9uIDIwMTk5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTYgKzc4LDEzNiBAQCB2b2lk
IE91dHB1dDo6YXBwZW5kVG8oTEJhc2ljQmxvY2sgYmxvY2spCiAgICAgbV9ibG9jayA9IGJsb2Nr
OwogfQogCitMVmFsdWUgT3V0cHV0OjpmcmFtZVBvaW50ZXIoKQoreworICAgIHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpGcmFtZVBvaW50ZXIsIG9yaWdp
bigpKTsKK30KKwogU2xvdEJhc2VWYWx1ZSogT3V0cHV0Ojpsb2NrZWRTdGFja1Nsb3Qoc2l6ZV90
IGJ5dGVzKQogewogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8U2xvdEJhc2VWYWx1ZT4o
bV9wcm9jLCBvcmlnaW4oKSwgbV9wcm9jLmFkZFN0YWNrU2xvdChieXRlcykpOwogfQogCitMVmFs
dWUgT3V0cHV0Ojpjb25zdEJvb2woYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsKK30K
KworTFZhbHVlIE91dHB1dDo6Y29uc3RJbnQzMihpbnQzMl90IHZhbHVlKQoreworICAgIHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpjb25zdEludDY0KGludDY0X3QgdmFsdWUpCit7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3Q2NFZhbHVlPihtX3Byb2Ms
IG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmNvbnN0RG91YmxlKGRvdWJs
ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb25zdERvdWJs
ZVZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OnBo
aShMVHlwZSB0eXBlKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVl
PihtX3Byb2MsIEIzOjpQaGksIHR5cGUsIG9yaWdpbigpKTsKK30KKworTFZhbHVlIE91dHB1dDo6
YWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFkZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKK30KKworTFZhbHVlIE91dHB1dDo6c3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlN1
Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6bXVsKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6Ok11bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKwor
TFZhbHVlIE91dHB1dDo6ZGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0
dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkRpdiwgb3JpZ2lu
KCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6Y2hpbGxEaXYoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6Q2hpbGxEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6Om1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpNb2QsIG9yaWdp
bigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmNoaWxsTW9kKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
VmFsdWU+KG1fcHJvYywgQjM6OkNoaWxsTW9kLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQor
CiBMVmFsdWUgT3V0cHV0OjpuZWcoTFZhbHVlIHZhbHVlKQogewogICAgIHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQjM6Ok5lZywgb3JpZ2luKCksIHZhbHVlKTsKIH0K
IAorTFZhbHVlIE91dHB1dDo6ZG91YmxlQWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFk
ZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlU3Vi
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlN1Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsK
K30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
Ok11bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91Ymxl
RGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkRpdiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKK30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlTW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6Ok1vZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6Yml0
QW5kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkJpdEFuZCwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6Yml0T3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6Qml0T3IsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmJp
dFhvcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRYb3IsIG9yaWdpbigpLCBsZWZ0LCBy
aWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OnNobChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpTaGwsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOworfQorCitMVmFsdWUg
T3V0cHV0OjphU2hyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNTaHIsIG9yaWdpbigpLCBs
ZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOworfQorCitMVmFsdWUgT3V0cHV0OjpsU2hyKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6OlpTaHIsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihy
aWdodCkpOworfQorCiBMVmFsdWUgT3V0cHV0OjpiaXROb3QoTFZhbHVlIHZhbHVlKQogewogICAg
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRYb3Is
IG9yaWdpbigpLApAQCAtMTAwLDExICsyMjAsNTggQEAgTFZhbHVlIE91dHB1dDo6bG9naWNhbE5v
dChMVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgdmFsdWUsIGludDMyWmVybyk7CiB9CiAKLUxW
YWx1ZSBPdXRwdXQ6OmxvYWQoVHlwZWRQb2ludGVyIHBvaW50ZXIsIExUeXBlIHR5cGUpCitMVmFs
dWUgT3V0cHV0OjpjdGx6MzIoTFZhbHVlIG9wZXJhbmQpCiB7Ci0gICAgTFZhbHVlIGxvYWQgPSBt
X2Jsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgdHlwZSwgb3JpZ2lu
KCksIHBvaW50ZXIudmFsdWUoKSk7Ci0gICAgbV9oZWFwcy0+ZGVjb3JhdGVNZW1vcnkocG9pbnRl
ci5oZWFwKCksIGxvYWQpOwotICAgIHJldHVybiBsb2FkOworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpDbHosIG9yaWdpbigpLCBvcGVyYW5kKTsK
K30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlQWJzKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWJzLCBvcmlnaW4o
KSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVDZWlsKExWYWx1ZSBvcGVyYW5k
KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpDZWlsLCBvcmlnaW4oKSwgb3BlcmFuZCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUZs
b29yKExWYWx1ZSBvcGVyYW5kKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpGbG9vciwgb3JpZ2luKCksIG9wZXJhbmQpOworfQorCitMVmFs
dWUgT3V0cHV0Ojpkb3VibGVUcnVuYyhMVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKE1hY3JvQXNz
ZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRSb3VuZGluZygpKSB7CisgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcmVzdWx0ID0gcGF0Y2hwb2ludChEb3VibGUpOworICAgICAgICByZXN1bHQt
PmFwcGVuZCh2YWx1ZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgIHJlc3VsdC0+
c2V0R2VuZXJhdG9yKAorICAgICAgICAgICAgW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIGppdC5y
b3VuZFRvd2FyZFplcm9Eb3VibGUocGFyYW1zWzFdLmZwcigpLCBwYXJhbXNbMF0uZnByKCkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIHJlc3VsdC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUo
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZG91YmxlICgqdHJ1bmNEb3Vi
bGUpKGRvdWJsZSkgPSB0cnVuYzsKKyAgICByZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhE
b3VibGUsIHRydW5jRG91YmxlLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZVNp
bihMVmFsdWUgdmFsdWUpCit7CisgICAgZG91YmxlICgqc2luRG91YmxlKShkb3VibGUpID0gc2lu
OworICAgIHJldHVybiBjYWxsV2l0aG91dFNpZGVFZmZlY3RzKEIzOjpEb3VibGUsIHNpbkRvdWJs
ZSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVDb3MoTFZhbHVlIHZhbHVlKQor
eworICAgIGRvdWJsZSAoKmNvc0RvdWJsZSkoZG91YmxlKSA9IGNvczsKKyAgICByZXR1cm4gY2Fs
bFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBjb3NEb3VibGUsIHZhbHVlKTsKK30KKwor
TFZhbHVlIE91dHB1dDo6ZG91YmxlUG93KExWYWx1ZSB4T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5k
KQoreworICAgIGRvdWJsZSAoKnBvd0RvdWJsZSkoZG91YmxlLCBkb3VibGUpID0gcG93OworICAg
IHJldHVybiBjYWxsV2l0aG91dFNpZGVFZmZlY3RzKEIzOjpEb3VibGUsIHBvd0RvdWJsZSwgeE9w
ZXJhbmQsIHlPcGVyYW5kKTsKIH0KIAogTFZhbHVlIE91dHB1dDo6ZG91YmxlUG93aShMVmFsdWUg
eCwgTFZhbHVlIHkpCkBAIC0xMTcsNiArMjg0LDE3IEBAIExWYWx1ZSBPdXRwdXQ6OmRvdWJsZVBv
d2koTFZhbHVlIHgsIExWYWwKICAgICByZXR1cm4gcmVzdWx0LnNlY29uZDsKIH0KIAorTFZhbHVl
IE91dHB1dDo6ZG91YmxlU3FydChMVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNxcnQsIG9yaWdpbigpLCB2YWx1ZSk7
Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUxvZyhMVmFsdWUgdmFsdWUpCit7CisgICAgZG91
YmxlICgqbG9nRG91YmxlKShkb3VibGUpID0gbG9nOworICAgIHJldHVybiBjYWxsV2l0aG91dFNp
ZGVFZmZlY3RzKEIzOjpEb3VibGUsIGxvZ0RvdWJsZSwgdmFsdWUpOworfQorCiBib29sIE91dHB1
dDo6aGFzU2Vuc2libGVEb3VibGVUb0ludCgpCiB7CiAgICAgcmV0dXJuIG9wdGltaXplRm9yWDg2
KCk7CkBAIC0xNDYsMjAgKzMyNCwyMSBAQCBMVmFsdWUgT3V0cHV0Ojpkb3VibGVUb1VJbnQoTFZh
bHVlIHZhbHVlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotTFZhbHVlIE91dHB1dDo6ZG91Ymxl
VHJ1bmMoTFZhbHVlIHZhbHVlKQorTFZhbHVlIE91dHB1dDo6c2lnbkV4dDMyVG82NChMVmFsdWUg
dmFsdWUpCiB7Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRS
b3VuZGluZygpKSB7Ci0gICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcmVzdWx0ID0gcGF0Y2hwb2lu
dChEb3VibGUpOwotICAgICAgICByZXN1bHQtPmFwcGVuZCh2YWx1ZSwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3Rlcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0R2VuZXJhdG9yKAotICAgICAgICAgICAgW10g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewotICAgICAgICAgICAgICAgIGppdC5yb3VuZFRvd2FyZFplcm9Eb3VibGUocGFyYW1zWzFd
LmZwcigpLCBwYXJhbXNbMF0uZnByKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIHJlc3Vs
dC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0gICAgZG91YmxlICgqdHJ1bmNEb3VibGUpKGRvdWJsZSkgPSB0cnVuYzsKLSAgICByZXR1
cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhEb3VibGUsIHRydW5jRG91YmxlLCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlNFeHQz
Miwgb3JpZ2luKCksIHZhbHVlKTsKK30KKworTFZhbHVlIE91dHB1dDo6emVyb0V4dChMVmFsdWUg
dmFsdWUsIExUeXBlIHR5cGUpCit7CisgICAgaWYgKHZhbHVlLT50eXBlKCkgPT0gdHlwZSkKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpaRXh0MzIsIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisKK0xWYWx1ZSBP
dXRwdXQ6OmludFRvRG91YmxlKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6SVRvRCwgb3JpZ2luKCksIHZhbHVlKTsK
IH0KIAogTFZhbHVlIE91dHB1dDo6dW5zaWduZWRUb0RvdWJsZShMVmFsdWUgdmFsdWUpCkBAIC0x
NjcsNiArMzQ2LDI5IEBAIExWYWx1ZSBPdXRwdXQ6OnVuc2lnbmVkVG9Eb3VibGUoTFZhbHVlIHYK
ICAgICByZXR1cm4gaW50VG9Eb3VibGUoemVyb0V4dCh2YWx1ZSwgSW50NjQpKTsKIH0KIAorTFZh
bHVlIE91dHB1dDo6Y2FzdFRvSW50MzIoTFZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1
ZS0+dHlwZSgpID09IEIzOjpJbnQzMiA/IHZhbHVlIDoKKyAgICAgICAgbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6VHJ1bmMsIG9yaWdpbigpLCB2YWx1ZSk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZVRvRmxvYXQoTFZhbHVlIHZhbHVlKQoreworICAgIHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpEb3VibGVUb0Zsb2F0
LCBvcmlnaW4oKSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0OjpmbG9hdFRvRG91YmxlKExW
YWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6RmxvYXRUb0RvdWJsZSwgb3JpZ2luKCksIHZhbHVlKTsKK30KKworTFZhbHVl
IE91dHB1dDo6bG9hZChUeXBlZFBvaW50ZXIgcG9pbnRlciwgTFR5cGUgdHlwZSkKK3sKKyAgICBM
VmFsdWUgbG9hZCA9IG1fYmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
LCB0eXBlLCBvcmlnaW4oKSwgcG9pbnRlci52YWx1ZSgpKTsKKyAgICBtX2hlYXBzLT5kZWNvcmF0
ZU1lbW9yeShwb2ludGVyLmhlYXAoKSwgbG9hZCk7CisgICAgcmV0dXJuIGxvYWQ7Cit9CisKIExW
YWx1ZSBPdXRwdXQ6OmxvYWQ4U2lnbkV4dDMyKFR5cGVkUG9pbnRlciBwb2ludGVyKQogewogICAg
IExWYWx1ZSBsb2FkID0gbV9ibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExv
YWQ4UywgSW50MzIsIG9yaWdpbigpLCBwb2ludGVyLnZhbHVlKCkpOwpAQCAtMjM5LDYgKzQ0MSwx
NDYgQEAgTFZhbHVlIE91dHB1dDo6YmFzZUluZGV4KExWYWx1ZSBiYXNlLCBMVgogICAgIHJldHVy
biBhZGQoYmFzZSwgYWNjdW11bGF0ZWRPZmZzZXQpOwogfQogCitMVmFsdWUgT3V0cHV0OjplcXVh
bChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKK30KKworTFZhbHVlIE91dHB1dDo6bm90RXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6Tm90RXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6
OmFib3ZlKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlLCBvcmlnaW4oKSwgbGVmdCwg
cmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0OjphYm92ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6QWJvdmVFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZh
bHVlIE91dHB1dDo6YmVsb3coTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3csIG9yaWdp
bigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmJlbG93T3JFcXVhbChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCZWxvd0VxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQp
OworfQorCitMVmFsdWUgT3V0cHV0OjpncmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91
dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7Cisg
ICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0
ZXJFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1dDo6bGVz
c1RoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc1RoYW4sIG9yaWdpbigpLCBsZWZ0
LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpMZXNzRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVx
dWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVF
cXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsT3JVbm9yZGVy
ZWQsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZU5v
dEVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Tm90RXF1YWwsIG9y
aWdpbigpLCBsZWZ0LCByaWdodCk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJsZUxlc3NUaGFu
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NUaGFuLCBvcmlnaW4oKSwgbGVmdCwgcmln
aHQpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yRXF1YWwoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6TGVzc0VxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOworfQor
CitMVmFsdWUgT3V0cHV0Ojpkb3VibGVHcmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQoreworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91
dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
Cit7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworTFZhbHVlIE91dHB1
dDo6ZG91YmxlTm90RXF1YWxBbmRPcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIGxvZ2ljYWxOb3QoZG91YmxlRXF1YWxPclVub3JkZXJlZChsZWZ0LCByaWdo
dCkpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVMZXNzVGhhbk9yVW5vcmRlcmVkKExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7CisgICAgcmV0dXJuIGxvZ2ljYWxOb3QoZG91YmxlR3Jl
YXRlclRoYW5PckVxdWFsKGxlZnQsIHJpZ2h0KSk7Cit9CisKK0xWYWx1ZSBPdXRwdXQ6OmRvdWJs
ZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCit7
CisgICAgcmV0dXJuIGxvZ2ljYWxOb3QoZG91YmxlR3JlYXRlclRoYW4obGVmdCwgcmlnaHQpKTsK
K30KKworTFZhbHVlIE91dHB1dDo6ZG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZChMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KQoreworICAgIHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUxlc3NU
aGFuT3JFcXVhbChsZWZ0LCByaWdodCkpOworfQorCitMVmFsdWUgT3V0cHV0Ojpkb3VibGVHcmVh
dGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQorewor
ICAgIHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUxlc3NUaGFuKGxlZnQsIHJpZ2h0KSk7Cit9CisK
K0xWYWx1ZSBPdXRwdXQ6OmlzWmVybzMyKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdpbigpLCB2
YWx1ZSwgaW50MzJaZXJvKTsKK30KKworTFZhbHVlIE91dHB1dDo6bm90WmVybzMyKExWYWx1ZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6Tm90RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsKK30KKworTFZhbHVl
IE91dHB1dDo6aXNaZXJvNjQoTFZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBp
bnQ2NFplcm8pOworfQorCitMVmFsdWUgT3V0cHV0Ojpub3RaZXJvNjQoTFZhbHVlIHZhbHVlKQor
eworICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpO
b3RFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQ2NFplcm8pOworfQorCitMVmFsdWUgT3V0cHV0
OjpzZWxlY3QoTFZhbHVlIHZhbHVlLCBMVmFsdWUgdGFrZW4sIExWYWx1ZSBub3RUYWtlbikKK3sK
KyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U2Vs
ZWN0LCBvcmlnaW4oKSwgdmFsdWUsIHRha2VuLCBub3RUYWtlbik7Cit9CisKK3ZvaWQgT3V0cHV0
OjpqdW1wKExCYXNpY0Jsb2NrIGRlc3RpbmF0aW9uKQoreworICAgIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6Q29udHJvbFZhbHVlPihtX3Byb2MsIEIzOjpKdW1wLCBvcmlnaW4oKSwgQjM6OkZyZXF1
ZW50ZWRCbG9jayhkZXN0aW5hdGlvbikpOworfQorCiB2b2lkIE91dHB1dDo6YnJhbmNoKExWYWx1
ZSBjb25kaXRpb24sIExCYXNpY0Jsb2NrIHRha2VuLCBXZWlnaHQgdGFrZW5XZWlnaHQsIExCYXNp
Y0Jsb2NrIG5vdFRha2VuLCBXZWlnaHQgbm90VGFrZW5XZWlnaHQpCiB7CiAgICAgbV9ibG9jay0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCkBAIC0yNTksNiArNjAxLDYzIEBAIHZvaWQgT3V0cHV0
OjpjaGVjayhMVmFsdWUgY29uZGl0aW9uLCBXZWkKICAgICBjaGVjayhjb25kaXRpb24sIHRha2Vu
LCB0YWtlbi53ZWlnaHQoKS5pbnZlcnNlKCkpOwogfQogCit2b2lkIE91dHB1dDo6cmV0KExWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9w
cm9jLCBCMzo6UmV0dXJuLCBvcmlnaW4oKSwgdmFsdWUpOworfQorCit2b2lkIE91dHB1dDo6dW5y
ZWFjaGFibGUoKQoreworICAgIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29udHJvbFZhbHVlPiht
X3Byb2MsIEIzOjpPb3BzLCBvcmlnaW4oKSk7Cit9CisKK0NoZWNrVmFsdWUqIE91dHB1dDo6c3Bl
Y3VsYXRlKExWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpDaGVja1ZhbHVlPihtX3Byb2MsIEIzOjpDaGVjaywgb3JpZ2luKCksIHZhbHVlKTsKK30KKwor
Q2hlY2tWYWx1ZSogT3V0cHV0OjpzcGVjdWxhdGVBZGQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdo
dCkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPihtX3By
b2MsIEIzOjpDaGVja0FkZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworQ2hlY2tWYWx1
ZSogT3V0cHV0OjpzcGVjdWxhdGVTdWIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAg
ICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPihtX3Byb2MsIEIzOjpD
aGVja1N1Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworQ2hlY2tWYWx1ZSogT3V0cHV0
OjpzcGVjdWxhdGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKK3sKKyAgICByZXR1cm4g
bV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPihtX3Byb2MsIEIzOjpDaGVja011bCwg
b3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKK30KKworUGF0Y2hwb2ludFZhbHVlKiBPdXRwdXQ6OnBh
dGNocG9pbnQoTFR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgdHlwZSwgb3JpZ2luKCkpOworfQorCit2b2lkIE91
dHB1dDo6dHJhcCgpCit7CisgICAgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDb250cm9sVmFsdWU+
KG1fcHJvYywgQjM6Ok9vcHMsIG9yaWdpbigpKTsKK30KKworVmFsdWVGcm9tQmxvY2sgT3V0cHV0
OjphbmNob3IoTFZhbHVlIHZhbHVlKQoreworICAgIEIzOjpVcHNpbG9uVmFsdWUqIHVwc2lsb24g
PSBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlVwc2lsb25WYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dmFsdWUpOworICAgIHJldHVybiBWYWx1ZUZyb21CbG9jayh1cHNpbG9uLCBtX2Jsb2NrKTsKK30K
KworTFZhbHVlIE91dHB1dDo6Yml0Q2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBlID09IGludDY0IHx8IHR5cGUgPT0gZG91YmxlVHlw
ZSk7CisgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkJpdHdpc2VDYXN0LCBvcmlnaW4oKSwgdmFsdWUpOworfQorCitMVmFsdWUgT3V0cHV0Ojpmcm91
bmQoTFZhbHVlIGRvdWJsZVZhbHVlKQoreworICAgIHJldHVybiBmbG9hdFRvRG91YmxlKGRvdWJs
ZVRvRmxvYXQoZG91YmxlVmFsdWUpKTsKK30KKwogTFZhbHVlIE91dHB1dDo6bG9hZChUeXBlZFBv
aW50ZXIgcG9pbnRlciwgTG9hZFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMjAxOTk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpA
QCAtOTksMjAgKzk5LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9yaWdpbihERkc6Ok5vZGUq
IG5vZGUpIHsgbV9vcmlnaW4gPSBub2RlOyB9CiAgICAgQjM6Ok9yaWdpbiBvcmlnaW4oKSB7IHJl
dHVybiBCMzo6T3JpZ2luKG1fb3JpZ2luKTsgfQogCi0gICAgTFZhbHVlIGZyYW1lUG9pbnRlcigp
IHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZyYW1l
UG9pbnRlciwgb3JpZ2luKCkpOyB9CisgICAgTFZhbHVlIGZyYW1lUG9pbnRlcigpOwogCiAgICAg
QjM6OlNsb3RCYXNlVmFsdWUqIGxvY2tlZFN0YWNrU2xvdChzaXplX3QgYnl0ZXMpOwogCi0gICAg
TFZhbHVlIGNvbnN0Qm9vbChib29sIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8
QjM6OkNvbnN0MzJWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9Ci0gICAgTFZhbHVl
IGNvbnN0SW50MzIoaW50MzJfdCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpDb25zdDMyVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHZhbHVlKTsgfQorICAgIExWYWx1ZSBj
b25zdEJvb2woYm9vbCB2YWx1ZSk7CisgICAgTFZhbHVlIGNvbnN0SW50MzIoaW50MzJfdCB2YWx1
ZSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBMVmFsdWUgY29uc3RJbnRQdHIoVCog
dmFsdWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29uc3RQdHJWYWx1ZT4obV9w
cm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBM
VmFsdWUgY29uc3RJbnRQdHIoVCB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpDb25zdFB0clZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KLSAgICBMVmFsdWUg
Y29uc3RJbnQ2NChpbnQ2NF90IHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OkNvbnN0NjRWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdmFsdWUpOyB9Ci0gICAgTFZhbHVlIGNv
bnN0RG91YmxlKGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpD
b25zdERvdWJsZVZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB2YWx1ZSk7IH0KKyAgICBMVmFsdWUg
Y29uc3RJbnQ2NChpbnQ2NF90IHZhbHVlKTsKKyAgICBMVmFsdWUgY29uc3REb3VibGUoZG91Ymxl
IHZhbHVlKTsKIAotICAgIExWYWx1ZSBwaGkoTFR5cGUgdHlwZSkgeyByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6UGhpLCB0eXBlLCBvcmlnaW4oKSk7IH0K
KyAgICBMVmFsdWUgcGhpKExUeXBlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBQYXJhbXM+
CiAgICAgTFZhbHVlIHBoaShMVHlwZSwgVmFsdWVGcm9tQmxvY2ssIFBhcmFtcy4uLiB0aGVSZXN0
KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPgpAQCAtMTIxLDkzICsxMjEsNjEg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFBhcmFtcz4KICAgICB2b2lkIGFk
ZEluY29taW5nVG9QaGkoTFZhbHVlIHBoaSwgVmFsdWVGcm9tQmxvY2ssIFBhcmFtcy4uLiB0aGVS
ZXN0KTsKIAotICAgIExWYWx1ZSBhZGQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWRkLCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIHN1YihMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpT
dWIsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgbXVsKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6Ok11bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkaXYo
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIz
OjpWYWx1ZT4obV9wcm9jLCBCMzo6RGl2LCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAg
TFZhbHVlIGNoaWxsRGl2KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkNoaWxsRGl2LCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIG1vZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpNb2Qs
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgY2hpbGxNb2QoTFZhbHVlIGxl
ZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6Q2hpbGxNb2QsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KKyAgICBMVmFs
dWUgYWRkKExWYWx1ZSwgTFZhbHVlKTsKKyAgICBMVmFsdWUgc3ViKExWYWx1ZSwgTFZhbHVlKTsK
KyAgICBMVmFsdWUgbXVsKExWYWx1ZSwgTFZhbHVlKTsKKyAgICBMVmFsdWUgZGl2KExWYWx1ZSwg
TFZhbHVlKTsKKyAgICBMVmFsdWUgY2hpbGxEaXYoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1
ZSBtb2QoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBjaGlsbE1vZChMVmFsdWUsIExWYWx1
ZSk7CiAgICAgTFZhbHVlIG5lZyhMVmFsdWUpOwogCi0gICAgTFZhbHVlIGRvdWJsZUFkZChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpBZGQsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFs
dWUgZG91YmxlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlN1Yiwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsgfQotICAgIExWYWx1ZSBkb3VibGVNdWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkg
eyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TXVsLCBv
cmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZURpdihMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPiht
X3Byb2MsIEIzOjpEaXYsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZG91
YmxlTW9kKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok1vZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsg
fQorICAgIExWYWx1ZSBkb3VibGVBZGQoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBkb3Vi
bGVTdWIoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVNdWwoTFZhbHVlLCBMVmFs
dWUpOworICAgIExWYWx1ZSBkb3VibGVEaXYoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBk
b3VibGVNb2QoTFZhbHVlLCBMVmFsdWUpOwogICAgIExWYWx1ZSBkb3VibGVOZWcoTFZhbHVlIHZh
bHVlKSB7IHJldHVybiBuZWcodmFsdWUpOyB9CiAKLSAgICBMVmFsdWUgYml0QW5kKExWYWx1ZSBs
ZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkJpdEFuZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1
ZSBiaXRPcihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpCaXRPciwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsgfQotICAgIExWYWx1ZSBiaXRYb3IoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6Qml0WG9yLCBvcmln
aW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIHNobChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIz
OjpTaGwsIG9yaWdpbigpLCBsZWZ0LCBjYXN0VG9JbnQzMihyaWdodCkpOyB9Ci0gICAgTFZhbHVl
IGFTaHIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U1Nociwgb3JpZ2luKCksIGxlZnQsIGNhc3RUb0lu
dDMyKHJpZ2h0KSk7IH0KLSAgICBMVmFsdWUgbFNocihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpaU2hy
LCBvcmlnaW4oKSwgbGVmdCwgY2FzdFRvSW50MzIocmlnaHQpKTsgfQorICAgIExWYWx1ZSBiaXRB
bmQoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBiaXRPcihMVmFsdWUsIExWYWx1ZSk7Cisg
ICAgTFZhbHVlIGJpdFhvcihMVmFsdWUsIExWYWx1ZSk7CisgICAgTFZhbHVlIHNobChMVmFsdWUs
IExWYWx1ZSBzaGlmdEFtb3VudCk7CisgICAgTFZhbHVlIGFTaHIoTFZhbHVlLCBMVmFsdWUgc2hp
ZnRBbW91bnQpOworICAgIExWYWx1ZSBsU2hyKExWYWx1ZSwgTFZhbHVlIHNoaWZ0QW1vdW50KTsK
ICAgICBMVmFsdWUgYml0Tm90KExWYWx1ZSk7CiAgICAgTFZhbHVlIGxvZ2ljYWxOb3QoTFZhbHVl
KTsKIAotICAgIExWYWx1ZSBjdGx6MzIoTFZhbHVlIG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkNseiwgb3JpZ2luKCksIG9wZXJhbmQp
OyB9Ci0gICAgTFZhbHVlIGFkZFdpdGhPdmVyZmxvdzMyKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmln
aHQpIHsgQ1JBU0goKTsgfQotICAgIExWYWx1ZSBzdWJXaXRoT3ZlcmZsb3czMihMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93
MzIoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGFk
ZFdpdGhPdmVyZmxvdzY0KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgQ1JBU0goKTsgfQot
ICAgIExWYWx1ZSBzdWJXaXRoT3ZlcmZsb3c2NChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7
IENSQVNIKCk7IH0KLSAgICBMVmFsdWUgbXVsV2l0aE92ZXJmbG93NjQoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkgeyBDUkFTSCgpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUFicyhMVmFsdWUgdmFs
dWUpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFi
cywgb3JpZ2luKCksIHZhbHVlKTsgfQotICAgIExWYWx1ZSBkb3VibGVDZWlsKExWYWx1ZSBvcGVy
YW5kKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpD
ZWlsLCBvcmlnaW4oKSwgb3BlcmFuZCk7IH0KLSAgICBMVmFsdWUgZG91YmxlRmxvb3IoTFZhbHVl
IG9wZXJhbmQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6OkZsb29yLCBvcmlnaW4oKSwgb3BlcmFuZCk7IH0KKyAgICBMVmFsdWUgY3RsejMyKExWYWx1
ZSk7CisgICAgTFZhbHVlIGRvdWJsZUFicyhMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVDZWls
KExWYWx1ZSk7CisgICAgTFZhbHVlIGRvdWJsZUZsb29yKExWYWx1ZSk7CiAgICAgTFZhbHVlIGRv
dWJsZVRydW5jKExWYWx1ZSk7CiAKLSAgICBMVmFsdWUgZG91YmxlU2luKExWYWx1ZSB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIGRvdWJsZSAoKnNpbkRvdWJsZSkoZG91YmxlKSA9IHNpbjsKLSAgICAg
ICAgcmV0dXJuIGNhbGxXaXRob3V0U2lkZUVmZmVjdHMoQjM6OkRvdWJsZSwgc2luRG91YmxlLCB2
YWx1ZSk7Ci0gICAgfQotICAgIExWYWx1ZSBkb3VibGVDb3MoTFZhbHVlIHZhbHVlKQotICAgIHsK
LSAgICAgICAgZG91YmxlICgqY29zRG91YmxlKShkb3VibGUpID0gY29zOwotICAgICAgICByZXR1
cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBjb3NEb3VibGUsIHZhbHVlKTsK
LSAgICB9Ci0KLSAgICBMVmFsdWUgZG91YmxlUG93KExWYWx1ZSB4T3BlcmFuZCwgTFZhbHVlIHlP
cGVyYW5kKQotICAgIHsKLSAgICAgICAgZG91YmxlICgqcG93RG91YmxlKShkb3VibGUsIGRvdWJs
ZSkgPSBwb3c7Ci0gICAgICAgIHJldHVybiBjYWxsV2l0aG91dFNpZGVFZmZlY3RzKEIzOjpEb3Vi
bGUsIHBvd0RvdWJsZSwgeE9wZXJhbmQsIHlPcGVyYW5kKTsKLSAgICB9CisgICAgTFZhbHVlIGRv
dWJsZVNpbihMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVDb3MoTFZhbHVlKTsKIAotICAgIExW
YWx1ZSBkb3VibGVQb3dpKExWYWx1ZSB4T3BlcmFuZCwgTFZhbHVlIHlPcGVyYW5kKTsKKyAgICBM
VmFsdWUgZG91YmxlUG93KExWYWx1ZSBiYXNlLCBMVmFsdWUgZXhwb25lbnQpOworICAgIExWYWx1
ZSBkb3VibGVQb3dpKExWYWx1ZSBiYXNlLCBMVmFsdWUgZXhwb25lbnQpOwogCi0gICAgTFZhbHVl
IGRvdWJsZVNxcnQoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OlZhbHVlPihtX3Byb2MsIEIzOjpTcXJ0LCBvcmlnaW4oKSwgdmFsdWUpOyB9CisgICAgTFZhbHVl
IGRvdWJsZVNxcnQoTFZhbHVlKTsKIAotICAgIExWYWx1ZSBkb3VibGVMb2coTFZhbHVlIHZhbHVl
KQotICAgIHsKLSAgICAgICAgZG91YmxlICgqbG9nRG91YmxlKShkb3VibGUpID0gbG9nOwotICAg
ICAgICByZXR1cm4gY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhCMzo6RG91YmxlLCBsb2dEb3VibGUs
IHZhbHVlKTsKLSAgICB9CisgICAgTFZhbHVlIGRvdWJsZUxvZyhMVmFsdWUpOwogCiAgICAgc3Rh
dGljIGJvb2wgaGFzU2Vuc2libGVEb3VibGVUb0ludCgpOwogICAgIExWYWx1ZSBkb3VibGVUb0lu
dChMVmFsdWUpOwogICAgIExWYWx1ZSBkb3VibGVUb1VJbnQoTFZhbHVlKTsKIAotICAgIExWYWx1
ZSBzaWduRXh0MzJUbzY0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U0V4dDMyLCBvcmlnaW4oKSwgdmFsdWUpOyB9Ci0gICAg
TFZhbHVlIHplcm9FeHQoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAg
aWYgKHZhbHVlLT50eXBlKCkgPT0gdHlwZSkKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OlpF
eHQzMiwgb3JpZ2luKCksIHZhbHVlKTsKLSAgICB9CisgICAgTFZhbHVlIHNpZ25FeHQzMlRvNjQo
TFZhbHVlKTsKKyAgICBMVmFsdWUgemVyb0V4dChMVmFsdWUsIExUeXBlKTsKICAgICBMVmFsdWUg
emVyb0V4dFB0cihMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIHplcm9FeHQodmFsdWUsIEIzOjpJbnQ2
NCk7IH0KLSAgICBMVmFsdWUgaW50VG9Eb3VibGUoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpJVG9ELCBvcmlnaW4oKSwgdmFs
dWUpOyB9CisgICAgTFZhbHVlIGludFRvRG91YmxlKExWYWx1ZSk7CiAgICAgTFZhbHVlIHVuc2ln
bmVkVG9Eb3VibGUoTFZhbHVlKTsKLSAgICBMVmFsdWUgY2FzdFRvSW50MzIoTFZhbHVlIHZhbHVl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlLT50eXBlKCkgPT0gQjM6OkludDMyID8gdmFs
dWUgOgotICAgICAgICAgICAgbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6VHJ1bmMsIG9yaWdpbigpLCB2YWx1ZSk7Ci0gICAgfQotICAgIExWYWx1ZSBkb3VibGVUb0Zs
b2F0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4o
bV9wcm9jLCBCMzo6RG91YmxlVG9GbG9hdCwgb3JpZ2luKCksIHZhbHVlKTsgfQotICAgIExWYWx1
ZSBmbG9hdFRvRG91YmxlKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3
PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RmxvYXRUb0RvdWJsZSwgb3JpZ2luKCksIHZhbHVlKTsg
fQorICAgIExWYWx1ZSBjYXN0VG9JbnQzMihMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVUb0Zs
b2F0KExWYWx1ZSk7CisgICAgTFZhbHVlIGZsb2F0VG9Eb3VibGUoTFZhbHVlKTsKICAgICBMVmFs
dWUgYml0Q2FzdChMVmFsdWUsIExUeXBlKTsKLSAgICBMVmFsdWUgZnJvdW5kKExWYWx1ZSBkb3Vi
bGVWYWx1ZSk7CisgICAgTFZhbHVlIGZyb3VuZChMVmFsdWUpOwogCiAgICAgTFZhbHVlIGxvYWQo
VHlwZWRQb2ludGVyLCBMVHlwZSk7CiAgICAgdm9pZCBzdG9yZShMVmFsdWUsIFR5cGVkUG9pbnRl
cik7CkBAIC0yMjEsOCArMTg5LDggQEAgcHVibGljOgogICAgIExWYWx1ZSBsb2FkUHRyKFR5cGVk
UG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIEIzOjpwb2ludGVyVHlwZSgp
KTsgfQogICAgIExWYWx1ZSBsb2FkRmxvYXQoVHlwZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJu
IGxvYWQocG9pbnRlciwgQjM6OkZsb2F0KTsgfQogICAgIExWYWx1ZSBsb2FkRG91YmxlKFR5cGVk
UG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIEIzOjpEb3VibGUpOyB9Ci0g
ICAgdm9pZCBzdG9yZTMyQXM4KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBvaW50ZXIpOwot
ICAgIHZvaWQgc3RvcmUzMkFzMTYoTFZhbHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcik7
CisgICAgdm9pZCBzdG9yZTMyQXM4KExWYWx1ZSwgVHlwZWRQb2ludGVyKTsKKyAgICB2b2lkIHN0
b3JlMzJBczE2KExWYWx1ZSwgVHlwZWRQb2ludGVyKTsKICAgICB2b2lkIHN0b3JlMzIoTFZhbHVl
IHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikKICAgICB7CiAgICAgICAgIEFTU0VSVCh2YWx1
ZS0+dHlwZSgpID09IEIzOjpJbnQzMik7CkBAIC0zMzAsMzQgKzI5OCwzNCBAQCBwdWJsaWM6CiAg
ICAgTFZhbHVlIGxvYWQzMk5vbk5lZ2F0aXZlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVy
biBsb2FkMzIocG9pbnRlcik7IH0KICAgICBMVmFsdWUgbG9hZDMyTm9uTmVnYXRpdmUoTFZhbHVl
IGJhc2UsIGNvbnN0IEFic3RyYWN0SGVhcCYgZmllbGQpIHsgcmV0dXJuIGxvYWQzMihiYXNlLCBm
aWVsZCk7IH0KIAotICAgIExWYWx1ZSBlcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7
IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpFcXVhbCwg
b3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBub3RFcXVhbChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPiht
X3Byb2MsIEIzOjpOb3RFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1
ZSBhYm92ZShMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpBYm92ZSwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsgfQotICAgIExWYWx1ZSBhYm92ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkg
eyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWJvdmVF
cXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBiZWxvdyhMVmFsdWUg
bGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVl
PihtX3Byb2MsIEIzOjpCZWxvdywgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1
ZSBiZWxvd09yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9j
ay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3dFcXVhbCwgb3JpZ2luKCks
IGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBncmVhdGVyVGhhbihMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBn
cmVhdGVyVGhhbk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6R3JlYXRlckVxdWFsLCBvcmln
aW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGxlc3NUaGFuKExWYWx1ZSBsZWZ0LCBM
VmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJv
YywgQjM6Okxlc3NUaGFuLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGxl
c3NUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2Nr
LT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpMZXNzRXF1YWwsIG9yaWdpbigpLCBs
ZWZ0LCByaWdodCk7IH0KLQotICAgIExWYWx1ZSBkb3VibGVFcXVhbChMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2Ms
IEIzOjpFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkb3VibGVF
cXVhbE9yVW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxv
Y2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsT3JVbm9yZGVyZWQsIG9y
aWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZG91YmxlTm90RXF1YWxPclVub3Jk
ZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpOb3RFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsgfQotICAgIExWYWx1ZSBkb3VibGVMZXNzVGhhbihMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0
KSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpMZXNz
VGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsgfQotICAgIExWYWx1ZSBkb3VibGVMZXNzVGhh
bk9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6TGVzc0VxdWFsLCBvcmlnaW4oKSwgbGVmdCwg
cmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuKExWYWx1ZSBsZWZ0LCBMVmFs
dWUgcmlnaHQpIHsgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywg
QjM6OkdyZWF0ZXJUaGFuLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOyB9Ci0gICAgTFZhbHVlIGRv
dWJsZUdyZWF0ZXJUaGFuT3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVy
biBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpHcmVhdGVyRXF1YWws
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7IH0KLSAgICBMVmFsdWUgZG91YmxlTm90RXF1YWxBbmRP
cmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxvZ2ljYWxOb3QoZG91
YmxlRXF1YWxPclVub3JkZXJlZChsZWZ0LCByaWdodCkpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUxl
c3NUaGFuT3JVbm9yZGVyZWQoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkgeyByZXR1cm4gbG9n
aWNhbE5vdChkb3VibGVHcmVhdGVyVGhhbk9yRXF1YWwobGVmdCwgcmlnaHQpKTsgfQotICAgIExW
YWx1ZSBkb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJlZChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KSB7IHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUdyZWF0ZXJUaGFuKGxlZnQsIHJpZ2h0
KSk7IH0KLSAgICBMVmFsdWUgZG91YmxlR3JlYXRlclRoYW5PclVub3JkZXJlZChMVmFsdWUgbGVm
dCwgTFZhbHVlIHJpZ2h0KSB7IHJldHVybiBsb2dpY2FsTm90KGRvdWJsZUxlc3NUaGFuT3JFcXVh
bChsZWZ0LCByaWdodCkpOyB9Ci0gICAgTFZhbHVlIGRvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9y
VW5vcmRlcmVkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpIHsgcmV0dXJuIGxvZ2ljYWxOb3Qo
ZG91YmxlTGVzc1RoYW4obGVmdCwgcmlnaHQpKTsgfQotCi0gICAgTFZhbHVlIGlzWmVybzMyKExW
YWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9j
LCBCMzo6RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50MzJaZXJvKTsgfQotICAgIExWYWx1ZSBu
b3RaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpOb3RFcXVhbCwgb3JpZ2luKCksIHZhbHVlLCBpbnQzMlplcm8pOyB9
Ci0gICAgTFZhbHVlIGlzWmVybzY0KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RXF1YWwsIG9yaWdpbigpLCB2YWx1ZSwgaW50
NjRaZXJvKTsgfQotICAgIExWYWx1ZSBub3RaZXJvNjQoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpOb3RFcXVhbCwgb3JpZ2lu
KCksIHZhbHVlLCBpbnQ2NFplcm8pOyB9CisgICAgTFZhbHVlIGVxdWFsKExWYWx1ZSwgTFZhbHVl
KTsKKyAgICBMVmFsdWUgbm90RXF1YWwoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBhYm92
ZShMVmFsdWUsIExWYWx1ZSk7CisgICAgTFZhbHVlIGFib3ZlT3JFcXVhbChMVmFsdWUsIExWYWx1
ZSk7CisgICAgTFZhbHVlIGJlbG93KExWYWx1ZSwgTFZhbHVlKTsKKyAgICBMVmFsdWUgYmVsb3dP
ckVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKKyAgICBMVmFsdWUgZ3JlYXRlclRoYW4oTFZhbHVlLCBM
VmFsdWUpOworICAgIExWYWx1ZSBncmVhdGVyVGhhbk9yRXF1YWwoTFZhbHVlLCBMVmFsdWUpOwor
ICAgIExWYWx1ZSBsZXNzVGhhbihMVmFsdWUsIExWYWx1ZSk7CisgICAgTFZhbHVlIGxlc3NUaGFu
T3JFcXVhbChMVmFsdWUsIExWYWx1ZSk7CisKKyAgICBMVmFsdWUgZG91YmxlRXF1YWwoTFZhbHVl
LCBMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVFcXVhbE9yVW5vcmRlcmVkKExWYWx1ZSwgTFZh
bHVlKTsKKyAgICBMVmFsdWUgZG91YmxlTm90RXF1YWxPclVub3JkZXJlZChMVmFsdWUsIExWYWx1
ZSk7CisgICAgTFZhbHVlIGRvdWJsZUxlc3NUaGFuKExWYWx1ZSwgTFZhbHVlKTsKKyAgICBMVmFs
dWUgZG91YmxlTGVzc1RoYW5PckVxdWFsKExWYWx1ZSwgTFZhbHVlKTsKKyAgICBMVmFsdWUgZG91
YmxlR3JlYXRlclRoYW4oTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVHcmVhdGVy
VGhhbk9yRXF1YWwoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVOb3RFcXVhbEFu
ZE9yZGVyZWQoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVMZXNzVGhhbk9yVW5v
cmRlcmVkKExWYWx1ZSwgTFZhbHVlKTsKKyAgICBMVmFsdWUgZG91YmxlTGVzc1RoYW5PckVxdWFs
T3JVbm9yZGVyZWQoTFZhbHVlLCBMVmFsdWUpOworICAgIExWYWx1ZSBkb3VibGVHcmVhdGVyVGhh
bk9yVW5vcmRlcmVkKExWYWx1ZSwgTFZhbHVlKTsKKyAgICBMVmFsdWUgZG91YmxlR3JlYXRlclRo
YW5PckVxdWFsT3JVbm9yZGVyZWQoTFZhbHVlLCBMVmFsdWUpOworCisgICAgTFZhbHVlIGlzWmVy
bzMyKExWYWx1ZSk7CisgICAgTFZhbHVlIG5vdFplcm8zMihMVmFsdWUpOworICAgIExWYWx1ZSBp
c1plcm82NChMVmFsdWUpOworICAgIExWYWx1ZSBub3RaZXJvNjQoTFZhbHVlKTsKICAgICBMVmFs
dWUgaXNOdWxsKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gaXNaZXJvNjQodmFsdWUpOyB9CiAgICAg
TFZhbHVlIG5vdE51bGwoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBub3RaZXJvNjQodmFsdWUpOyB9
CiAKQEAgLTM2OCw4ICszMzYsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIHRlc3RJc1plcm9QdHIo
TFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyByZXR1cm4gaXNOdWxsKGJpdEFuZCh2YWx1ZSwg
bWFzaykpOyB9CiAgICAgTFZhbHVlIHRlc3ROb25aZXJvUHRyKExWYWx1ZSB2YWx1ZSwgTFZhbHVl
IG1hc2spIHsgcmV0dXJuIG5vdE51bGwoYml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KIAotICAgIExW
YWx1ZSBzZWxlY3QoTFZhbHVlIHZhbHVlLCBMVmFsdWUgdGFrZW4sIExWYWx1ZSBub3RUYWtlbikg
eyByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6U2VsZWN0
LCBvcmlnaW4oKSwgdmFsdWUsIHRha2VuLCBub3RUYWtlbik7IH0KLSAgICBMVmFsdWUgZXh0cmFj
dFZhbHVlKExWYWx1ZSBhZ2dWYWwsIHVuc2lnbmVkIGluZGV4KSB7IENSQVNIKCk7IH0KKyAgICBM
VmFsdWUgc2VsZWN0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIHRha2VuLCBMVmFsdWUgbm90VGFrZW4p
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4KICAgICBMVmFsdWUgY2FsbChM
VHlwZSB0eXBlLCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikKQEAg
LTM5NCw3ICszNjEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25U
eXBlPgogICAgIExWYWx1ZSBvcGVyYXRpb24oRnVuY3Rpb25UeXBlIGZ1bmN0aW9uKSB7IHJldHVy
biBjb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uKSk7IH0KIAotICAgIHZv
aWQganVtcChMQmFzaWNCbG9jayBkZXN0aW5hdGlvbikgeyBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6
OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBCMzo6SnVtcCwgb3JpZ2luKCksIEIzOjpGcmVxdWVudGVk
QmxvY2soZGVzdGluYXRpb24pKTsgfQorICAgIHZvaWQganVtcChMQmFzaWNCbG9jayk7CiAgICAg
dm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgTEJhc2ljQmxvY2sgdGFrZW4sIFdlaWdodCB0
YWtlbldlaWdodCwgTEJhc2ljQmxvY2sgbm90VGFrZW4sIFdlaWdodCBub3RUYWtlbldlaWdodCk7
CiAgICAgdm9pZCBicmFuY2goTFZhbHVlIGNvbmRpdGlvbiwgV2VpZ2h0ZWRUYXJnZXQgdGFrZW4s
IFdlaWdodGVkVGFyZ2V0IG5vdFRha2VuKQogICAgIHsKQEAgLTQyMCw0NSArMzg3LDIwIEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgcmV0KExWYWx1ZSB2YWx1ZSkgeyBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBCMzo6UmV0dXJuLCBv
cmlnaW4oKSwgdmFsdWUpOyB9CisgICAgdm9pZCByZXQoTFZhbHVlKTsKIAotICAgIHZvaWQgdW5y
ZWFjaGFibGUoKSB7IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6Q29udHJvbFZhbHVlPihtX3Byb2Ms
IEIzOjpPb3BzLCBvcmlnaW4oKSk7IH0KKyAgICB2b2lkIHVucmVhY2hhYmxlKCk7CiAKLSAgICBC
Mzo6Q2hlY2tWYWx1ZSogc3BlY3VsYXRlKExWYWx1ZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNoZWNrVmFsdWU+KG1fcHJvYywgQjM6OkNoZWNr
LCBvcmlnaW4oKSwgdmFsdWUpOwotICAgIH0KKyAgICBCMzo6Q2hlY2tWYWx1ZSogc3BlY3VsYXRl
KExWYWx1ZSk7CisgICAgQjM6OkNoZWNrVmFsdWUqIHNwZWN1bGF0ZUFkZChMVmFsdWUsIExWYWx1
ZSk7CisgICAgQjM6OkNoZWNrVmFsdWUqIHNwZWN1bGF0ZVN1YihMVmFsdWUsIExWYWx1ZSk7Cisg
ICAgQjM6OkNoZWNrVmFsdWUqIHNwZWN1bGF0ZU11bChMVmFsdWUsIExWYWx1ZSk7CiAKLSAgICBC
Mzo6Q2hlY2tWYWx1ZSogc3BlY3VsYXRlQWRkKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCi0g
ICAgewotICAgICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPiht
X3Byb2MsIEIzOjpDaGVja0FkZCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKLSAgICB9CisgICAg
QjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludChMVHlwZSk7CiAKLSAgICBCMzo6Q2hlY2tW
YWx1ZSogc3BlY3VsYXRlU3ViKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPihtX3Byb2MsIEIz
OjpDaGVja1N1Yiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBCMzo6Q2hl
Y2tWYWx1ZSogc3BlY3VsYXRlTXVsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCi0gICAgewot
ICAgICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpDaGVja1ZhbHVlPihtX3Byb2Ms
IEIzOjpDaGVja011bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKLSAgICB9Ci0KLSAgICBCMzo6
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KExUeXBlIHR5cGUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgdHlw
ZSwgb3JpZ2luKCkpOwotICAgIH0KLQotICAgIHZvaWQgdHJhcCgpCi0gICAgewotICAgICAgICBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OkNvbnRyb2xWYWx1ZT4obV9wcm9jLCBCMzo6T29wcywgb3Jp
Z2luKCkpOwotICAgIH0KKyAgICB2b2lkIHRyYXAoKTsKIAotICAgIFZhbHVlRnJvbUJsb2NrIGFu
Y2hvcihMVmFsdWUgdmFsdWUpCi0gICAgewotICAgICAgICBCMzo6VXBzaWxvblZhbHVlKiB1cHNp
bG9uID0gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFZhbHVlRnJvbUJsb2NrKHVwc2lsb24sIG1fYmxv
Y2spOwotICAgIH0KKyAgICBWYWx1ZUZyb21CbG9jayBhbmNob3IoTFZhbHVlKTsKIAogICAgIHZv
aWQgaW5jcmVtZW50U3VwZXJTYW1wbGVyQ291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudFN1cGVy
U2FtcGxlckNvdW50KCk7CkBAIC01MDksMTcgKzQ1MSw2IEBAIGlubGluZSB2b2lkIE91dHB1dDo6
YWRkSW5jb21pbmdUb1BoaShMVmEKICAgICBhZGRJbmNvbWluZ1RvUGhpKHBoaSwgdGhlUmVzdC4u
Lik7CiB9CiAKLWlubGluZSBMVmFsdWUgT3V0cHV0OjpiaXRDYXN0KExWYWx1ZSB2YWx1ZSwgTFR5
cGUgdHlwZSkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGUsIHR5cGUgPT0gaW50NjQgfHwgdHlw
ZSA9PSBkb3VibGVUeXBlKTsKLSAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6Qml0d2lzZUNhc3QsIG9yaWdpbigpLCB2YWx1ZSk7Ci19Ci0KLWlubGlu
ZSBMVmFsdWUgT3V0cHV0Ojpmcm91bmQoTFZhbHVlIGRvdWJsZVZhbHVlKQotewotICAgIHJldHVy
biBmbG9hdFRvRG91YmxlKGRvdWJsZVRvRmxvYXQoZG91YmxlVmFsdWUpKTsKLX0KLQogI2lmIENP
TVBJTEVSKEdDQ19PUl9DTEFORykKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYg
Ly8gQ09NUElMRVIoR0NDX09SX0NMQU5HKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>