<?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>154596</bug_id>
          
          <creation_ts>2016-02-23 10:59:34 -0800</creation_ts>
          <short_desc>Web Inspector: the protocol generator&apos;s Objective-C name prefix should be configurable</short_desc>
          <delta_ts>2016-02-23 13:49:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1167468</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-23 10:59:34 -0800</bug_when>
    <thetext>:|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167469</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-23 11:00:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/24794962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167501</commentid>
    <comment_count>2</comment_count>
      <attachid>272043</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-23 12:42:46 -0800</bug_when>
    <thetext>Created attachment 272043
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167502</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-23 12:44:26 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167503</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-23 12:44:34 -0800</bug_when>
    <thetext>Attachment 272043 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:44:  [ObjCBackendDispatcherImplementationGenerator.output_filename] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:48:  [ObjCBackendDispatcherImplementationGenerator.generate_output] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:49:  [ObjCBackendDispatcherImplementationGenerator.generate_output] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:57:  [ObjCBackendDispatcherImplementationGenerator.generate_output] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:74:  [ObjCBackendDispatcherImplementationGenerator._generate_configuration_implementation_for_domains] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:106:  [ObjCBackendDispatcherImplementationGenerator._generate_ivars] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:110:  [ObjCBackendDispatcherImplementationGenerator._generate_ivars] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:130:  [ObjCBackendDispatcherImplementationGenerator._generate_handler_setter_for_domain] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_implementation.py:138:  [ObjCBackendDispatcherImplementationGenerator._generate_event_dispatcher_getter_for_domain] Instance of &apos;ObjCBackendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:47:  [ObjCBackendDispatcherHeaderGenerator.output_filename] Instance of &apos;ObjCBackendDispatcherHeaderGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:76:  [ObjCBackendDispatcherHeaderGenerator._generate_objc_forward_declarations] Instance of &apos;ObjCBackendDispatcherHeaderGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:90:  [ObjCBackendDispatcherHeaderGenerator._generate_objc_handler_declarations_for_domain] Instance of &apos;ObjCBackendDispatcherHeaderGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:45:  [ObjCFrontendDispatcherImplementationGenerator.output_filename] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:52:  [ObjCFrontendDispatcherImplementationGenerator.generate_output] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:57:  [ObjCFrontendDispatcherImplementationGenerator.generate_output] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:74:  [ObjCFrontendDispatcherImplementationGenerator._generate_event_dispatcher_implementations] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:107:  [ObjCFrontendDispatcherImplementationGenerator._generate_event] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_class_for_array_type&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:108:  [ObjCFrontendDispatcherImplementationGenerator._generate_event] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:115:  [ObjCFrontendDispatcherImplementationGenerator._generate_event] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_class_for_array_type&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:116:  [ObjCFrontendDispatcherImplementationGenerator._generate_event] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:136:  [ObjCFrontendDispatcherImplementationGenerator._generate_event_signature] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_type_for_param&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:147:  [ObjCFrontendDispatcherImplementationGenerator._generate_event_out_parameters] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;objc_protocol_export_expression_for_variable&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py:44:  [ObjCConfigurationHeaderGenerator.output_filename] Instance of &apos;ObjCConfigurationHeaderGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py:48:  [ObjCConfigurationHeaderGenerator.generate_output] Instance of &apos;ObjCConfigurationHeaderGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py:69:  [ObjCConfigurationHeaderGenerator._generate_configuration_interface_for_domains] Instance of &apos;ObjCConfigurationHeaderGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_configuration_header.py:77:  [ObjCConfigurationHeaderGenerator._generate_properties_for_domain] Instance of &apos;ObjCConfigurationHeaderGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py:51:  [ObjCConversionHelpersGenerator.output_filename] Instance of &apos;ObjCConversionHelpersGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py:58:  [ObjCConversionHelpersGenerator.generate_output] Instance of &apos;ObjCConversionHelpersGenerator&apos; has no &apos;objc_prefix&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py:109:  [ObjCConversionHelpersGenerator._generate_anonymous_enum_conversion_for_declaration] Instance of &apos;ObjCConversionHelpersGenerator&apos; has no &apos;objc_enum_name_for_anonymous_enum_declaration&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py:117:  [ObjCConversionHelpersGenerator._generate_anonymous_enum_conversion_for_member] Instance of &apos;ObjCConversionHelpersGenerator&apos; has no &apos;objc_enum_name_for_anonymous_enum_member&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py:125:  [ObjCConversionHelpersGenerator._generate_anonymous_enum_conversion_for_parameter] Instance of &apos;ObjCConversionHelpersGenerator&apos; has no &apos;objc_enum_name_for_anonymous_enum_parameter&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py:85:  expected 2 blank lines, found 1  [pep8/E302] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py:96:  [ObjCGenerator.objc_prefix] Instance of &apos;ObjCGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
Total errors found: 33 in 25 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>1167504</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-02-23 12:47:17 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Attachment 272043 [details] did not pass style-queue:

check-webkit-style doesn&apos;t understand subclassing, as it painfully reminds us every time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167528</commentid>
    <comment_count>6</comment_count>
      <attachid>272043</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-23 13:49:40 -0800</bug_when>
    <thetext>Comment on attachment 272043
Proposed Fix

Clearing flags on attachment: 272043

Committed r196993: &lt;http://trac.webkit.org/changeset/196993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167529</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-23 13:49:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272043</attachid>
            <date>2016-02-23 12:42:46 -0800</date>
            <delta_ts>2016-02-23 13:49:40 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-154596-20160223124228.patch</filename>
            <type>text/plain</type>
            <size>277551</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2OTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MjU1ZGQ2OWYwYmE0MDQ1MDhmZWEzMzU5ZWI0ZDYwNjEwOTA2NzNjLi5jNzEyNmRkOTc2MGVkNmZl
ZTZjNmJhYjI5ZWUwNzYzY2Y1YmFmOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNTIgQEAKIDIwMTYtMDItMjMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogdGhlIHByb3RvY29sIGdlbmVyYXRvcidzIE9iamVjdGl2
ZS1DIG5hbWUgcHJlZml4IHNob3VsZCBiZSBjb25maWd1cmFibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDU5NgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjQ3OTQ5NjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW4gb3JkZXIgdG8gc3VwcG9ydCBkaWZmZXJlbnQgZ2VuZXJhdGVkIHByb3RvY29s
IHNldHMgdGhhdCBkb24ndCBoYXZlIGNvbmZsaWN0aW5nCisgICAgICAgIGZpbGUgYW5kIHR5cGUg
bmFtZXMsIGFsbG93IHRoZSBPYmplY3RpdmUtQyBwcmVmaXggdG8gYmUgY29uZmlndXJhYmxlIGJh
c2VkIG9uIHRoZQorICAgICAgICB0YXJnZXQgZnJhbWV3b3JrLiBFYWNoIG5hbWUgYWxzbyBoYXMg
dGhlIGltcGxpY2l0IHByZWZpeCAnUHJvdG9jb2wnIGFwcGVuZGVkIHRvIHRoZQorICAgICAgICBw
ZXItdGFyZ2V0IGZyYW1ld29yayBwcmVmaXguCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBl
eGlzdGluZyBwcm90b2NvbCBmb3IgcmVtb3RlIGluc3BlY3Rpb24gaGFzIHRoZSBwcmVmaXggJ1JX
SScKKyAgICAgICAgYW5kIGlzIGdlbmVyYXRlZCBhcyAnUldJUHJvdG9jb2wnLiBUaGUgV2ViS2l0
IGZyYW1ld29yayBoYXMgdGhlICdBdXRvbWF0aW9uJyBwcmVmaXgKKyAgICAgICAgYW5kIGlzIGdl
bmVyYXRlZCBhcyAnQXV0b21hdGlvblByb3RvY29sJy4KKworICAgICAgICBUbyBtYWtlIHRoaXMg
Y2hhbmdlLCBjb252ZXJ0IE9iakNHZW5lcmF0b3IgdG8gYmUgYSBzdWJjbGFzcyBvZiBHZW5lcmF0
b3IgYW5kIHVzZQorICAgICAgICB0aGUgaW5zdGFuY2UgbWV0aG9kIG1vZGVsKCkgdG8gZmluZCB0
aGUgdGFyZ2V0IGZyYW1ld29yayBhbmQgaXRzIHNldHRpbmcgZm9yCisgICAgICAgICdvYmpjX3By
ZWZpeCcuIE1ha2UgYWxsIE9iakMgZ2VuZXJhdG9ycyBzdWJjbGFzcyBPYmpDR2VuZXJhdG9yIHNv
IHRoZXkgY2FuIHVzZQorICAgICAgICB0aGVzZSBpbnN0YW5jZSBtZXRob2RzIHRoYXQgdXNlZCB0
byBiZSBzdGF0aWMgbWV0aG9kcy4gVGhpcyBpcyBhIGxhcmdlIGJ1dAorICAgICAgICBtZWNoYW5p
Y2FsIGNoYW5nZSB0byB1c2Ugc2VsZiBpbnN0ZWFkIG9mIE9iakNHZW5lcmF0b3IuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNw
YXRjaGVyX2hlYWRlci5weToKKyAgICAgICAgKE9iakNCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdl
bmVyYXRvcik6CisgICAgICAgIChPYmpDQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3Iu
X19pbml0X18pOgorICAgICAgICAoT2JqQ0JhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9y
Lm91dHB1dF9maWxlbmFtZSk6CisgICAgICAgIChPYmpDQmFja2VuZERpc3BhdGNoZXJIZWFkZXJH
ZW5lcmF0b3IuX2dlbmVyYXRlX29iamNfZm9yd2FyZF9kZWNsYXJhdGlvbnMpOgorICAgICAgICAo
T2JqQ0JhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9vYmpjX2hhbmRs
ZXJfZGVjbGFyYXRpb25zX2Zvcl9kb21haW4pOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24u
cHk6CisgICAgICAgIChPYmpDQ29uZmlndXJhdGlvbkltcGxlbWVudGF0aW9uR2VuZXJhdG9yKToK
KyAgICAgICAgKE9iakNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX19pbml0
X18pOgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5v
dXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlv
bkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25J
bXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfc3VjY2Vzc19ibG9ja19mb3JfY29tbWFu
ZCk6CisgICAgICAgIChPYmpDQ29uZmlndXJhdGlvbkltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9n
ZW5lcmF0ZV9zdWNjZXNzX2Jsb2NrX2Zvcl9jb21tYW5kLmFuZCk6CisgICAgICAgIChPYmpDQ29u
ZmlndXJhdGlvbkltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9jb252ZXJzaW9uc19m
b3JfY29tbWFuZCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9vYmpjX2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5OgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRp
b25IZWFkZXJHZW5lcmF0b3IpOgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25IZWFkZXJHZW5l
cmF0b3IuX19pbml0X18pOgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25IZWFkZXJHZW5lcmF0
b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKE9iakNDb25maWd1cmF0aW9uSGVhZGVyR2Vu
ZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChPYmpDQ29uZmlndXJhdGlvbkhlYWRl
ckdlbmVyYXRvci5fZ2VuZXJhdGVfY29uZmlndXJhdGlvbl9pbnRlcmZhY2VfZm9yX2RvbWFpbnMp
OgorICAgICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25IZWFkZXJHZW5lcmF0b3IuX2dlbmVyYXRlX3By
b3BlcnRpZXNfZm9yX2RvbWFpbik6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHk6CisgICAgICAg
IChPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcik6CisgICAgICAg
IChPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fX2luaXRfXyk6
CisgICAgICAgIChPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5v
dXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAoT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50
YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKE9iakNCYWNrZW5kRGlz
cGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9jb25maWd1cmF0aW9uX2lt
cGxlbWVudGF0aW9uX2Zvcl9kb21haW5zKToKKyAgICAgICAgKE9iakNCYWNrZW5kRGlzcGF0Y2hl
ckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9pdmFycyk6CisgICAgICAgIChPYmpD
QmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfaGFuZGxl
cl9zZXR0ZXJfZm9yX2RvbWFpbik6CisgICAgICAgIChPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZXZlbnRfZGlzcGF0Y2hlcl9nZXR0ZXJfZm9y
X2RvbWFpbik6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX2NvbnZlcnNpb25faGVscGVycy5weToKKyAgICAgICAgKE9iakNDb252ZXJzaW9uSGVscGVy
c0dlbmVyYXRvcik6CisgICAgICAgIChPYmpDQ29udmVyc2lvbkhlbHBlcnNHZW5lcmF0b3IuX19p
bml0X18pOgorICAgICAgICAoT2JqQ0NvbnZlcnNpb25IZWxwZXJzR2VuZXJhdG9yLm91dHB1dF9m
aWxlbmFtZSk6CisgICAgICAgIChPYmpDQ29udmVyc2lvbkhlbHBlcnNHZW5lcmF0b3IuZ2VuZXJh
dGVfb3V0cHV0KToKKyAgICAgICAgKE9iakNDb252ZXJzaW9uSGVscGVyc0dlbmVyYXRvci5fZ2Vu
ZXJhdGVfYW5vbnltb3VzX2VudW1fY29udmVyc2lvbl9mb3JfZGVjbGFyYXRpb24pOgorICAgICAg
ICAoT2JqQ0NvbnZlcnNpb25IZWxwZXJzR2VuZXJhdG9yLl9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51
bV9jb252ZXJzaW9uX2Zvcl9tZW1iZXIpOgorICAgICAgICAoT2JqQ0NvbnZlcnNpb25IZWxwZXJz
R2VuZXJhdG9yLl9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51bV9jb252ZXJzaW9uX2Zvcl9wYXJhbWV0
ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2JqQ0Zyb250
ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKToKKyAgICAgICAgKE9iakNGcm9u
dGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAg
IChPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3Iub3V0cHV0X2Zp
bGVuYW1lKToKKyAgICAgICAgKE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoT2JqQ0Zyb250ZW5kRGlzcGF0Y2hl
ckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9ldmVudF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9ucyk6CisgICAgICAgIChPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRp
b25HZW5lcmF0b3IuX2dlbmVyYXRlX2V2ZW50KToKKyAgICAgICAgKE9iakNGcm9udGVuZERpc3Bh
dGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZXZlbnQuYW5kKToKKyAgICAg
ICAgKE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJh
dGVfZXZlbnRfc2lnbmF0dXJlKToKKyAgICAgICAgKE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZXZlbnRfb3V0X3BhcmFtZXRlcnMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19oZWFkZXIucHk6
CisgICAgICAgIChPYmpDSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAgKE9iakNIZWFkZXJHZW5l
cmF0b3IuX19pbml0X18pOgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5vdXRwdXRfZmls
ZW5hbWUpOgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgor
ICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfZm9yd2FyZF9kZWNsYXJhdGlv
bnMpOgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfYW5vbnltb3VzX2Vu
dW1fZm9yX2RlY2xhcmF0aW9uKToKKyAgICAgICAgKE9iakNIZWFkZXJHZW5lcmF0b3IuX2dlbmVy
YXRlX2Fub255bW91c19lbnVtX2Zvcl9tZW1iZXIpOgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVy
YXRvci5fZ2VuZXJhdGVfYW5vbnltb3VzX2VudW1fZm9yX3BhcmFtZXRlcik6CisgICAgICAgIChP
YmpDSGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV90eXBlX2ludGVyZmFjZSk6CisgICAgICAgIChP
YmpDSGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcmVxdWlyZWRfbWVt
YmVycyk6CisgICAgICAgIChPYmpDSGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9tZW1iZXJfcHJv
cGVydHkpOgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfY29tbWFuZF9w
cm90b2NvbHMpOgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVfc2luZ2xl
X2NvbW1hbmRfcHJvdG9jb2wpOgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5fY2FsbGJh
Y2tfYmxvY2tfZm9yX2NvbW1hbmQpOgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5fZ2Vu
ZXJhdGVfZXZlbnRfaW50ZXJmYWNlcyk6CisgICAgICAgIChPYmpDSGVhZGVyR2VuZXJhdG9yLl9n
ZW5lcmF0ZV9zaW5nbGVfZXZlbnRfaW50ZXJmYWNlKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaW50ZXJuYWxfaGVhZGVyLnB5OgorICAgICAgICAo
T2JqQ0ludGVybmFsSGVhZGVyR2VuZXJhdG9yKToKKyAgICAgICAgKE9iakNJbnRlcm5hbEhlYWRl
ckdlbmVyYXRvci5fX2luaXRfXyk6CisgICAgICAgIChPYmpDSW50ZXJuYWxIZWFkZXJHZW5lcmF0
b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKE9iakNJbnRlcm5hbEhlYWRlckdlbmVyYXRv
ci5nZW5lcmF0ZV9vdXRwdXQpOgorICAgICAgICAoT2JqQ0ludGVybmFsSGVhZGVyR2VuZXJhdG9y
Ll9nZW5lcmF0ZV9ldmVudF9kaXNwYXRjaGVyX3ByaXZhdGVfaW50ZXJmYWNlcyk6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVz
X2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvcik6CisgICAgICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9u
R2VuZXJhdG9yLl9faW5pdF9fKToKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50
YXRpb25HZW5lcmF0b3Iub3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgKE9iakNQcm90b2NvbFR5
cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAgICAgKE9i
akNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9pbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcmVxdWlyZWRfbWVtYmVycyk6CisgICAg
ICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9p
bml0X21ldGhvZF9mb3JfcmVxdWlyZWRfbWVtYmVycy5hbmQpOgorICAgICAgICAoT2JqQ1Byb3Rv
Y29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfc2V0dGVyX2Zvcl9tZW1i
ZXIpOgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5f
Z2VuZXJhdGVfc2V0dGVyX2Zvcl9tZW1iZXIuYW5kKToKKyAgICAgICAgKE9iakNQcm90b2NvbFR5
cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2dldHRlcl9mb3JfbWVtYmVyKToK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL21vZGVscy5weToKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAo
T2JqQ1R5cGVDYXRlZ29yeS5jYXRlZ29yeV9mb3JfdHlwZSk6CisgICAgICAgIChPYmpDR2VuZXJh
dG9yKToKKyAgICAgICAgKE9iakNHZW5lcmF0b3IuX19pbml0X18pOgorICAgICAgICAoT2JqQ0dl
bmVyYXRvci5vYmpjX3ByZWZpeCk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfbmFtZV9m
b3JfdHlwZSk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9u
eW1vdXNfZW51bV9kZWNsYXJhdGlvbik6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfZW51
bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIpOgorICAgICAgICAoT2JqQ0dlbmVyYXRv
ci5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fcGFyYW1ldGVyKToKKyAgICAgICAg
KE9iakNHZW5lcmF0b3Iub2JqY19lbnVtX25hbWVfZm9yX25vbl9hbm9ueW1vdXNfZW51bSk6Cisg
ICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfY2xhc3NfZm9yX3R5cGUpOgorICAgICAgICAoT2Jq
Q0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl9hcnJheV90eXBlKToKKyAgICAgICAgKE9iakNHZW5l
cmF0b3Iub2JqY19hY2Nlc3Nvcl90eXBlX2Zvcl9tZW1iZXIpOgorICAgICAgICAoT2JqQ0dlbmVy
YXRvci5vYmpjX2FjY2Vzc29yX3R5cGVfZm9yX21lbWJlcl9pbnRlcm5hbCk6CisgICAgICAgIChP
YmpDR2VuZXJhdG9yLm9iamNfdHlwZV9mb3JfbWVtYmVyKToKKyAgICAgICAgKE9iakNHZW5lcmF0
b3Iub2JqY190eXBlX2Zvcl9tZW1iZXJfaW50ZXJuYWwpOgorICAgICAgICAoT2JqQ0dlbmVyYXRv
ci5vYmpjX3R5cGVfZm9yX3BhcmFtKToKKyAgICAgICAgKE9iakNHZW5lcmF0b3Iub2JqY190eXBl
X2Zvcl9wYXJhbV9pbnRlcm5hbCk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfcHJvdG9j
b2xfZXhwb3J0X2V4cHJlc3Npb25fZm9yX3ZhcmlhYmxlKToKKyAgICAgICAgKE9iakNHZW5lcmF0
b3Iub2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKyAgICAgICAg
KE9iakNHZW5lcmF0b3Iub2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfcGFyYW1l
dGVyKToKKyAgICAgICAgKE9iakNHZW5lcmF0b3Iub2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVz
c2lvbl9mb3JfdmFyaWFibGUpOgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5vYmpjX3RvX3Byb3Rv
Y29sX2V4cHJlc3Npb25fZm9yX21lbWJlcik6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnByb3Rv
Y29sX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKworICAgICAgICBDaGFuZ2UgdGhl
IHByZWZpeCBmb3IgdGhlICdUZXN0JyB0YXJnZXQgZnJhbWV3b3JrIHRvIGJlICdUZXN0LicgUmVi
YXNlbGluZSByZXN1bHRzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6
ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1k
b21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4u
anNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
c2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1w
cmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlv
bi1lbnVtLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1y
dW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorCisyMDE2LTAyLTIzICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCiAgICAgICAgIENvbm5lY3QgV2ViQXV0b21hdGlvblNlc3Npb24gdG8g
aXRzIGJhY2tlbmQgZGlzcGF0Y2hlciBhcyBpZiBpdCB3ZXJlIGFuIGFnZW50IGFuZCBhZGQgc3R1
YiBpbXBsZW1lbnRhdGlvbnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDUxOAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3NjEwOTY+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9oZWFkZXIucHkKaW5kZXggZDU2YTBiMTc4MDM2OWE5YjlkOGU1NThiYTQ5OGVh
OWMwZGI0Yjk0Zi4uMjAzMzJhMDA5ZmFhN2M2MjkwZjYzMmUwOTgxNmY2MjU5ZGYyMTJhMiAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFj
a2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52
IHB5dGhvbgogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM5LDEyICszOSwxMiBA
QCBmcm9tIG9iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcyBpbXBvcnQgT2JqQ0dlbmVyYXRvclRlbXBs
YXRlcyBhcyBPYmpDVGVtcGxhdGVzCiBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykK
IAogCi1jbGFzcyBPYmpDQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9y
KToKK2NsYXNzIE9iakNCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvcihPYmpDR2VuZXJh
dG9yKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKToKLSAg
ICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKKyAg
ICAgICAgT2JqQ0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgp
CiAKICAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJyVzQmFj
a2VuZERpc3BhdGNoZXJzLmgnICUgT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWAorICAgICAgICBy
ZXR1cm4gJyVzQmFja2VuZERpc3BhdGNoZXJzLmgnICUgc2VsZi5vYmpjX3ByZWZpeCgpCiAKICAg
ICBkZWYgZG9tYWluc190b19nZW5lcmF0ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGZpbHRlcihP
YmpDR2VuZXJhdG9yLnNob3VsZF9nZW5lcmF0ZV9kb21haW5fY29tbWFuZF9oYW5kbGVyX2ZpbHRl
cihzZWxmLm1vZGVsKCkpLCBHZW5lcmF0b3IuZG9tYWluc190b19nZW5lcmF0ZShzZWxmKSkKQEAg
LTczLDcgKzczLDcgQEAgY2xhc3MgT2JqQ0JhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9y
KEdlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgZm9yIGRvbWFpbiBpbiBz
ZWxmLmRvbWFpbnNfdG9fZ2VuZXJhdGUoKToKICAgICAgICAgICAgIGlmIGRvbWFpbi5jb21tYW5k
czoKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ0Bwcm90b2NvbCAlcyVzRG9tYWluSGFu
ZGxlcjsnICUgKE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsIGRvbWFpbi5kb21haW5fbmFtZSkp
CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdAcHJvdG9jb2wgJXMlc0RvbWFpbkhhbmRs
ZXI7JyAlIChzZWxmLm9iamNfcHJlZml4KCksIGRvbWFpbi5kb21haW5fbmFtZSkpCiAgICAgICAg
IHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKICAgICBkZWYgX2dlbmVyYXRlX29iamNfaGFuZGxl
cl9kZWNsYXJhdGlvbnNfZm9yX2RvbWFpbihzZWxmLCBkb21haW4pOgpAQCAtODcsNyArODcsNyBA
QCBjbGFzcyBPYmpDQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToK
ICAgICAgICAgaGFuZGxlcl9hcmdzID0gewogICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21h
aW4uZG9tYWluX25hbWUsCiAgICAgICAgICAgICAnY29tbWFuZERlY2xhcmF0aW9ucyc6ICdcbicu
am9pbihjb21tYW5kX2RlY2xhcmF0aW9ucyksCi0gICAgICAgICAgICAnb2JqY1ByZWZpeCc6IE9i
akNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsCisgICAgICAgICAgICAnb2JqY1ByZWZpeCc6IHNlbGYu
b2JqY19wcmVmaXgoKSwKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBzZWxmLndyYXBfd2l0
aF9ndWFyZF9mb3JfZG9tYWluKGRvbWFpbiwgVGVtcGxhdGUoT2JqQ1RlbXBsYXRlcy5CYWNrZW5k
RGlzcGF0Y2hlckhlYWRlckRvbWFpbkhhbmRsZXJPYmpDRGVjbGFyYXRpb24pLnN1YnN0aXR1dGUo
Tm9uZSwgKipoYW5kbGVyX2FyZ3MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weQppbmRleCA0MmFmZDk5Y2Y5NmI4OGY4YTc3OTA5YTI0OWIxM2FkMmZiYjcyZDQ1Li5k
YmM3YWJhMzA0NTdlODllZmVlYzhkYWY5ODIyZWIyYjkzZDJiYTk0IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4v
ZW52IHB5dGhvbgogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzksMjUg
KzM5LDI1IEBAIGZyb20gb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzIGltcG9ydCBPYmpDR2VuZXJh
dG9yVGVtcGxhdGVzIGFzIE9iakNUZW1wbGF0ZXMKIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdn
bG9iYWwnKQogCiAKLWNsYXNzIE9iakNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0
b3IoR2VuZXJhdG9yKToKK2NsYXNzIE9iakNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1
dF9maWxlcGF0aCk6Ci0gICAgICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5w
dXRfZmlsZXBhdGgpCisgICAgICAgIE9iakNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWws
IGlucHV0X2ZpbGVwYXRoKQogCiAgICAgZGVmIG91dHB1dF9maWxlbmFtZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuICclc0JhY2tlbmREaXNwYXRjaGVycy5tbScgJSBPYmpDR2VuZXJhdG9yLk9CSkNf
UFJFRklYCisgICAgICAgIHJldHVybiAnJXNCYWNrZW5kRGlzcGF0Y2hlcnMubW0nICUgc2VsZi5v
YmpjX3ByZWZpeCgpCiAKICAgICBkZWYgZG9tYWluc190b19nZW5lcmF0ZShzZWxmKToKICAgICAg
ICAgcmV0dXJuIGZpbHRlcihPYmpDR2VuZXJhdG9yLnNob3VsZF9nZW5lcmF0ZV9kb21haW5fY29t
bWFuZF9oYW5kbGVyX2ZpbHRlcihzZWxmLm1vZGVsKCkpLCBHZW5lcmF0b3IuZG9tYWluc190b19n
ZW5lcmF0ZShzZWxmKSkKIAogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CiAgICAgICAg
IHNlY29uZGFyeV9oZWFkZXJzID0gWwotICAgICAgICAgICAgJyIlc0ludGVybmFsLmgiJyAlIE9i
akNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsCi0gICAgICAgICAgICAnIiVzRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgiJyAlIE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsCisgICAgICAgICAgICAnIiVz
SW50ZXJuYWwuaCInICUgc2VsZi5vYmpjX3ByZWZpeCgpLAorICAgICAgICAgICAgJyIlc0VudW1D
b252ZXJzaW9uSGVscGVycy5oIicgJSBzZWxmLm9iamNfcHJlZml4KCksCiAgICAgICAgICAgICAn
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPicsCiAgICAgICAgIF0KIAogICAgICAg
ICBoZWFkZXJfYXJncyA9IHsKLSAgICAgICAgICAgICdwcmltYXJ5SW5jbHVkZSc6ICciJXNCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCInICUgT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCwKKyAgICAgICAg
ICAgICdwcmltYXJ5SW5jbHVkZSc6ICciJXNCYWNrZW5kRGlzcGF0Y2hlcnMuaCInICUgc2VsZi5v
YmpjX3ByZWZpeCgpLAogICAgICAgICAgICAgJ3NlY29uZGFyeUluY2x1ZGVzJzogJ1xuJy5qb2lu
KFsnI2luY2x1ZGUgJXMnICUgaGVhZGVyIGZvciBoZWFkZXIgaW4gc2Vjb25kYXJ5X2hlYWRlcnNd
KSwKICAgICAgICAgfQogCkBAIC0xMDIsNyArMTAyLDcgQEAgY2xhc3MgT2JqQ0NvbmZpZ3VyYXRp
b25JbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpZiBjb21tYW5k
LnJldHVybl9wYXJhbWV0ZXJzOgogICAgICAgICAgICAgc3VjY2Vzc19ibG9ja19wYXJhbWV0ZXJz
ID0gW10KICAgICAgICAgICAgIGZvciBwYXJhbWV0ZXIgaW4gY29tbWFuZC5yZXR1cm5fcGFyYW1l
dGVyczoKLSAgICAgICAgICAgICAgICBvYmpjX3R5cGUgPSBPYmpDR2VuZXJhdG9yLm9iamNfdHlw
ZV9mb3JfcGFyYW0oZG9tYWluLCBjb21tYW5kLmNvbW1hbmRfbmFtZSwgcGFyYW1ldGVyKQorICAg
ICAgICAgICAgICAgIG9iamNfdHlwZSA9IHNlbGYub2JqY190eXBlX2Zvcl9wYXJhbShkb21haW4s
IGNvbW1hbmQuY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIpCiAgICAgICAgICAgICAgICAgdmFyX25h
bWUgPSBPYmpDR2VuZXJhdG9yLmlkZW50aWZpZXJfdG9fb2JqY19pZGVudGlmaWVyKHBhcmFtZXRl
ci5wYXJhbWV0ZXJfbmFtZSkKICAgICAgICAgICAgICAgICBzdWNjZXNzX2Jsb2NrX3BhcmFtZXRl
cnMuYXBwZW5kKGpvaW5fdHlwZV9hbmRfbmFtZShvYmpjX3R5cGUsIHZhcl9uYW1lKSkKICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oJXMpIHsnICUg
JywgJy5qb2luKHN1Y2Nlc3NfYmxvY2tfcGFyYW1ldGVycykpCkBAIC0xMTYsMjMgKzExNiwyMyBA
QCBjbGFzcyBPYmpDQ29uZmlndXJhdGlvbkltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRv
cik6CiAgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIHJlcXVpcmVkX3BvaW50ZXJfcGFyYW1l
dGVyczoKICAgICAgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0b3IuaWRlbnRpZmll
cl90b19vYmpjX2lkZW50aWZpZXIocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKQogICAgICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVE
X1BBUkFNRVRFUiglcywgQCIlcyIpOycgJSAodmFyX25hbWUsIHZhcl9uYW1lKSkKLSAgICAgICAg
ICAgICAgICBvYmpjX2FycmF5X2NsYXNzID0gT2JqQ0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl9h
cnJheV90eXBlKHBhcmFtZXRlci50eXBlKQotICAgICAgICAgICAgICAgIGlmIG9iamNfYXJyYXlf
Y2xhc3MgYW5kIG9iamNfYXJyYXlfY2xhc3Muc3RhcnRzd2l0aChPYmpDR2VuZXJhdG9yLk9CSkNf
UFJFRklYKToKKyAgICAgICAgICAgICAgICBvYmpjX2FycmF5X2NsYXNzID0gc2VsZi5vYmpjX2Ns
YXNzX2Zvcl9hcnJheV90eXBlKHBhcmFtZXRlci50eXBlKQorICAgICAgICAgICAgICAgIGlmIG9i
amNfYXJyYXlfY2xhc3MgYW5kIG9iamNfYXJyYXlfY2xhc3Muc3RhcnRzd2l0aChzZWxmLm9iamNf
cHJlZml4KCkpOgogICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRV9JTl9BUlJBWSglcywgWyVzIGNsYXNzXSk7JyAlICh2
YXJfbmFtZSwgb2JqY19hcnJheV9jbGFzcykpCiAKICAgICAgICAgICAgIG9wdGlvbmFsX3BvaW50
ZXJfcGFyYW1ldGVycyA9IGZpbHRlcihsYW1iZGEgcGFyYW1ldGVyOiBwYXJhbWV0ZXIuaXNfb3B0
aW9uYWwgYW5kIE9iakNHZW5lcmF0b3IuaXNfdHlwZV9vYmpjX3BvaW50ZXJfdHlwZShwYXJhbWV0
ZXIudHlwZSksIGNvbW1hbmQucmV0dXJuX3BhcmFtZXRlcnMpCiAgICAgICAgICAgICBmb3IgcGFy
YW1ldGVyIGluIG9wdGlvbmFsX3BvaW50ZXJfcGFyYW1ldGVyczoKICAgICAgICAgICAgICAgICB2
YXJfbmFtZSA9IE9iakNHZW5lcmF0b3IuaWRlbnRpZmllcl90b19vYmpjX2lkZW50aWZpZXIocGFy
YW1ldGVyLnBhcmFtZXRlcl9uYW1lKQogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
ICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoJXMsIEAiJXMi
KTsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkpCi0gICAgICAgICAgICAgICAgb2JqY19hcnJheV9j
bGFzcyA9IE9iakNHZW5lcmF0b3Iub2JqY19jbGFzc19mb3JfYXJyYXlfdHlwZShwYXJhbWV0ZXIu
dHlwZSkKLSAgICAgICAgICAgICAgICBpZiBvYmpjX2FycmF5X2NsYXNzIGFuZCBvYmpjX2FycmF5
X2NsYXNzLnN0YXJ0c3dpdGgoT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCk6CisgICAgICAgICAg
ICAgICAgb2JqY19hcnJheV9jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfYXJyYXlfdHlwZShw
YXJhbWV0ZXIudHlwZSkKKyAgICAgICAgICAgICAgICBpZiBvYmpjX2FycmF5X2NsYXNzIGFuZCBv
YmpjX2FycmF5X2NsYXNzLnN0YXJ0c3dpdGgoc2VsZi5vYmpjX3ByZWZpeCgpKToKICAgICAgICAg
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFE
X1RZUEVfSU5fT1BUSU9OQUxfQVJSQVkoJXMsIFslcyBjbGFzc10pOycgJSAodmFyX25hbWUsIG9i
amNfYXJyYXlfY2xhc3MpKQogCiAgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGNvbW1hbmQu
cmV0dXJuX3BhcmFtZXRlcnM6CiAgICAgICAgICAgICAgICAga2V5ZWRfc2V0X21ldGhvZCA9IENw
cEdlbmVyYXRvci5jcHBfc2V0dGVyX21ldGhvZF9mb3JfdHlwZShwYXJhbWV0ZXIudHlwZSkKICAg
ICAgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0b3IuaWRlbnRpZmllcl90b19vYmpj
X2lkZW50aWZpZXIocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKQogICAgICAgICAgICAgICAgIHZh
cl9leHByZXNzaW9uID0gJyolcycgJSB2YXJfbmFtZSBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWwg
ZWxzZSB2YXJfbmFtZQotICAgICAgICAgICAgICAgIGV4cG9ydF9leHByZXNzaW9uID0gT2JqQ0dl
bmVyYXRvci5vYmpjX3Byb3RvY29sX2V4cG9ydF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZShwYXJh
bWV0ZXIudHlwZSwgdmFyX2V4cHJlc3Npb24pCisgICAgICAgICAgICAgICAgZXhwb3J0X2V4cHJl
c3Npb24gPSBzZWxmLm9iamNfcHJvdG9jb2xfZXhwb3J0X2V4cHJlc3Npb25fZm9yX3ZhcmlhYmxl
KHBhcmFtZXRlci50eXBlLCB2YXJfZXhwcmVzc2lvbikKICAgICAgICAgICAgICAgICBpZiBub3Qg
cGFyYW1ldGVyLmlzX29wdGlvbmFsOgogICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICAgICAgcmVzdWx0T2JqZWN0LT4lcyhBU0NJSUxpdGVyYWwoIiVzIiksICVzKTsnICUgKGtl
eWVkX3NldF9tZXRob2QsIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSwgZXhwb3J0X2V4cHJlc3Np
b24pKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0xNjUsOSArMTY1LDkgQEAgY2xhc3MgT2Jq
Q0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAg
ICBmb3IgcGFyYW1ldGVyIGluIGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzOgogICAgICAgICAgICAg
aW5fcGFyYW1fbmFtZSA9ICdpbl8lcycgJSBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKICAgICAg
ICAgICAgIG9iamNfaW5fcGFyYW1fbmFtZSA9ICdvXyVzJyAlIGluX3BhcmFtX25hbWUKLSAgICAg
ICAgICAgIG9iamNfdHlwZSA9IE9iakNHZW5lcmF0b3Iub2JqY190eXBlX2Zvcl9wYXJhbShkb21h
aW4sIGNvbW1hbmQuY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIsIEZhbHNlKQorICAgICAgICAgICAg
b2JqY190eXBlID0gc2VsZi5vYmpjX3R5cGVfZm9yX3BhcmFtKGRvbWFpbiwgY29tbWFuZC5jb21t
YW5kX25hbWUsIHBhcmFtZXRlciwgRmFsc2UpCiAgICAgICAgICAgICBwYXJhbV9leHByZXNzaW9u
ID0gaW5fcGFyYW1fZXhwcmVzc2lvbihpbl9wYXJhbV9uYW1lLCBwYXJhbWV0ZXIpCi0gICAgICAg
ICAgICBpbXBvcnRfZXhwcmVzc2lvbiA9IE9iakNHZW5lcmF0b3Iub2JqY19wcm90b2NvbF9pbXBv
cnRfZXhwcmVzc2lvbl9mb3JfcGFyYW1ldGVyKHBhcmFtX2V4cHJlc3Npb24sIGRvbWFpbiwgY29t
bWFuZC5jb21tYW5kX25hbWUsIHBhcmFtZXRlcikKKyAgICAgICAgICAgIGltcG9ydF9leHByZXNz
aW9uID0gc2VsZi5vYmpjX3Byb3RvY29sX2ltcG9ydF9leHByZXNzaW9uX2Zvcl9wYXJhbWV0ZXIo
cGFyYW1fZXhwcmVzc2lvbiwgZG9tYWluLCBjb21tYW5kLmNvbW1hbmRfbmFtZSwgcGFyYW1ldGVy
KQogICAgICAgICAgICAgaWYgbm90IHBhcmFtZXRlci5pc19vcHRpb25hbDoKICAgICAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICAlcyA9ICVzOycgJSAoam9pbl90eXBlX2FuZF9uYW1lKG9i
amNfdHlwZSwgb2JqY19pbl9wYXJhbV9uYW1lKSwgaW1wb3J0X2V4cHJlc3Npb24pKQogICAgICAg
ICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5CmluZGV4IDliOTNmMzdmNmJlOWVmZjBmZDQzMTNm
ZGU3YWZjMzY2ZTk2N2RiNGQuLjQxZjkyN2QwMzYyYjAxMDE4NDc2MTVjNGE3YjMzN2YwMTJjYzY2
MzMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19j
b25maWd1cmF0aW9uX2hlYWRlci5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5
dGhvbgogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2LDE2ICszNiwxNiBAQCBm
cm9tIG9iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcyBpbXBvcnQgT2JqQ0dlbmVyYXRvclRlbXBsYXRl
cyBhcyBPYmpDVGVtcGxhdGVzCiBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKIAog
Ci1jbGFzcyBPYmpDQ29uZmlndXJhdGlvbkhlYWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgorY2xh
c3MgT2JqQ0NvbmZpZ3VyYXRpb25IZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCk6Ci0gICAgICAgIEdlbmVy
YXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpCisgICAgICAgIE9iakNH
ZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKQogCiAgICAgZGVm
IG91dHB1dF9maWxlbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICclc0NvbmZpZ3VyYXRpb24u
aCcgJSBPYmpDR2VuZXJhdG9yLk9CSkNfUFJFRklYCisgICAgICAgIHJldHVybiAnJXNDb25maWd1
cmF0aW9uLmgnICUgc2VsZi5vYmpjX3ByZWZpeCgpCiAKICAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0
KHNlbGYpOgogICAgICAgICBoZWFkZXJzID0gWwotICAgICAgICAgICAgJzxXZWJJbnNwZWN0b3Iv
JXMuaD4nICUgT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCwKKyAgICAgICAgICAgICc8V2ViSW5z
cGVjdG9yLyVzLmg+JyAlIHNlbGYub2JqY19wcmVmaXgoKSwKICAgICAgICAgXQogCiAgICAgICAg
IGhlYWRlcl9hcmdzID0gewpAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBPYmpDQ29uZmlndXJhdGlv
bkhlYWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgIGRlZiBfZ2VuZXJhdGVfY29uZmlndXJh
dGlvbl9pbnRlcmZhY2VfZm9yX2RvbWFpbnMoc2VsZiwgZG9tYWlucyk6CiAgICAgICAgIGxpbmVz
ID0gW10KICAgICAgICAgbGluZXMuYXBwZW5kKCdfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSknKQotICAgICAgICBsaW5lcy5hcHBlbmQoJ0BpbnRlcmZhY2UgJXNDb25maWd1
cmF0aW9uIDogTlNPYmplY3QnICUgT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCkKKyAgICAgICAg
bGluZXMuYXBwZW5kKCdAaW50ZXJmYWNlICVzQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0JyAlIHNl
bGYub2JqY19wcmVmaXgoKSkKICAgICAgICAgZm9yIGRvbWFpbiBpbiBkb21haW5zOgogICAgICAg
ICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuX2dlbmVyYXRlX3Byb3BlcnRpZXNfZm9yX2RvbWFpbihk
b21haW4pKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ0BlbmQnKQpAQCAtNzQsNyArNzQsNyBAQCBj
bGFzcyBPYmpDQ29uZmlndXJhdGlvbkhlYWRlckdlbmVyYXRvcihHZW5lcmF0b3IpOgogCiAgICAg
ZGVmIF9nZW5lcmF0ZV9wcm9wZXJ0aWVzX2Zvcl9kb21haW4oc2VsZiwgZG9tYWluKToKICAgICAg
ICAgcHJvcGVydHlfYXJncyA9IHsKLSAgICAgICAgICAgICdvYmpjUHJlZml4JzogT2JqQ0dlbmVy
YXRvci5PQkpDX1BSRUZJWCwKKyAgICAgICAgICAgICdvYmpjUHJlZml4Jzogc2VsZi5vYmpjX3By
ZWZpeCgpLAogICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCiAg
ICAgICAgICAgICAndmFyaWFibGVOYW1lUHJlZml4JzogT2JqQ0dlbmVyYXRvci52YXJpYWJsZV9u
YW1lX3ByZWZpeF9mb3JfZG9tYWluKGRvbWFpbiksCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfY29uZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9p
bXBsZW1lbnRhdGlvbi5weQppbmRleCA3MzVhYmJjYTMzM2UzZjQ0MDAzYTU5YzA4NmMwYWI0MTA5
YmU4Y2NjLi44OTAwZWM3MWIyNDBkNjQxOTNlMGUzMTFiZDdiMjc3ZGQ0ZWRjOTljIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19jb25m
aWd1cmF0aW9uX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCiAjCi0jIENvcHlyaWdodCAoYykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzYsMTcgKzM2LDE3
IEBAIGZyb20gb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzIGltcG9ydCBPYmpDR2VuZXJhdG9yVGVt
cGxhdGVzIGFzIE9iakNUZW1wbGF0ZXMKIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwn
KQogCiAKLWNsYXNzIE9iakNCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9y
KEdlbmVyYXRvcik6CitjbGFzcyBPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWwsIGlu
cHV0X2ZpbGVwYXRoKToKLSAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsLCBp
bnB1dF9maWxlcGF0aCkKKyAgICAgICAgT2JqQ0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBtb2Rl
bCwgaW5wdXRfZmlsZXBhdGgpCiAKICAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgotICAg
ICAgICByZXR1cm4gJyVzQ29uZmlndXJhdGlvbi5tbScgJSBPYmpDR2VuZXJhdG9yLk9CSkNfUFJF
RklYCisgICAgICAgIHJldHVybiAnJXNDb25maWd1cmF0aW9uLm1tJyAlIHNlbGYub2JqY19wcmVm
aXgoKQogCiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAgc2Vjb25kYXJ5
X2hlYWRlcnMgPSBbCi0gICAgICAgICAgICAnIiVzSW50ZXJuYWwuaCInICUgT2JqQ0dlbmVyYXRv
ci5PQkpDX1BSRUZJWCwKLSAgICAgICAgICAgICciJXNCYWNrZW5kRGlzcGF0Y2hlcnMuaCInICUg
T2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCwKKyAgICAgICAgICAgICciJXNJbnRlcm5hbC5oIicg
JSBzZWxmLm9iamNfcHJlZml4KCksCisgICAgICAgICAgICAnIiVzQmFja2VuZERpc3BhdGNoZXJz
LmgiJyAlIHNlbGYub2JqY19wcmVmaXgoKSwKICAgICAgICAgICAgICc8SmF2YVNjcmlwdENvcmUv
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaD4nLAogICAgICAgICAgICAgJzxKYXZhU2NyaXB0
Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4nLAogICAgICAgICAgICAgJzxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4nLApA
QCAtNTQsNyArNTQsNyBAQCBjbGFzcyBPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBdCiAKICAgICAgICAgaGVhZGVyX2FyZ3Mg
PSB7Ci0gICAgICAgICAgICAncHJpbWFyeUluY2x1ZGUnOiAnIiVzQ29uZmlndXJhdGlvbi5oIicg
JSBPYmpDR2VuZXJhdG9yLk9CSkNfUFJFRklYLAorICAgICAgICAgICAgJ3ByaW1hcnlJbmNsdWRl
JzogJyIlc0NvbmZpZ3VyYXRpb24uaCInICUgc2VsZi5vYmpjX3ByZWZpeCgpLAogICAgICAgICAg
ICAgJ3NlY29uZGFyeUluY2x1ZGVzJzogJ1xuJy5qb2luKFsnI2ltcG9ydCAlcycgJSBoZWFkZXIg
Zm9yIGhlYWRlciBpbiBzZWNvbmRhcnlfaGVhZGVyc10pLAogICAgICAgICB9CiAKQEAgLTcxLDcg
KzcxLDcgQEAgY2xhc3MgT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0
b3IoR2VuZXJhdG9yKToKIAogICAgIGRlZiBfZ2VuZXJhdGVfY29uZmlndXJhdGlvbl9pbXBsZW1l
bnRhdGlvbl9mb3JfZG9tYWlucyhzZWxmLCBkb21haW5zKToKICAgICAgICAgbGluZXMgPSBbXQot
ICAgICAgICBsaW5lcy5hcHBlbmQoJ0BpbXBsZW1lbnRhdGlvbiAlc0NvbmZpZ3VyYXRpb24nICUg
T2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCkKKyAgICAgICAgbGluZXMuYXBwZW5kKCdAaW1wbGVt
ZW50YXRpb24gJXNDb25maWd1cmF0aW9uJyAlIHNlbGYub2JqY19wcmVmaXgoKSkKICAgICAgICAg
bGluZXMuYXBwZW5kKCd7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxlcjsnKQogICAgICAgICBsaW5lcy5leHRlbmQo
c2VsZi5fZ2VuZXJhdGVfaXZhcnMoZG9tYWlucykpCkBAIC0xMDMsMTEgKzEwMywxMSBAQCBjbGFz
cyBPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3Ip
OgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGZvciBkb21haW4gaW4gZG9tYWluczoKICAg
ICAgICAgICAgIGlmIGRvbWFpbi5jb21tYW5kcyBhbmQgc2VsZi5fY29tbWFuZF9maWx0ZXIoZG9t
YWluKToKLSAgICAgICAgICAgICAgICBvYmpjX2NsYXNzX25hbWUgPSAnJXMlc0RvbWFpbkhhbmRs
ZXInICUgKE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsIGRvbWFpbi5kb21haW5fbmFtZSkKKyAg
ICAgICAgICAgICAgICBvYmpjX2NsYXNzX25hbWUgPSAnJXMlc0RvbWFpbkhhbmRsZXInICUgKHNl
bGYub2JqY19wcmVmaXgoKSwgZG9tYWluLmRvbWFpbl9uYW1lKQogICAgICAgICAgICAgICAgIGl2
YXJfbmFtZSA9ICdfJXNIYW5kbGVyJyAlIE9iakNHZW5lcmF0b3IudmFyaWFibGVfbmFtZV9wcmVm
aXhfZm9yX2RvbWFpbihkb21haW4pCiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
aWQ8JXM+ICVzOycgJSAob2JqY19jbGFzc19uYW1lLCBpdmFyX25hbWUpKQogICAgICAgICAgICAg
aWYgZG9tYWluLmV2ZW50cyBhbmQgc2VsZi5fZXZlbnRfZmlsdGVyKGRvbWFpbik6Ci0gICAgICAg
ICAgICAgICAgb2JqY19jbGFzc19uYW1lID0gJyVzJXNEb21haW5FdmVudERpc3BhdGNoZXInICUg
KE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsIGRvbWFpbi5kb21haW5fbmFtZSkKKyAgICAgICAg
ICAgICAgICBvYmpjX2NsYXNzX25hbWUgPSAnJXMlc0RvbWFpbkV2ZW50RGlzcGF0Y2hlcicgJSAo
c2VsZi5vYmpjX3ByZWZpeCgpLCBkb21haW4uZG9tYWluX25hbWUpCiAgICAgICAgICAgICAgICAg
aXZhcl9uYW1lID0gJ18lc0V2ZW50RGlzcGF0Y2hlcicgJSBPYmpDR2VuZXJhdG9yLnZhcmlhYmxl
X25hbWVfcHJlZml4X2Zvcl9kb21haW4oZG9tYWluKQogICAgICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgICVzIColczsnICUgKG9iamNfY2xhc3NfbmFtZSwgaXZhcl9uYW1lKSkKICAgICAg
ICAgcmV0dXJuIGxpbmVzCkBAIC0xMjcsNyArMTI3LDcgQEAgY2xhc3MgT2JqQ0JhY2tlbmREaXNw
YXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKIAogICAgIGRlZiBfZ2Vu
ZXJhdGVfaGFuZGxlcl9zZXR0ZXJfZm9yX2RvbWFpbihzZWxmLCBkb21haW4pOgogICAgICAgICBz
ZXR0ZXJfYXJncyA9IHsKLSAgICAgICAgICAgICdvYmpjUHJlZml4JzogT2JqQ0dlbmVyYXRvci5P
QkpDX1BSRUZJWCwKKyAgICAgICAgICAgICdvYmpjUHJlZml4Jzogc2VsZi5vYmpjX3ByZWZpeCgp
LAogICAgICAgICAgICAgJ2RvbWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCiAgICAgICAg
ICAgICAndmFyaWFibGVOYW1lUHJlZml4JzogT2JqQ0dlbmVyYXRvci52YXJpYWJsZV9uYW1lX3By
ZWZpeF9mb3JfZG9tYWluKGRvbWFpbiksCiAgICAgICAgIH0KQEAgLTEzNSw3ICsxMzUsNyBAQCBj
bGFzcyBPYmpDQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0
b3IpOgogCiAgICAgZGVmIF9nZW5lcmF0ZV9ldmVudF9kaXNwYXRjaGVyX2dldHRlcl9mb3JfZG9t
YWluKHNlbGYsIGRvbWFpbik6CiAgICAgICAgIGdldHRlcl9hcmdzID0gewotICAgICAgICAgICAg
J29iamNQcmVmaXgnOiBPYmpDR2VuZXJhdG9yLk9CSkNfUFJFRklYLAorICAgICAgICAgICAgJ29i
amNQcmVmaXgnOiBzZWxmLm9iamNfcHJlZml4KCksCiAgICAgICAgICAgICAnZG9tYWluTmFtZSc6
IGRvbWFpbi5kb21haW5fbmFtZSwKICAgICAgICAgICAgICd2YXJpYWJsZU5hbWVQcmVmaXgnOiBP
YmpDR2VuZXJhdG9yLnZhcmlhYmxlX25hbWVfcHJlZml4X2Zvcl9kb21haW4oZG9tYWluKSwKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19jb252ZXJzaW9uX2hlbHBlcnMucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Nv
bnZlcnNpb25faGVscGVycy5weQppbmRleCBjMzFlOTkxZTM4NDFlMzY0NTBhOGViMWYzMWM0OGY1
ZTNmOWI0N2M3Li5hNGM5ZjczZThkMjE2NjFhZTgwOTdmNjM2MDcyYmYyZjA1NjVhNWFhIDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2NvbnZlcnNpb25faGVscGVycy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2NvbnZlcnNpb25f
aGVscGVycy5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIwotIyBD
b3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKGMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBD
b3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQzLDE5ICs0MywxOSBAQCBkZWYgYWRkX25ld2xp
bmUobGluZXMpOgogICAgIGxpbmVzLmFwcGVuZCgnJykKIAogCi1jbGFzcyBPYmpDQ29udmVyc2lv
bkhlbHBlcnNHZW5lcmF0b3IoR2VuZXJhdG9yKToKK2NsYXNzIE9iakNDb252ZXJzaW9uSGVscGVy
c0dlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZWws
IGlucHV0X2ZpbGVwYXRoKToKLSAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVs
LCBpbnB1dF9maWxlcGF0aCkKKyAgICAgICAgT2JqQ0dlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBt
b2RlbCwgaW5wdXRfZmlsZXBhdGgpCiAKICAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgot
ICAgICAgICByZXR1cm4gJyVzRW51bUNvbnZlcnNpb25IZWxwZXJzLmgnICUgT2JqQ0dlbmVyYXRv
ci5PQkpDX1BSRUZJWAorICAgICAgICByZXR1cm4gJyVzRW51bUNvbnZlcnNpb25IZWxwZXJzLmgn
ICUgc2VsZi5vYmpjX3ByZWZpeCgpCiAKICAgICBkZWYgZG9tYWluc190b19nZW5lcmF0ZShzZWxm
KToKICAgICAgICAgcmV0dXJuIGZpbHRlcihPYmpDR2VuZXJhdG9yLnNob3VsZF9nZW5lcmF0ZV9k
b21haW5fdHlwZXNfZmlsdGVyKHNlbGYubW9kZWwoKSksIEdlbmVyYXRvci5kb21haW5zX3RvX2dl
bmVyYXRlKHNlbGYpKQogCiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAg
aGVhZGVycyA9IFsKLSAgICAgICAgICAgICciJXNBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiJyAl
IE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsCisgICAgICAgICAgICAnIiVzQXJyYXlDb252ZXJz
aW9uSGVscGVycy5oIicgJSBzZWxmLm9iamNfcHJlZml4KCksCiAgICAgICAgIF0KIAogICAgICAg
ICBoZWFkZXJfYXJncyA9IHsKQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBPYmpDQ29udmVyc2lv
bkhlbHBlcnNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuICdcbicuam9pbihs
aW5lcykKIAogICAgIGRlZiBfZ2VuZXJhdGVfYW5vbnltb3VzX2VudW1fY29udmVyc2lvbl9mb3Jf
ZGVjbGFyYXRpb24oc2VsZiwgZG9tYWluLCBkZWNsYXJhdGlvbik6Ci0gICAgICAgIG9iamNfZW51
bV9uYW1lID0gT2JqQ0dlbmVyYXRvci5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1f
ZGVjbGFyYXRpb24oZGVjbGFyYXRpb24pCisgICAgICAgIG9iamNfZW51bV9uYW1lID0gc2VsZi5v
YmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fZGVjbGFyYXRpb24oZGVjbGFyYXRpb24p
CiAgICAgICAgIGVudW1fdmFsdWVzID0gZGVjbGFyYXRpb24udHlwZS5lbnVtX3ZhbHVlcygpCiAg
ICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2Vu
dW1fb2JqY190b19wcm90b2NvbF9zdHJpbmcob2JqY19lbnVtX25hbWUsIGVudW1fdmFsdWVzKSkK
QEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBPYmpDQ29udmVyc2lvbkhlbHBlcnNHZW5lcmF0b3Io
R2VuZXJhdG9yKToKICAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKGxpbmVzKQogCiAgICAgZGVm
IF9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51bV9jb252ZXJzaW9uX2Zvcl9tZW1iZXIoc2VsZiwgZG9t
YWluLCBkZWNsYXJhdGlvbiwgbWVtYmVyKToKLSAgICAgICAgb2JqY19lbnVtX25hbWUgPSBPYmpD
R2VuZXJhdG9yLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIoZGVjbGFy
YXRpb24sIG1lbWJlcikKKyAgICAgICAgb2JqY19lbnVtX25hbWUgPSBzZWxmLm9iamNfZW51bV9u
YW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlcikKICAgICAg
ICAgZW51bV92YWx1ZXMgPSBtZW1iZXIudHlwZS5lbnVtX3ZhbHVlcygpCiAgICAgICAgIGxpbmVz
ID0gW10KICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2VudW1fb2JqY190b19w
cm90b2NvbF9zdHJpbmcob2JqY19lbnVtX25hbWUsIGVudW1fdmFsdWVzKSkKQEAgLTEyMiw3ICsx
MjIsNyBAQCBjbGFzcyBPYmpDQ29udmVyc2lvbkhlbHBlcnNHZW5lcmF0b3IoR2VuZXJhdG9yKToK
ICAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKGxpbmVzKQogCiAgICAgZGVmIF9nZW5lcmF0ZV9h
bm9ueW1vdXNfZW51bV9jb252ZXJzaW9uX2Zvcl9wYXJhbWV0ZXIoc2VsZiwgZG9tYWluLCBldmVu
dF9vcl9jb21tYW5kX25hbWUsIHBhcmFtZXRlcik6Ci0gICAgICAgIG9iamNfZW51bV9uYW1lID0g
T2JqQ0dlbmVyYXRvci5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fcGFyYW1ldGVy
KGRvbWFpbiwgZXZlbnRfb3JfY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIpCisgICAgICAgIG9iamNf
ZW51bV9uYW1lID0gc2VsZi5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fcGFyYW1l
dGVyKGRvbWFpbiwgZXZlbnRfb3JfY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIpCiAgICAgICAgIGVu
dW1fdmFsdWVzID0gcGFyYW1ldGVyLnR5cGUuZW51bV92YWx1ZXMoKQogICAgICAgICBsaW5lcyA9
IFtdCiAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9lbnVtX29iamNfdG9fcHJv
dG9jb2xfc3RyaW5nKG9iamNfZW51bV9uYW1lLCBlbnVtX3ZhbHVlcykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5k
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggMDAzMGVkNWVlZDczMjllM2MxYzFk
NTU3MDA3NWQ2NThlNjVhNTlhYy4uNTkwNWQ3NTA0NDI0NTRkYTI3YTY5M2MyZmZjODZiZTI1NTZk
NjkyYiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9u
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAt
MSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIwotIyBDb3B5cmlnaHQgKGMpIDIw
MTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMp
IDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAo
YykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMzcsMjQgKzM3LDI0IEBAIGZyb20gb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzIGltcG9ydCBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzIGFzIE9iakNUZW1wbGF0ZXMKIGxv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQogCiAKLWNsYXNzIE9iakNGcm9udGVuZERp
c3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgorY2xhc3MgT2JqQ0Zy
b250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpOgotICAgICAgICBH
ZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKQorICAgICAgICBP
YmpDR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKIAogICAg
IGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnJXNFdmVudERpc3Bh
dGNoZXJzLm1tJyAlIE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgKKyAgICAgICAgcmV0dXJuICcl
c0V2ZW50RGlzcGF0Y2hlcnMubW0nICUgc2VsZi5vYmpjX3ByZWZpeCgpCiAKICAgICBkZWYgZG9t
YWluc190b19nZW5lcmF0ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGZpbHRlcihPYmpDR2VuZXJh
dG9yLnNob3VsZF9nZW5lcmF0ZV9kb21haW5fZXZlbnRfZGlzcGF0Y2hlcl9maWx0ZXIoc2VsZi5t
b2RlbCgpKSwgR2VuZXJhdG9yLmRvbWFpbnNfdG9fZ2VuZXJhdGUoc2VsZikpCiAKICAgICBkZWYg
Z2VuZXJhdGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWNvbmRhcnlfaGVhZGVycyA9IFsKLSAg
ICAgICAgICAgICciJXNFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCInICUgT2JqQ0dlbmVyYXRvci5P
QkpDX1BSRUZJWCwKKyAgICAgICAgICAgICciJXNFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCInICUg
c2VsZi5vYmpjX3ByZWZpeCgpLAogICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JWYWx1ZXMuaD4nLAogICAgICAgICBdCiAKICAgICAgICAgaGVhZGVyX2FyZ3MgPSB7Ci0gICAg
ICAgICAgICAncHJpbWFyeUluY2x1ZGUnOiAnIiVzSW50ZXJuYWwuaCInICUgT2JqQ0dlbmVyYXRv
ci5PQkpDX1BSRUZJWCwKKyAgICAgICAgICAgICdwcmltYXJ5SW5jbHVkZSc6ICciJXNJbnRlcm5h
bC5oIicgJSBzZWxmLm9iamNfcHJlZml4KCksCiAgICAgICAgICAgICAnc2Vjb25kYXJ5SW5jbHVk
ZXMnOiAnXG4nLmpvaW4oWycjaW1wb3J0ICVzJyAlIGhlYWRlciBmb3IgaGVhZGVyIGluIHNlY29u
ZGFyeV9oZWFkZXJzXSksCiAgICAgICAgIH0KIApAQCAtNzEsNyArNzEsNyBAQCBjbGFzcyBPYmpD
RnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAg
ICAgICAgICAgIHJldHVybiAnJwogCiAgICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgb2JqY19u
YW1lID0gJyVzJXNEb21haW5FdmVudERpc3BhdGNoZXInICUgKE9iakNHZW5lcmF0b3IuT0JKQ19Q
UkVGSVgsIGRvbWFpbi5kb21haW5fbmFtZSkKKyAgICAgICAgb2JqY19uYW1lID0gJyVzJXNEb21h
aW5FdmVudERpc3BhdGNoZXInICUgKHNlbGYub2JqY19wcmVmaXgoKSwgZG9tYWluLmRvbWFpbl9u
YW1lKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ0BpbXBsZW1lbnRhdGlvbiAlcycgJSBvYmpjX25h
bWUpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciogX2NvbnRyb2xsZXI7JykKQEAgLTEwNCwx
NiArMTA0LDE2IEBAIGNsYXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBmb3IgcGFyYW1ldGVyIGluIHJlcXVpcmVkX3Bv
aW50ZXJfcGFyYW1ldGVyczoKICAgICAgICAgICAgIHZhcl9uYW1lID0gT2JqQ0dlbmVyYXRvci5p
ZGVudGlmaWVyX3RvX29iamNfaWRlbnRpZmllcihwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpCiAg
ICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVE
X1BBUkFNRVRFUiglcywgQCIlcyIpOycgJSAodmFyX25hbWUsIHZhcl9uYW1lKSkKLSAgICAgICAg
ICAgIG9iamNfYXJyYXlfY2xhc3MgPSBPYmpDR2VuZXJhdG9yLm9iamNfY2xhc3NfZm9yX2FycmF5
X3R5cGUocGFyYW1ldGVyLnR5cGUpCi0gICAgICAgICAgICBpZiBvYmpjX2FycmF5X2NsYXNzIGFu
ZCBvYmpjX2FycmF5X2NsYXNzLnN0YXJ0c3dpdGgoT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCk6
CisgICAgICAgICAgICBvYmpjX2FycmF5X2NsYXNzID0gc2VsZi5vYmpjX2NsYXNzX2Zvcl9hcnJh
eV90eXBlKHBhcmFtZXRlci50eXBlKQorICAgICAgICAgICAgaWYgb2JqY19hcnJheV9jbGFzcyBh
bmQgb2JqY19hcnJheV9jbGFzcy5zdGFydHN3aXRoKHNlbGYub2JqY19wcmVmaXgoKSk6CiAgICAg
ICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQ
RV9JTl9BUlJBWSglcywgWyVzIGNsYXNzXSk7JyAlICh2YXJfbmFtZSwgb2JqY19hcnJheV9jbGFz
cykpCiAKICAgICAgICAgb3B0aW9uYWxfcG9pbnRlcl9wYXJhbWV0ZXJzID0gZmlsdGVyKGxhbWJk
YSBwYXJhbWV0ZXI6IHBhcmFtZXRlci5pc19vcHRpb25hbCBhbmQgT2JqQ0dlbmVyYXRvci5pc190
eXBlX29iamNfcG9pbnRlcl90eXBlKHBhcmFtZXRlci50eXBlKSwgZXZlbnQuZXZlbnRfcGFyYW1l
dGVycykKICAgICAgICAgZm9yIHBhcmFtZXRlciBpbiBvcHRpb25hbF9wb2ludGVyX3BhcmFtZXRl
cnM6CiAgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0b3IuaWRlbnRpZmllcl90b19v
YmpjX2lkZW50aWZpZXIocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKQogICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVS
KCVzLCBAIiVzIik7JyAlICh2YXJfbmFtZSwgdmFyX25hbWUpKQotICAgICAgICAgICAgb2JqY19h
cnJheV9jbGFzcyA9IE9iakNHZW5lcmF0b3Iub2JqY19jbGFzc19mb3JfYXJyYXlfdHlwZShwYXJh
bWV0ZXIudHlwZSkKLSAgICAgICAgICAgIGlmIG9iamNfYXJyYXlfY2xhc3MgYW5kIG9iamNfYXJy
YXlfY2xhc3Muc3RhcnRzd2l0aChPYmpDR2VuZXJhdG9yLk9CSkNfUFJFRklYKToKKyAgICAgICAg
ICAgIG9iamNfYXJyYXlfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9yX2FycmF5X3R5cGUocGFy
YW1ldGVyLnR5cGUpCisgICAgICAgICAgICBpZiBvYmpjX2FycmF5X2NsYXNzIGFuZCBvYmpjX2Fy
cmF5X2NsYXNzLnN0YXJ0c3dpdGgoc2VsZi5vYmpjX3ByZWZpeCgpKToKICAgICAgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFX0lOX09QVElP
TkFMX0FSUkFZKCVzLCBbJXMgY2xhc3NdKTsnICUgKHZhcl9uYW1lLCBvYmpjX2FycmF5X2NsYXNz
KSkKIAogICAgICAgICBpZiByZXF1aXJlZF9wb2ludGVyX3BhcmFtZXRlcnMgb3Igb3B0aW9uYWxf
cG9pbnRlcl9wYXJhbWV0ZXJzOgpAQCAtMTMzLDcgKzEzMyw3IEBAIGNsYXNzIE9iakNGcm9udGVu
ZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBw
YWlycyA9IFtdCiAgICAgICAgIGZvciBwYXJhbWV0ZXIgaW4gZXZlbnQuZXZlbnRfcGFyYW1ldGVy
czoKICAgICAgICAgICAgIHBhcmFtX25hbWUgPSBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKLSAg
ICAgICAgICAgIHBhaXJzLmFwcGVuZCgnJXM6KCVzKSVzJyAlIChwYXJhbV9uYW1lLCBPYmpDR2Vu
ZXJhdG9yLm9iamNfdHlwZV9mb3JfcGFyYW0oZG9tYWluLCBldmVudC5ldmVudF9uYW1lLCBwYXJh
bWV0ZXIpLCBwYXJhbV9uYW1lKSkKKyAgICAgICAgICAgIHBhaXJzLmFwcGVuZCgnJXM6KCVzKSVz
JyAlIChwYXJhbV9uYW1lLCBzZWxmLm9iamNfdHlwZV9mb3JfcGFyYW0oZG9tYWluLCBldmVudC5l
dmVudF9uYW1lLCBwYXJhbWV0ZXIpLCBwYXJhbV9uYW1lKSkKICAgICAgICAgcGFpcnNbMF0gPSB1
Y2ZpcnN0KHBhaXJzWzBdKQogICAgICAgICByZXR1cm4gJy0gKHZvaWQpJXNXaXRoJXMnICUgKGV2
ZW50LmV2ZW50X25hbWUsICcgJy5qb2luKHBhaXJzKSkKIApAQCAtMTQ0LDcgKzE0NCw3IEBAIGNs
YXNzIE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0
b3IpOgogICAgICAgICAgICAga2V5ZWRfc2V0X21ldGhvZCA9IENwcEdlbmVyYXRvci5jcHBfc2V0
dGVyX21ldGhvZF9mb3JfdHlwZShwYXJhbWV0ZXIudHlwZSkKICAgICAgICAgICAgIHZhcl9uYW1l
ID0gcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lCiAgICAgICAgICAgICBzYWZlX3Zhcl9uYW1lID0g
JygqJXMpJyAlIHZhcl9uYW1lIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbCBlbHNlIHZhcl9uYW1l
Ci0gICAgICAgICAgICBleHBvcnRfZXhwcmVzc2lvbiA9IE9iakNHZW5lcmF0b3Iub2JqY19wcm90
b2NvbF9leHBvcnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUocGFyYW1ldGVyLnR5cGUsIHNhZmVf
dmFyX25hbWUpCisgICAgICAgICAgICBleHBvcnRfZXhwcmVzc2lvbiA9IHNlbGYub2JqY19wcm90
b2NvbF9leHBvcnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUocGFyYW1ldGVyLnR5cGUsIHNhZmVf
dmFyX25hbWUpCiAgICAgICAgICAgICBpZiBub3QgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgogICAg
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHBhcmFtc09iamVjdC0+JXMoQVNDSUlMaXRl
cmFsKCIlcyIpLCAlcyk7JyAlIChrZXllZF9zZXRfbWV0aG9kLCBwYXJhbWV0ZXIucGFyYW1ldGVy
X25hbWUsIGV4cG9ydF9leHByZXNzaW9uKSkKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9vYmpjX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CmluZGV4IDdlOGU2MTAzMDU3ZDM4YTg2
NWIyZGIzODZlNzA5ODIwMGI3MDk1ZjkuLjI5OGY1YWJhYjY4NDA2NDQ1M2U5MjgzZDM2ZWFlMjdl
NjM2ODhmOWIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5
CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjCi0jIENvcHlyaWdodCAo
YykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykg
MjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAo
YykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtNDMsMTYgKzQzLDE2IEBAIGRlZiBhZGRfbmV3bGluZShsaW5lcyk6
CiAgICAgbGluZXMuYXBwZW5kKCcnKQogCiAKLWNsYXNzIE9iakNIZWFkZXJHZW5lcmF0b3IoR2Vu
ZXJhdG9yKToKK2NsYXNzIE9iakNIZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCk6Ci0gICAgICAgIEdlbmVy
YXRvci5fX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpCisgICAgICAgIE9iakNH
ZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKQogCiAgICAgZGVm
IG91dHB1dF9maWxlbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICclcy5oJyAlIE9iakNHZW5l
cmF0b3IuT0JKQ19QUkVGSVgKKyAgICAgICAgcmV0dXJuICclcy5oJyAlIHNlbGYub2JqY19wcmVm
aXgoKQogCiAgICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKICAgICAgICAgaGVhZGVycyA9
IHNldChbCi0gICAgICAgICAgICAnPFdlYkluc3BlY3Rvci8lc0pTT05PYmplY3QuaD4nICUgT2Jq
Q0dlbmVyYXRvci5PQkpDX1BSRUZJWCwKKyAgICAgICAgICAgICc8V2ViSW5zcGVjdG9yLyVzSlNP
Tk9iamVjdC5oPicgJSBzZWxmLm9iamNfcHJlZml4KCksCiAgICAgICAgIF0pCiAKICAgICAgICAg
aGVhZGVyX2FyZ3MgPSB7CkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE9iakNIZWFkZXJHZW5lcmF0
b3IoR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBmb3IgZGVjbGFyYXRp
b24gaW4gZG9tYWluLnR5cGVfZGVjbGFyYXRpb25zOgogICAgICAgICAgICAgaWYgKGlzaW5zdGFu
Y2UoZGVjbGFyYXRpb24udHlwZSwgT2JqZWN0VHlwZSkpOgotICAgICAgICAgICAgICAgIG9iamNf
bmFtZSA9IE9iakNHZW5lcmF0b3Iub2JqY19uYW1lX2Zvcl90eXBlKGRlY2xhcmF0aW9uLnR5cGUp
CisgICAgICAgICAgICAgICAgb2JqY19uYW1lID0gc2VsZi5vYmpjX25hbWVfZm9yX3R5cGUoZGVj
bGFyYXRpb24udHlwZSkKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ0BjbGFzcyAlczsn
ICUgb2JqY19uYW1lKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCkBAIC0xMzIs
MTUgKzEzMiwxNSBAQCBjbGFzcyBPYmpDSGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAg
ICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKICAgICBkZWYgX2dlbmVyYXRlX2Fub255bW91
c19lbnVtX2Zvcl9kZWNsYXJhdGlvbihzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uKToKLSAgICAg
ICAgb2JqY19lbnVtX25hbWUgPSBPYmpDR2VuZXJhdG9yLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9u
eW1vdXNfZW51bV9kZWNsYXJhdGlvbihkZWNsYXJhdGlvbikKKyAgICAgICAgb2JqY19lbnVtX25h
bWUgPSBzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9kZWNsYXJhdGlvbihk
ZWNsYXJhdGlvbikKICAgICAgICAgcmV0dXJuIHNlbGYuX2dlbmVyYXRlX2VudW0ob2JqY19lbnVt
X25hbWUsIGRlY2xhcmF0aW9uLnR5cGUuZW51bV92YWx1ZXMoKSkKIAogICAgIGRlZiBfZ2VuZXJh
dGVfYW5vbnltb3VzX2VudW1fZm9yX21lbWJlcihzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uLCBt
ZW1iZXIpOgotICAgICAgICBvYmpjX2VudW1fbmFtZSA9IE9iakNHZW5lcmF0b3Iub2JqY19lbnVt
X25hbWVfZm9yX2Fub255bW91c19lbnVtX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVyKQorICAg
ICAgICBvYmpjX2VudW1fbmFtZSA9IHNlbGYub2JqY19lbnVtX25hbWVfZm9yX2Fub255bW91c19l
bnVtX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVyKQogICAgICAgICByZXR1cm4gc2VsZi5fZ2Vu
ZXJhdGVfZW51bShvYmpjX2VudW1fbmFtZSwgbWVtYmVyLnR5cGUuZW51bV92YWx1ZXMoKSkKIAog
ICAgIGRlZiBfZ2VuZXJhdGVfYW5vbnltb3VzX2VudW1fZm9yX3BhcmFtZXRlcihzZWxmLCBkb21h
aW4sIGV2ZW50X29yX2NvbW1hbmRfbmFtZSwgcGFyYW1ldGVyKToKLSAgICAgICAgb2JqY19lbnVt
X25hbWUgPSBPYmpDR2VuZXJhdG9yLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9w
YXJhbWV0ZXIoZG9tYWluLCBldmVudF9vcl9jb21tYW5kX25hbWUsIHBhcmFtZXRlcikKKyAgICAg
ICAgb2JqY19lbnVtX25hbWUgPSBzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51
bV9wYXJhbWV0ZXIoZG9tYWluLCBldmVudF9vcl9jb21tYW5kX25hbWUsIHBhcmFtZXRlcikKICAg
ICAgICAgcmV0dXJuIHNlbGYuX2dlbmVyYXRlX2VudW0ob2JqY19lbnVtX25hbWUsIHBhcmFtZXRl
ci50eXBlLmVudW1fdmFsdWVzKCkpCiAKICAgICBkZWYgX2dlbmVyYXRlX2VudW0oc2VsZiwgZW51
bV9uYW1lLCBlbnVtX3ZhbHVlcyk6CkBAIC0xNTMsNyArMTUzLDcgQEAgY2xhc3MgT2JqQ0hlYWRl
ckdlbmVyYXRvcihHZW5lcmF0b3IpOgogCiAgICAgZGVmIF9nZW5lcmF0ZV90eXBlX2ludGVyZmFj
ZShzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uKToKICAgICAgICAgbGluZXMgPSBbXQotICAgICAg
ICBvYmpjX25hbWUgPSBPYmpDR2VuZXJhdG9yLm9iamNfbmFtZV9mb3JfdHlwZShkZWNsYXJhdGlv
bi50eXBlKQorICAgICAgICBvYmpjX25hbWUgPSBzZWxmLm9iamNfbmFtZV9mb3JfdHlwZShkZWNs
YXJhdGlvbi50eXBlKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ19fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkgKCJkZWZhdWx0IikpKScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnQGludGVyZmFjZSAl
cyA6ICVzJyAlIChvYmpjX25hbWUsIE9iakNHZW5lcmF0b3IuT0JKQ19KU09OX09CSkVDVF9CQVNF
KSkKICAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBub3Qg
bWVtYmVyLmlzX29wdGlvbmFsLCBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCkBAIC0xNzAsMjEg
KzE3MCwyMSBAQCBjbGFzcyBPYmpDSGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgZGVm
IF9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcmVxdWlyZWRfbWVtYmVycyhzZWxmLCBkb21haW4s
IGRlY2xhcmF0aW9uLCByZXF1aXJlZF9tZW1iZXJzKToKICAgICAgICAgcGFpcnMgPSBbXQogICAg
ICAgICBmb3IgbWVtYmVyIGluIHJlcXVpcmVkX21lbWJlcnM6Ci0gICAgICAgICAgICBvYmpjX3R5
cGUgPSBPYmpDR2VuZXJhdG9yLm9iamNfdHlwZV9mb3JfbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1i
ZXIpCisgICAgICAgICAgICBvYmpjX3R5cGUgPSBzZWxmLm9iamNfdHlwZV9mb3JfbWVtYmVyKGRl
Y2xhcmF0aW9uLCBtZW1iZXIpCiAgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0b3Iu
aWRlbnRpZmllcl90b19vYmpjX2lkZW50aWZpZXIobWVtYmVyLm1lbWJlcl9uYW1lKQogICAgICAg
ICAgICAgcGFpcnMuYXBwZW5kKCclczooJXMpJXMnICUgKHZhcl9uYW1lLCBvYmpjX3R5cGUsIHZh
cl9uYW1lKSkKICAgICAgICAgcGFpcnNbMF0gPSB1Y2ZpcnN0KHBhaXJzWzBdKQogICAgICAgICBy
ZXR1cm4gJy0gKGluc3RhbmNldHlwZSlpbml0V2l0aCVzOycgJSAnICcuam9pbihwYWlycykKIAog
ICAgIGRlZiBfZ2VuZXJhdGVfbWVtYmVyX3Byb3BlcnR5KHNlbGYsIGRlY2xhcmF0aW9uLCBtZW1i
ZXIpOgotICAgICAgICBhY2Nlc3Nvcl90eXBlID0gT2JqQ0dlbmVyYXRvci5vYmpjX2FjY2Vzc29y
X3R5cGVfZm9yX21lbWJlcihtZW1iZXIpCi0gICAgICAgIG9iamNfdHlwZSA9IE9iakNHZW5lcmF0
b3Iub2JqY190eXBlX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlcikKKyAgICAgICAgYWNj
ZXNzb3JfdHlwZSA9IHNlbGYub2JqY19hY2Nlc3Nvcl90eXBlX2Zvcl9tZW1iZXIobWVtYmVyKQor
ICAgICAgICBvYmpjX3R5cGUgPSBzZWxmLm9iamNfdHlwZV9mb3JfbWVtYmVyKGRlY2xhcmF0aW9u
LCBtZW1iZXIpCiAgICAgICAgIHJldHVybiAnQHByb3BlcnR5IChub25hdG9taWMsICVzKSAlczsn
ICUgKGFjY2Vzc29yX3R5cGUsIGpvaW5fdHlwZV9hbmRfbmFtZShvYmpjX3R5cGUsIE9iakNHZW5l
cmF0b3IuaWRlbnRpZmllcl90b19vYmpjX2lkZW50aWZpZXIobWVtYmVyLm1lbWJlcl9uYW1lKSkp
CiAKICAgICBkZWYgX2dlbmVyYXRlX2NvbW1hbmRfcHJvdG9jb2xzKHNlbGYsIGRvbWFpbik6CiAg
ICAgICAgIGxpbmVzID0gW10KICAgICAgICAgaWYgZG9tYWluLmNvbW1hbmRzOgotICAgICAgICAg
ICAgb2JqY19uYW1lID0gJyVzJXNEb21haW5IYW5kbGVyJyAlIChPYmpDR2VuZXJhdG9yLk9CSkNf
UFJFRklYLCBkb21haW4uZG9tYWluX25hbWUpCisgICAgICAgICAgICBvYmpjX25hbWUgPSAnJXMl
c0RvbWFpbkhhbmRsZXInICUgKHNlbGYub2JqY19wcmVmaXgoKSwgZG9tYWluLmRvbWFpbl9uYW1l
KQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdAcHJvdG9jb2wgJXMgPE5TT2JqZWN0PicgJSBv
YmpjX25hbWUpCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJ0ByZXF1aXJlZCcpCiAgICAgICAg
ICAgICBmb3IgY29tbWFuZCBpbiBkb21haW4uY29tbWFuZHM6CkBAIC0xOTgsMTkgKzE5OCwxOSBA
QCBjbGFzcyBPYmpDSGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIHBhaXJzLmFw
cGVuZCgnc3VjY2Vzc0NhbGxiYWNrOiglcylzdWNjZXNzQ2FsbGJhY2snICUgc2VsZi5fY2FsbGJh
Y2tfYmxvY2tfZm9yX2NvbW1hbmQoZG9tYWluLCBjb21tYW5kKSkKICAgICAgICAgZm9yIHBhcmFt
ZXRlciBpbiBjb21tYW5kLmNhbGxfcGFyYW1ldGVyczoKICAgICAgICAgICAgIHBhcmFtX25hbWUg
PSBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKLSAgICAgICAgICAgIHBhaXJzLmFwcGVuZCgnJXM6
KCVzKSVzJyAlIChwYXJhbV9uYW1lLCBPYmpDR2VuZXJhdG9yLm9iamNfdHlwZV9mb3JfcGFyYW0o
ZG9tYWluLCBjb21tYW5kLmNvbW1hbmRfbmFtZSwgcGFyYW1ldGVyKSwgcGFyYW1fbmFtZSkpCisg
ICAgICAgICAgICBwYWlycy5hcHBlbmQoJyVzOiglcyklcycgJSAocGFyYW1fbmFtZSwgc2VsZi5v
YmpjX3R5cGVfZm9yX3BhcmFtKGRvbWFpbiwgY29tbWFuZC5jb21tYW5kX25hbWUsIHBhcmFtZXRl
ciksIHBhcmFtX25hbWUpKQogICAgICAgICByZXR1cm4gJy0gKHZvaWQpJXNXaXRoJXM7JyAlIChj
b21tYW5kLmNvbW1hbmRfbmFtZSwgJyAnLmpvaW4ocGFpcnMpKQogCiAgICAgZGVmIF9jYWxsYmFj
a19ibG9ja19mb3JfY29tbWFuZChzZWxmLCBkb21haW4sIGNvbW1hbmQpOgogICAgICAgICBwYWly
cyA9IFtdCiAgICAgICAgIGZvciBwYXJhbWV0ZXIgaW4gY29tbWFuZC5yZXR1cm5fcGFyYW1ldGVy
czoKLSAgICAgICAgICAgIHBhaXJzLmFwcGVuZChqb2luX3R5cGVfYW5kX25hbWUoT2JqQ0dlbmVy
YXRvci5vYmpjX3R5cGVfZm9yX3BhcmFtKGRvbWFpbiwgY29tbWFuZC5jb21tYW5kX25hbWUsIHBh
cmFtZXRlciksIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCisgICAgICAgICAgICBwYWlycy5h
cHBlbmQoam9pbl90eXBlX2FuZF9uYW1lKHNlbGYub2JqY190eXBlX2Zvcl9wYXJhbShkb21haW4s
IGNvbW1hbmQuY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIpLCBwYXJhbWV0ZXIucGFyYW1ldGVyX25h
bWUpKQogICAgICAgICByZXR1cm4gJ3ZvaWQoXikoJXMpJyAlICcsICcuam9pbihwYWlycykKIAog
ICAgIGRlZiBfZ2VuZXJhdGVfZXZlbnRfaW50ZXJmYWNlcyhzZWxmLCBkb21haW4pOgogICAgICAg
ICBsaW5lcyA9IFtdCiAgICAgICAgIGlmIGRvbWFpbi5ldmVudHM6Ci0gICAgICAgICAgICBvYmpj
X25hbWUgPSAnJXMlc0RvbWFpbkV2ZW50RGlzcGF0Y2hlcicgJSAoT2JqQ0dlbmVyYXRvci5PQkpD
X1BSRUZJWCwgZG9tYWluLmRvbWFpbl9uYW1lKQorICAgICAgICAgICAgb2JqY19uYW1lID0gJyVz
JXNEb21haW5FdmVudERpc3BhdGNoZXInICUgKHNlbGYub2JqY19wcmVmaXgoKSwgZG9tYWluLmRv
bWFpbl9uYW1lKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSknKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCdAaW50ZXJm
YWNlICVzIDogTlNPYmplY3QnICUgb2JqY19uYW1lKQogICAgICAgICAgICAgZm9yIGV2ZW50IGlu
IGRvbWFpbi5ldmVudHM6CkBAIC0yMjQsNiArMjI0LDYgQEAgY2xhc3MgT2JqQ0hlYWRlckdlbmVy
YXRvcihHZW5lcmF0b3IpOgogICAgICAgICBwYWlycyA9IFtdCiAgICAgICAgIGZvciBwYXJhbWV0
ZXIgaW4gZXZlbnQuZXZlbnRfcGFyYW1ldGVyczoKICAgICAgICAgICAgIHBhcmFtX25hbWUgPSBw
YXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKLSAgICAgICAgICAgIHBhaXJzLmFwcGVuZCgnJXM6KCVz
KSVzJyAlIChwYXJhbV9uYW1lLCBPYmpDR2VuZXJhdG9yLm9iamNfdHlwZV9mb3JfcGFyYW0oZG9t
YWluLCBldmVudC5ldmVudF9uYW1lLCBwYXJhbWV0ZXIpLCBwYXJhbV9uYW1lKSkKKyAgICAgICAg
ICAgIHBhaXJzLmFwcGVuZCgnJXM6KCVzKSVzJyAlIChwYXJhbV9uYW1lLCBzZWxmLm9iamNfdHlw
ZV9mb3JfcGFyYW0oZG9tYWluLCBldmVudC5ldmVudF9uYW1lLCBwYXJhbWV0ZXIpLCBwYXJhbV9u
YW1lKSkKICAgICAgICAgcGFpcnNbMF0gPSB1Y2ZpcnN0KHBhaXJzWzBdKQogICAgICAgICByZXR1
cm4gJy0gKHZvaWQpJXNXaXRoJXM7JyAlIChldmVudC5ldmVudF9uYW1lLCAnICcuam9pbihwYWly
cykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaW50ZXJuYWxf
aGVhZGVyLnB5CmluZGV4IDQwODAyZmYxNzA3NDViYjkwMmVlZTQ2Mzg2NGM5NzU3ZjYwMTAxN2Eu
LmI0NTQ5NjM1YTgyNjc3NWFmN2M5MmIyODZhYWU0MjQxNTQzNDBlODEgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29i
amNfaW50ZXJuYWxfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaW50ZXJuYWxfaGVhZGVyLnB5CkBAIC0x
LDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjCi0jIENvcHlyaWdodCAoYykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAx
NCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtMzYsMTcgKzM2LDE3IEBAIGZyb20gb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVz
IGltcG9ydCBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzIGFzIE9iakNUZW1wbGF0ZXMKIGxvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCdnbG9iYWwnKQogCiAKLWNsYXNzIE9iakNJbnRlcm5hbEhlYWRlckdl
bmVyYXRvcihHZW5lcmF0b3IpOgorY2xhc3MgT2JqQ0ludGVybmFsSGVhZGVyR2VuZXJhdG9yKE9i
akNHZW5lcmF0b3IpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBh
dGgpOgotICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVw
YXRoKQorICAgICAgICBPYmpDR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9m
aWxlcGF0aCkKIAogICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVy
biAnJXNJbnRlcm5hbC5oJyAlIE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgKKyAgICAgICAgcmV0
dXJuICclc0ludGVybmFsLmgnICUgc2VsZi5vYmpjX3ByZWZpeCgpCiAKICAgICBkZWYgZ2VuZXJh
dGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBoZWFkZXJzID0gc2V0KFsKLSAgICAgICAgICAgICci
JXMuaCInICUgT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCwKLSAgICAgICAgICAgICciJXNKU09O
T2JqZWN0SW50ZXJuYWwuaCInICUgT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCwKKyAgICAgICAg
ICAgICciJXMuaCInICUgc2VsZi5vYmpjX3ByZWZpeCgpLAorICAgICAgICAgICAgJyIlc0pTT05P
YmplY3RJbnRlcm5hbC5oIicgJSBzZWxmLm9iamNfcHJlZml4KCksCiAgICAgICAgICAgICAnPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPicsCiAgICAgICAgICAgICAnPEphdmFTY3Jp
cHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPicsCiAgICAgICAgIF0pCkBA
IC02OCw3ICs2OCw3IEBAIGNsYXNzIE9iakNJbnRlcm5hbEhlYWRlckdlbmVyYXRvcihHZW5lcmF0
b3IpOgogICAgIGRlZiBfZ2VuZXJhdGVfZXZlbnRfZGlzcGF0Y2hlcl9wcml2YXRlX2ludGVyZmFj
ZXMoc2VsZiwgZG9tYWluKToKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBpZiBkb21haW4u
ZXZlbnRzOgotICAgICAgICAgICAgb2JqY19uYW1lID0gJyVzJXNEb21haW5FdmVudERpc3BhdGNo
ZXInICUgKE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsIGRvbWFpbi5kb21haW5fbmFtZSkKKyAg
ICAgICAgICAgIG9iamNfbmFtZSA9ICclcyVzRG9tYWluRXZlbnREaXNwYXRjaGVyJyAlIChzZWxm
Lm9iamNfcHJlZml4KCksIGRvbWFpbi5kb21haW5fbmFtZSkKICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnQGludGVyZmFjZSAlcyAoUHJpdmF0ZSknICUgb2JqY19uYW1lKQogICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCctIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250cm9sbGVyOihJbnNwZWN0
b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciopY29udHJvbGxlcjsnKQogICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCdAZW5kJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlw
ZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9u
LnB5CmluZGV4IDk1YjU3ZjY3MTFjMjNiZTM2NDJhNjNmYzJlMjA2MzVmZDEyMGZlMTAuLjg2Njcy
MGQ3NTU2MjVkY2FiMDNlYzNkM2YxNjBiOTVjMTljMzY1YTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJv
dG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19p
bXBsZW1lbnRhdGlvbi5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgog
IwotIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIyBDb3B5cmlnaHQgKGMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQzLDI1ICs0MywyNSBAQCBkZWYgYWRk
X25ld2xpbmUobGluZXMpOgogICAgIGxpbmVzLmFwcGVuZCgnJykKIAogCi1jbGFzcyBPYmpDUHJv
dG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CitjbGFzcyBPYmpD
UHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpOgotICAgICAgICBHZW5l
cmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2ZpbGVwYXRoKQorICAgICAgICBPYmpD
R2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKIAogICAgIGRl
ZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnJXNUeXBlcy5tbScgJSBP
YmpDR2VuZXJhdG9yLk9CSkNfUFJFRklYCisgICAgICAgIHJldHVybiAnJXNUeXBlcy5tbScgJSBz
ZWxmLm9iamNfcHJlZml4KCkKIAogICAgIGRlZiBkb21haW5zX3RvX2dlbmVyYXRlKHNlbGYpOgog
ICAgICAgICByZXR1cm4gZmlsdGVyKE9iakNHZW5lcmF0b3Iuc2hvdWxkX2dlbmVyYXRlX2RvbWFp
bl90eXBlc19maWx0ZXIoc2VsZi5tb2RlbCgpKSwgR2VuZXJhdG9yLmRvbWFpbnNfdG9fZ2VuZXJh
dGUoc2VsZikpCiAKICAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWNv
bmRhcnlfaGVhZGVycyA9IFsKLSAgICAgICAgICAgICciJXNFbnVtQ29udmVyc2lvbkhlbHBlcnMu
aCInICUgT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCwKKyAgICAgICAgICAgICciJXNFbnVtQ29u
dmVyc2lvbkhlbHBlcnMuaCInICUgc2VsZi5vYmpjX3ByZWZpeCgpLAogICAgICAgICAgICAgJzxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4nLAogICAgICAgICAgICAgJzx3dGYvQXNz
ZXJ0aW9ucy5oPicsCiAgICAgICAgIF0KIAogICAgICAgICBoZWFkZXJfYXJncyA9IHsKLSAgICAg
ICAgICAgICdwcmltYXJ5SW5jbHVkZSc6ICciJXNJbnRlcm5hbC5oIicgJSBPYmpDR2VuZXJhdG9y
Lk9CSkNfUFJFRklYLAorICAgICAgICAgICAgJ3ByaW1hcnlJbmNsdWRlJzogJyIlc0ludGVybmFs
LmgiJyAlIHNlbGYub2JqY19wcmVmaXgoKSwKICAgICAgICAgICAgICdzZWNvbmRhcnlJbmNsdWRl
cyc6ICdcbicuam9pbihbJyNpbXBvcnQgJXMnICUgaGVhZGVyIGZvciBoZWFkZXIgaW4gc2Vjb25k
YXJ5X2hlYWRlcnNdKSwKICAgICAgICAgfQogCkBAIC04Myw3ICs4Myw3IEBAIGNsYXNzIE9iakNQ
cm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKIAogICAgIGRl
ZiBnZW5lcmF0ZV90eXBlX2ltcGxlbWVudGF0aW9uKHNlbGYsIGRvbWFpbiwgZGVjbGFyYXRpb24p
OgogICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnQGltcGxlbWVudGF0
aW9uICVzJyAlIE9iakNHZW5lcmF0b3Iub2JqY19uYW1lX2Zvcl90eXBlKGRlY2xhcmF0aW9uLnR5
cGUpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ0BpbXBsZW1lbnRhdGlvbiAlcycgJSBzZWxmLm9i
amNfbmFtZV9mb3JfdHlwZShkZWNsYXJhdGlvbi50eXBlKSkKICAgICAgICAgcmVxdWlyZWRfbWVt
YmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBub3QgbWVtYmVyLmlzX29wdGlvbmFsLCBkZWNs
YXJhdGlvbi50eXBlX21lbWJlcnMpCiAgICAgICAgIGlmIHJlcXVpcmVkX21lbWJlcnM6CiAgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJycpCkBAIC0xMDAsNyArMTAwLDcgQEAgY2xhc3MgT2JqQ1By
b3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgIGRlZiBf
Z2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX3JlcXVpcmVkX21lbWJlcnMoc2VsZiwgZG9tYWluLCBk
ZWNsYXJhdGlvbiwgcmVxdWlyZWRfbWVtYmVycyk6CiAgICAgICAgIHBhaXJzID0gW10KICAgICAg
ICAgZm9yIG1lbWJlciBpbiByZXF1aXJlZF9tZW1iZXJzOgotICAgICAgICAgICAgb2JqY190eXBl
ID0gT2JqQ0dlbmVyYXRvci5vYmpjX3R5cGVfZm9yX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVy
KQorICAgICAgICAgICAgb2JqY190eXBlID0gc2VsZi5vYmpjX3R5cGVfZm9yX21lbWJlcihkZWNs
YXJhdGlvbiwgbWVtYmVyKQogICAgICAgICAgICAgdmFyX25hbWUgPSBPYmpDR2VuZXJhdG9yLmlk
ZW50aWZpZXJfdG9fb2JqY19pZGVudGlmaWVyKG1lbWJlci5tZW1iZXJfbmFtZSkKICAgICAgICAg
ICAgIHBhaXJzLmFwcGVuZCgnJXM6KCVzKSVzJyAlICh2YXJfbmFtZSwgb2JqY190eXBlLCB2YXJf
bmFtZSkpCiAgICAgICAgIHBhaXJzWzBdID0gdWNmaXJzdChwYWlyc1swXSkKQEAgLTExNyw4ICsx
MTcsOCBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdl
bmVyYXRvcik6CiAgICAgICAgICAgICBmb3IgbWVtYmVyIGluIHJlcXVpcmVkX3BvaW50ZXJfbWVt
YmVyczoKICAgICAgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0b3IuaWRlbnRpZmll
cl90b19vYmpjX2lkZW50aWZpZXIobWVtYmVyLm1lbWJlcl9uYW1lKQogICAgICAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFko
JXMsIEAiJXMiKTsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkpCi0gICAgICAgICAgICAgICAgb2Jq
Y19hcnJheV9jbGFzcyA9IE9iakNHZW5lcmF0b3Iub2JqY19jbGFzc19mb3JfYXJyYXlfdHlwZSht
ZW1iZXIudHlwZSkKLSAgICAgICAgICAgICAgICBpZiBvYmpjX2FycmF5X2NsYXNzIGFuZCBvYmpj
X2FycmF5X2NsYXNzLnN0YXJ0c3dpdGgoT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCk6CisgICAg
ICAgICAgICAgICAgb2JqY19hcnJheV9jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfYXJyYXlf
dHlwZShtZW1iZXIudHlwZSkKKyAgICAgICAgICAgICAgICBpZiBvYmpjX2FycmF5X2NsYXNzIGFu
ZCBvYmpjX2FycmF5X2NsYXNzLnN0YXJ0c3dpdGgoc2VsZi5vYmpjX3ByZWZpeCgpKToKICAgICAg
ICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURf
VFlQRV9JTl9BUlJBWSglcywgWyVzIGNsYXNzXSk7JyAlICh2YXJfbmFtZSwgb2JqY19hcnJheV9j
bGFzcykpCiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJycpCiAKQEAgLTEzMiwyNiArMTMyLDI2
IEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJh
dG9yKToKICAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKIAogICAgIGRlZiBfZ2VuZXJh
dGVfc2V0dGVyX2Zvcl9tZW1iZXIoc2VsZiwgZG9tYWluLCBkZWNsYXJhdGlvbiwgbWVtYmVyKToK
LSAgICAgICAgb2JqY190eXBlID0gT2JqQ0dlbmVyYXRvci5vYmpjX3R5cGVfZm9yX21lbWJlcihk
ZWNsYXJhdGlvbiwgbWVtYmVyKQorICAgICAgICBvYmpjX3R5cGUgPSBzZWxmLm9iamNfdHlwZV9m
b3JfbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpCiAgICAgICAgIHZhcl9uYW1lID0gT2JqQ0dl
bmVyYXRvci5pZGVudGlmaWVyX3RvX29iamNfaWRlbnRpZmllcihtZW1iZXIubWVtYmVyX25hbWUp
CiAgICAgICAgIHNldHRlcl9tZXRob2QgPSBPYmpDR2VuZXJhdG9yLm9iamNfc2V0dGVyX21ldGhv
ZF9mb3JfbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpCi0gICAgICAgIGNvbnZlcnNpb25fZXhw
cmVzc2lvbiA9IE9iakNHZW5lcmF0b3Iub2JqY190b19wcm90b2NvbF9leHByZXNzaW9uX2Zvcl9t
ZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlciwgdmFyX25hbWUpCisgICAgICAgIGNvbnZlcnNpb25f
ZXhwcmVzc2lvbiA9IHNlbGYub2JqY190b19wcm90b2NvbF9leHByZXNzaW9uX2Zvcl9tZW1iZXIo
ZGVjbGFyYXRpb24sIG1lbWJlciwgdmFyX25hbWUpCiAgICAgICAgIGxpbmVzID0gW10KICAgICAg
ICAgbGluZXMuYXBwZW5kKCctICh2b2lkKXNldCVzOiglcyklcycgJSAodWNmaXJzdCh2YXJfbmFt
ZSksIG9iamNfdHlwZSwgdmFyX25hbWUpKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQotICAg
ICAgICBvYmpjX2FycmF5X2NsYXNzID0gT2JqQ0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl9hcnJh
eV90eXBlKG1lbWJlci50eXBlKQotICAgICAgICBpZiBvYmpjX2FycmF5X2NsYXNzIGFuZCBvYmpj
X2FycmF5X2NsYXNzLnN0YXJ0c3dpdGgoT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJWCk6CisgICAg
ICAgIG9iamNfYXJyYXlfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9yX2FycmF5X3R5cGUobWVt
YmVyLnR5cGUpCisgICAgICAgIGlmIG9iamNfYXJyYXlfY2xhc3MgYW5kIG9iamNfYXJyYXlfY2xh
c3Muc3RhcnRzd2l0aChzZWxmLm9iamNfcHJlZml4KCkpOgogICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRV9JTl9BUlJBWSglcywgWyVzIGNs
YXNzXSk7JyAlICh2YXJfbmFtZSwgb2JqY19hcnJheV9jbGFzcykpCiAgICAgICAgIGxpbmVzLmFw
cGVuZCgnICAgIFtzdXBlciAlczolcyBmb3JLZXk6QCIlcyJdOycgJSAoc2V0dGVyX21ldGhvZCwg
Y29udmVyc2lvbl9leHByZXNzaW9uLCBtZW1iZXIubWVtYmVyX25hbWUpKQogICAgICAgICBsaW5l
cy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCiAgICAgZGVm
IF9nZW5lcmF0ZV9nZXR0ZXJfZm9yX21lbWJlcihzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uLCBt
ZW1iZXIpOgotICAgICAgICBvYmpjX3R5cGUgPSBPYmpDR2VuZXJhdG9yLm9iamNfdHlwZV9mb3Jf
bWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpCisgICAgICAgIG9iamNfdHlwZSA9IHNlbGYub2Jq
Y190eXBlX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlcikKICAgICAgICAgdmFyX25hbWUg
PSBPYmpDR2VuZXJhdG9yLmlkZW50aWZpZXJfdG9fb2JqY19pZGVudGlmaWVyKG1lbWJlci5tZW1i
ZXJfbmFtZSkKICAgICAgICAgZ2V0dGVyX21ldGhvZCA9IE9iakNHZW5lcmF0b3Iub2JqY19nZXR0
ZXJfbWV0aG9kX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlcikKICAgICAgICAgYmFzaWNf
ZXhwcmVzc2lvbiA9ICdbc3VwZXIgJXM6QCIlcyJdJyAlIChnZXR0ZXJfbWV0aG9kLCBtZW1iZXIu
bWVtYmVyX25hbWUpCi0gICAgICAgIGNvbnZlcnNpb25fZXhwcmVzc2lvbiA9IE9iakNHZW5lcmF0
b3IucHJvdG9jb2xfdG9fb2JqY19leHByZXNzaW9uX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1l
bWJlciwgYmFzaWNfZXhwcmVzc2lvbikKKyAgICAgICAgY29udmVyc2lvbl9leHByZXNzaW9uID0g
c2VsZi5wcm90b2NvbF90b19vYmpjX2V4cHJlc3Npb25fZm9yX21lbWJlcihkZWNsYXJhdGlvbiwg
bWVtYmVyLCBiYXNpY19leHByZXNzaW9uKQogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIGxp
bmVzLmFwcGVuZCgnLSAoJXMpJXMnICUgKG9iamNfdHlwZSwgdmFyX25hbWUpKQogICAgICAgICBs
aW5lcy5hcHBlbmQoJ3snKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vbW9kZWxzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vbW9kZWxzLnB5CmluZGV4IGYwOWIzY2Y1YWFkZDMxYWYy
N2Y2ODc4NGM1NmFkMTgwMzkyMTllZWIuLjMzNDYzNjNlMzU3MTE4YThjNzk0ZDRjOGI4ZGYxMTNh
NTVkMmVkNDcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL21vZGVscy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9tb2RlbHMucHkKQEAgLTQ2LDEyICs0NiwxNSBAQCBfRlJBTUVX
T1JLX0NPTkZJR19NQVAgPSB7CiAgICAgICAgICJhbHRlcm5hdGVfZGlzcGF0Y2hlcnMiOiBUcnVl
LAogICAgIH0sCiAgICAgIldlYktpdCI6IHsKKyAgICAgICAgIm9iamNfcHJlZml4IjogIkF1dG9t
YXRpb24iLAogICAgIH0sCiAgICAgIldlYkluc3BlY3RvciI6IHsKKyAgICAgICAgIm9iamNfcHJl
Zml4IjogIlJXSSIsCiAgICAgfSwKICAgICAjIFVzZWQgZm9yIGNvZGUgZ2VuZXJhdG9yIHRlc3Rz
LgogICAgICJUZXN0IjogewogICAgICAgICAiYWx0ZXJuYXRlX2Rpc3BhdGNoZXJzIjogVHJ1ZSwK
KyAgICAgICAgIm9iamNfcHJlZml4IjogIlRlc3QiLAogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5l
cmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9vYmpjX2dlbmVyYXRvci5weQppbmRleCBmNmRkMDNjYjVhZmJlZmQzODJhMjYzOGQwYWU5ZDI5
OTg2Zjg4YzgzLi5hM2FjZjIwZDNmM2UxNWJiYTQ5NGQzOWRlMzFkMmYxNTk0N2M0MjQ1IDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9i
aW4vZW52IHB5dGhvbgogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSwxNCAr
NzksMjIgQEAgY2xhc3MgT2JqQ1R5cGVDYXRlZ29yeToKICAgICAgICAgICAgIHJldHVybiBPYmpD
VHlwZUNhdGVnb3J5LmNhdGVnb3J5X2Zvcl90eXBlKF90eXBlLnByaW1pdGl2ZV90eXBlKQogICAg
ICAgICByZXR1cm4gTm9uZQogCisjIEFsbW9zdCBhbGwgT2JqZWN0aXZlLUMgY2xhc3MgbmFtZXMg
cmVxdWlyZSB0aGUgdXNlIG9mIGEgcHJlZml4IHRoYXQgZGVwZW5kcyBvbiB0aGUKKyMgdGFyZ2V0
IGZyYW1ld29yaydzICdvYmpjX3ByZWZpeCcgc2V0dGluZy4gU28sIG1vc3QgaGVscGVycyBhcmUg
aW5zdGFuY2UgbWV0aG9kcy4KIAorY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgorICAg
ICMgRG8gbm90IHVzZSBhIGR5bmFtaWMgcHJlZml4IGZvciBSV0lQcm90b2NvbEpTT05PYmplY3Qg
c2luY2UgaXQncyB1c2VkIGFzIGEgY29tbW9uCisgICAgIyBiYXNlIGNsYXNzIGFuZCBuZWVkcyBh
IGNvbnNpc3RlbnQgT2JqZWN0aXZlLUMgcHJlZml4IHRvIGJlIGluIGEgcmV1c2FibGUgZnJhbWV3
b3JrLgorICAgIE9CSkNfSEVMUEVSX1BSRUZJWCA9ICdSV0knCisgICAgT0JKQ19DT01NT05fUFJF
RklYID0gJ1Byb3RvY29sJworICAgIE9CSkNfSlNPTl9PQkpFQ1RfQkFTRSA9ICclcyVzSlNPTk9i
amVjdCcgJSAoT0JKQ19IRUxQRVJfUFJFRklYLCBPQkpDX0NPTU1PTl9QUkVGSVgpCiAKLSMgVGhp
cyBjbGFzcyBjb250YWlucyBleHRyYSBzdGF0aWMgbWV0aG9kcyB1c2VkIGZvciBnZW5lcmF0aW9u
LCBidXQgZG9lcwotIyBub3QgcGFydGljaXBhdGUgaW4gYW55IGluaGVyaXRhbmNlIGhpZXJhcmNo
eS4gRmlsZSBnZW5lcmF0b3JzIHNob3VsZAotIyBleHRlbmQgdGhlIGdlbmVyaWMgIkdlbmVyYXRv
ciIgY2xhc3MgaW5zdGVhZC4KLWNsYXNzIE9iakNHZW5lcmF0b3I6Ci0gICAgT0JKQ19QUkVGSVgg
PSAnUldJUHJvdG9jb2wnCi0gICAgT0JKQ19KU09OX09CSkVDVF9CQVNFID0gJyVzSlNPTk9iamVj
dCcgJSBPQkpDX1BSRUZJWAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmls
ZXBhdGgpOgorICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwsIGlucHV0X2Zp
bGVwYXRoKQorCisgICAgZGVmIG9iamNfcHJlZml4KHNlbGYpOgorICAgICAgICBmcmFtZXdvcmtf
cHJlZml4ID0gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdvYmpjX3ByZWZpeCcsICcn
KQorICAgICAgICByZXR1cm4gJyVzJXMnICUgKGZyYW1ld29ya19wcmVmaXgsIE9iakNHZW5lcmF0
b3IuT0JKQ19DT01NT05fUFJFRklYKQogCiAgICAgIyBBZGp1c3QgaWRlbnRpZmllciBuYW1lcyB0
aGF0IGNvbGxpZGUgd2l0aCBPYmpDIGtleXdvcmRzLgogCkBAIC0xMzMsMzkgKzE0MSwzNCBAQCBj
bGFzcyBPYmpDR2VuZXJhdG9yOgogCiAgICAgIyBPYmpDIGVudW0gYW5kIHR5cGUgbmFtZXMuCiAK
LSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG9iamNfbmFtZV9mb3JfdHlwZSh0eXBlKToKKyAg
ICBkZWYgb2JqY19uYW1lX2Zvcl90eXBlKHNlbGYsIHR5cGUpOgogICAgICAgICBuYW1lID0gdHlw
ZS5xdWFsaWZpZWRfbmFtZSgpLnJlcGxhY2UoJy4nLCAnJykKICAgICAgICAgbmFtZSA9IHJlbW92
ZV9kdXBsaWNhdGVfZnJvbV9zdHIobmFtZSwgdHlwZS50eXBlX2RvbWFpbigpLmRvbWFpbl9uYW1l
KQotICAgICAgICByZXR1cm4gJyVzJXMnICUgKE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsIG5h
bWUpCisgICAgICAgIHJldHVybiAnJXMlcycgJSAoc2VsZi5vYmpjX3ByZWZpeCgpLCBuYW1lKQog
Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBvYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3Vz
X2VudW1fZGVjbGFyYXRpb24oZGVjbGFyYXRpb24pOgorICAgIGRlZiBvYmpjX2VudW1fbmFtZV9m
b3JfYW5vbnltb3VzX2VudW1fZGVjbGFyYXRpb24oc2VsZiwgZGVjbGFyYXRpb24pOgogICAgICAg
ICBkb21haW5fbmFtZSA9IGRlY2xhcmF0aW9uLnR5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFt
ZQogICAgICAgICBuYW1lID0gJyVzJXMnICUgKGRvbWFpbl9uYW1lLCBkZWNsYXJhdGlvbi50eXBl
LnJhd19uYW1lKCkpCiAgICAgICAgIG5hbWUgPSByZW1vdmVfZHVwbGljYXRlX2Zyb21fc3RyKG5h
bWUsIGRvbWFpbl9uYW1lKQotICAgICAgICByZXR1cm4gJyVzJXMnICUgKE9iakNHZW5lcmF0b3Iu
T0JKQ19QUkVGSVgsIG5hbWUpCisgICAgICAgIHJldHVybiAnJXMlcycgJSAoc2VsZi5vYmpjX3By
ZWZpeCgpLCBuYW1lKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBvYmpjX2VudW1fbmFt
ZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpOgorICAgIGRl
ZiBvYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKHNlbGYsIGRlY2xhcmF0
aW9uLCBtZW1iZXIpOgogICAgICAgICBkb21haW5fbmFtZSA9IG1lbWJlci50eXBlLnR5cGVfZG9t
YWluKCkuZG9tYWluX25hbWUKICAgICAgICAgbmFtZSA9ICclcyVzJXMnICUgKGRvbWFpbl9uYW1l
LCBkZWNsYXJhdGlvbi50eXBlLnJhd19uYW1lKCksIHVjZmlyc3QobWVtYmVyLm1lbWJlcl9uYW1l
KSkKICAgICAgICAgbmFtZSA9IHJlbW92ZV9kdXBsaWNhdGVfZnJvbV9zdHIobmFtZSwgZG9tYWlu
X25hbWUpCi0gICAgICAgIHJldHVybiAnJXMlcycgJSAoT2JqQ0dlbmVyYXRvci5PQkpDX1BSRUZJ
WCwgbmFtZSkKKyAgICAgICAgcmV0dXJuICclcyVzJyAlIChzZWxmLm9iamNfcHJlZml4KCksIG5h
bWUpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG9iamNfZW51bV9uYW1lX2Zvcl9hbm9u
eW1vdXNfZW51bV9wYXJhbWV0ZXIoZG9tYWluLCBldmVudF9vcl9jb21tYW5kX25hbWUsIHBhcmFt
ZXRlcik6CisgICAgZGVmIG9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9wYXJhbWV0
ZXIoc2VsZiwgZG9tYWluLCBldmVudF9vcl9jb21tYW5kX25hbWUsIHBhcmFtZXRlcik6CiAgICAg
ICAgIGRvbWFpbl9uYW1lID0gZG9tYWluLmRvbWFpbl9uYW1lCiAgICAgICAgIG5hbWUgPSAnJXMl
cyVzJyAlIChkb21haW5fbmFtZSwgdWNmaXJzdChldmVudF9vcl9jb21tYW5kX25hbWUpLCB1Y2Zp
cnN0KHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCiAgICAgICAgIG5hbWUgPSByZW1vdmVfZHVw
bGljYXRlX2Zyb21fc3RyKG5hbWUsIGRvbWFpbl9uYW1lKQotICAgICAgICByZXR1cm4gJyVzJXMn
ICUgKE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsIG5hbWUpCisgICAgICAgIHJldHVybiAnJXMl
cycgJSAoc2VsZi5vYmpjX3ByZWZpeCgpLCBuYW1lKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAg
IGRlZiBvYmpjX2VudW1fbmFtZV9mb3Jfbm9uX2Fub255bW91c19lbnVtKF90eXBlKToKKyAgICBk
ZWYgb2JqY19lbnVtX25hbWVfZm9yX25vbl9hbm9ueW1vdXNfZW51bShzZWxmLCBfdHlwZSk6CiAg
ICAgICAgIGRvbWFpbl9uYW1lID0gX3R5cGUudHlwZV9kb21haW4oKS5kb21haW5fbmFtZQogICAg
ICAgICBuYW1lID0gX3R5cGUucXVhbGlmaWVkX25hbWUoKS5yZXBsYWNlKCcuJywgJycpCiAgICAg
ICAgIG5hbWUgPSByZW1vdmVfZHVwbGljYXRlX2Zyb21fc3RyKG5hbWUsIGRvbWFpbl9uYW1lKQot
ICAgICAgICByZXR1cm4gJyVzJXMnICUgKE9iakNHZW5lcmF0b3IuT0JKQ19QUkVGSVgsIG5hbWUp
CisgICAgICAgIHJldHVybiAnJXMlcycgJSAoc2VsZi5vYmpjX3ByZWZpeCgpLCBuYW1lKQogCiAg
ICAgIyBNaXNjZWxsYW5lb3VzIG5hbWUgaGFuZGxpbmcuCiAKQEAgLTI2Myw4ICsyNjYsNyBAQCBj
bGFzcyBPYmpDR2VuZXJhdG9yOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0
dXJuIE5vbmUKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgb2JqY19jbGFzc19mb3JfdHlw
ZShfdHlwZSk6CisgICAgZGVmIG9iamNfY2xhc3NfZm9yX3R5cGUoc2VsZiwgX3R5cGUpOgogICAg
ICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpKToKICAgICAgICAgICAgIF90
eXBlID0gX3R5cGUuYWxpYXNlZF90eXBlCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBQ
cmltaXRpdmVUeXBlKSk6CkBAIC0yNzIsMzAgKzI3NCwyNyBAQCBjbGFzcyBPYmpDR2VuZXJhdG9y
OgogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUpKToKICAgICAgICAgICAg
IHJldHVybiBPYmpDR2VuZXJhdG9yLm9iamNfY2xhc3NfZm9yX3Jhd19uYW1lKF90eXBlLnByaW1p
dGl2ZV90eXBlLnJhd19uYW1lKCkpCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBPYmpl
Y3RUeXBlKSk6Ci0gICAgICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5vYmpjX25hbWVfZm9y
X3R5cGUoX3R5cGUpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5vYmpjX25hbWVfZm9yX3R5cGUo
X3R5cGUpCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBBcnJheVR5cGUpKToKLSAgICAg
ICAgICAgIHN1Yl90eXBlID0gc3RyaXBfYmxvY2tfY29tbWVudF9tYXJrZXJzKE9iakNHZW5lcmF0
b3Iub2JqY19jbGFzc19mb3JfdHlwZShfdHlwZS5lbGVtZW50X3R5cGUpKQorICAgICAgICAgICAg
c3ViX3R5cGUgPSBzdHJpcF9ibG9ja19jb21tZW50X21hcmtlcnMoc2VsZi5vYmpjX2NsYXNzX2Zv
cl90eXBlKF90eXBlLmVsZW1lbnRfdHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gJ05TQXJyYXkv
Kjwlcz4qLycgJSBzdWJfdHlwZQogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgQHN0YXRpY21l
dGhvZAotICAgIGRlZiBvYmpjX2NsYXNzX2Zvcl9hcnJheV90eXBlKF90eXBlKToKKyAgICBkZWYg
b2JqY19jbGFzc19mb3JfYXJyYXlfdHlwZShzZWxmLCBfdHlwZSk6CiAgICAgICAgIGlmIGlzaW5z
dGFuY2UoX3R5cGUsIEFsaWFzZWRUeXBlKToKICAgICAgICAgICAgIF90eXBlID0gX3R5cGUuYWxp
YXNlZF90eXBlCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEFycmF5VHlwZSk6Ci0gICAg
ICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl90eXBlKF90eXBlLmVs
ZW1lbnRfdHlwZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUo
X3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgQHN0YXRpY21l
dGhvZAotICAgIGRlZiBvYmpjX2FjY2Vzc29yX3R5cGVfZm9yX21lbWJlcihtZW1iZXIpOgotICAg
ICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5vYmpjX2FjY2Vzc29yX3R5cGVfZm9yX21lbWJlcl9p
bnRlcm5hbChtZW1iZXIudHlwZSkKKyAgICBkZWYgb2JqY19hY2Nlc3Nvcl90eXBlX2Zvcl9tZW1i
ZXIoc2VsZiwgbWVtYmVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYub2JqY19hY2Nlc3Nvcl90eXBl
X2Zvcl9tZW1iZXJfaW50ZXJuYWwobWVtYmVyLnR5cGUpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0g
ICAgZGVmIG9iamNfYWNjZXNzb3JfdHlwZV9mb3JfbWVtYmVyX2ludGVybmFsKF90eXBlKToKKyAg
ICBkZWYgb2JqY19hY2Nlc3Nvcl90eXBlX2Zvcl9tZW1iZXJfaW50ZXJuYWwoc2VsZiwgX3R5cGUp
OgogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpKToKICAgICAgICAg
ICAgIF90eXBlID0gX3R5cGUuYWxpYXNlZF90eXBlCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90
eXBlLCBQcmltaXRpdmVUeXBlKSk6Ci0gICAgICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5v
YmpjX2FjY2Vzc29yX3R5cGVfZm9yX3Jhd19uYW1lKF90eXBlLnJhd19uYW1lKCkpCisgICAgICAg
ICAgICByZXR1cm4gc2VsZi5vYmpjX2FjY2Vzc29yX3R5cGVfZm9yX3Jhd19uYW1lKF90eXBlLnJh
d19uYW1lKCkpCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSkpOgogICAg
ICAgICAgICAgcmV0dXJuICdhc3NpZ24nCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBP
YmplY3RUeXBlKSk6CkBAIC0zMDQsNTAgKzMwMyw0NiBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yOgog
ICAgICAgICAgICAgcmV0dXJuICdjb3B5JwogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgQHN0
YXRpY21ldGhvZAotICAgIGRlZiBvYmpjX3R5cGVfZm9yX21lbWJlcihkZWNsYXJhdGlvbiwgbWVt
YmVyKToKLSAgICAgICAgcmV0dXJuIE9iakNHZW5lcmF0b3Iub2JqY190eXBlX2Zvcl9tZW1iZXJf
aW50ZXJuYWwobWVtYmVyLnR5cGUsIGRlY2xhcmF0aW9uLCBtZW1iZXIpCisgICAgZGVmIG9iamNf
dHlwZV9mb3JfbWVtYmVyKHNlbGYsIGRlY2xhcmF0aW9uLCBtZW1iZXIpOgorICAgICAgICByZXR1
cm4gc2VsZi5vYmpjX3R5cGVfZm9yX21lbWJlcl9pbnRlcm5hbChtZW1iZXIudHlwZSwgZGVjbGFy
YXRpb24sIG1lbWJlcikKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgb2JqY190eXBlX2Zv
cl9tZW1iZXJfaW50ZXJuYWwoX3R5cGUsIGRlY2xhcmF0aW9uLCBtZW1iZXIpOgorICAgIGRlZiBv
YmpjX3R5cGVfZm9yX21lbWJlcl9pbnRlcm5hbChzZWxmLCBfdHlwZSwgZGVjbGFyYXRpb24sIG1l
bWJlcik6CiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBBbGlhc2VkVHlwZSkpOgogICAg
ICAgICAgICAgX3R5cGUgPSBfdHlwZS5hbGlhc2VkX3R5cGUKICAgICAgICAgaWYgKGlzaW5zdGFu
Y2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpKToKLSAgICAgICAgICAgIHJldHVybiBPYmpDR2VuZXJh
dG9yLm9iamNfdHlwZV9mb3JfcmF3X25hbWUoX3R5cGUucmF3X25hbWUoKSkKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLm9iamNfdHlwZV9mb3JfcmF3X25hbWUoX3R5cGUucmF3X25hbWUoKSkKICAg
ICAgICAgaWYgKGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKSk6CiAgICAgICAgICAgICBpZiAo
X3R5cGUuaXNfYW5vbnltb3VzKToKLSAgICAgICAgICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRv
ci5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKGRlY2xhcmF0aW9uLCBt
ZW1iZXIpCi0gICAgICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5vYmpjX2VudW1fbmFtZV9m
b3Jfbm9uX2Fub255bW91c19lbnVtKF90eXBlKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
Lm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIoZGVjbGFyYXRpb24sIG1l
bWJlcikKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9ub25fYW5v
bnltb3VzX2VudW0oX3R5cGUpCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBPYmplY3RU
eXBlKSk6Ci0gICAgICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5vYmpjX25hbWVfZm9yX3R5
cGUoX3R5cGUpICsgJyAqJworICAgICAgICAgICAgcmV0dXJuIHNlbGYub2JqY19uYW1lX2Zvcl90
eXBlKF90eXBlKSArICcgKicKICAgICAgICAgaWYgKGlzaW5zdGFuY2UoX3R5cGUsIEFycmF5VHlw
ZSkpOgotICAgICAgICAgICAgc3ViX3R5cGUgPSBzdHJpcF9ibG9ja19jb21tZW50X21hcmtlcnMo
T2JqQ0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl90eXBlKF90eXBlLmVsZW1lbnRfdHlwZSkpCisg
ICAgICAgICAgICBzdWJfdHlwZSA9IHN0cmlwX2Jsb2NrX2NvbW1lbnRfbWFya2VycyhzZWxmLm9i
amNfY2xhc3NfZm9yX3R5cGUoX3R5cGUuZWxlbWVudF90eXBlKSkKICAgICAgICAgICAgIHJldHVy
biAnTlNBcnJheS8qPCVzPiovIConICUgc3ViX3R5cGUKICAgICAgICAgcmV0dXJuIE5vbmUKIAot
ICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgb2JqY190eXBlX2Zvcl9wYXJhbShkb21haW4sIGV2
ZW50X29yX2NvbW1hbmRfbmFtZSwgcGFyYW1ldGVyLCByZXNwZWN0X29wdGlvbmFsPVRydWUpOgot
ICAgICAgICBvYmpjX3R5cGUgPSBPYmpDR2VuZXJhdG9yLm9iamNfdHlwZV9mb3JfcGFyYW1faW50
ZXJuYWwocGFyYW1ldGVyLnR5cGUsIGRvbWFpbiwgZXZlbnRfb3JfY29tbWFuZF9uYW1lLCBwYXJh
bWV0ZXIpCisgICAgZGVmIG9iamNfdHlwZV9mb3JfcGFyYW0oc2VsZiwgZG9tYWluLCBldmVudF9v
cl9jb21tYW5kX25hbWUsIHBhcmFtZXRlciwgcmVzcGVjdF9vcHRpb25hbD1UcnVlKToKKyAgICAg
ICAgb2JqY190eXBlID0gc2VsZi5vYmpjX3R5cGVfZm9yX3BhcmFtX2ludGVybmFsKHBhcmFtZXRl
ci50eXBlLCBkb21haW4sIGV2ZW50X29yX2NvbW1hbmRfbmFtZSwgcGFyYW1ldGVyKQogICAgICAg
ICBpZiByZXNwZWN0X29wdGlvbmFsIGFuZCBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CiAgICAgICAg
ICAgICBpZiBvYmpjX3R5cGUuZW5kc3dpdGgoJyonKToKICAgICAgICAgICAgICAgICByZXR1cm4g
b2JqY190eXBlICsgJyonCiAgICAgICAgICAgICByZXR1cm4gb2JqY190eXBlICsgJyAqJwogICAg
ICAgICByZXR1cm4gb2JqY190eXBlCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG9iamNf
dHlwZV9mb3JfcGFyYW1faW50ZXJuYWwoX3R5cGUsIGRvbWFpbiwgZXZlbnRfb3JfY29tbWFuZF9u
YW1lLCBwYXJhbWV0ZXIpOgorICAgIGRlZiBvYmpjX3R5cGVfZm9yX3BhcmFtX2ludGVybmFsKHNl
bGYsIF90eXBlLCBkb21haW4sIGV2ZW50X29yX2NvbW1hbmRfbmFtZSwgcGFyYW1ldGVyKToKICAg
ICAgICAgaWYgKGlzaW5zdGFuY2UoX3R5cGUsIEFsaWFzZWRUeXBlKSk6CiAgICAgICAgICAgICBf
dHlwZSA9IF90eXBlLmFsaWFzZWRfdHlwZQogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwg
UHJpbWl0aXZlVHlwZSkpOgotICAgICAgICAgICAgcmV0dXJuIE9iakNHZW5lcmF0b3Iub2JqY190
eXBlX2Zvcl9yYXdfbmFtZShfdHlwZS5yYXdfbmFtZSgpKQorICAgICAgICAgICAgcmV0dXJuIHNl
bGYub2JqY190eXBlX2Zvcl9yYXdfbmFtZShfdHlwZS5yYXdfbmFtZSgpKQogICAgICAgICBpZiAo
aXNpbnN0YW5jZShfdHlwZSwgRW51bVR5cGUpKToKICAgICAgICAgICAgIGlmIF90eXBlLmlzX2Fu
b255bW91czoKLSAgICAgICAgICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5vYmpjX2VudW1f
bmFtZV9mb3JfYW5vbnltb3VzX2VudW1fcGFyYW1ldGVyKGRvbWFpbiwgZXZlbnRfb3JfY29tbWFu
ZF9uYW1lLCBwYXJhbWV0ZXIpCi0gICAgICAgICAgICByZXR1cm4gT2JqQ0dlbmVyYXRvci5vYmpj
X2VudW1fbmFtZV9mb3Jfbm9uX2Fub255bW91c19lbnVtKF90eXBlKQorICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9wYXJhbWV0ZXIo
ZG9tYWluLCBldmVudF9vcl9jb21tYW5kX25hbWUsIHBhcmFtZXRlcikKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9ub25fYW5vbnltb3VzX2VudW0oX3R5cGUpCiAg
ICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBPYmplY3RUeXBlKSk6Ci0gICAgICAgICAgICBy
ZXR1cm4gT2JqQ0dlbmVyYXRvci5vYmpjX25hbWVfZm9yX3R5cGUoX3R5cGUpICsgJyAqJworICAg
ICAgICAgICAgcmV0dXJuIHNlbGYub2JqY19uYW1lX2Zvcl90eXBlKF90eXBlKSArICcgKicKICAg
ICAgICAgaWYgKGlzaW5zdGFuY2UoX3R5cGUsIEFycmF5VHlwZSkpOgotICAgICAgICAgICAgc3Vi
X3R5cGUgPSBzdHJpcF9ibG9ja19jb21tZW50X21hcmtlcnMoT2JqQ0dlbmVyYXRvci5vYmpjX2Ns
YXNzX2Zvcl90eXBlKF90eXBlLmVsZW1lbnRfdHlwZSkpCisgICAgICAgICAgICBzdWJfdHlwZSA9
IHN0cmlwX2Jsb2NrX2NvbW1lbnRfbWFya2VycyhzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUoX3R5
cGUuZWxlbWVudF90eXBlKSkKICAgICAgICAgICAgIHJldHVybiAnTlNBcnJheS8qPCVzPiovICon
ICUgc3ViX3R5cGUKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMzU2LDggKzM1MSw3IEBAIGNs
YXNzIE9iakNHZW5lcmF0b3I6CiAgICAgIyAgIC0gY29udmVydCBhIGNvbW1hbmQgcmV0dXJuIHBh
cmFtZXRlciBpbiBjYWxsYmFjayBibG9jayBmcm9tIE9iakMgdG8gUHJvdG9jb2wgdG8gc2VuZAog
ICAgICMgICAtIGNvbnZlcnQgYW4gZXZlbnQgcGFyYW1ldGVyIGZyb20gT2JqQyBBUEkgdG8gUHJv
dG9jb2wgdG8gc2VuZAogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBvYmpjX3Byb3RvY29s
X2V4cG9ydF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZSh2YXJfdHlwZSwgdmFyX25hbWUpOgorICAg
IGRlZiBvYmpjX3Byb3RvY29sX2V4cG9ydF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZShzZWxmLCB2
YXJfdHlwZSwgdmFyX25hbWUpOgogICAgICAgICBjYXRlZ29yeSA9IE9iakNUeXBlQ2F0ZWdvcnku
Y2F0ZWdvcnlfZm9yX3R5cGUodmFyX3R5cGUpCiAgICAgICAgIGlmIGNhdGVnb3J5IGluIFtPYmpD
VHlwZUNhdGVnb3J5LlNpbXBsZSwgT2JqQ1R5cGVDYXRlZ29yeS5TdHJpbmddOgogICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZSh2YXJfdHlwZSwgRW51bVR5cGUpOgpAQCAtMzY3LDcgKzM2MSw3IEBA
IGNsYXNzIE9iakNHZW5lcmF0b3I6CiAgICAgICAgICAgICByZXR1cm4gJ1slcyB0b0luc3BlY3Rv
ck9iamVjdF0nICUgdmFyX25hbWUKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRl
Z29yeS5BcnJheToKICAgICAgICAgICAgIHByb3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnBy
b3RvY29sX3R5cGVfZm9yX3R5cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQotICAgICAgICAgICAg
b2JqY19jbGFzcyA9IE9iakNHZW5lcmF0b3Iub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5l
bGVtZW50X3R5cGUpCisgICAgICAgICAgICBvYmpjX2NsYXNzID0gc2VsZi5vYmpjX2NsYXNzX2Zv
cl90eXBlKHZhcl90eXBlLmVsZW1lbnRfdHlwZSkKICAgICAgICAgICAgIGlmIHByb3RvY29sX3R5
cGUgPT0gJ0luc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4nOgogICAgICAgICAgICAg
ICAgIHJldHVybiAnaW5zcGVjdG9yU3RyaW5nQXJyYXlBcnJheSglcyknICUgdmFyX25hbWUKICAg
ICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgaXMgJ1N0cmluZycgYW5kIG9iamNfY2xhc3MgaXMg
J05TU3RyaW5nJzoKQEAgLTM3OCwzMiArMzcyLDI5IEBAIGNsYXNzIE9iakNHZW5lcmF0b3I6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuICdpbnNwZWN0b3JEb3VibGVBcnJheSglcyknICUgdmFyX25h
bWUKICAgICAgICAgICAgIHJldHVybiAnaW5zcGVjdG9yT2JqZWN0QXJyYXkoJXMpJyAlIHZhcl9u
YW1lCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG9iamNfcHJvdG9jb2xfaW1wb3J0X2V4
cHJlc3Npb25fZm9yX21lbWJlcihuYW1lLCBkZWNsYXJhdGlvbiwgbWVtYmVyKToKKyAgICBkZWYg
b2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKHNlbGYsIG5hbWUsIGRl
Y2xhcmF0aW9uLCBtZW1iZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG1lbWJlci50eXBlLCBF
bnVtVHlwZSk6CiAgICAgICAgICAgICBpZiBtZW1iZXIudHlwZS5pc19hbm9ueW1vdXM6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICdmcm9tUHJvdG9jb2xTdHJpbmc8JXM+KCVzKScgJSAoT2JqQ0dl
bmVyYXRvci5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKGRlY2xhcmF0
aW9uLCBtZW1iZXIpLCBuYW1lKQotICAgICAgICAgICAgcmV0dXJuICdmcm9tUHJvdG9jb2xTdHJp
bmc8JXM+KCVzKScgJSAoT2JqQ0dlbmVyYXRvci5vYmpjX2VudW1fbmFtZV9mb3Jfbm9uX2Fub255
bW91c19lbnVtKG1lbWJlci50eXBlKSwgbmFtZSkKLSAgICAgICAgcmV0dXJuIE9iakNHZW5lcmF0
b3Iub2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUobWVtYmVyLnR5
cGUsIG5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuICdmcm9tUHJvdG9jb2xTdHJpbmc8JXM+
KCVzKScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKGRl
Y2xhcmF0aW9uLCBtZW1iZXIpLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuICdmcm9tUHJvdG9j
b2xTdHJpbmc8JXM+KCVzKScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3Jfbm9uX2Fub255bW91
c19lbnVtKG1lbWJlci50eXBlKSwgbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYub2JqY19wcm90
b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUobWVtYmVyLnR5cGUsIG5hbWUpCiAK
LSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIG9iamNfcHJvdG9jb2xfaW1wb3J0X2V4cHJlc3Np
b25fZm9yX3BhcmFtZXRlcihuYW1lLCBkb21haW4sIGV2ZW50X29yX2NvbW1hbmRfbmFtZSwgcGFy
YW1ldGVyKToKKyAgICBkZWYgb2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfcGFy
YW1ldGVyKHNlbGYsIG5hbWUsIGRvbWFpbiwgZXZlbnRfb3JfY29tbWFuZF9uYW1lLCBwYXJhbWV0
ZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlci50eXBlLCBFbnVtVHlwZSk6CiAg
ICAgICAgICAgICBpZiBwYXJhbWV0ZXIudHlwZS5pc19hbm9ueW1vdXM6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICdmcm9tUHJvdG9jb2xTdHJpbmc8JXM+KCVzKScgJSAoT2JqQ0dlbmVyYXRvci5v
YmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fcGFyYW1ldGVyKGRvbWFpbiwgZXZlbnRf
b3JfY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIpLCBuYW1lKQotICAgICAgICAgICAgcmV0dXJuICdm
cm9tUHJvdG9jb2xTdHJpbmc8JXM+KCVzKScgJSAoT2JqQ0dlbmVyYXRvci5vYmpjX2VudW1fbmFt
ZV9mb3Jfbm9uX2Fub255bW91c19lbnVtKHBhcmFtZXRlci50eXBlKSwgbmFtZSkKLSAgICAgICAg
cmV0dXJuIE9iakNHZW5lcmF0b3Iub2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3Jf
dmFyaWFibGUocGFyYW1ldGVyLnR5cGUsIG5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuICdm
cm9tUHJvdG9jb2xTdHJpbmc8JXM+KCVzKScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3JfYW5v
bnltb3VzX2VudW1fcGFyYW1ldGVyKGRvbWFpbiwgZXZlbnRfb3JfY29tbWFuZF9uYW1lLCBwYXJh
bWV0ZXIpLCBuYW1lKQorICAgICAgICAgICAgcmV0dXJuICdmcm9tUHJvdG9jb2xTdHJpbmc8JXM+
KCVzKScgJSAoc2VsZi5vYmpjX2VudW1fbmFtZV9mb3Jfbm9uX2Fub255bW91c19lbnVtKHBhcmFt
ZXRlci50eXBlKSwgbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYub2JqY19wcm90b2NvbF9pbXBv
cnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUocGFyYW1ldGVyLnR5cGUsIG5hbWUpCiAKLSAgICBA
c3RhdGljbWV0aG9kCi0gICAgZGVmIG9iamNfcHJvdG9jb2xfaW1wb3J0X2V4cHJlc3Npb25fZm9y
X3ZhcmlhYmxlKHZhcl90eXBlLCB2YXJfbmFtZSk6CisgICAgZGVmIG9iamNfcHJvdG9jb2xfaW1w
b3J0X2V4cHJlc3Npb25fZm9yX3ZhcmlhYmxlKHNlbGYsIHZhcl90eXBlLCB2YXJfbmFtZSk6CiAg
ICAgICAgIGNhdGVnb3J5ID0gT2JqQ1R5cGVDYXRlZ29yeS5jYXRlZ29yeV9mb3JfdHlwZSh2YXJf
dHlwZSkKICAgICAgICAgaWYgY2F0ZWdvcnkgaW4gW09iakNUeXBlQ2F0ZWdvcnkuU2ltcGxlLCBP
YmpDVHlwZUNhdGVnb3J5LlN0cmluZ106CiAgICAgICAgICAgICByZXR1cm4gdmFyX25hbWUKICAg
ICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5PYmplY3Q6Ci0gICAgICAgICAg
ICBvYmpjX2NsYXNzID0gT2JqQ0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl90eXBlKHZhcl90eXBl
KQorICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSh2YXJf
dHlwZSkKICAgICAgICAgICAgIHJldHVybiAnW1tbJXMgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9y
T2JqZWN0OiVzXSBhdXRvcmVsZWFzZV0nICUgKG9iamNfY2xhc3MsIHZhcl9uYW1lKQogICAgICAg
ICBpZiBjYXRlZ29yeSBpcyBPYmpDVHlwZUNhdGVnb3J5LkFycmF5OgotICAgICAgICAgICAgb2Jq
Y19jbGFzcyA9IE9iakNHZW5lcmF0b3Iub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVt
ZW50X3R5cGUpCisgICAgICAgICAgICBvYmpjX2NsYXNzID0gc2VsZi5vYmpjX2NsYXNzX2Zvcl90
eXBlKHZhcl90eXBlLmVsZW1lbnRfdHlwZSkKICAgICAgICAgICAgIGlmIG9iamNfY2xhc3MgaXMg
J05TU3RyaW5nJzoKICAgICAgICAgICAgICAgICByZXR1cm4gJ29iamNTdHJpbmdBcnJheSglcykn
ICUgdmFyX25hbWUKICAgICAgICAgICAgIGlmIG9iamNfY2xhc3MgaXMgJ05TTnVtYmVyJzogICMg
RklYTUU6IEludGVnZXIgb3IgRG91YmxlPwpAQCAtNDE0LDggKzQwNSw3IEBAIGNsYXNzIE9iakNH
ZW5lcmF0b3I6CiAgICAgIyAgIC0gY29udmVydCBhIG1lbWJlciBzZXR0ZXIgZnJvbSBPYmpDIEFQ
SSB0byBKU09OIG9iamVjdCBzZXR0ZXIKICAgICAjICAgLSBjb252ZXJ0IGEgbWVtYmVyIGdldHRl
ciBmcm9tIEpTT04gb2JqZWN0IHRvIE9iakMgQVBJCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAg
ZGVmIG9iamNfdG9fcHJvdG9jb2xfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKGRlY2xhcmF0aW9uLCBt
ZW1iZXIsIHN1Yl9leHByZXNzaW9uKToKKyAgICBkZWYgb2JqY190b19wcm90b2NvbF9leHByZXNz
aW9uX2Zvcl9tZW1iZXIoc2VsZiwgZGVjbGFyYXRpb24sIG1lbWJlciwgc3ViX2V4cHJlc3Npb24p
OgogICAgICAgICBjYXRlZ29yeSA9IE9iakNUeXBlQ2F0ZWdvcnkuY2F0ZWdvcnlfZm9yX3R5cGUo
bWVtYmVyLnR5cGUpCiAgICAgICAgIGlmIGNhdGVnb3J5IGluIFtPYmpDVHlwZUNhdGVnb3J5LlNp
bXBsZSwgT2JqQ1R5cGVDYXRlZ29yeS5TdHJpbmddOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShtZW1iZXIudHlwZSwgRW51bVR5cGUpOgpAQCAtNDI0LDcgKzQxNCw3IEBAIGNsYXNzIE9iakNH
ZW5lcmF0b3I6CiAgICAgICAgIGlmIGNhdGVnb3J5IGlzIE9iakNUeXBlQ2F0ZWdvcnkuT2JqZWN0
OgogICAgICAgICAgICAgcmV0dXJuIHN1Yl9leHByZXNzaW9uCiAgICAgICAgIGlmIGNhdGVnb3J5
IGlzIE9iakNUeXBlQ2F0ZWdvcnkuQXJyYXk6Ci0gICAgICAgICAgICBvYmpjX2NsYXNzID0gT2Jq
Q0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl90eXBlKG1lbWJlci50eXBlLmVsZW1lbnRfdHlwZSkK
KyAgICAgICAgICAgIG9iamNfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUobWVtYmVy
LnR5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgaWYgb2JqY19jbGFzcyBpcyAnTlNTdHJp
bmcnOgogICAgICAgICAgICAgICAgIHJldHVybiAnaW5zcGVjdG9yU3RyaW5nQXJyYXkoJXMpJyAl
IHN1Yl9leHByZXNzaW9uCiAgICAgICAgICAgICBpZiBvYmpjX2NsYXNzIGlzICdOU051bWJlcic6
CkBAIC00MzQsMjEgKzQyNCwyMCBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yOgogICAgICAgICAgICAg
ICAgIHJldHVybiAnaW5zcGVjdG9ySW50ZWdlckFycmF5KCVzKScgJSBzdWJfZXhwcmVzc2lvbgog
ICAgICAgICAgICAgcmV0dXJuICdpbnNwZWN0b3JPYmplY3RBcnJheSglcyknICUgc3ViX2V4cHJl
c3Npb24KIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcHJvdG9jb2xfdG9fb2JqY19leHBy
ZXNzaW9uX2Zvcl9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlciwgc3ViX2V4cHJlc3Npb24pOgor
ICAgIGRlZiBwcm90b2NvbF90b19vYmpjX2V4cHJlc3Npb25fZm9yX21lbWJlcihzZWxmLCBkZWNs
YXJhdGlvbiwgbWVtYmVyLCBzdWJfZXhwcmVzc2lvbik6CiAgICAgICAgIGNhdGVnb3J5ID0gT2Jq
Q1R5cGVDYXRlZ29yeS5jYXRlZ29yeV9mb3JfdHlwZShtZW1iZXIudHlwZSkKICAgICAgICAgaWYg
Y2F0ZWdvcnkgaW4gW09iakNUeXBlQ2F0ZWdvcnkuU2ltcGxlLCBPYmpDVHlwZUNhdGVnb3J5LlN0
cmluZ106CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1lbWJlci50eXBlLCBFbnVtVHlwZSk6
CiAgICAgICAgICAgICAgICAgaWYgbWVtYmVyLnR5cGUuaXNfYW5vbnltb3VzOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gJ2Zyb21Qcm90b2NvbFN0cmluZzwlcz4oJXMpJyAlIChPYmpDR2Vu
ZXJhdG9yLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIoZGVjbGFyYXRp
b24sIG1lbWJlciksIHN1Yl9leHByZXNzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiAnZnJv
bVByb3RvY29sU3RyaW5nPCVzPiglcyknICUgKE9iakNHZW5lcmF0b3Iub2JqY19lbnVtX25hbWVf
Zm9yX25vbl9hbm9ueW1vdXNfZW51bShtZW1iZXIudHlwZSksIHN1Yl9leHByZXNzaW9uKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJ2Zyb21Qcm90b2NvbFN0cmluZzwlcz4oJXMpJyAlIChz
ZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51bV9tZW1iZXIoZGVjbGFyYXRpb24s
IG1lbWJlciksIHN1Yl9leHByZXNzaW9uKQorICAgICAgICAgICAgICAgIHJldHVybiAnZnJvbVBy
b3RvY29sU3RyaW5nPCVzPiglcyknICUgKHNlbGYub2JqY19lbnVtX25hbWVfZm9yX25vbl9hbm9u
eW1vdXNfZW51bShtZW1iZXIudHlwZSksIHN1Yl9leHByZXNzaW9uKQogICAgICAgICAgICAgcmV0
dXJuIHN1Yl9leHByZXNzaW9uCiAgICAgICAgIGlmIGNhdGVnb3J5IGlzIE9iakNUeXBlQ2F0ZWdv
cnkuT2JqZWN0OgotICAgICAgICAgICAgb2JqY190eXBlID0gT2JqQ0dlbmVyYXRvci5vYmpjX3R5
cGVfZm9yX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVyKQorICAgICAgICAgICAgb2JqY190eXBl
ID0gc2VsZi5vYmpjX3R5cGVfZm9yX21lbWJlcihkZWNsYXJhdGlvbiwgbWVtYmVyKQogICAgICAg
ICAgICAgcmV0dXJuICcoJXMpJXMnICUgKG9iamNfdHlwZSwgc3ViX2V4cHJlc3Npb24pCiAgICAg
ICAgIGlmIGNhdGVnb3J5IGlzIE9iakNUeXBlQ2F0ZWdvcnkuQXJyYXk6CiAgICAgICAgICAgICBw
cm90b2NvbF90eXBlID0gT2JqQ0dlbmVyYXRvci5wcm90b2NvbF90eXBlX2Zvcl90eXBlKG1lbWJl
ci50eXBlLmVsZW1lbnRfdHlwZSkKLSAgICAgICAgICAgIG9iamNfY2xhc3MgPSBPYmpDR2VuZXJh
dG9yLm9iamNfY2xhc3NfZm9yX3R5cGUobWVtYmVyLnR5cGUuZWxlbWVudF90eXBlKQorICAgICAg
ICAgICAgb2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZShtZW1iZXIudHlwZS5l
bGVtZW50X3R5cGUpCiAgICAgICAgICAgICBpZiBvYmpjX2NsYXNzIGlzICdOU1N0cmluZyc6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuICdvYmpjU3RyaW5nQXJyYXkoJXMpJyAlIHN1Yl9leHByZXNz
aW9uCiAgICAgICAgICAgICBpZiBvYmpjX2NsYXNzIGlzICdOU051bWJlcic6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggMGU2NDA0ZDlhOTY3YmJjZDg2YzJmNzU3
M2YyZDQxMDRlMTE0ZTlmYi4uMDdhMWM2OTExM2E4NWNiN2ExMzY2N2IwNzliYTYwZmRiYTkxNDdj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtODAxLDcgKzgw
MSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAjIyMgRW5k
IEZpbGU6IEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IFJX
SVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9j
b2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTgzNSwyNyArODM1LDI3IEBAIFN0cmlu
ZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAotQHByb3RvY29sIFJXSVByb3RvY29sRGF0YWJhc2VEb21haW5IYW5k
bGVyOworQHByb3RvY29sIFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcjsKIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAKIAogY2xhc3MgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6Ci0gICAgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXIoaWQ8UldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxl
Z2F0ZSA9IGhhbmRsZXI7IH0KKyAgICBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcihpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9k
ZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRp
b25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0
IFN0cmluZyYgaW5fcXVlcnkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FM
QXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJZCwgaW50IGluX2RhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0
cmluZyYgaW5fcXVlcnkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5
bmMobG9uZyByZXF1ZXN0SWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1
ZXJ5KSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPGlkPFJXSVByb3RvY29sRGF0
YWJhc2VEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8aWQ8VGVzdFBy
b3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3Bh
dGNoZXJzLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgK
IAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5tbQorIyMjIEJlZ2lu
IEZpbGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04ODcsMTAgKzg4
NywxMCBAQCBwcml2YXRlOgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5w
eQogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQ29uZmlndXJhdGlv
bi5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5oIgogCi0jaW1wb3J0ICJS
V0lQcm90b2NvbEludGVybmFsLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRj
aGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKKyNpbXBvcnQgIlRlc3RQ
cm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CkBAIC04OTgsMTAgKzg5OCwxMCBA
QCBwcml2YXRlOgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1AaW1wbGVtZW50YXRp
b24gUldJUHJvdG9jb2xDb25maWd1cmF0aW9uCitAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29s
Q29uZmlndXJhdGlvbgogewogICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciogX2Nv
bnRyb2xsZXI7Ci0gICAgaWQ8UldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IF9kYXRh
YmFzZUhhbmRsZXI7CisgICAgaWQ8VGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiBf
ZGF0YWJhc2VIYW5kbGVyOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250cm9sbGVy
OihBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqKWNvbnRyb2xsZXIKQEAgLTkyMCw3ICs5
MjAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAotLSAodm9pZClzZXREYXRhYmFzZUhhbmRsZXI6KGlkPFJXSVByb3RvY29sRGF0YWJhc2VE
b21haW5IYW5kbGVyPiloYW5kbGVyCistICh2b2lkKXNldERhdGFiYXNlSGFuZGxlcjooaWQ8VGVz
dFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiloYW5kbGVyCiB7CiAgICAgaWYgKGhhbmRs
ZXIgPT0gX2RhdGFiYXNlSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwpAQCAtOTMzLDcgKzkzMyw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4
dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCi0tIChpZDxSV0lQcm90b2Nv
bERhdGFiYXNlRG9tYWluSGFuZGxlcj4pZGF0YWJhc2VIYW5kbGVyCistIChpZDxUZXN0UHJvdG9j
b2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+KWRhdGFiYXNlSGFuZGxlcgogewogICAgIHJldHVybiBf
ZGF0YWJhc2VIYW5kbGVyOwogfQpAQCAtOTQxLDkgKzk0MSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRp
b24ubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5tbQogCi0jIyMg
QmVnaW4gRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBCZWdpbiBGaWxlOiBU
ZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05NzQsMTcgKzk3NCwxNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lt
cG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sLmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3Iv
VGVzdFByb3RvY29sLmg+CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0Iikp
KQotQGludGVyZmFjZSBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24gOiBOU09iamVjdAotQHByb3Bl
cnR5IChub25hdG9taWMsIHJldGFpbiwgc2V0dGVyPXNldERhdGFiYXNlSGFuZGxlcjopIGlkPFJX
SVByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiBkYXRhYmFzZUhhbmRsZXI7CitAaW50ZXJm
YWNlIFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24gOiBOU09iamVjdAorQHByb3BlcnR5IChub25h
dG9taWMsIHJldGFpbiwgc2V0dGVyPXNldERhdGFiYXNlSGFuZGxlcjopIGlkPFRlc3RQcm90b2Nv
bERhdGFiYXNlRG9tYWluSGFuZGxlcj4gZGF0YWJhc2VIYW5kbGVyOwogQGVuZAogCiAKLSMjIyBF
bmQgRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBFbmQgRmlsZTogVGVzdFBy
b3RvY29sQ29uZmlndXJhdGlvbi5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEJhY2tl
bmREaXNwYXRjaGVycy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNw
YXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEwMTYsMTAgKzEwMTYsMTAgQEAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJp
bmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVy
cy5oIgogCi0jaW5jbHVkZSAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgotI2luY2x1ZGUgIlJXSVBy
b3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiVGVzdFByb3RvY29sSW50
ZXJuYWwuaCIKKyNpbmNsdWRlICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
KAogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUGVuZGluZ0Vycm9ycygpOwogICAg
IH07CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
KmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJv
dG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2Fk
LCBpbnQgKmRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBS
V0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVT
UUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSB7CisgICAg
aWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1l
cywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFByb3RvY29sSlNPTk9iamVj
dCAqKnZhbHVlcywgUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlk
LCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFs
dGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5zcGVj
dG9yT2JqZWN0PiByZXN1bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
ICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoY29sdW1uTmFt
ZXMsIEAiY29sdW1uTmFtZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BU
SU9OQUxfUEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CkBAIC0xMDc1LDcgKzEwNzUsNyBAQCB2
b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlcwogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5k
UGVuZGluZ0Vycm9ycygpOwogICAgIH07CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5T
QXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3Vi
bGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2Nv
bEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJh
c2VFcnJvciAqKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2Ny
ZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgUldJUHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xv
ciAqcHJpbnRDb2xvcikgeworICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5T
U3RyaW5nPiovICoqY29sdW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0
YW1wLCBQcm90b2NvbEpTT05PYmplY3QgKip2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqKnBh
eWxvYWQsIGludCAqZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVy
cm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9y
KSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElP
TkFMX1BBUkFNRVRFUihjb2x1bW5OYW1lcywgQCJjb2x1bW5OYW1lcyIpOwogICAgICAgICBUSFJP
V19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIobm90ZXMsIEAibm90ZXMiKTsK
QEAgLTExMTksNyArMTExOSw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jKGxvbmcgcmVxdWVzdElkLCBpbnQKICAgICAgICAgYmFj
a2VuZERpc3BhdGNoZXIoKS0+c2VuZFBlbmRpbmdFcnJvcnMoKTsKICAgICB9OwogCi0gICAgaWQg
c3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBO
U1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAq
dmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBS
V0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
KmFsdGVybmF0ZUNvbG9ycywgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVu
Q29sb3IsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3IgcHJpbnRD
b2xvcikgeworICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiov
ICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBQcm90b2Nv
bEpTT05PYmplY3QgKnZhbHVlcywgUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0
YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlD
b2xvcnMgc2NyZWVuQ29sb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmlu
dENvbG9yIHByaW50Q29sb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIoY29sdW1uTmFtZXMsIEAiY29sdW1uTmFtZXMiKTsK
ICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIobm90ZXMsIEAi
bm90ZXMiKTsKQEAgLTExNTMsNyArMTE1Myw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIHJlcXVlc3RJZCwgaW50CiAg
ICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgfTsK
IAotICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1
bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpT
T05PYmplY3QgKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0
YWJhc2VJZCwgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgUldJUHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
YWx0ZXJuYXRlQ29sb3JzLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRD
b2xvciBwcmludENvbG9yKSB7CisgICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3Rh
bXAsIFByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3QgKnBheWxv
YWQsIGludCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwg
VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMQXN5bmNQcmludENvbG9yIHByaW50Q29sb3IpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9i
amVjdD4gcmVzdWx0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAg
VEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIoY29sdW1uTmFtZXMsIEAiY29s
dW1uTmFtZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVU
RVIobm90ZXMsIEAibm90ZXMiKTsKQEAgLTExODMsOSArMTE4Myw5IEBAIHZvaWQgT2JqQ0luc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIHJlcXVl
c3RJZCwgaW50CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJX
SVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bEJhY2tlbmREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xFbnVt
Q29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252
ZXJzaW9uSGVscGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgdm9pZCBPYmpDSW5z
cGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgcmVx
dWVzdElkLCBpbnQKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCiAvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3Rv
Y29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlD
b252ZXJzaW9uSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtMTIyNCwx
NTIgKzEyMjQsMTUyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KIE9iakNFbnVt
VHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAotaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3Jz
IHZhbHVlKQoraW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycyB2YWx1ZSkKIHsKICAgICBzd2l0Y2godmFsdWUpIHsKLSAgICBjYXNl
IFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOgorICAgIGNhc2UgVGVzdFByb3Rv
Y29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJyZWQiKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzR3JlZW46
CisgICAgY2FzZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNHcmVlbjoKICAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZ3JlZW4iKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzQmx1ZToKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9yc0JsdWU6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImJsdWUiKTsKICAg
ICB9CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNv
bG9ycyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBUZXN0
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJyZWQiKQotICAgICAgICByZXR1cm4g
UldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CisgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CiAgICAgaWYgKHZhbHVlID09ICJncmVl
biIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0dyZWVu
OworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzR3JlZW47
CiAgICAgaWYgKHZhbHVlID09ICJibHVlIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzQmx1ZTsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9yc0JsdWU7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOworICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CiB9CiAKLWlubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJl
dHVyblZhbHVlc1ByaW50Q29sb3IgdmFsdWUpCitpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
UHJpbnRDb2xvciB2YWx1ZSkKIHsKICAgICBzd2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFJXSVBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xv
ckN5YW46CisgICAgY2FzZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9u
YWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lhbjoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiY3lhbiIpOwotICAgIGNhc2UgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yTWFnZW50YToKKyAgICBjYXNlIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JNYWdl
bnRhOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJtYWdlbnRhIik7Ci0gICAgY2FzZSBS
V0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50
Q29sb3JZZWxsb3c6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yWWVsbG93OgogICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJ5ZWxsb3ciKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckJsYWNrOgorICAgIGNhc2UgVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRD
b2xvckJsYWNrOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJibGFjayIpOwogICAgIH0K
IH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK2lubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCi0gICAgICAgIHJldHVy
biBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1By
aW50Q29sb3JDeWFuOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckN5YW47CiAgICAgaWYgKHZhbHVl
ID09ICJtYWdlbnRhIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvck1hZ2VudGE7CisgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNQcmludENvbG9yTWFnZW50YTsKICAgICBpZiAodmFsdWUgPT0gInllbGxvdyIpCi0gICAgICAg
IHJldHVybiBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZh
bHVlc1ByaW50Q29sb3JZZWxsb3c7CisgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yWWVsbG93OwogICAg
IGlmICh2YWx1ZSA9PSAiYmxhY2siKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQmxhY2s7CisgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXNQcmludENvbG9yQmxhY2s7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzUHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JDeWFuOwogfQogCi1pbmxpbmUg
U3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciB2YWx1ZSkKK2lubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzUHJpbnRDb2xvciB2YWx1ZSkKIHsKICAgICBzd2l0Y2godmFsdWUpIHsKLSAg
ICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZh
bHVlc1ByaW50Q29sb3JDeWFuOgorICAgIGNhc2UgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JDeWFuOgogICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJjeWFuIik7Ci0gICAgY2FzZSBSV0lQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yTWFnZW50YToKKyAgICBj
YXNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNQcmludENvbG9yTWFnZW50YToKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibWFnZW50
YSIpOwotICAgIGNhc2UgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzUHJpbnRDb2xvclllbGxvdzoKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yWWVsbG93Ogog
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ5ZWxsb3ciKTsKLSAgICBjYXNlIFJXSVByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JC
bGFjazoKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9u
YWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQmxhY2s6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoImJsYWNrIik7CiAgICAgfQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgUldJUHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0g
ImN5YW4iKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckN5YW47CisgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRD
b2xvckN5YW47CiAgICAgaWYgKHZhbHVlID09ICJtYWdlbnRhIikKLSAgICAgICAgcmV0dXJuIFJX
SVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50
Q29sb3JNYWdlbnRhOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JNYWdlbnRhOwogICAgIGlmICh2
YWx1ZSA9PSAieWVsbG93IikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVj
dXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JZZWxsb3c7CisgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKLSAgICAg
ICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
blZhbHVlc1ByaW50Q29sb3JCbGFjazsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQmxhY2s7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JDeWFuOworICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzUHJpbnRDb2xvckN5YW47CiB9CiAKLWlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhS
V0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIHZhbHVlKQoraW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5
bmNQcmludENvbG9yIHZhbHVlKQogewogICAgIHN3aXRjaCh2YWx1ZSkgewotICAgIGNhc2UgUldJ
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckN5YW46CisgICAgY2FzZSBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckN5YW46CiAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoImN5YW4iKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JNYWdlbnRhOgorICAgIGNhc2UgVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JNYWdlbnRhOgogICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJtYWdlbnRhIik7Ci0gICAgY2FzZSBSV0lQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTFN5bmNQcmludENvbG9yWWVsbG93OgorICAgIGNhc2UgVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JZZWxsb3c6CiAgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoInllbGxvdyIpOwotICAgIGNhc2UgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxT
eW5jUHJpbnRDb2xvckJsYWNrOgorICAgIGNhc2UgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMU3luY1ByaW50Q29sb3JCbGFjazoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYmxh
Y2siKTsKICAgICB9CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBSV0lQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQoraW5saW5lIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENv
bG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA9PSAiY3lhbiIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZVNRTFN5bmNQcmludENvbG9yQ3lhbjsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yQ3lhbjsKICAgICBpZiAodmFsdWUgPT0gIm1hZ2Vu
dGEiKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJp
bnRDb2xvck1hZ2VudGE7CisgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVTUUxTeW5jUHJpbnRDb2xvck1hZ2VudGE7CiAgICAgaWYgKHZhbHVlID09ICJ5ZWxsb3ciKQot
ICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xv
clllbGxvdzsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5
bmNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQotICAgICAgICBy
ZXR1cm4gUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckJsYWNrOwor
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29s
b3JCbGFjazsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUldJUHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckN5YW47CisgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yQ3lhbjsKIH0KIAotaW5saW5l
IFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5
bmNQcmludENvbG9yIHZhbHVlKQoraW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciB2YWx1ZSkKIHsKICAgICBz
d2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5
bmNQcmludENvbG9yQ3lhbjoKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNR
TEFzeW5jUHJpbnRDb2xvckN5YW46CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImN5YW4i
KTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9y
TWFnZW50YToKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJp
bnRDb2xvck1hZ2VudGE6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm1hZ2VudGEiKTsK
LSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yWWVs
bG93OgorICAgIGNhc2UgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENv
bG9yWWVsbG93OgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ5ZWxsb3ciKTsKLSAgICBj
YXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yQmxhY2s6Cisg
ICAgY2FzZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JCbGFj
azoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYmxhY2siKTsKICAgICB9CiB9CiAKIHRl
bXBsYXRlPD4KLWlubGluZSBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRD
b2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKLSAg
ICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9y
Q3lhbjsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5j
UHJpbnRDb2xvckN5YW47CiAgICAgaWYgKHZhbHVlID09ICJtYWdlbnRhIikKLSAgICAgICAgcmV0
dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yTWFnZW50YTsK
KyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRD
b2xvck1hZ2VudGE7CiAgICAgaWYgKHZhbHVlID09ICJ5ZWxsb3ciKQotICAgICAgICByZXR1cm4g
UldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JZZWxsb3c7CisgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JZ
ZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCi0gICAgICAgIHJldHVybiBSV0lQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvckJsYWNrOworICAgICAgICByZXR1
cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yQmxhY2s7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMQXN5bmNQcmludENvbG9yQ3lhbjsKKyAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yQ3lhbjsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SW5zcGVjdG9yCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBl
cnMuaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAog
Ci0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCisjIyMgQmVn
aW4gRmlsZTogVGVzdFByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTE0MDEs
OSArMTQwMSw5IEBAIGlubGluZSBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJp
bnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyCiAvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJ
UHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAot
I2ltcG9ydCAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRl
c3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC0x
NDExLDkgKzE0MTEsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAotIyMjIEVu
ZCBGaWxlOiBSV0lQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKyMjIyBFbmQgRmlsZTogVGVz
dFByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9j
b2wuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTQ0Niw2OCAr
MTQ0Niw2OCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNP
Tk9iamVjdC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3Qu
aD4KIAogCi1AY2xhc3MgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yOworQGNsYXNzIFRlc3RQcm90
b2NvbERhdGFiYXNlRXJyb3I7CiAKIAotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMpIHsKLSAgICBSV0lQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9yc1JlZCwKLSAgICBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0dyZWVu
LAotICAgIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzQmx1ZSwKK3R5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycykgeworICAg
IFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc1JlZCwKKyAgICBUZXN0UHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnNHcmVlbiwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnNCbHVlLAogfTsKIAotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yKSB7
Ci0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNQcmludENvbG9yQ3lhbiwKLSAgICBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNP
cHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JNYWdlbnRhLAotICAgIFJXSVByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvclllbGxvdywK
LSAgICBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVl
c1ByaW50Q29sb3JCbGFjaywKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IpIHsK
KyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNQcmludENvbG9yQ3lhbiwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yTWFnZW50YSwKKyAgICBUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yWWVsbG93
LAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZh
bHVlc1ByaW50Q29sb3JCbGFjaywKIH07CiAKLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJX
SVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50
Q29sb3IpIHsKLSAgICBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lhbiwKLSAgICBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yTWFnZW50YSwKLSAgICBSV0lQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENv
bG9yWWVsbG93LAotICAgIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25h
bFJldHVyblZhbHVlc1ByaW50Q29sb3JCbGFjaywKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQ
cmludENvbG9yKSB7CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRp
b25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JDeWFuLAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yTWFnZW50YSwKKyAg
ICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVz
UHJpbnRDb2xvclllbGxvdywKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckJsYWNrLAogfTsKIAotdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xv
cikgewotICAgIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JDeWFu
LAotICAgIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JNYWdlbnRh
LAotICAgIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JZZWxsb3cs
Ci0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckJsYWNrLAor
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FM
U3luY1ByaW50Q29sb3IpIHsKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5j
UHJpbnRDb2xvckN5YW4sCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1By
aW50Q29sb3JNYWdlbnRhLAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQ
cmludENvbG9yWWVsbG93LAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQ
cmludENvbG9yQmxhY2ssCiB9OwogCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSV0lQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvcikgewotICAgIFJXSVByb3RvY29s
RGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yQ3lhbiwKLSAgICBSV0lQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvck1hZ2VudGEsCi0gICAgUldJUHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JZZWxsb3csCi0gICAgUldJUHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JCbGFjaywKK3R5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvcikg
eworICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvckN5YW4s
CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yTWFnZW50
YSwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JZZWxs
b3csCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yQmxh
Y2ssCiB9OwogCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGlu
dGVyZmFjZSBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QK
K0BpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFByb3RvY29sSlNPTk9iamVj
dAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNv
ZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMs
IGFzc2lnbikgaW50IGNvZGU7CiBAZW5kCiAKLUBwcm90b2NvbCBSV0lQcm90b2NvbERhdGFiYXNl
RG9tYWluSGFuZGxlciA8TlNPYmplY3Q+CitAcHJvdG9jb2wgVGVzdFByb3RvY29sRGF0YWJhc2VE
b21haW5IYW5kbGVyIDxOU09iamVjdD4KIEByZXF1aXJlZAotLSAodm9pZClleGVjdXRlU1FMU3lu
Y09wdGlvbmFsUmV0dXJuVmFsdWVzV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcg
KmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1l
c3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3Ig
KipzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9y
LCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFJXSVByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJpbnRD
b2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFiYXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5OihO
U1N0cmluZyAqKXF1ZXJ5OwotLSAodm9pZClleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZh
bHVlc1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29s
dW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBSV0lQcm90b2Nv
bEpTT05PYmplY3QgKip2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGlu
dCAqZGF0YWJhc2VJZCwgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFJXSVBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3Ry
aW5nPiovICoqYWx0ZXJuYXRlQ29sb3JzLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFz
eW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNjZXNzQ2Fs
bGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICopcXVlcnk7
Ci0tICh2b2lkKWV4ZWN1dGVTUUxTeW5jV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJp
bmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1l
c3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNx
bEVycm9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgUldJUHJvdG9j
b2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIFJXSVByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMU3luY1ByaW50Q29sb3IgcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFi
YXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5OihOU1N0cmluZyAqKXF1ZXJ5OwotLSAodm9pZCll
eGVjdXRlU1FMQXN5bmNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3Ip
KWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9h
ZCwgaW50IGRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFJX
SVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxB
c3luY1ByaW50Q29sb3IgcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFiYXNlSWQ6KGlu
dClkYXRhYmFzZUlkIHF1ZXJ5OihOU1N0cmluZyAqKXF1ZXJ5OworLSAodm9pZClleGVjdXRlU1FM
U3luY09wdGlvbmFsUmV0dXJuVmFsdWVzV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJp
bmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0
aW1lc3RhbXAsIFByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUHJvdG9jb2xKU09OT2JqZWN0
ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoq
c3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3Is
IE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJpbnRD
b2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFiYXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5OihO
U1N0cmluZyAqKXF1ZXJ5OworLSAodm9pZClleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZh
bHVlc1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29s
dW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBQcm90b2NvbEpT
T05PYmplY3QgKip2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGludCAqZGF0
YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBUZXN0UHJvdG9j
b2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+
Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5j
T3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNjZXNzQ2FsbGJh
Y2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICopcXVlcnk7Cist
ICh2b2lkKWV4ZWN1dGVTUUxTeW5jV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcg
KmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3Rh
bXAsIFByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3QgKnBheWxv
YWQsIGludCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwg
TlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycyBzY3JlZW5Db2xvciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMU3luY1ByaW50Q29sb3IgcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFiYXNlSWQ6
KGludClkYXRhYmFzZUlkIHF1ZXJ5OihOU1N0cmluZyAqKXF1ZXJ5OworLSAodm9pZClleGVjdXRl
U1FMQXN5bmNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9y
Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
Y29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUHJvdG9jb2xK
U09OT2JqZWN0ICp2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFi
YXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
YWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50
Q29sb3IgcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGRhdGFiYXNlSWQ6KGludClkYXRhYmFz
ZUlkIHF1ZXJ5OihOU1N0cmluZyAqKXF1ZXJ5OwogQGVuZAogCiAKIAogCi0jIyMgRW5kIEZpbGU6
IFJXSVByb3RvY29sLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sLmgKIAotIyMjIEJlZ2lu
IEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2Nv
bEludGVybmFsLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xNTM4LDE3ICsxNTM4LDE3IEBAIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lt
cG9ydCAiUldJUHJvdG9jb2wuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVy
bmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpT
T05PYmplY3RJbnRlcm5hbC5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JW
YWx1ZXMuaD4KIAogCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKyMj
IyBFbmQgRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJ
UHJvdG9jb2xUeXBlcy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgpAQCAtMTU4MCwxNiArMTU4MCwxNiBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAog
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCisjaW1w
b3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJSV0lQcm90b2NvbEVudW1D
b252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IAotQGltcGxlbWVudGF0aW9uIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvcgorQGltcGxlbWVudGF0
aW9uIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
TWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogewpAQCAtMTYyOCw0
ICsxNjI4LDQgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIEBlbmQKIAogCi0jIyMgRW5k
IEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlw
ZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGYwYzRjMWViMGIzMmM0ZGQ2NmYwODkxM2IyMWQ4YWRj
NjkxNjQ2NzIuLjZjYzk0MDE5NzQ3YTY0YjdkY2UyYWJkZDFkYTJlMDlhYWQ3NjAyY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5q
c29uLXJlc3VsdApAQCAtNzAyLDcgKzcwMiw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1
ZShpbnQgY29kZSkgewogCiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5j
cHAKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKKyMj
IyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAg
LTczNiwyNSArNzM2LDI1IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkg
ewogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNw
YXRjaGVycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQHByb3RvY29sIFJXSVBy
b3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyOworQHByb3RvY29sIFRlc3RQcm90b2NvbERhdGFi
YXNlRG9tYWluSGFuZGxlcjsKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIAogY2xhc3MgT2Jq
Q0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJu
YXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgT2JqQ0luc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIoaWQ8UldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkhh
bmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KKyAgICBPYmpDSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFp
bkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlcXVlc3RJZCwgY29uc3Qg
SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyog
aW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
KiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xv
ciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXkmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVz
LCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYg
aW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9k
YXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaW5fc3FsRXJyb3Is
IGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSBv
dmVycmlkZTsKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPGlkPFJXSVByb3RvY29sRGF0YWJhc2VE
b21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8aWQ8VGVzdFByb3RvY29s
RGF0YWJhc2VEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJz
LmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKIAotIyMj
IEJlZ2luIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5tbQorIyMjIEJlZ2luIEZpbGU6
IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03ODYsMTAgKzc4NiwxMCBA
QCBwcml2YXRlOgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAj
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oIgor
I2ltcG9ydCAiVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5oIgogCi0jaW1wb3J0ICJSV0lQcm90
b2NvbEludGVybmFsLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5o
IgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2Nv
bEJhY2tlbmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CkBAIC03OTcsMTAgKzc5NywxMCBAQCBwcml2
YXRlOgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1AaW1wbGVtZW50YXRpb24gUldJ
UHJvdG9jb2xDb25maWd1cmF0aW9uCitAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sQ29uZmln
dXJhdGlvbgogewogICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciogX2NvbnRyb2xs
ZXI7Ci0gICAgaWQ8UldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IF9kYXRhYmFzZUhh
bmRsZXI7CisgICAgaWQ8VGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiBfZGF0YWJh
c2VIYW5kbGVyOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250cm9sbGVyOihBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqKWNvbnRyb2xsZXIKQEAgLTgxOSw3ICs4MTksNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAot
LSAodm9pZClzZXREYXRhYmFzZUhhbmRsZXI6KGlkPFJXSVByb3RvY29sRGF0YWJhc2VEb21haW5I
YW5kbGVyPiloYW5kbGVyCistICh2b2lkKXNldERhdGFiYXNlSGFuZGxlcjooaWQ8VGVzdFByb3Rv
Y29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiloYW5kbGVyCiB7CiAgICAgaWYgKGhhbmRsZXIgPT0g
X2RhdGFiYXNlSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwpAQCAtODMyLDcgKzgzMiw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdl
bnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCi0tIChpZDxSV0lQcm90b2NvbERhdGFi
YXNlRG9tYWluSGFuZGxlcj4pZGF0YWJhc2VIYW5kbGVyCistIChpZDxUZXN0UHJvdG9jb2xEYXRh
YmFzZURvbWFpbkhhbmRsZXI+KWRhdGFiYXNlSGFuZGxlcgogewogICAgIHJldHVybiBfZGF0YWJh
c2VIYW5kbGVyOwogfQpAQCAtODQwLDkgKzg0MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0K
KyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5tbQogCi0jIyMgQmVnaW4g
RmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJv
dG9jb2xDb25maWd1cmF0aW9uLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04NzMsMTcgKzg3MywxNyBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRv
bWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1
cm4tcGFyYW1ldGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CiAKLSNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbC5oPgorI2ltcG9ydCA8V2Vi
SW5zcGVjdG9yL1Rlc3RQcm90b2NvbC5oPgogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgUldJUHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmpl
Y3QKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHNldHRlcj1zZXREYXRhYmFzZUhhbmRs
ZXI6KSBpZDxSV0lQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcj4gZGF0YWJhc2VIYW5kbGVy
OworQGludGVyZmFjZSBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHNldHRlcj1zZXREYXRhYmFzZUhhbmRsZXI6KSBpZDxU
ZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IGRhdGFiYXNlSGFuZGxlcjsKIEBlbmQK
IAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oCisjIyMgRW5kIEZp
bGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24uaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJv
dG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xC
YWNrZW5kRGlzcGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05MTUsMTAgKzkxNSwxMCBAQCBfX2F0dHJp
YnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90
b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERp
c3BhdGNoZXJzLmgiCiAKLSNpbmNsdWRlICJSV0lQcm90b2NvbEludGVybmFsLmgiCi0jaW5jbHVk
ZSAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJUZXN0UHJv
dG9jb2xJbnRlcm5hbC5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVs
cGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIE9iakNJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJz
KGxvbmcgcgogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUGVuZGluZ0Vycm9ycygp
OwogICAgIH07CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipw
YXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVy
cm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgUldJUHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yICpwcmludENvbG9yKSB7CisgICAg
aWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1l
cywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFByb3RvY29sSlNPTk9iamVj
dCAqKnZhbHVlcywgUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlk
LCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFs
dGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiByZXN1bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBU
SFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoY29sdW1uTmFtZXMsIEAi
Y29sdW1uTmFtZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxf
UEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CkBAIC05NzAsMjcgKzk3MCwyNyBAQCB2b2lkIE9i
akNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzKGxvbmcgcgogICAgIGRvdWJsZSBvX2luX3RpbWVzdGFtcDsKICAgICBpZiAoaW5f
dGltZXN0YW1wKQogICAgICAgICBvX2luX3RpbWVzdGFtcCA9ICppbl90aW1lc3RhbXA7Ci0gICAg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3ZhbHVlczsKKyAgICBQcm90b2NvbEpTT05PYmpl
Y3QgKm9faW5fdmFsdWVzOwogICAgIGlmIChpbl92YWx1ZXMpCi0gICAgICAgIG9faW5fdmFsdWVz
ID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVj
dDppbl92YWx1ZXNdIGF1dG9yZWxlYXNlXTsKLSAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9f
aW5fcGF5bG9hZDsKKyAgICAgICAgb19pbl92YWx1ZXMgPSBbW1tQcm90b2NvbEpTT05PYmplY3Qg
YWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3ZhbHVlc10gYXV0b3JlbGVhc2VdOwor
ICAgIFByb3RvY29sSlNPTk9iamVjdCAqb19pbl9wYXlsb2FkOwogICAgIGlmIChpbl9wYXlsb2Fk
KQotICAgICAgICBvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2Nd
IGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3BheWxvYWRdIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgb19pbl9wYXlsb2FkID0gW1tbUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aElu
c3BlY3Rvck9iamVjdDppbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CiAgICAgaW50IG9faW5fZGF0
YWJhc2VJZDsKICAgICBpZiAoaW5fZGF0YWJhc2VJZCkKICAgICAgICAgb19pbl9kYXRhYmFzZUlk
ID0gKmluX2RhdGFiYXNlSWQ7Ci0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICpvX2luX3Nx
bEVycm9yOworICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3I7CiAg
ICAgaWYgKGluX3NxbEVycm9yKQotICAgICAgICBvX2luX3NxbEVycm9yID0gW1tbUldJUHJvdG9j
b2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl9zcWxFcnJv
cl0gYXV0b3JlbGVhc2VdOwotICAgIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIG9f
aW5fc2NyZWVuQ29sb3I7CisgICAgICAgIG9faW5fc3FsRXJyb3IgPSBbW1tUZXN0UHJvdG9jb2xE
YXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl9zcWxFcnJvcl0g
YXV0b3JlbGVhc2VdOworICAgIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBvX2lu
X3NjcmVlbkNvbG9yOwogICAgIGlmIChpbl9zY3JlZW5Db2xvcikKLSAgICAgICAgb19pbl9zY3Jl
ZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNv
bG9ycz4oKmluX3NjcmVlbkNvbG9yKTsKKyAgICAgICAgb19pbl9zY3JlZW5Db2xvciA9IGZyb21Q
cm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KCppbl9zY3Jl
ZW5Db2xvcik7CiAgICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX2FsdGVybmF0ZUNvbG9y
czsKICAgICBpZiAoaW5fYWx0ZXJuYXRlQ29sb3JzKQogICAgICAgICBvX2luX2FsdGVybmF0ZUNv
bG9ycyA9IG9iamNTdHJpbmdBcnJheShpbl9hbHRlcm5hdGVDb2xvcnMpOwotICAgIFJXSVByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBvX2luX3By
aW50Q29sb3I7CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvciBvX2luX3ByaW50Q29sb3I7CiAgICAgaWYgKGluX3ByaW50Q29sb3Ip
Ci0gICAgICAgIG9faW5fcHJpbnRDb2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxSV0lQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+KCppbl9wcmlu
dENvbG9yKTsKKyAgICAgICAgb19pbl9wcmludENvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+
KCppbl9wcmludENvbG9yKTsKIAogICAgIFttX2RlbGVnYXRlIGV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazplcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazpz
dWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6KGluX2NvbHVtbk5hbWVzID8gJm9faW5fY29sdW1u
TmFtZXMgOiBuaWwpIG5vdGVzOihpbl9ub3RlcyA/ICZvX2luX25vdGVzIDogbmlsKSB0aW1lc3Rh
bXA6KGluX3RpbWVzdGFtcCA/ICZvX2luX3RpbWVzdGFtcCA6IG5pbCkgdmFsdWVzOihpbl92YWx1
ZXMgPyAmb19pbl92YWx1ZXMgOiBuaWwpIHBheWxvYWQ6KGluX3BheWxvYWQgPyAmb19pbl9wYXls
b2FkIDogbmlsKSBkYXRhYmFzZUlkOihpbl9kYXRhYmFzZUlkID8gJm9faW5fZGF0YWJhc2VJZCA6
IG5pbCkgc3FsRXJyb3I6KGluX3NxbEVycm9yID8gJm9faW5fc3FsRXJyb3IgOiBuaWwpIHNjcmVl
bkNvbG9yOihpbl9zY3JlZW5Db2xvciA/ICZvX2luX3NjcmVlbkNvbG9yIDogbmlsKSBhbHRlcm5h
dGVDb2xvcnM6KGluX2FsdGVybmF0ZUNvbG9ycyA/ICZvX2luX2FsdGVybmF0ZUNvbG9ycyA6IG5p
bCkgcHJpbnRDb2xvcjooaW5fcHJpbnRDb2xvciA/ICZvX2luX3ByaW50Q29sb3IgOiBuaWwpXTsK
IH0KQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlCiAgICAgICAg
IGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgfTsKIAotICAg
IGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1l
cywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJ
ZCwgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFz
ZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJu
YXRlQ29sb3JzLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
UHJpbnRDb2xvciBwcmludENvbG9yKSB7CisgICAgaWQgc3VjY2Vzc0NhbGxiYWNrID0gXihOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0
aW1lc3RhbXAsIFByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBQcm90b2NvbEpTT05PYmplY3Qg
KnBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxF
cnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIHByaW50Q29sb3IpIHsKICAgICAg
ICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIo
Y29sdW1uTmFtZXMsIEAiY29sdW1uTmFtZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9SRVFVSVJFRF9QQVJBTUVURVIobm90ZXMsIEAibm90ZXMiKTsKQEAgLTEwMjYsMTMgKzEwMjYs
MTMgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmUKICAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
Km9faW5fY29sdW1uTmFtZXMgPSBvYmpjU3RyaW5nQXJyYXkoJmluX2NvbHVtbk5hbWVzKTsKICAg
ICBOU1N0cmluZyAqb19pbl9ub3RlcyA9IGluX25vdGVzOwogICAgIGRvdWJsZSBvX2luX3RpbWVz
dGFtcCA9IGluX3RpbWVzdGFtcDsKLSAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fdmFs
dWVzID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9i
amVjdDomaW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07Ci0gICAgUldJUHJvdG9jb2xKU09OT2JqZWN0
ICpvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRo
SW5zcGVjdG9yT2JqZWN0OiZpbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CisgICAgUHJvdG9jb2xK
U09OT2JqZWN0ICpvX2luX3ZhbHVlcyA9IFtbW1Byb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5p
dFdpdGhJbnNwZWN0b3JPYmplY3Q6JmluX3ZhbHVlc10gYXV0b3JlbGVhc2VdOworICAgIFByb3Rv
Y29sSlNPTk9iamVjdCAqb19pbl9wYXlsb2FkID0gW1tbUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9j
XSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDomaW5fcGF5bG9hZF0gYXV0b3JlbGVhc2VdOwogICAg
IGludCBvX2luX2RhdGFiYXNlSWQgPSBpbl9kYXRhYmFzZUlkOwotICAgIFJXSVByb3RvY29sRGF0
YWJhc2VFcnJvciAqb19pbl9zcWxFcnJvciA9IFtbW1JXSVByb3RvY29sRGF0YWJhc2VFcnJvciBh
bGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6JmluX3NxbEVycm9yXSBhdXRvcmVsZWFzZV07
Ci0gICAgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgb19pbl9zY3JlZW5Db2xvciA9
IGZyb21Qcm90b2NvbFN0cmluZzxSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oaW5f
c2NyZWVuQ29sb3IpOworICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJy
b3IgPSBbW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rv
ck9iamVjdDomaW5fc3FsRXJyb3JdIGF1dG9yZWxlYXNlXTsKKyAgICBUZXN0UHJvdG9jb2xEYXRh
YmFzZVByaW1hcnlDb2xvcnMgb19pbl9zY3JlZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxU
ZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KGluX3NjcmVlbkNvbG9yKTsKICAgICBO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm9faW5fYWx0ZXJuYXRlQ29sb3JzID0gb2JqY1N0cmluZ0Fy
cmF5KCZpbl9hbHRlcm5hdGVDb2xvcnMpOwotICAgIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIG9faW5fcHJpbnRDb2xvciA9IGZyb21Qcm90
b2NvbFN0cmluZzxSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
UHJpbnRDb2xvcj4oaW5fcHJpbnRDb2xvcik7CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIG9faW5fcHJpbnRDb2xvciA9IGZyb21Q
cm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3I+KGluX3ByaW50Q29sb3IpOwogCiAgICAgW21fZGVsZWdhdGUgZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aEVycm9yQ2FsbGJhY2s6ZXJyb3JDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2s6c3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5hbWVzOm9faW5fY29sdW1uTmFtZXMg
bm90ZXM6b19pbl9ub3RlcyB0aW1lc3RhbXA6b19pbl90aW1lc3RhbXAgdmFsdWVzOm9faW5fdmFs
dWVzIHBheWxvYWQ6b19pbl9wYXlsb2FkIGRhdGFiYXNlSWQ6b19pbl9kYXRhYmFzZUlkIHNxbEVy
cm9yOm9faW5fc3FsRXJyb3Igc2NyZWVuQ29sb3I6b19pbl9zY3JlZW5Db2xvciBhbHRlcm5hdGVD
b2xvcnM6b19pbl9hbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjpvX2luX3ByaW50Q29sb3JdOwog
fQpAQCAtMTA0MCw5ICsxMDQwLDkgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5k
RGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmUKIAogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xCYWNrZW5kRGlz
cGF0Y2hlcnMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJz
Lm1tCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5o
CisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZQogLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNv
bW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uCiAvLyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29s
QXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlDb252
ZXJzaW9uSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtMTA4MSwxNTIg
KzEwODEsMTUyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KIE9iakNFbnVtVHlw
ZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIAotaW5saW5lIFN0
cmluZyB0b1Byb3RvY29sU3RyaW5nKFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHZh
bHVlKQoraW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNl
UHJpbWFyeUNvbG9ycyB2YWx1ZSkKIHsKICAgICBzd2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFJX
SVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOgorICAgIGNhc2UgVGVzdFByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJy
ZWQiKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzR3JlZW46Cisg
ICAgY2FzZSBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNHcmVlbjoKICAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiZ3JlZW4iKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzQmx1ZToKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFy
eUNvbG9yc0JsdWU6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImJsdWUiKTsKICAgICB9
CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBUZXN0UHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJyZWQiKQotICAgICAgICByZXR1cm4gUldJ
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CisgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CiAgICAgaWYgKHZhbHVlID09ICJncmVlbiIp
Ci0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0dyZWVuOwor
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzR3JlZW47CiAg
ICAgaWYgKHZhbHVlID09ICJibHVlIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzQmx1ZTsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNl
UHJpbWFyeUNvbG9yc0JsdWU7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkOworICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQ7CiB9CiAKLWlubGluZSBTdHJpbmcgdG9Qcm90
b2NvbFN0cmluZyhSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3IgdmFsdWUpCitpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciB2YWx1
ZSkKIHsKICAgICBzd2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VF
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW46CisgICAgY2FzZSBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lh
bjoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiY3lhbiIpOwotICAgIGNhc2UgUldJUHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yTWFnZW50
YToKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3JNYWdlbnRhOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJtYWdl
bnRhIik7Ci0gICAgY2FzZSBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3JZZWxsb3c6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93OgogICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJ5ZWxsb3ciKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VF
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJsYWNrOgorICAgIGNhc2UgVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJs
YWNrOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJibGFjayIpOwogICAgIH0KIH0KIAog
dGVtcGxhdGU8PgotaW5saW5lIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK2lubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIGlmICh2YWx1ZSA9PSAiY3lhbiIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOworICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJp
bnRDb2xvckN5YW47CiAgICAgaWYgKHZhbHVlID09ICJtYWdlbnRhIikKLSAgICAgICAgcmV0dXJu
IFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
ck1hZ2VudGE7CisgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yTWFnZW50YTsKICAgICBpZiAodmFsdWUgPT0gInll
bGxvdyIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlv
bmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3c7CisgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93Owog
ICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2s7CisgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQ
cmludENvbG9yQmxhY2s7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFJX
SVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5
YW47CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3JDeWFuOwogfQogCi1pbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJp
bmcoUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENv
bG9yIHZhbHVlKQoraW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgdmFsdWUpCiB7CiAg
ICAgc3dpdGNoKHZhbHVlKSB7Ci0gICAgY2FzZSBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFs
bE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOgorICAgIGNhc2UgVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW46CiAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImN5YW4iKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0
YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGE6CisgICAg
Y2FzZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yTWFnZW50YToKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibWFnZW50YSIpOwot
ICAgIGNhc2UgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQ
cmludENvbG9yWWVsbG93OgorICAgIGNhc2UgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdzoKICAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgieWVsbG93Iik7Ci0gICAgY2FzZSBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFs
bE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjazoKKyAgICBjYXNlIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjazoKICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYmxhY2siKTsKICAgICB9CiB9CiAKIHRlbXBsYXRl
PD4KLWlubGluZSBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxp
bmUgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRD
b2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gImN5YW4iKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKKyAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JD
eWFuOwogICAgIGlmICh2YWx1ZSA9PSAibWFnZW50YSIpCi0gICAgICAgIHJldHVybiBSV0lQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JNYWdlbnRh
OworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGE7CiAgICAgaWYgKHZhbHVlID09ICJ5ZWxsb3ciKQot
ICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yWWVsbG93OworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAo
dmFsdWUgPT0gImJsYWNrIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJsYWNrOworICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
ckJsYWNrOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSV0lQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuOworICAg
IHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQ
cmludENvbG9yQ3lhbjsKIH0KIAotaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFJXSVBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIHZhbHVl
KQoraW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciB2YWx1ZSkKIHsKICAgICBzd2l0Y2go
dmFsdWUpIHsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yQ3lhbjoKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW46CiAgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoImN5YW4iKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yTWFnZW50YToKKyAgICBjYXNlIFRlc3RQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGE6
CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm1hZ2VudGEiKTsKLSAgICBjYXNlIFJXSVBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93
OgorICAgIGNhc2UgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yWWVsbG93OgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJ5ZWxsb3ci
KTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yQmxhY2s6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjazoKICAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbCgiYmxhY2siKTsKICAgICB9CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBSV0lQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKLSAg
ICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnNQcmludENvbG9yQ3lhbjsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW47CiAgICAgaWYgKHZhbHVlID09
ICJtYWdlbnRhIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9P
cHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yTWFnZW50YTsKKyAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2Vu
dGE7CiAgICAgaWYgKHZhbHVlID09ICJ5ZWxsb3ciKQotICAgICAgICByZXR1cm4gUldJUHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3c7Cisg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCi0gICAgICAg
IHJldHVybiBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJp
bnRDb2xvckJsYWNrOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2s7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yQ3lhbjsKKyAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKIH0KIAotaW5saW5lIFN0
cmluZyB0b1Byb3RvY29sU3RyaW5nKFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnNQcmludENvbG9yIHZhbHVlKQoraW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3Ry
aW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRD
b2xvciB2YWx1ZSkKIHsKICAgICBzd2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFJXSVByb3RvY29s
RGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjoKKyAgICBj
YXNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRD
b2xvckN5YW46CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImN5YW4iKTsKLSAgICBjYXNl
IFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9y
TWFnZW50YToKKyAgICBjYXNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGE6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
Im1hZ2VudGEiKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93OgorICAgIGNhc2UgVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93OgogICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJ5ZWxsb3ciKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGF0YWJh
c2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2s6CisgICAgY2FzZSBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JC
bGFjazoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiYmxhY2siKTsKICAgICB9CiB9CiAK
IHRlbXBsYXRlPD4KLWlubGluZSBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK2lubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID09ICJjeWFuIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGF0YWJh
c2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKKyAgICAgICAgcmV0
dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRD
b2xvckN5YW47CiAgICAgaWYgKHZhbHVlID09ICJtYWdlbnRhIikKLSAgICAgICAgcmV0dXJuIFJX
SVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yTWFn
ZW50YTsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGE7CiAgICAgaWYgKHZhbHVlID09ICJ5ZWxsb3ci
KQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3JZZWxsb3c7CisgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYg
KHZhbHVlID09ICJibGFjayIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJsYWNrOworICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9y
QmxhY2s7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFJXSVByb3RvY29s
RGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbjsKKyAgICBy
ZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yQ3lhbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLSMjIyBFbmQgRmls
ZTogUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEVuZCBGaWxlOiBUZXN0
UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJv
dG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRXZl
bnREaXNwYXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEyNTgsOSArMTI1OCw5IEBAIGlubGluZSBSV0lQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBmcm9t
UHJvdG9jb2xTdHJpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAK
ICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgorI2lt
cG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xFbnVt
Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC0xMjY4LDkgKzEyNjgsOSBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEV2ZW50
RGlzcGF0Y2hlcnMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRXZlbnREaXNwYXRjaGVy
cy5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2wuaAorIyMjIEJlZ2luIEZpbGU6IFRl
c3RQcm90b2NvbC5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTMwMyw2NiArMTMwMyw2NiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lt
cG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5oPgorI2ltcG9ydCA8V2Vi
SW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCi1AY2xhc3MgUldJUHJvdG9j
b2xEYXRhYmFzZUVycm9yOworQGNsYXNzIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I7CiAKIAot
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xv
cnMpIHsKLSAgICBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc1JlZCwKLSAgICBSV0lQ
cm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0dyZWVuLAotICAgIFJXSVByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzQmx1ZSwKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycykgeworICAgIFRlc3RQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9yc1JlZCwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNHcmVl
biwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNCbHVlLAogfTsKIAotdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yKSB7Ci0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbiwKLSAgICBSV0lQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JNYWdlbnRhLAotICAg
IFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
clllbGxvdywKLSAgICBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3JCbGFjaywKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IpIHsKKyAg
ICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENv
bG9yQ3lhbiwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yTWFnZW50YSwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93LAorICAgIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjaywKIH07CiAK
LXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxs
T3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcikgewotICAgIFJXSVByb3RvY29sRGF0YWJhc2VF
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW4sCi0gICAgUldJUHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yTWFnZW50YSwK
LSAgICBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50
Q29sb3JZZWxsb3csCi0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yQmxhY2ssCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yKSB7
CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJp
bnRDb2xvckN5YW4sCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGEsCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdywKKyAgICBUZXN0UHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2ssCiB9
OwogCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcikgewotICAgIFJXSVByb3RvY29sRGF0YWJh
c2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbiwKLSAgICBSV0lQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGEs
Ci0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50
Q29sb3JZZWxsb3csCi0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3JCbGFjaywKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcikgewor
ICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRD
b2xvckN5YW4sCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yTWFnZW50YSwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3csCisgICAgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2ssCiB9OwogCi10
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcikgewotICAgIFJXSVByb3RvY29sRGF0YWJhc2VFeGVj
dXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbiwKLSAgICBSV0lQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGEsCi0gICAg
UldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZ
ZWxsb3csCi0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3JCbGFjaywKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcikgeworICAgIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5
YW4sCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQ
cmludENvbG9yTWFnZW50YSwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlv
bmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3csCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2ssCiB9OwogCiAKIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBSV0lQcm90b2Nv
bERhdGFiYXNlRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKK0BpbnRlcmZhY2UgVGVzdFBy
b3RvY29sRGF0YWJhc2VFcnJvciA6IFByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyog
cmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdl
OwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7
CiBAZW5kCiAKLUBwcm90b2NvbCBSV0lQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlciA8TlNP
YmplY3Q+CitAcHJvdG9jb2wgVGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyIDxOU09i
amVjdD4KIEByZXF1aXJlZAotLSAodm9pZClleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzV2l0
aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1l
cywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9i
amVjdCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRh
YmFzZUlkLCBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgUldJUHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
KiphbHRlcm5hdGVDb2xvcnMsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5h
bWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5n
ICoqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlICopdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9j
b2xKU09OT2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiop
cGF5bG9hZCBkYXRhYmFzZUlkOihpbnQgKilkYXRhYmFzZUlkIHNxbEVycm9yOihSV0lQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6KFJXSVByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzICopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKiopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KFJXSVByb3RvY29sRGF0
YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciAqKXByaW50Q29sb3I7
Ci0tICh2b2lkKWV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOih2
b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZv
aWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVz
LCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJUHJv
dG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgUldJUHJvdG9jb2xEYXRh
YmFzZUVycm9yICpzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2Ny
ZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBSV0lQcm90
b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBwcmludENv
bG9yKSlzdWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
KWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRp
bWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihS
V0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGRhdGFiYXNlSWQ6KGludClkYXRhYmFzZUlk
IHNxbEVycm9yOihSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKilzcWxFcnJvciBzY3JlZW5Db2xv
cjooUldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMpc2NyZWVuQ29sb3IgYWx0ZXJuYXRl
Q29sb3JzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xv
cjooUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3IpcHJpbnRDb2xvcjsKKy0gKHZvaWQpZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1dpdGhF
cnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICoqY29sdW1uTmFtZXMs
IE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1wLCBQcm90b2NvbEpTT05PYmplY3Qg
Kip2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVjdCAqKnBheWxvYWQsIGludCAqZGF0YWJhc2VJZCwg
VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNxbEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFz
ZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRl
cm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3IgKnByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczoo
TlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKilu
b3RlcyB0aW1lc3RhbXA6KGRvdWJsZSAqKXRpbWVzdGFtcCB2YWx1ZXM6KFByb3RvY29sSlNPTk9i
amVjdCAqKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xKU09OT2JqZWN0ICoqKXBheWxvYWQgZGF0
YWJhc2VJZDooaW50ICopZGF0YWJhc2VJZCBzcWxFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VF
cnJvciAqKilzcWxFcnJvciBzY3JlZW5Db2xvcjooVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5
Q29sb3JzICopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8TlNTdHJpbmc+
Ki8gKiopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgKilwcmludENvbG9yOworLSAodm9p
ZClleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShO
U1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5T
QXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91Ymxl
IHRpbWVzdGFtcCwgUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFByb3RvY29sSlNPTk9iamVj
dCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKnNx
bEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIE5T
QXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgcHJpbnRDb2xvcikpc3VjY2Vz
c0NhbGxiYWNrIGNvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1l
cyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFs
dWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xKU09OT2Jq
ZWN0ICopcGF5bG9hZCBkYXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJZCBzcWxFcnJvcjooVGVzdFBy
b3RvY29sRGF0YWJhc2VFcnJvciAqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihUZXN0UHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnMpc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yKXByaW50Q29sb3I7
CiBAZW5kCiAKIAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2wuaAorIyMjIEVuZCBGaWxl
OiBUZXN0UHJvdG9jb2wuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5o
CisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEzOTMs
MTcgKzEzOTMsMTcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAv
LyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZy
b20gY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24KIC8v
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiUldJUHJv
dG9jb2wuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCisjaW1w
b3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRl
cm5hbC5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAog
CiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKyMjIyBFbmQgRmlsZTog
VGVzdFByb3RvY29sSW50ZXJuYWwuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xUeXBl
cy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTQz
NSwxNiArMTQzNSwxNiBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJv
dG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVs
cGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAotQGltcGxlbWVu
dGF0aW9uIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvcgorQGltcGxlbWVudGF0aW9uIFRlc3RQcm90
b2NvbERhdGFiYXNlRXJyb3IKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNT
dHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogewpAQCAtMTQ4Myw0ICsxNDgzLDQgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIEBlbmQKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVBy
b3RvY29sVHlwZXMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZXMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFp
bnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQKaW5kZXggNjJmYTZkZDdm
NWY1ZWFlN2Q4YjkzZmY0N2E3MThjM2ZjNTVmMWQzNy4uOTkzMmU5ZTY1YTdiYmM2OWVlOGFkYzU0
MmVmNDVmYTMzYTY1MmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQt
c2l6ZXMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMu
anNvbi1yZXN1bHQKQEAgLTcyMiw3ICs3MjIsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFs
dWUoaW50IGNvZGUpIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMu
Y3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCisj
IyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBA
IC03NTYsMjUgKzc1NiwyNSBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUp
IHsKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKLUBwcm90b2NvbCBSV0lQ
cm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlcjsKLUBwcm90b2NvbCBSV0lQcm90b2NvbE5ldHdv
cmszRG9tYWluSGFuZGxlcjsKK0Bwcm90b2NvbCBUZXN0UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhh
bmRsZXI7CitAcHJvdG9jb2wgVGVzdFByb3RvY29sTmV0d29yazNEb21haW5IYW5kbGVyOwogCiBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogCiBjbGFzcyBPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyIHsKIHB1YmxpYzoKLSAgICBPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0
Y2hlcihpZDxSV0lQcm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2Rl
bGVnYXRlID0gaGFuZGxlcjsgfQorICAgIE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyKGlkPFRlc3RQcm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBt
X2RlbGVnYXRlID0gaGFuZGxlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxv
bmcgcmVxdWVzdElkKSBvdmVycmlkZTsKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPGlkPFJXSVBy
b3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8
aWQ8VGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKIH07CiAK
IAogCiBjbGFzcyBPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6
IHB1YmxpYyBBbHRlcm5hdGVOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAg
ICBPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcihpZDxSV0lQcm90b2NvbE5l
dHdvcmszRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFuZGxlcjsgfQor
ICAgIE9iakNJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKGlkPFRlc3RQcm90b2Nv
bE5ldHdvcmszRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFuZGxlcjsg
fQogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgcmVxdWVzdElkKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMihsb25nIHJlcXVlc3RJZCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyByZXF1ZXN0SWQpIG92ZXJy
aWRlOwpAQCAtNzgzLDE0ICs3ODMsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2Fk
UmVzb3VyY2U2KGxvbmcgcmVxdWVzdElkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFJlc291cmNlNyhsb25nIHJlcXVlc3RJZCkgb3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIFJldGFp
blB0cjxpZDxSV0lQcm90b2NvbE5ldHdvcmszRG9tYWluSGFuZGxlcj4+IG1fZGVsZWdhdGU7Cisg
ICAgUmV0YWluUHRyPGlkPFRlc3RQcm90b2NvbE5ldHdvcmszRG9tYWluSGFuZGxlcj4+IG1fZGVs
ZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBS
V0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bEJhY2tlbmREaXNwYXRjaGVycy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbENvbmZp
Z3VyYXRpb24ubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLm1t
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgpAQCAtODIyLDEwICs4MjIsMTAgQEAgcHJpdmF0ZToKIC8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJS
V0lQcm90b2NvbENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbENvbmZpZ3Vy
YXRpb24uaCIKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgotI2ltcG9ydCAiUldJ
UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVy
bmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5o
PgpAQCAtODMzLDExICs4MzMsMTEgQEAgcHJpdmF0ZToKIAogdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAotQGltcGxlbWVudGF0aW9uIFJXSVByb3RvY29sQ29uZmlndXJhdGlvbgorQGltcGxl
bWVudGF0aW9uIFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24KIHsKICAgICBBdWdtZW50YWJsZUlu
c3BlY3RvckNvbnRyb2xsZXIqIF9jb250cm9sbGVyOwotICAgIGlkPFJXSVByb3RvY29sTmV0d29y
azFEb21haW5IYW5kbGVyPiBfbmV0d29yazFIYW5kbGVyOwotICAgIGlkPFJXSVByb3RvY29sTmV0
d29yazNEb21haW5IYW5kbGVyPiBfbmV0d29yazNIYW5kbGVyOworICAgIGlkPFRlc3RQcm90b2Nv
bE5ldHdvcmsxRG9tYWluSGFuZGxlcj4gX25ldHdvcmsxSGFuZGxlcjsKKyAgICBpZDxUZXN0UHJv
dG9jb2xOZXR3b3JrM0RvbWFpbkhhbmRsZXI+IF9uZXR3b3JrM0hhbmRsZXI7CiB9CiAKIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlciopY29udHJvbGxlcgpAQCAtODU3LDcgKzg1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tICh2b2lkKXNldE5ldHdvcmsxSGFu
ZGxlcjooaWQ8UldJUHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+KWhhbmRsZXIKKy0gKHZv
aWQpc2V0TmV0d29yazFIYW5kbGVyOihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRs
ZXI+KWhhbmRsZXIKIHsKICAgICBpZiAoaGFuZGxlciA9PSBfbmV0d29yazFIYW5kbGVyKQogICAg
ICAgICByZXR1cm47CkBAIC04NzAsMTIgKzg3MCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRl
QWdlbnQpKTsKIH0KIAotLSAoaWQ8UldJUHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+KW5l
dHdvcmsxSGFuZGxlcgorLSAoaWQ8VGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPilu
ZXR3b3JrMUhhbmRsZXIKIHsKICAgICByZXR1cm4gX25ldHdvcmsxSGFuZGxlcjsKIH0KIAotLSAo
dm9pZClzZXROZXR3b3JrM0hhbmRsZXI6KGlkPFJXSVByb3RvY29sTmV0d29yazNEb21haW5IYW5k
bGVyPiloYW5kbGVyCistICh2b2lkKXNldE5ldHdvcmszSGFuZGxlcjooaWQ8VGVzdFByb3RvY29s
TmV0d29yazNEb21haW5IYW5kbGVyPiloYW5kbGVyCiB7CiAgICAgaWYgKGhhbmRsZXIgPT0gX25l
dHdvcmszSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwpAQCAtODg4LDcgKzg4OCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgX2NvbnRyb2xsZXItPmFwcGVuZEV4dHJhQWdlbnQo
V1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCi0tIChpZDxSV0lQcm90b2NvbE5ldHdvcmsz
RG9tYWluSGFuZGxlcj4pbmV0d29yazNIYW5kbGVyCistIChpZDxUZXN0UHJvdG9jb2xOZXR3b3Jr
M0RvbWFpbkhhbmRsZXI+KW5ldHdvcmszSGFuZGxlcgogewogICAgIHJldHVybiBfbmV0d29yazNI
YW5kbGVyOwogfQpAQCAtODk2LDkgKzg5Niw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KKyMj
IyBFbmQgRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5tbQogCi0jIyMgQmVnaW4gRmls
ZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9j
b2xDb25maWd1cmF0aW9uLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05MjksMTggKzkyOSwxOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGRvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMu
anNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0
IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2wuaD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9UZXN0
UHJvdG9jb2wuaD4KIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1A
aW50ZXJmYWNlIFJXSVByb3RvY29sQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgcmV0YWluLCBzZXR0ZXI9c2V0TmV0d29yazFIYW5kbGVyOikgaWQ8UldJUHJv
dG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+IG5ldHdvcmsxSGFuZGxlcjsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZXRhaW4sIHNldHRlcj1zZXROZXR3b3JrM0hhbmRsZXI6KSBpZDxSV0lQcm90
b2NvbE5ldHdvcmszRG9tYWluSGFuZGxlcj4gbmV0d29yazNIYW5kbGVyOworQGludGVyZmFjZSBU
ZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4sIHNldHRlcj1zZXROZXR3b3JrMUhhbmRsZXI6KSBpZDxUZXN0UHJvdG9jb2xOZXR3
b3JrMURvbWFpbkhhbmRsZXI+IG5ldHdvcmsxSGFuZGxlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4sIHNldHRlcj1zZXROZXR3b3JrM0hhbmRsZXI6KSBpZDxUZXN0UHJvdG9jb2xOZXR3
b3JrM0RvbWFpbkhhbmRsZXI+IG5ldHdvcmszSGFuZGxlcjsKIEBlbmQKIAogCi0jIyMgRW5kIEZp
bGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bENvbmZpZ3VyYXRpb24uaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xCYWNrZW5kRGlz
cGF0Y2hlcnMubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hl
cnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC05NzIsMTAgKzk3MiwxMCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3Mu
cHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmREaXNw
YXRjaGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAK
LSNpbmNsdWRlICJSV0lQcm90b2NvbEludGVybmFsLmgiCi0jaW5jbHVkZSAiUldJUHJvdG9jb2xF
bnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5o
IgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKQEAgLTEwOTgsOSArMTA5OCw5IEBAIHZvaWQgT2JqQ0luc3BlY3Rvck5ldHdvcmszQmFj
a2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyByZXF1ZXN0SWQpCiAKIH0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3Bh
dGNoZXJzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5t
bQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAor
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oCiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgdm9pZCBPYmpDSW5zcGVjdG9yTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNyhsb25nIHJlcXVlc3RJZCkKIC8vIERPIE5PVCBFRElU
IFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBkb21haW5zLXdp
dGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9j
b2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxw
ZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiCiAK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC0xMTQ2LDkgKzExNDYsOSBAQCBPYmpDRW51bVR5
cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiB9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKyMj
IyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAt
MTE4MCw5ICsxMTgwLDkgQEAgT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkK
IAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCisj
aW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJSV0lQcm90b2NvbEVu
dW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNp
b25IZWxwZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTExOTQsOSArMTE5NCw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sRXZl
bnREaXNwYXRjaGVycy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNo
ZXJzLm1tCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbC5oCisjIyMgQmVnaW4gRmlsZTog
VGVzdFByb3RvY29sLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMjI5LDcgKzEyMjksNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2lt
cG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5oPgorI2ltcG9ydCA8V2Vi
SW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiAKQEAgLTEyMzgsMTIgKzEy
MzgsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKLUBwcm90b2NvbCBSV0lQ
cm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlciA8TlNPYmplY3Q+CitAcHJvdG9jb2wgVGVzdFBy
b3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAodm9p
ZClsb2FkUmVzb3VyY2UxV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9y
KSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKSgpKXN1Y2Nlc3NDYWxsYmFj
azsKIEBlbmQKIAotQHByb3RvY29sIFJXSVByb3RvY29sTmV0d29yazNEb21haW5IYW5kbGVyIDxO
U09iamVjdD4KK0Bwcm90b2NvbCBUZXN0UHJvdG9jb2xOZXR3b3JrM0RvbWFpbkhhbmRsZXIgPE5T
T2JqZWN0PgogQHJlcXVpcmVkCiAtICh2b2lkKWxvYWRSZXNvdXJjZTFXaXRoRXJyb3JDYWxsYmFj
azoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
Oih2b2lkKF4pKCkpc3VjY2Vzc0NhbGxiYWNrOwogLSAodm9pZClsb2FkUmVzb3VyY2UyV2l0aEVy
cm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjazoodm9pZCheKSgpKXN1Y2Nlc3NDYWxsYmFjazsKQEAgLTEyNTcsOSArMTI1Nyw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVBy
b3RvY29sLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sLmgKIAotIyMjIEJlZ2luIEZpbGU6
IFJXSVByb3RvY29sSW50ZXJuYWwuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVy
bmFsLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC0xMjkwLDE3ICsxMjkwLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uCiAvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3Rv
Y29sLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgorI2ltcG9y
dCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0SW50ZXJu
YWwuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIAog
CiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMgRW5kIEZpbGU6IFRl
c3RQcm90b2NvbEludGVybmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMu
bW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEzMzIs
OSArMTMzMiw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
UldJUHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIK
IAotI2ltcG9ydCAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQg
IlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCkBA
IC0xMzQ3LDQgKzEzNDcsNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAotIyMj
IEVuZCBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bFR5cGVzLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQKaW5kZXggODI4NWU4NDZiMmFhMWE3ODA5NjU1YjEzNWU0NmRkNjYyMWU0OTcw
OS4uOWM4MjFkODgxNTIxOWYzN2Y5Y2RmNWNmYWNiYjRhNTI1ZGU0MzU5NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Vu
dW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtNTQ1
LDcgKzU0NSw3IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAj
IyMgRW5kIEZpbGU6IEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAKIAotIyMjIEJlZ2luIEZp
bGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0
UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTU3OSw3ICs1NzksNyBAQCBT
dHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKLUBwcm90b2NvbCBSV0lQcm90b2NvbENvbW1hbmREb21haW5E
b21haW5IYW5kbGVyOworQHByb3RvY29sIFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Eb21haW5I
YW5kbGVyOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtNTg4LDE5ICs1ODgsMTkgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWlu
QmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJh
Y2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBPYmpDSW5zcGVjdG9yQ29tbWFuZERvbWFp
bkJhY2tlbmREaXNwYXRjaGVyKGlkPFJXSVByb3RvY29sQ29tbWFuZERvbWFpbkRvbWFpbkhhbmRs
ZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KKyAgICBPYmpDSW5zcGVjdG9y
Q29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyKGlkPFRlc3RQcm90b2NvbENvbW1hbmREb21h
aW5Eb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1fZGVsZWdhdGUgPSBoYW5kbGVyOyB9CiAgICAg
dmlydHVhbCB2b2lkIGNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGxvbmcgcmVxdWVzdElkKSBv
dmVycmlkZTsKIHByaXZhdGU6Ci0gICAgUmV0YWluUHRyPGlkPFJXSVByb3RvY29sQ29tbWFuZERv
bWFpbkRvbWFpbkhhbmRsZXI+PiBtX2RlbGVnYXRlOworICAgIFJldGFpblB0cjxpZDxUZXN0UHJv
dG9jb2xDb21tYW5kRG9tYWluRG9tYWluSGFuZGxlcj4+IG1fZGVsZWdhdGU7CiB9OwogCiAKIAog
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xCYWNr
ZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0
Y2hlcnMuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLm1tCisj
IyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5tbQogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTYz
MiwxMCArNjMyLDEwIEBAIHByaXZhdGU6CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJp
bmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xDb25m
aWd1cmF0aW9uLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgiCiAKLSNp
bXBvcnQgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQmFja2Vu
ZERpc3BhdGNoZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9y
dCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KQEAgLTY0MywxMSAr
NjQzLDExIEBAIHByaXZhdGU6CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLUBpbXBs
ZW1lbnRhdGlvbiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24KK0BpbXBsZW1lbnRhdGlvbiBUZXN0
UHJvdG9jb2xDb25maWd1cmF0aW9uCiB7CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyKiBfY29udHJvbGxlcjsKLSAgICBpZDxSV0lQcm90b2NvbENvbW1hbmREb21haW5Eb21haW5I
YW5kbGVyPiBfY29tbWFuZERvbWFpbkhhbmRsZXI7Ci0gICAgUldJUHJvdG9jb2xFdmVudERvbWFp
bkRvbWFpbkV2ZW50RGlzcGF0Y2hlciAqX2V2ZW50RG9tYWluRXZlbnREaXNwYXRjaGVyOworICAg
IGlkPFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Eb21haW5IYW5kbGVyPiBfY29tbWFuZERvbWFp
bkhhbmRsZXI7CisgICAgVGVzdFByb3RvY29sRXZlbnREb21haW5Eb21haW5FdmVudERpc3BhdGNo
ZXIgKl9ldmVudERvbWFpbkV2ZW50RGlzcGF0Y2hlcjsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoQ29udHJvbGxlcjooQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiljb250cm9s
bGVyCkBAIC02NjcsNyArNjY3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKHZvaWQpc2V0Q29tbWFuZERvbWFpbkhhbmRsZXI6KGlk
PFJXSVByb3RvY29sQ29tbWFuZERvbWFpbkRvbWFpbkhhbmRsZXI+KWhhbmRsZXIKKy0gKHZvaWQp
c2V0Q29tbWFuZERvbWFpbkhhbmRsZXI6KGlkPFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Eb21h
aW5IYW5kbGVyPiloYW5kbGVyCiB7CiAgICAgaWYgKGhhbmRsZXIgPT0gX2NvbW1hbmREb21haW5I
YW5kbGVyKQogICAgICAgICByZXR1cm47CkBAIC02ODAsMjQgKzY4MCwyNCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1v
dmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIAotLSAoaWQ8UldJUHJvdG9jb2xDb21tYW5kRG9tYWlu
RG9tYWluSGFuZGxlcj4pY29tbWFuZERvbWFpbkhhbmRsZXIKKy0gKGlkPFRlc3RQcm90b2NvbENv
bW1hbmREb21haW5Eb21haW5IYW5kbGVyPiljb21tYW5kRG9tYWluSGFuZGxlcgogewogICAgIHJl
dHVybiBfY29tbWFuZERvbWFpbkhhbmRsZXI7CiB9CiAKLS0gKFJXSVByb3RvY29sRXZlbnREb21h
aW5Eb21haW5FdmVudERpc3BhdGNoZXIgKilldmVudERvbWFpbkV2ZW50RGlzcGF0Y2hlcgorLSAo
VGVzdFByb3RvY29sRXZlbnREb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgKilldmVudERvbWFp
bkV2ZW50RGlzcGF0Y2hlcgogewogICAgIGlmICghX2V2ZW50RG9tYWluRXZlbnREaXNwYXRjaGVy
KQotICAgICAgICBfZXZlbnREb21haW5FdmVudERpc3BhdGNoZXIgPSBbW1JXSVByb3RvY29sRXZl
bnREb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpf
Y29udHJvbGxlcl07CisgICAgICAgIF9ldmVudERvbWFpbkV2ZW50RGlzcGF0Y2hlciA9IFtbVGVz
dFByb3RvY29sRXZlbnREb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRo
Q29udHJvbGxlcjpfY29udHJvbGxlcl07CiAgICAgcmV0dXJuIF9ldmVudERvbWFpbkV2ZW50RGlz
cGF0Y2hlcjsKIH0KIAogQGVuZAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xDb25maWd1
cmF0aW9uLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KIAot
IyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oCisjIyMgQmVnaW4gRmls
ZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzI4LDE4ICs3MjgsMTgg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4g
SXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBlbnVtLXZhbHVlcy5qc29uCiAvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgPFdlYkluc3Bl
Y3Rvci9SV0lQcm90b2NvbC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbC5o
PgogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2Ug
UldJUHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZXRhaW4sIHNldHRlcj1zZXRDb21tYW5kRG9tYWluSGFuZGxlcjopIGlkPFJXSVByb3RvY29s
Q29tbWFuZERvbWFpbkRvbWFpbkhhbmRsZXI+IGNvbW1hbmREb21haW5IYW5kbGVyOwotQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBSV0lQcm90b2NvbEV2ZW50RG9tYWluRG9tYWluRXZl
bnREaXNwYXRjaGVyICpldmVudERvbWFpbkV2ZW50RGlzcGF0Y2hlcjsKK0BpbnRlcmZhY2UgVGVz
dFByb3RvY29sQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmV0YWluLCBzZXR0ZXI9c2V0Q29tbWFuZERvbWFpbkhhbmRsZXI6KSBpZDxUZXN0UHJvdG9jb2xD
b21tYW5kRG9tYWluRG9tYWluSGFuZGxlcj4gY29tbWFuZERvbWFpbkhhbmRsZXI7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFRlc3RQcm90b2NvbEV2ZW50RG9tYWluRG9tYWluRXZl
bnREaXNwYXRjaGVyICpldmVudERvbWFpbkV2ZW50RGlzcGF0Y2hlcjsKIEBlbmQKIAogCi0jIyMg
RW5kIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oCisjIyMgRW5kIEZpbGU6IFRlc3RQ
cm90b2NvbENvbmZpZ3VyYXRpb24uaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xCYWNr
ZW5kRGlzcGF0Y2hlcnMubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlz
cGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03NzEsMTAgKzc3MSwxMCBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmlu
ZGluZ3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tl
bmREaXNwYXRjaGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJz
LmgiCiAKLSNpbmNsdWRlICJSV0lQcm90b2NvbEludGVybmFsLmgiCi0jaW5jbHVkZSAiUldJUHJv
dG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJUZXN0UHJvdG9jb2xJbnRl
cm5hbC5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKQEAgLTc4OCw3ICs3ODgsNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGxvbgog
ICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUGVuZGluZ0Vycm9ycygpOwogICAgIH07
CiAKLSAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKFJXSVByb3RvY29sQ29tbWFuZERvbWFpbkNv
bW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWUgcmV0dXJuVmFsdWUpIHsKKyAgICBp
ZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0
aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlIHJldHVyblZhbHVlKSB7CiAgICAgICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmV0dXJuVmFs
dWUiKSwgdG9Qcm90b2NvbFN0cmluZyhyZXR1cm5WYWx1ZSkpOwogICAgICAgICBiYWNrZW5kRGlz
cGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdE9iamVjdCkp
OwpAQCAtODAyLDkgKzgwMiw5IEBAIHZvaWQgT2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uCiAKIH0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3Bh
dGNoZXJzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5t
bQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAor
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oCiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgpAQCAtODM1LDcgKzgzNSw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckNvbW1hbmREb21haW5CYWNr
ZW5kRGlzcGF0Y2hlcjo6Y29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uCiAvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZW51bS12
YWx1ZXMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0j
aW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRl
c3RQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CiAKQEAgLTg0Myw5NiArODQzLDk2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlw
ZT4KIE9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CiAKIAotaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFJXSVByb3RvY29sVHlwZURvbWFp
bkVudW0gdmFsdWUpCitpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29s
VHlwZURvbWFpbkVudW0gdmFsdWUpCiB7CiAgICAgc3dpdGNoKHZhbHVlKSB7Ci0gICAgY2FzZSBS
V0lQcm90b2NvbFR5cGVEb21haW5FbnVtU2hhcmVkOgorICAgIGNhc2UgVGVzdFByb3RvY29sVHlw
ZURvbWFpbkVudW1TaGFyZWQ6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNoYXJlZCIp
OwotICAgIGNhc2UgUldJUHJvdG9jb2xUeXBlRG9tYWluRW51bVJlZDoKKyAgICBjYXNlIFRlc3RQ
cm90b2NvbFR5cGVEb21haW5FbnVtUmVkOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJy
ZWQiKTsKLSAgICBjYXNlIFJXSVByb3RvY29sVHlwZURvbWFpbkVudW1HcmVlbjoKKyAgICBjYXNl
IFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtR3JlZW46CiAgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoImdyZWVuIik7Ci0gICAgY2FzZSBSV0lQcm90b2NvbFR5cGVEb21haW5FbnVtQmx1ZToK
KyAgICBjYXNlIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtQmx1ZToKICAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiYmx1ZSIpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFJX
SVByb3RvY29sVHlwZURvbWFpbkVudW0gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCitpbmxpbmUgVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0gZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJzaGFyZWQiKQot
ICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xUeXBlRG9tYWluRW51bVNoYXJlZDsKKyAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtU2hhcmVkOwogICAgIGlmICh2YWx1ZSA9
PSAicmVkIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sVHlwZURvbWFpbkVudW1SZWQ7Cisg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bVJlZDsKICAgICBpZiAodmFs
dWUgPT0gImdyZWVuIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sVHlwZURvbWFpbkVudW1H
cmVlbjsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtR3JlZW47CiAg
ICAgaWYgKHZhbHVlID09ICJibHVlIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sVHlwZURv
bWFpbkVudW1CbHVlOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1C
bHVlOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSV0lQcm90b2NvbFR5
cGVEb21haW5FbnVtU2hhcmVkOworICAgIHJldHVybiBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51
bVNoYXJlZDsKIH0KIAogCi1pbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoUldJUHJvdG9j
b2xDb21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZSB2YWx1
ZSkKK2lubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xDb21tYW5kRG9t
YWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZSB2YWx1ZSkKIHsKICAgICBz
d2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFJXSVByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRX
aXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVTaGFyZWQ6CisgICAgY2FzZSBUZXN0UHJvdG9j
b2xDb21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZVNoYXJl
ZDoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic2hhcmVkIik7Ci0gICAgY2FzZSBSV0lQ
cm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVl
Q3lhbjoKKyAgICBjYXNlIFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1S
ZXR1cm5WYWx1ZVJldHVyblZhbHVlQ3lhbjoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
Y3lhbiIpOwotICAgIGNhc2UgUldJUHJvdG9jb2xDb21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVt
UmV0dXJuVmFsdWVSZXR1cm5WYWx1ZU1hZ2VudGE6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xDb21t
YW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZU1hZ2VudGE6CiAg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIm1hZ2VudGEiKTsKLSAgICBjYXNlIFJXSVByb3Rv
Y29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVZZWxs
b3c6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0
dXJuVmFsdWVSZXR1cm5WYWx1ZVllbGxvdzoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
eWVsbG93Iik7CiAgICAgfQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgUldJUHJvdG9jb2xDb21t
YW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZSBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK2lubGluZSBUZXN0UHJvdG9jb2xDb21tYW5k
RG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZSBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gInNoYXJlZCIp
Ci0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1S
ZXR1cm5WYWx1ZVJldHVyblZhbHVlU2hhcmVkOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29s
Q29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVTaGFyZWQ7
CiAgICAgaWYgKHZhbHVlID09ICJjeWFuIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sQ29t
bWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVDeWFuOworICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVy
blZhbHVlUmV0dXJuVmFsdWVDeWFuOwogICAgIGlmICh2YWx1ZSA9PSAibWFnZW50YSIpCi0gICAg
ICAgIHJldHVybiBSV0lQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5W
YWx1ZVJldHVyblZhbHVlTWFnZW50YTsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbENvbW1h
bmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlTWFnZW50YTsKICAg
ICBpZiAodmFsdWUgPT0gInllbGxvdyIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbENvbW1h
bmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlWWVsbG93OworICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVy
blZhbHVlUmV0dXJuVmFsdWVZZWxsb3c7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIFJXSVByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVl
UmV0dXJuVmFsdWVTaGFyZWQ7CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbENvbW1hbmREb21haW5D
b21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlU2hhcmVkOwogfQogCiAKLWlubGlu
ZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhSV0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRo
RW51bVBhcmFtZXRlclBhcmFtZXRlciB2YWx1ZSkKK2lubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0
cmluZyhUZXN0UHJvdG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0
ZXIgdmFsdWUpCiB7CiAgICAgc3dpdGNoKHZhbHVlKSB7Ci0gICAgY2FzZSBSV0lQcm90b2NvbEV2
ZW50RG9tYWluRXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRlclNoYXJlZDoKKyAgICBjYXNl
IFRlc3RQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRlclNo
YXJlZDoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgic2hhcmVkIik7Ci0gICAgY2FzZSBS
V0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRlckJsYWNr
OgorICAgIGNhc2UgVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVy
UGFyYW1ldGVyQmxhY2s6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImJsYWNrIik7Ci0g
ICAgY2FzZSBSV0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFt
ZXRlcldoaXRlOgorICAgIGNhc2UgVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVt
UGFyYW1ldGVyUGFyYW1ldGVyV2hpdGU6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIndo
aXRlIik7CiAgICAgfQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgUldJUHJvdG9jb2xFdmVudERv
bWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXIgZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVudFdp
dGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAic2hhcmVkIikKLSAgICAgICAgcmV0dXJuIFJX
SVByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyU2hhcmVk
OworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVtUGFy
YW1ldGVyUGFyYW1ldGVyU2hhcmVkOwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQotICAgICAg
ICByZXR1cm4gUldJUHJvdG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJh
bWV0ZXJCbGFjazsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRX
aXRoRW51bVBhcmFtZXRlclBhcmFtZXRlckJsYWNrOwogICAgIGlmICh2YWx1ZSA9PSAid2hpdGUi
KQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJh
bWV0ZXJQYXJhbWV0ZXJXaGl0ZTsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbEV2ZW50RG9t
YWluRXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRlcldoaXRlOwogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBSV0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51
bVBhcmFtZXRlclBhcmFtZXRlclNoYXJlZDsKKyAgICByZXR1cm4gVGVzdFByb3RvY29sRXZlbnRE
b21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyU2hhcmVkOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEVudW1Db252ZXJz
aW9uSGVscGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVs
cGVycy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0K
KyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpA
QCAtOTY0LDkgKzk2NCw5IEBAIGlubGluZSBSV0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRo
RW51bVBhcmFtZXRlclBhcmFtZXRlciBmcm9tUHJvdG9jb2xTdHJpbmcoCiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwu
aCIKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBv
cnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CkBAIC05NzUsNyArOTc1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKLUBp
bXBsZW1lbnRhdGlvbiBSV0lQcm90b2NvbEV2ZW50RG9tYWluRG9tYWluRXZlbnREaXNwYXRjaGVy
CitAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sRXZlbnREb21haW5Eb21haW5FdmVudERpc3Bh
dGNoZXIKIHsKICAgICBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqIF9jb250cm9sbGVy
OwogfQpAQCAtOTkwLDcgKzk5MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZXZlbnRXaXRoRW51bVBhcmFtZXRlcldpdGhQYXJh
bWV0ZXI6KFJXSVByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1l
dGVyKXBhcmFtZXRlcgorLSAodm9pZClldmVudFdpdGhFbnVtUGFyYW1ldGVyV2l0aFBhcmFtZXRl
cjooVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVy
KXBhcmFtZXRlcgogewogICAgIGNvbnN0IEZyb250ZW5kUm91dGVyJiByb3V0ZXIgPSBfY29udHJv
bGxlci0+ZnJvbnRlbmRSb3V0ZXIoKTsKIApAQCAtMTAwNSw5ICsxMDA1LDkgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIEBlbmQKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sRXZl
bnREaXNwYXRjaGVycy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNo
ZXJzLm1tCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbC5oCisjIyMgQmVnaW4gRmlsZTog
VGVzdFByb3RvY29sLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMDQwLDQ4ICsxMDQwLDQ4IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0j
aW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxX
ZWJJbnNwZWN0b3IvVGVzdFByb3RvY29sSlNPTk9iamVjdC5oPgogCiAKIAogCiAKLXR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIFJXSVByb3RvY29sVHlwZURvbWFpbkVudW0pIHsKLSAgICBSV0lQ
cm90b2NvbFR5cGVEb21haW5FbnVtU2hhcmVkLAotICAgIFJXSVByb3RvY29sVHlwZURvbWFpbkVu
dW1SZWQsCi0gICAgUldJUHJvdG9jb2xUeXBlRG9tYWluRW51bUdyZWVuLAotICAgIFJXSVByb3Rv
Y29sVHlwZURvbWFpbkVudW1CbHVlLAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFBy
b3RvY29sVHlwZURvbWFpbkVudW0pIHsKKyAgICBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bVNo
YXJlZCwKKyAgICBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bVJlZCwKKyAgICBUZXN0UHJvdG9j
b2xUeXBlRG9tYWluRW51bUdyZWVuLAorICAgIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtQmx1
ZSwKIH07CiAKLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJXSVByb3RvY29sQ29tbWFuZERv
bWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWUpIHsKLSAgICBSV0lQcm90
b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlU2hh
cmVkLAotICAgIFJXSVByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZh
bHVlUmV0dXJuVmFsdWVDeWFuLAotICAgIFJXSVByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRX
aXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVNYWdlbnRhLAotICAgIFJXSVByb3RvY29sQ29t
bWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVZZWxsb3csCit0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluQ29tbWFu
ZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZSkgeworICAgIFRlc3RQcm90b2NvbENvbW1h
bmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlU2hhcmVkLAorICAg
IFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVy
blZhbHVlQ3lhbiwKKyAgICBUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVt
UmV0dXJuVmFsdWVSZXR1cm5WYWx1ZU1hZ2VudGEsCisgICAgVGVzdFByb3RvY29sQ29tbWFuZERv
bWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVZZWxsb3csCiB9OwogCi10
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSV0lQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRo
RW51bVBhcmFtZXRlclBhcmFtZXRlcikgewotICAgIFJXSVByb3RvY29sRXZlbnREb21haW5FdmVu
dFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyU2hhcmVkLAotICAgIFJXSVByb3RvY29sRXZlbnRE
b21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyQmxhY2ssCi0gICAgUldJUHJvdG9j
b2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXJXaGl0ZSwKK3R5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51
bVBhcmFtZXRlclBhcmFtZXRlcikgeworICAgIFRlc3RQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRX
aXRoRW51bVBhcmFtZXRlclBhcmFtZXRlclNoYXJlZCwKKyAgICBUZXN0UHJvdG9jb2xFdmVudERv
bWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXJCbGFjaywKKyAgICBUZXN0UHJvdG9j
b2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXJXaGl0ZSwKIH07CiAK
IAogCi1AcHJvdG9jb2wgUldJUHJvdG9jb2xDb21tYW5kRG9tYWluRG9tYWluSGFuZGxlciA8TlNP
YmplY3Q+CitAcHJvdG9jb2wgVGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkRvbWFpbkhhbmRsZXIg
PE5TT2JqZWN0PgogQHJlcXVpcmVkCi0tICh2b2lkKWNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVl
V2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShSV0lQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5k
V2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlIHJldHVyblZhbHVlKSlzdWNjZXNzQ2FsbGJh
Y2s7CistICh2b2lkKWNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlV2l0aEVycm9yQ2FsbGJhY2s6
KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoo
dm9pZCheKShUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFs
dWVSZXR1cm5WYWx1ZSByZXR1cm5WYWx1ZSkpc3VjY2Vzc0NhbGxiYWNrOwogQGVuZAogCiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgUldJUHJvdG9j
b2xFdmVudERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlciA6IE5TT2JqZWN0Ci0tICh2b2lkKWV2
ZW50V2l0aEVudW1QYXJhbWV0ZXJXaXRoUGFyYW1ldGVyOihSV0lQcm90b2NvbEV2ZW50RG9tYWlu
RXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRlcilwYXJhbWV0ZXI7CitAaW50ZXJmYWNlIFRl
c3RQcm90b2NvbEV2ZW50RG9tYWluRG9tYWluRXZlbnREaXNwYXRjaGVyIDogTlNPYmplY3QKKy0g
KHZvaWQpZXZlbnRXaXRoRW51bVBhcmFtZXRlcldpdGhQYXJhbWV0ZXI6KFRlc3RQcm90b2NvbEV2
ZW50RG9tYWluRXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRlcilwYXJhbWV0ZXI7CiBAZW5k
CiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbC5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90
b2NvbC5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKyMjIyBCZWdp
biBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTExMiwxOSArMTExMiwx
OSBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8vIERPIE5PVCBF
RElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBlbnVtLXZh
bHVlcy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNp
bXBvcnQgIlJXSVByb3RvY29sLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRl
cm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xK
U09OT2JqZWN0SW50ZXJuYWwuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
VmFsdWVzLmg+CiAKLUBpbnRlcmZhY2UgUldJUHJvdG9jb2xFdmVudERvbWFpbkRvbWFpbkV2ZW50
RGlzcGF0Y2hlciAoUHJpdmF0ZSkKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sRXZlbnREb21haW5E
b21haW5FdmVudERpc3BhdGNoZXIgKFByaXZhdGUpCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
b250cm9sbGVyOihJbnNwZWN0b3I6OkF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciopY29u
dHJvbGxlcjsKIEBlbmQKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAor
IyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCiAKLSMjIyBCZWdpbiBGaWxlOiBS
V0lQcm90b2NvbFR5cGVzLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZXMubW0K
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCkBAIC0xMTU2LDkgKzExNTYsOSBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAog
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCisjaW1w
b3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJSV0lQcm90b2NvbEVudW1D
b252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KICNp
bXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKQEAgLTExNzEsNCArMTE3MSw0IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sVHlwZXMu
bW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMt
d2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggOGJmOGE2YzUxM2NjZGUxYmNhZThmYTkyNjVm
YjRkNWE3NGU5MTMwZC4uYzAyMWRhZmI0YzM0ODNlYjljMzdjM2RkMDNlNmJjOWExMGM3ZGY5MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTU0MCw3ICs1
NDAsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsKIAogIyMjIEVu
ZCBGaWxlOiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBS
V0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3Rv
Y29sQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01ODMsOSArNTgzLDkgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZp
bGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBFbmQgRmlsZTogVGVzdFBy
b3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29s
Q29uZmlndXJhdGlvbi5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRp
b24ubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC02MTcsMTAgKzYxNywxMCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIlRl
c3RQcm90b2NvbENvbmZpZ3VyYXRpb24uaCIKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5h
bC5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbXBvcnQg
IlRlc3RQcm90b2NvbEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5kRGlz
cGF0Y2hlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FsdGVybmF0ZURpc3BhdGNoYWJs
ZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJh
Y2tlbmREaXNwYXRjaGVycy5oPgpAQCAtNjI4LDEwICs2MjgsMTAgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLUBpbXBsZW1lbnRhdGlvbiBS
V0lQcm90b2NvbENvbmZpZ3VyYXRpb24KK0BpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xDb25m
aWd1cmF0aW9uCiB7CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJv
bGxlcjsKLSAgICBSV0lQcm90b2NvbERhdGFiYXNlRG9tYWluRXZlbnREaXNwYXRjaGVyICpfZGF0
YWJhc2VFdmVudERpc3BhdGNoZXI7CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5FdmVu
dERpc3BhdGNoZXIgKl9kYXRhYmFzZUV2ZW50RGlzcGF0Y2hlcjsKIH0KIAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ29udHJvbGxlcjooQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKilj
b250cm9sbGVyCkBAIC02NTAsMTkgKzY1MCwxOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotLSAoUldJUHJvdG9jb2xEYXRhYmFzZURvbWFp
bkV2ZW50RGlzcGF0Y2hlciAqKWRhdGFiYXNlRXZlbnREaXNwYXRjaGVyCistIChUZXN0UHJvdG9j
b2xEYXRhYmFzZURvbWFpbkV2ZW50RGlzcGF0Y2hlciAqKWRhdGFiYXNlRXZlbnREaXNwYXRjaGVy
CiB7CiAgICAgaWYgKCFfZGF0YWJhc2VFdmVudERpc3BhdGNoZXIpCi0gICAgICAgIF9kYXRhYmFz
ZUV2ZW50RGlzcGF0Y2hlciA9IFtbUldJUHJvdG9jb2xEYXRhYmFzZURvbWFpbkV2ZW50RGlzcGF0
Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9jb250cm9sbGVyXTsKKyAgICAgICAgX2Rh
dGFiYXNlRXZlbnREaXNwYXRjaGVyID0gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkV2ZW50
RGlzcGF0Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9jb250cm9sbGVyXTsKICAgICBy
ZXR1cm4gX2RhdGFiYXNlRXZlbnREaXNwYXRjaGVyOwogfQogCiBAZW5kCiAKIAotIyMjIEVuZCBG
aWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3Rv
Y29sQ29uZmlndXJhdGlvbi5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xDb25maWd1
cmF0aW9uLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC02OTMsMTcgKzY5MywxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IGV2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rv
ci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9j
b2wuaD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9UZXN0UHJvdG9jb2wuaD4KIAogX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFJXSVByb3RvY29sQ29u
ZmlndXJhdGlvbiA6IE5TT2JqZWN0Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFJX
SVByb3RvY29sRGF0YWJhc2VEb21haW5FdmVudERpc3BhdGNoZXIgKmRhdGFiYXNlRXZlbnREaXNw
YXRjaGVyOworQGludGVyZmFjZSBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVGVzdFByb3RvY29sRGF0YWJhc2VEb21h
aW5FdmVudERpc3BhdGNoZXIgKmRhdGFiYXNlRXZlbnREaXNwYXRjaGVyOwogQGVuZAogCiAKLSMj
IyBFbmQgRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBFbmQgRmlsZTogVGVz
dFByb3RvY29sQ29uZmlndXJhdGlvbi5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEJh
Y2tlbmREaXNwYXRjaGVycy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmRE
aXNwYXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTczNSwxMCArNzM1LDEwIEBAIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQmFj
a2VuZERpc3BhdGNoZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIKIAotI2luY2x1ZGUgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKLSNpbmNsdWRlICJSV0lQ
cm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbElu
dGVybmFsLmgiCisjaW5jbHVkZSAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewpAQCAtNzQ3LDkgKzc0Nyw5IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEJh
Y2tlbmREaXNwYXRjaGVycy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlz
cGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBl
cnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTc4MCw3ICs3ODAsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSBldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZl
cnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxw
ZXJzLmgiCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC03OTEsOSArNzkxLDkgQEAgT2Jq
Q0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xFbnVtQ29u
dmVyc2lvbkhlbHBlcnMuaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lv
bkhlbHBlcnMuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xFdmVudERpc3BhdGNoZXJz
Lm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTgyNSwxNCArODI1LDE0IEBAIE9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRp
bmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5h
bC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9ydCAiUldJUHJv
dG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1D
b252ZXJzaW9uSGVscGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFs
dWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLUBpbXBsZW1lbnRhdGlvbiBS
V0lQcm90b2NvbERhdGFiYXNlRG9tYWluRXZlbnREaXNwYXRjaGVyCitAaW1wbGVtZW50YXRpb24g
VGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5FdmVudERpc3BhdGNoZXIKIHsKICAgICBBdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqIF9jb250cm9sbGVyOwogfQpAQCAtODQ3LDcgKzg0Nyw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0g
KHZvaWQpZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5OYW1lczooTlNBcnJh
eS8qPE5TU3RyaW5nPiovICoqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKilub3RlcyB0
aW1lc3RhbXA6KGRvdWJsZSAqKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqKXBheWxvYWQgc3Fs
RXJyb3I6KFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKilzcWxFcnJvciBzY3JlZW5Db2xvcjoo
TlNTdHJpbmcgKiopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5TU3RyaW5nICoqKXByaW50Q29s
b3IKKy0gKHZvaWQpZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5OYW1lczoo
TlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKilu
b3RlcyB0aW1lc3RhbXA6KGRvdWJsZSAqKXRpbWVzdGFtcCB2YWx1ZXM6KFByb3RvY29sSlNPTk9i
amVjdCAqKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xKU09OT2JqZWN0ICoqKXBheWxvYWQgc3Fs
RXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6
KE5TU3RyaW5nICoqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3Ry
aW5nPiovICoqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKilwcmludENv
bG9yCiB7CiAgICAgY29uc3QgRnJvbnRlbmRSb3V0ZXImIHJvdXRlciA9IF9jb250cm9sbGVyLT5m
cm9udGVuZFJvdXRlcigpOwogCkBAIC04ODUsNyArODg1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKICAgICByb3V0ZXIuc2VuZEV2ZW50KGpzb25NZXNzYWdlLT50b0pTT05TdHJpbmco
KSk7CiB9CiAKLS0gKHZvaWQpZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVt
bk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJp
bmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2Nv
bEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5
bG9hZCBzcWxFcnJvcjooUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICopc3FsRXJyb3Igc2NyZWVu
Q29sb3I6KE5TU3RyaW5nICopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooTlNTdHJpbmcgKilwcmlu
dENvbG9yCistICh2b2lkKWRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5O
YW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5n
ICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUHJvdG9jb2xKU09O
T2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgc3Fs
RXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilzcWxFcnJvciBzY3JlZW5Db2xvcjoo
TlNTdHJpbmcgKilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKXByaW50Q29sb3IK
IHsKICAgICBjb25zdCBGcm9udGVuZFJvdXRlciYgcm91dGVyID0gX2NvbnRyb2xsZXItPmZyb250
ZW5kUm91dGVyKCk7CiAKQEAgLTkxNyw5ICs5MTcsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogQGVuZAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xFdmVudERpc3BhdGNoZXJz
Lm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIAotIyMj
IEJlZ2luIEZpbGU6IFJXSVByb3RvY29sLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2wu
aAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KQEAgLTk1MiwxNiArOTUyLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNw
ZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVz
dFByb3RvY29sSlNPTk9iamVjdC5oPgogCiAKLUBjbGFzcyBSV0lQcm90b2NvbERhdGFiYXNlRXJy
b3I7CitAY2xhc3MgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcjsKIAogCiAKIAogX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFJXSVByb3RvY29sRGF0
YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAorQGludGVyZmFjZSBUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yIDogUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1
aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAv
KiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAg
LTk3MCwxNSArOTcwLDE1IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0Iikp
KQogCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFj
ZSBSV0lQcm90b2NvbERhdGFiYXNlRG9tYWluRXZlbnREaXNwYXRjaGVyIDogTlNPYmplY3QKLS0g
KHZvaWQpZGlkRXhlY3V0ZU9wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5OYW1lczooTlNBcnJh
eS8qPE5TU3RyaW5nPiovICoqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKilub3RlcyB0
aW1lc3RhbXA6KGRvdWJsZSAqKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqKXBheWxvYWQgc3Fs
RXJyb3I6KFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKilzcWxFcnJvciBzY3JlZW5Db2xvcjoo
TlNTdHJpbmcgKiopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5Lyo8TlNTdHJp
bmc+Ki8gKiopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5TU3RyaW5nICoqKXByaW50Q29s
b3I7Ci0tICh2b2lkKWRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhDb2x1bW5OYW1l
czooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICop
bm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQg
c3FsRXJyb3I6KFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqKXNxbEVycm9yIHNjcmVlbkNvbG9y
OihOU1N0cmluZyAqKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3Ry
aW5nPiovICopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5TU3RyaW5nICopcHJpbnRDb2xv
cjsKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5FdmVudERpc3BhdGNoZXIg
OiBOU09iamVjdAorLSAodm9pZClkaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aENvbHVt
bk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3Ry
aW5nICoqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlICopdGltZXN0YW1wIHZhbHVlczooUHJvdG9j
b2xKU09OT2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihQcm90b2NvbEpTT05PYmplY3QgKiopcGF5
bG9hZCBzcWxFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKilzcWxFcnJvciBzY3Jl
ZW5Db2xvcjooTlNTdHJpbmcgKiopc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOihOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKiopYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KE5TU3RyaW5nICoq
KXByaW50Q29sb3I7CistICh2b2lkKWRpZEV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhD
b2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5T
U3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUHJvdG9j
b2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxv
YWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilzcWxFcnJvciBzY3JlZW5D
b2xvcjooTlNTdHJpbmcgKilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKWFsdGVybmF0ZUNvbG9ycyBwcmludENvbG9yOihOU1N0cmluZyAqKXByaW50
Q29sb3I7CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbC5oCisjIyMgRW5kIEZp
bGU6IFRlc3RQcm90b2NvbC5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFs
LmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTAw
OSwxOSArMTAwOSwxOSBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24KIC8vIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiUldJUHJvdG9jb2wuaCIKLSNp
bXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJv
dG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAotQGludGVyZmFjZSBS
V0lQcm90b2NvbERhdGFiYXNlRG9tYWluRXZlbnREaXNwYXRjaGVyIChQcml2YXRlKQorQGludGVy
ZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkV2ZW50RGlzcGF0Y2hlciAoUHJpdmF0ZSkK
IC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KEluc3BlY3Rvcjo6QXVnbWVudGFi
bGVJbnNwZWN0b3JDb250cm9sbGVyKiljb250cm9sbGVyOwogQGVuZAogCiAKLSMjIyBFbmQgRmls
ZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEludGVy
bmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBCZWdpbiBG
aWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEwNTMsMTYgKzEwNTMsMTYgQEAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAvLyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
UldJUHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIK
IAotI2ltcG9ydCAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQg
IlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKLUBpbXBsZW1lbnRhdGlvbiBSV0lQcm90b2Nv
bERhdGFiYXNlRXJyb3IKK0BpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9y
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBj
b2RlOihpbnQpY29kZTsKIHsKQEAgLTExMDEsNCArMTEwMSw0IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCisj
IyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9t
YWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0
aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAppbmRleCAyYjEyZjkxZDBiMjg4YmYyMGU2YjMz
NTNkZjk3NTY5YTc1NmVmYmI1Li5hOTY3M2ZiY2JkNmRlNzFiMGE5ZDdjNTY4OGVmNjQ4Y2JjZTFl
NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1
bHQKQEAgLTU4OSw3ICs1ODksNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNv
ZGUpIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwCiAKLSMj
IyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVnaW4g
RmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02MjMsNyAr
NjIzLDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCi1AcHJvdG9jb2wgUldJUHJvdG9jb2xOZXR3
b3JrMURvbWFpbkhhbmRsZXI7CitAcHJvdG9jb2wgVGVzdFByb3RvY29sTmV0d29yazFEb21haW5I
YW5kbGVyOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtNjMxLDEwICs2MzEsMTAgQEAg
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAjaWYgUExBVEZPUk0oV0VCX0NPTU1BTkRTKQogY2xhc3Mg
T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgQWx0
ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgT2JqQ0luc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIoaWQ8UldJUHJvdG9jb2xOZXR3b3JrMURvbWFp
bkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KKyAgICBPYmpDSW5z
cGVjdG9yTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrMURv
bWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbG9hZFJlc291cmNlKGxvbmcgcmVxdWVzdElkKSBvdmVycmlkZTsKIHByaXZhdGU6
Ci0gICAgUmV0YWluUHRyPGlkPFJXSVByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPj4gbV9k
ZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8aWQ8VGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5k
bGVyPj4gbV9kZWxlZ2F0ZTsKIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oV0VCX0NPTU1BTkRTKQog
CkBAIC02NDQsOSArNjQ0LDkgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9y
CiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEVu
ZCBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCi0jIyMgQmVnaW4gRmls
ZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3Rv
Y29sQ29uZmlndXJhdGlvbi5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTY3OCwxMCArNjc4LDEwIEBAIHByaXZhdGU6
CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJU
ZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgiCiAKLSNpbXBvcnQgIlJXSVByb3RvY29sSW50ZXJu
YWwuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW1wb3J0
ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERp
c3BhdGNoZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JD
b250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaD4KQEAgLTY4OSwxMSArNjg5LDExIEBAIHByaXZhdGU6CiAKIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLUBpbXBsZW1lbnRhdGlvbiBSV0lQcm90b2NvbENv
bmZpZ3VyYXRpb24KK0BpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uCiB7
CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxlcjsKLSAgICBp
ZDxSV0lQcm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlcj4gX25ldHdvcmsxSGFuZGxlcjsKLSAg
ICBSV0lQcm90b2NvbE5ldHdvcmszRG9tYWluRXZlbnREaXNwYXRjaGVyICpfbmV0d29yazNFdmVu
dERpc3BhdGNoZXI7CisgICAgaWQ8VGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPiBf
bmV0d29yazFIYW5kbGVyOworICAgIFRlc3RQcm90b2NvbE5ldHdvcmszRG9tYWluRXZlbnREaXNw
YXRjaGVyICpfbmV0d29yazNFdmVudERpc3BhdGNoZXI7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aENvbnRyb2xsZXI6KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciopY29udHJv
bGxlcgpAQCAtNzEzLDcgKzcxMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
W3N1cGVyIGRlYWxsb2NdOwogfQogCi0tICh2b2lkKXNldE5ldHdvcmsxSGFuZGxlcjooaWQ8UldJ
UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+KWhhbmRsZXIKKy0gKHZvaWQpc2V0TmV0d29y
azFIYW5kbGVyOihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+KWhhbmRsZXIK
IHsKICAgICBpZiAoaGFuZGxlciA9PSBfbmV0d29yazFIYW5kbGVyKQogICAgICAgICByZXR1cm47
CkBAIC03MjYsMjQgKzcyNiwyNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IAotLSAoaWQ8UldJUHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+KW5ldHdvcmsxSGFuZGxl
cgorLSAoaWQ8VGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPiluZXR3b3JrMUhhbmRs
ZXIKIHsKICAgICByZXR1cm4gX25ldHdvcmsxSGFuZGxlcjsKIH0KIAotLSAoUldJUHJvdG9jb2xO
ZXR3b3JrM0RvbWFpbkV2ZW50RGlzcGF0Y2hlciAqKW5ldHdvcmszRXZlbnREaXNwYXRjaGVyCist
IChUZXN0UHJvdG9jb2xOZXR3b3JrM0RvbWFpbkV2ZW50RGlzcGF0Y2hlciAqKW5ldHdvcmszRXZl
bnREaXNwYXRjaGVyCiB7CiAgICAgaWYgKCFfbmV0d29yazNFdmVudERpc3BhdGNoZXIpCi0gICAg
ICAgIF9uZXR3b3JrM0V2ZW50RGlzcGF0Y2hlciA9IFtbUldJUHJvdG9jb2xOZXR3b3JrM0RvbWFp
bkV2ZW50RGlzcGF0Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9jb250cm9sbGVyXTsK
KyAgICAgICAgX25ldHdvcmszRXZlbnREaXNwYXRjaGVyID0gW1tUZXN0UHJvdG9jb2xOZXR3b3Jr
M0RvbWFpbkV2ZW50RGlzcGF0Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9jb250cm9s
bGVyXTsKICAgICByZXR1cm4gX25ldHdvcmszRXZlbnREaXNwYXRjaGVyOwogfQogCiBAZW5kCiAK
IAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KKyMjIyBFbmQgRmls
ZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJv
dG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1
cmF0aW9uLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCkBAIC03NzQsMTggKzc3NCwxOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIGdlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uCiAv
LyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgPFdlYklu
c3BlY3Rvci9SV0lQcm90b2NvbC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2Nv
bC5oPgogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZh
Y2UgUldJUHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZXRhaW4sIHNldHRlcj1zZXROZXR3b3JrMUhhbmRsZXI6KSBpZDxSV0lQcm90b2NvbE5l
dHdvcmsxRG9tYWluSGFuZGxlcj4gbmV0d29yazFIYW5kbGVyOwotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBSV0lQcm90b2NvbE5ldHdvcmszRG9tYWluRXZlbnREaXNwYXRjaGVyICpu
ZXR3b3JrM0V2ZW50RGlzcGF0Y2hlcjsKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sQ29uZmlndXJh
dGlvbiA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCBzZXR0ZXI9c2V0
TmV0d29yazFIYW5kbGVyOikgaWQ8VGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPiBu
ZXR3b3JrMUhhbmRsZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFRlc3RQcm90
b2NvbE5ldHdvcmszRG9tYWluRXZlbnREaXNwYXRjaGVyICpuZXR3b3JrM0V2ZW50RGlzcGF0Y2hl
cjsKIEBlbmQKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oCisj
IyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24uaAogCi0jIyMgQmVnaW4gRmls
ZTogUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0
UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC04MTcsMTAgKzgxNywxMCBA
QCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNw
ZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29s
QmFja2VuZERpc3BhdGNoZXJzLmgiCiAKLSNpbmNsdWRlICJSV0lQcm90b2NvbEludGVybmFsLmgi
Ci0jaW5jbHVkZSAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbmNsdWRl
ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252
ZXJzaW9uSGVscGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVl
cy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTg0OCw5ICs4NDgsOSBAQCB2b2lkIE9i
akNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UobG9uZyBy
ZXF1ZXN0SWQpCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJX
SVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bEJhY2tlbmREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xFbnVt
Q29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252
ZXJzaW9uSGVscGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODgxLDcgKzg4MSw3IEBAIHZvaWQgT2JqQ0luc3Bl
Y3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZShsb25nIHJlcXVlc3RJ
ZCkKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgZnJvbSBnZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbgogLy8gYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJSV0lQcm90b2Nv
bEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEFycmF5Q29u
dmVyc2lvbkhlbHBlcnMuaCIKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTg5Niw5ICs4
OTYsOSBAQCBPYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpOwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90
b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEVu
dW1Db252ZXJzaW9uSGVscGVycy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEV2ZW50
RGlzcGF0Y2hlcnMubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNo
ZXJzLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtOTMwLDkgKzkzMCw5IEBAIE9iakNFbnVtVHlwZSBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9j
b2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9y
dCAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90
b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yVmFsdWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC05NDEsNyAr
OTQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKLUBpbXBsZW1lbnRhdGlv
biBSV0lQcm90b2NvbE5ldHdvcmszRG9tYWluRXZlbnREaXNwYXRjaGVyCitAaW1wbGVtZW50YXRp
b24gVGVzdFByb3RvY29sTmV0d29yazNEb21haW5FdmVudERpc3BhdGNoZXIKIHsKICAgICBBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqIF9jb250cm9sbGVyOwogfQpAQCAtOTY4LDkgKzk2
OCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxl
OiBSV0lQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3Rv
Y29sRXZlbnREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2wuaAor
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTAwMywzNSArMTAwMywz
NSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KIAotI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVj
dC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KIAog
Ci1AY2xhc3MgUldJUHJvdG9jb2xOZXR3b3JrMk5ldHdvcmtFcnJvcjsKK0BjbGFzcyBUZXN0UHJv
dG9jb2xOZXR3b3JrMk5ldHdvcmtFcnJvcjsKIAogCiAKIAogX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFJXSVByb3RvY29sTmV0d29yazJOZXR3b3Jr
RXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sTmV0
d29yazJOZXR3b3JrRXJyb3IgOiBQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJl
cXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsK
IC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwog
QGVuZAogCi1AcHJvdG9jb2wgUldJUHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXIgPE5TT2Jq
ZWN0PgorQHByb3RvY29sIFRlc3RQcm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlciA8TlNPYmpl
Y3Q+CiBAcmVxdWlyZWQKIC0gKHZvaWQpbG9hZFJlc291cmNlV2l0aEVycm9yQ2FsbGJhY2s6KHZv
aWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9p
ZCheKSgpKXN1Y2Nlc3NDYWxsYmFjazsKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFJXSVByb3RvY29sTmV0d29yazNEb21haW5FdmVu
dERpc3BhdGNoZXIgOiBOU09iamVjdAorQGludGVyZmFjZSBUZXN0UHJvdG9jb2xOZXR3b3JrM0Rv
bWFpbkV2ZW50RGlzcGF0Y2hlciA6IE5TT2JqZWN0CiAtICh2b2lkKXJlc291cmNlTG9hZGVkOwog
QGVuZAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2wuaAorIyMjIEVuZCBGaWxlOiBUZXN0
UHJvdG9jb2wuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMg
QmVnaW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEwNjIsMTkgKzEw
NjIsMTkgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiUldJUHJvdG9jb2wuaCIKLSNpbXBv
cnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9j
b2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAotQGludGVyZmFjZSBSV0lQ
cm90b2NvbE5ldHdvcmszRG9tYWluRXZlbnREaXNwYXRjaGVyIChQcml2YXRlKQorQGludGVyZmFj
ZSBUZXN0UHJvdG9jb2xOZXR3b3JrM0RvbWFpbkV2ZW50RGlzcGF0Y2hlciAoUHJpdmF0ZSkKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KEluc3BlY3Rvcjo6QXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyKiljb250cm9sbGVyOwogQGVuZAogCiAKLSMjIyBFbmQgRmlsZTog
UldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFs
LmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBCZWdpbiBGaWxl
OiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTExMDYsOSArMTEwNiw5IEBAIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1w
cm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVBy
b3RvY29sSW50ZXJuYWwuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNp
bXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0
UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclZhbHVlcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIApAQCAtMTEx
Nyw3ICsxMTE3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKLUBpbXBsZW1l
bnRhdGlvbiBSV0lQcm90b2NvbE5ldHdvcmsyTmV0d29ya0Vycm9yCitAaW1wbGVtZW50YXRpb24g
VGVzdFByb3RvY29sTmV0d29yazJOZXR3b3JrRXJyb3IKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogewpAQCAtMTE1
OCw0ICsxMTU4LDQgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKLSMjIyBFbmQg
RmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBl
cy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CmluZGV4IDhmZmMyMWM2
NTY1M2Q5MjJiNzMxNWE4ZjkxZjZjMDMxMTRjYWZhZjQuLmQzNzI2MThlN2ExNDIyNmQ4ODE4YmE3
MTIzMjdlY2I0YmI4ZDExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFp
bi5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1
bHQKQEAgLTQwOCw3ICs0MDgsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNv
ZGUpIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuY3BwCiAKLSMj
IyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgQmVnaW4g
RmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC00NTMsOSAr
NDUzLDkgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBF
bmQgRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKIAotIyMjIEJlZ2luIEZp
bGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90
b2NvbENvbmZpZ3VyYXRpb24ubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC00ODcsMTAgKzQ4NywxMCBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkK
IAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24u
aCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24uaCIKIAotI2ltcG9ydCAiUldJ
UHJvdG9jb2xJbnRlcm5hbC5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJv
dG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FsdGVy
bmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgpAQCAtNDk4LDcgKzQ5OCw3IEBAIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1AaW1w
bGVtZW50YXRpb24gUldJUHJvdG9jb2xDb25maWd1cmF0aW9uCitAaW1wbGVtZW50YXRpb24gVGVz
dFByb3RvY29sQ29uZmlndXJhdGlvbgogewogICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlciogX2NvbnRyb2xsZXI7CiB9CkBAIC01MjEsOSArNTIxLDkgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIEBlbmQKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJh
dGlvbi5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLm1tCiAKLSMj
IyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24uaAorIyMjIEJlZ2luIEZpbGU6
IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24uaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTU1NCwxNiArNTU0LDE2IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2FtZS10eXBlLWlkLWRpZmZlcmVudC1k
b21haW4uanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0j
aW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2wuaD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rv
ci9UZXN0UHJvdG9jb2wuaD4KIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQi
KSkpCi1AaW50ZXJmYWNlIFJXSVByb3RvY29sQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0CitAaW50
ZXJmYWNlIFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24gOiBOU09iamVjdAogQGVuZAogCiAKLSMj
IyBFbmQgRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBFbmQgRmlsZTogVGVz
dFByb3RvY29sQ29uZmlndXJhdGlvbi5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEJh
Y2tlbmREaXNwYXRjaGVycy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmRE
aXNwYXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTU5NSwxMCArNTk1LDEwIEBAIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQmFj
a2VuZERpc3BhdGNoZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hl
cnMuaCIKIAotI2luY2x1ZGUgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKLSNpbmNsdWRlICJSV0lQ
cm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbElu
dGVybmFsLmgiCisjaW5jbHVkZSAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewpAQCAtNjA5LDkgKzYwOSw5IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEJh
Y2tlbmREaXNwYXRjaGVycy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlz
cGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBl
cnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTY0Miw3ICs2NDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8v
IERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJv
bSBzYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJz
aW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVy
cy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtNjU1LDkgKzY1NSw5IEBAIE9iakNF
bnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sRW51bUNvbnZl
cnNpb25IZWxwZXJzLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sRXZlbnREaXNwYXRjaGVycy5t
bQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC02ODksOSArNjg5LDkgQEAgT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3Mu
cHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgi
CisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJSV0lQcm90b2Nv
bEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZl
cnNpb25IZWxwZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTcwMSw5ICs3MDEsOSBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEV2
ZW50RGlzcGF0Y2hlcnMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRXZlbnREaXNwYXRj
aGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2wuaAorIyMjIEJlZ2luIEZpbGU6
IFRlc3RQcm90b2NvbC5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzM2LDcgKzczNiw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1w
b3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJJ
bnNwZWN0b3IvVGVzdFByb3RvY29sSlNPTk9iamVjdC5oPgogCiAKIApAQCAtNzUwLDkgKzc1MCw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVBy
b3RvY29sLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sLmgKIAotIyMjIEJlZ2luIEZpbGU6
IFJXSVByb3RvY29sSW50ZXJuYWwuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVy
bmFsLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC03ODMsMTcgKzc4MywxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIHNhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24KIC8vIGJ5IHRoZSBz
Y3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1p
bnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiUldJUHJvdG9jb2wuaCIK
LSNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0
UHJvdG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogCiAKIAotIyMj
IEVuZCBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3Rv
Y29sSW50ZXJuYWwuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQorIyMj
IEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODI1LDkgKzgyNSw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9j
b2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9y
dCAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90
b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCkBAIC04MzgsNCAr
ODM4LDQgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKLSMjIyBFbmQgRmlsZTog
UldJUHJvdG9jb2xUeXBlcy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFk
b3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggOTA1MzIzM2U4MjIy
YWYyOWZmZTNhMzVjNTAwYTgyNjI0N2I3ZTc5MS4uZGRjMWY0MWE4ZTc4NGE4Y2M4OWQ0MTJmNDFk
NmIwNTMxZWRmNzg4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0
CkBAIC00ODEsNyArNDgxLDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2Rl
KSB7CiAKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcAogCi0jIyMg
QmVnaW4gRmlsZTogUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZp
bGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTI0LDkgKzUy
NCw5IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
IAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgRW5k
IEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCiAKLSMjIyBCZWdpbiBGaWxl
OiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9j
b2xDb25maWd1cmF0aW9uLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTU4LDEwICs1NTgsMTAgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAK
ICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgi
CisjaW1wb3J0ICJUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgiCiAKLSNpbXBvcnQgIlJXSVBy
b3RvY29sSW50ZXJuYWwuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJz
LmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3Rv
Y29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFi
bGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KQEAgLTU2OSw3ICs1NjksNyBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotQGltcGxl
bWVudGF0aW9uIFJXSVByb3RvY29sQ29uZmlndXJhdGlvbgorQGltcGxlbWVudGF0aW9uIFRlc3RQ
cm90b2NvbENvbmZpZ3VyYXRpb24KIHsKICAgICBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIqIF9jb250cm9sbGVyOwogfQpAQCAtNTkyLDkgKzU5Miw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRp
b24ubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5tbQogCi0jIyMg
QmVnaW4gRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBCZWdpbiBGaWxlOiBU
ZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02MjUsMTYgKzYyNSwxNiBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0
dGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNp
bXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9y
L1Rlc3RQcm90b2NvbC5oPgogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKLUBpbnRlcmZhY2UgUldJUHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QKK0BpbnRl
cmZhY2UgVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0CiBAZW5kCiAKIAotIyMj
IEVuZCBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24uaAorIyMjIEVuZCBGaWxlOiBUZXN0
UHJvdG9jb2xDb25maWd1cmF0aW9uLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sQmFj
a2VuZERpc3BhdGNoZXJzLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERp
c3BhdGNoZXJzLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjY2LDEwICs2NjYsMTAgQEAgX19hdHRyaWJ1dGVfXygo
dmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJp
bmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVy
cy5oIgogCi0jaW5jbHVkZSAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgotI2luY2x1ZGUgIlJXSVBy
b3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiVGVzdFByb3RvY29sSW50
ZXJuYWwuaCIKKyNpbmNsdWRlICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CkBAIC02NzgsOSArNjc4LDkgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAK
IH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQmFj
a2VuZERpc3BhdGNoZXJzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNw
YXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhl
bHBlcnMuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgpAQCAtNzExLDcgKzcxMSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IHNoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJz
aW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVy
cy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtNzE5LDM2ICs3MTksMzYgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgogT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCi1pbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xT
dHJpbmcoUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUgdmFsdWUpCitpbmxpbmUgU3RyaW5n
IHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlIHZhbHVlKQog
ewogICAgIHN3aXRjaCh2YWx1ZSkgewotICAgIGNhc2UgUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0
aFR5cGVOdWxsOgorICAgIGNhc2UgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlTnVsbDoK
ICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibnVsbCIpOwotICAgIGNhc2UgUldJUHJvdG9j
b2xSdW50aW1lS2V5UGF0aFR5cGVTdHJpbmc6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xSdW50aW1l
S2V5UGF0aFR5cGVTdHJpbmc6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInN0cmluZyIp
OwotICAgIGNhc2UgUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVBcnJheToKKyAgICBjYXNl
IFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZUFycmF5OgogICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJhcnJheSIpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFJXSVBy
b3RvY29sUnVudGltZUtleVBhdGhUeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKQoraW5saW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIm51bGwi
KQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVOdWxsOworICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlTnVsbDsKICAgICBpZiAo
dmFsdWUgPT0gInN0cmluZyIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbFJ1bnRpbWVLZXlQ
YXRoVHlwZVN0cmluZzsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRo
VHlwZVN0cmluZzsKICAgICBpZiAodmFsdWUgPT0gImFycmF5IikKLSAgICAgICAgcmV0dXJuIFJX
SVByb3RvY29sUnVudGltZUtleVBhdGhUeXBlQXJyYXk7CisgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xSdW50aW1lS2V5UGF0aFR5cGVBcnJheTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVOdWxsOworICAgIHJldHVy
biBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVOdWxsOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVs
cGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5o
CiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKyMjIyBC
ZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzgw
LDkgKzc4MCw5IEBAIGlubGluZSBSV0lQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90
b2NvbEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1w
b3J0ICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFBy
b3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JWYWx1ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTc5MCw5
ICs3OTAsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAotIyMjIEVuZCBGaWxl
OiBSV0lQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3Rv
Y29sRXZlbnREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2wuaAor
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODI1LDIzICs4MjUsMjMg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiAKLSNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3Qu
aD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9UZXN0UHJvdG9jb2xKU09OT2JqZWN0Lmg+CiAKIAot
QGNsYXNzIFJXSVByb3RvY29sUnVudGltZUtleVBhdGg7CitAY2xhc3MgVGVzdFByb3RvY29sUnVu
dGltZUtleVBhdGg7CiAKIAotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xS
dW50aW1lS2V5UGF0aFR5cGUpIHsKLSAgICBSV0lQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZU51
bGwsCi0gICAgUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVTdHJpbmcsCi0gICAgUldJUHJv
dG9jb2xSdW50aW1lS2V5UGF0aFR5cGVBcnJheSwKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSkgeworICAgIFRlc3RQcm90b2NvbFJ1bnRp
bWVLZXlQYXRoVHlwZU51bGwsCisgICAgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlU3Ry
aW5nLAorICAgIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZUFycmF5LAogfTsKIAogCiBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgUldJUHJv
dG9jb2xSdW50aW1lS2V5UGF0aCA6IFJXSVByb3RvY29sSlNPTk9iamVjdAotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoVHlwZTooUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpdHlwZTsKLS8q
IHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFJXSVByb3RvY29sUnVu
dGltZUtleVBhdGhUeXBlIHR5cGU7CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQ
YXRoIDogUHJvdG9jb2xKU09OT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUeXBlOihU
ZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpdHlwZTsKKy8qIHJlcXVpcmVkICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSB0
eXBlOwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5n
ICpzdHJpbmc7CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNB
cnJheS8qPE5TU3RyaW5nPiovICphcnJheTsKIEBlbmQKQEAgLTg1MSw5ICs4NTEsOSBAQCBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogCiAKLSMjIyBFbmQgRmlsZTog
UldJUHJvdG9jb2wuaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCi0jIyMgQmVnaW4g
RmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29s
SW50ZXJuYWwuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KQEAgLTg4NCwxNyArODg0LDE3IEBAIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVy
cy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBv
cnQgIlJXSVByb3RvY29sLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5h
bC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09O
T2JqZWN0SW50ZXJuYWwuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5z
cGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFs
dWVzLmg+CiAKIAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMg
RW5kIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVBy
b3RvY29sVHlwZXMubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTkyNiwxOCArOTI2LDE4IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKKyNpbXBvcnQg
IlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZl
cnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBl
cnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCi1A
aW1wbGVtZW50YXRpb24gUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0aAorQGltcGxlbWVudGF0aW9u
IFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFR5
cGU6KFJXSVByb3RvY29sUnVudGltZUtleVBhdGhUeXBlKXR5cGU7CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhUeXBlOihUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpdHlwZTsKIHsKICAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKQEAgLTk0OCwxNCArOTQ4LDE0
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0g
KHZvaWQpc2V0VHlwZTooUldJUHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpdHlwZQorLSAodm9p
ZClzZXRUeXBlOihUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpdHlwZQogewogICAgIFtz
dXBlciBzZXRTdHJpbmc6dG9Qcm90b2NvbFN0cmluZyh0eXBlKSBmb3JLZXk6QCJ0eXBlIl07CiB9
CiAKLS0gKFJXSVByb3RvY29sUnVudGltZUtleVBhdGhUeXBlKXR5cGUKKy0gKFRlc3RQcm90b2Nv
bFJ1bnRpbWVLZXlQYXRoVHlwZSl0eXBlCiB7Ci0gICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmlu
ZzxSV0lQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4oW3N1cGVyIHN0cmluZ0ZvcktleTpAInR5
cGUiXSk7CisgICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1l
S2V5UGF0aFR5cGU+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJ0eXBlIl0pOwogfQogCiAtICh2b2lk
KXNldFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcKQEAgLTk4MSw0ICs5ODEsNCBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogQGVuZAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xU
eXBlcy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZjQwMjhh
ODIxYWM5Y2Q3MTgzNGJiOGY4ZDg2MDJhMTlkODQxYzMzNC4uNDMwNGFlMWE2NTJkYmZmM2U4NThl
ZWE0ZjU3MmM5ZjBjYTBiYmM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1w
cmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXBy
aW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CkBAIC00MDMsNyArNDAzLDcgQEAgU3RyaW5nIGdldEVu
dW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKICMjIyBFbmQgRmlsZTogSW5zcGVjdG9yUHJv
dG9jb2xPYmplY3RzLmNwcAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xCYWNrZW5kRGlz
cGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVy
cy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgpAQCAtNDQ2LDkgKzQ0Niw5IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEJhY2tl
bmREaXNwYXRjaGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRj
aGVycy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KKyMj
IyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLm1tCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNDgw
LDEwICs0ODAsMTAgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBieSB0aGUgc2NyaXB0OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9y
LXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJ
UHJvdG9jb2xDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xDb25maWd1cmF0
aW9uLmgiCiAKLSNpbXBvcnQgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKLSNpbXBvcnQgIlJXSVBy
b3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5h
bC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5oPgogI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlcnMuaD4K
QEAgLTQ5MSw3ICs0OTEsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAotQGltcGxlbWVudGF0aW9uIFJXSVByb3RvY29sQ29uZmlndXJhdGlv
bgorQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24KIHsKICAgICBBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqIF9jb250cm9sbGVyOwogfQpAQCAtNTE0LDkgKzUx
NCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxl
OiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29s
Q29uZmlndXJhdGlvbi5tbQogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0
aW9uLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC01NDcsMTYgKzU0NywxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5
cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uCiAvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQ
cm90b2NvbC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2NvbC5oPgogCiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgUldJUHJvdG9j
b2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sQ29uZmln
dXJhdGlvbiA6IE5TT2JqZWN0CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbENv
bmZpZ3VyYXRpb24uaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgK
IAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1tCisjIyMg
QmVnaW4gRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1tCiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAt
NTg4LDEwICs1ODgsMTAgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkp
CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbXBv
cnQgIlRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgogCi0jaW5jbHVkZSAiUldJUHJv
dG9jb2xJbnRlcm5hbC5oIgotI2luY2x1ZGUgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxw
ZXJzLmgiCisjaW5jbHVkZSAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJUZXN0
UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC02MDAsOSAr
NjAwLDkgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rv
cgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1tCisjIyMg
RW5kIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4g
RmlsZTogUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEJlZ2luIEZpbGU6
IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oCiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjMzLDcgKzYz
Myw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYWxpYXNl
ZC1wcmltaXRpdmUtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRp
bmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgor
I2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgogCiBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIApAQCAtNjQ0LDkgKzY0NCw5IEBAIE9iakNFbnVtVHlwZSBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgK
KyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKIAotIyMj
IEJlZ2luIEZpbGU6IFJXSVByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQorIyMjIEJlZ2luIEZp
bGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02NzgsOSArNjc4
LDkgQEAgT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KTsKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0
UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgi
CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKQEAgLTY4OCw5ICs2ODgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMu
bW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQogCi0jIyMg
QmVnaW4gRmlsZTogUldJUHJvdG9jb2wuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbC5o
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgpAQCAtNzIzLDcgKzcyMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
ICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNwZWN0
b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFBy
b3RvY29sSlNPTk9iamVjdC5oPgogCiAKIApAQCAtNzM3LDkgKzczNyw5IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sLmgKKyMjIyBF
bmQgRmlsZTogVGVzdFByb3RvY29sLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sSW50
ZXJuYWwuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBA
IC03NzAsMTcgKzc3MCwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gRE8gTk9U
IEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUt
ZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29sLmgiCi0jaW1w
b3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3Rv
Y29sLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKICNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIAogCiAKLSMjIyBFbmQg
RmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbElu
dGVybmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBCZWdp
biBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTgxMiw5ICs4MTIsOSBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlJX
SVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xF
bnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
clZhbHVlcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIApAQCAtODIzLDQgKzgyMyw0
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVBy
b3RvY29sVHlwZXMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZXMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGE3Y2NiNGE5NmVmNGZhMjU5NWU3ZjU4
ZWM4NjMzZjM4YjdhNzczMzkuLmJiYTk1NDk3ZDA0OGQ0NjMzNWMyYTZiOGRlNjhhNmE2NjVhNDdk
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtNDMxLDcgKzQzMSw3
IEBAIFN0cmluZyBnZXRFbnVtQ29uc3RhbnRWYWx1ZShpbnQgY29kZSkgewogCiAjIyMgRW5kIEZp
bGU6IEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVBy
b3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xC
YWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTQ3Niw5ICs0NzYsOSBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLSMjIyBFbmQgRmlsZTog
UldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9j
b2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xDb25m
aWd1cmF0aW9uLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5t
bQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KQEAgLTUxMCwxMCArNTEwLDEwIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8g
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dl
bmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiVGVzdFBy
b3RvY29sQ29uZmlndXJhdGlvbi5oIgogCi0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgi
Ci0jaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgorI2ltcG9ydCAiVGVz
dFByb3RvY29sSW50ZXJuYWwuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRj
aGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdl
bnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQWx0ZXJuYXRlQmFja2Vu
ZERpc3BhdGNoZXJzLmg+CkBAIC01MjEsNyArNTIxLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLUBpbXBsZW1lbnRhdGlvbiBSV0lQcm90
b2NvbENvbmZpZ3VyYXRpb24KK0BpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xDb25maWd1cmF0
aW9uCiB7CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxlcjsK
IH0KQEAgLTU0NCw5ICs1NDQsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogQGVuZAog
CiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLm1tCisjIyMgRW5kIEZp
bGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KIAotIyMjIEJlZ2luIEZpbGU6IFJXSVBy
b3RvY29sQ29uZmlndXJhdGlvbi5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sQ29uZmln
dXJhdGlvbi5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtNTc3LDE2ICs1NzcsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbgogLy8gYnkgdGhl
IHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3Iv
UldJUHJvdG9jb2wuaD4KKyNpbXBvcnQgPFdlYkluc3BlY3Rvci9UZXN0UHJvdG9jb2wuaD4KIAog
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFJXSVBy
b3RvY29sQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbENv
bmZpZ3VyYXRpb24gOiBOU09iamVjdAogQGVuZAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9j
b2xDb25maWd1cmF0aW9uLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlv
bi5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQor
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTYxOCwxMCArNjE4LDEwIEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCisj
aW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKIAotI2luY2x1ZGUgIlJX
SVByb3RvY29sSW50ZXJuYWwuaCIKLSNpbmNsdWRlICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCisjaW5jbHVkZSAi
VGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNjMy
LDkgKzYzMiw5IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB9IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQor
IyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMubW0KIAotIyMjIEJl
Z2luIEZpbGU6IFJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKKyMjIyBCZWdpbiBG
aWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTY2NSw3
ICs2NjUsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWFy
cmF5LXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQog
Ci0jaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQg
IlRlc3RQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKQEAgLTY3MywzOCArNjczLDM4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVt
VHlwZT4KIE9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAKIAotaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFJXSVByb3RvY29sRGVidWdn
ZXJSZWFzb24gdmFsdWUpCitpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3Rv
Y29sRGVidWdnZXJSZWFzb24gdmFsdWUpCiB7CiAgICAgc3dpdGNoKHZhbHVlKSB7Ci0gICAgY2Fz
ZSBSV0lQcm90b2NvbERlYnVnZ2VyUmVhc29uRGllZDoKKyAgICBjYXNlIFRlc3RQcm90b2NvbERl
YnVnZ2VyUmVhc29uRGllZDoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRGllZCIpOwot
ICAgIGNhc2UgUldJUHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkZhaW50ZWQ6CisgICAgY2FzZSBUZXN0
UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkZhaW50ZWQ6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIkZhaW50ZWQiKTsKLSAgICBjYXNlIFJXSVByb3RvY29sRGVidWdnZXJSZWFzb25IdW5ncnk6
CisgICAgY2FzZSBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkh1bmdyeToKICAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiSHVuZ3J5Iik7CiAgICAgfQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxp
bmUgUldJUHJvdG9jb2xEZWJ1Z2dlclJlYXNvbiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK2lubGluZSBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbiBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIkRpZWQi
KQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkRpZWQ7CisgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkRpZWQ7CiAgICAgaWYgKHZhbHVlID09
ICJGYWludGVkIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGVidWdnZXJSZWFzb25GYWlu
dGVkOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25GYWludGVkOwog
ICAgIGlmICh2YWx1ZSA9PSAiSHVuZ3J5IikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sRGVi
dWdnZXJSZWFzb25IdW5ncnk7CisgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJl
YXNvbkh1bmdyeTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUldJUHJv
dG9jb2xEZWJ1Z2dlclJlYXNvbkRpZWQ7CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbERlYnVnZ2Vy
UmVhc29uRGllZDsKIH0KIAogCiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5k
IEZpbGU6IFJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKKyMjIyBFbmQgRmlsZTog
VGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJX
SVByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2Nv
bEV2ZW50RGlzcGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03MzYsOSArNzM2LDkgQEAgaW5saW5lIFJX
SVByb3RvY29sRGVidWdnZXJSZWFzb24gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAi
VGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xFbnVtQ29udmVy
c2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC03NDgsOSArNzQ4LDkgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xFdmVudERpc3BhdGNo
ZXJzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIAot
IyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9j
b2wuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTc4MywxNiArNzgzLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJ
bnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3Iv
VGVzdFByb3RvY29sSlNPTk9iamVjdC5oPgogCiAKIAogCiAKLXR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFJXSVByb3RvY29sRGVidWdnZXJSZWFzb24pIHsKLSAgICBSV0lQcm90b2NvbERlYnVn
Z2VyUmVhc29uRGllZCwKLSAgICBSV0lQcm90b2NvbERlYnVnZ2VyUmVhc29uRmFpbnRlZCwKLSAg
ICBSV0lQcm90b2NvbERlYnVnZ2VyUmVhc29uSHVuZ3J5LAordHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24pIHsKKyAgICBUZXN0UHJvdG9jb2xEZWJ1
Z2dlclJlYXNvbkRpZWQsCisgICAgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25GYWludGVkLAor
ICAgIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uSHVuZ3J5LAogfTsKIAogCkBAIC04MDIsOSAr
ODAyLDkgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xEZWJ1Z2dlclJl
YXNvbikgewogCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbC5oCisjIyMgRW5kIEZpbGU6
IFRlc3RQcm90b2NvbC5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgK
KyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODM1LDE3
ICs4MzUsMTcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xEZWJ1Z2dl
clJlYXNvbikgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5
IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uCiAvLyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29s
LmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgorI2ltcG9ydCAi
VGVzdFByb3RvY29sLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwu
aCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIAogCiAK
LSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMgRW5kIEZpbGU6IFRlc3RQ
cm90b2NvbEludGVybmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0K
KyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTg3Nyw5ICs4
NzcsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBSV0lQcm90b2NvbERlYnVnZ2VyUmVh
c29uKSB7CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAi
VGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xFbnVtQ29udmVy
c2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0
IDx3dGYvQXNzZXJ0aW9ucy5oPgogCkBAIC04OTAsNCArODkwLDQgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xUeXBlcy5tbQorIyMj
IEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tZW51bS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24t
cmVzdWx0CmluZGV4IDA0ZmJmNjQ2ZDU1OWRhYjBlMTE2ODJiNWMxZTgzNzg0YzI4ODJjYzYuLjM0
MDMzMGZjNzE5NTZlZDViMzc5ZDU3YTU0MDE4Y2RhM2YyNDZjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVt
LXR5cGUuanNvbi1yZXN1bHQKQEAgLTQzMiw3ICs0MzIsNyBAQCBTdHJpbmcgZ2V0RW51bUNvbnN0
YW50VmFsdWUoaW50IGNvZGUpIHsKIAogIyMjIEVuZCBGaWxlOiBJbnNwZWN0b3JQcm90b2NvbE9i
amVjdHMuY3BwCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVy
cy5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCkBAIC00NzUsOSArNDc1LDkgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIH0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3Bh
dGNoZXJzLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgK
IAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5tbQorIyMjIEJlZ2lu
IEZpbGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MDksMTAgKzUw
OSwxMCBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9j
b2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2Nv
bENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24uaCIK
IAotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xC
YWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCisj
aW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50Lmg+CiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVycy5oPgpAQCAtNTIw
LDcgKzUyMCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCi1AaW1wbGVtZW50YXRpb24gUldJUHJvdG9jb2xDb25maWd1cmF0aW9uCitAaW1w
bGVtZW50YXRpb24gVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbgogewogICAgIEF1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlciogX2NvbnRyb2xsZXI7CiB9CkBAIC01NDMsOSArNTQzLDkgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIEBlbmQKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVBy
b3RvY29sQ29uZmlndXJhdGlvbi5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1
cmF0aW9uLm1tCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24uaAor
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24uaAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTU3
NiwxNiArNTc2LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2wuaD4KKyNpbXBvcnQg
PFdlYkluc3BlY3Rvci9UZXN0UHJvdG9jb2wuaD4KIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCi1AaW50ZXJmYWNlIFJXSVByb3RvY29sQ29uZmlndXJhdGlvbiA6IE5T
T2JqZWN0CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24gOiBOU09iamVjdAog
QGVuZAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBF
bmQgRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5oCiAKLSMjIyBCZWdpbiBGaWxlOiBS
V0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90
b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTYxNywxMCArNjE3LDEwIEBAIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkgdGhlIHNjcmlwdDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rv
ci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJX
SVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKIAotI2luY2x1ZGUgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKLSNp
bmNsdWRlICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2luY2x1ZGUgIlRl
c3RQcm90b2NvbEludGVybmFsLmgiCisjaW5jbHVkZSAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNjI5LDkgKzYyOSw5IEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBS
V0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9j
b2xCYWNrZW5kRGlzcGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sRW51
bUNvbnZlcnNpb25IZWxwZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29u
dmVyc2lvbkhlbHBlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTY2Miw3ICs2NjIsNyBAQCBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBn
ZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uCiAvLyBieSB0aGUg
c2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29sQXJy
YXlDb252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlDb252ZXJz
aW9uSGVscGVycy5oIgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtNjcwLDY5ICs2NzAs
NjkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgogT2JqQ0VudW1UeXBlIGZyb21Q
cm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCi1pbmxpbmUgU3RyaW5nIHRv
UHJvdG9jb2xTdHJpbmcoUldJUHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHMgdmFsdWUpCitpbmxp
bmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxz
IHZhbHVlKQogewogICAgIHN3aXRjaCh2YWx1ZSkgewotICAgIGNhc2UgUldJUHJvdG9jb2xSdW50
aW1lRmFybUFuaW1hbHNQaWdzOgorICAgIGNhc2UgVGVzdFByb3RvY29sUnVudGltZUZhcm1Bbmlt
YWxzUGlnczoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGlncyIpOwotICAgIGNhc2Ug
UldJUHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNDb3dzOgorICAgIGNhc2UgVGVzdFByb3RvY29s
UnVudGltZUZhcm1BbmltYWxzQ293czoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQ293
cyIpOwotICAgIGNhc2UgUldJUHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNDYXRzOgorICAgIGNh
c2UgVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzQ2F0czoKICAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiQ2F0cyIpOwotICAgIGNhc2UgUldJUHJvdG9jb2xSdW50aW1lRmFybUFuaW1h
bHNIZW5zOgorICAgIGNhc2UgVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzSGVuczoKICAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSGVucyIpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8
PgotaW5saW5lIFJXSVByb3RvY29sUnVudGltZUZhcm1BbmltYWxzIGZyb21Qcm90b2NvbFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5p
bWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gIlBpZ3MiKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xSdW50aW1lRmFybUFu
aW1hbHNQaWdzOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxz
UGlnczsKICAgICBpZiAodmFsdWUgPT0gIkNvd3MiKQotICAgICAgICByZXR1cm4gUldJUHJvdG9j
b2xSdW50aW1lRmFybUFuaW1hbHNDb3dzOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVu
dGltZUZhcm1BbmltYWxzQ293czsKICAgICBpZiAodmFsdWUgPT0gIkNhdHMiKQotICAgICAgICBy
ZXR1cm4gUldJUHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNDYXRzOworICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzQ2F0czsKICAgICBpZiAodmFsdWUgPT0gIkhl
bnMiKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNIZW5zOwor
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzSGVuczsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUldJUHJvdG9jb2xSdW50aW1lRmFybUFu
aW1hbHNQaWdzOworICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNQaWdz
OwogfQogCi1pbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoUldJUHJvdG9jb2xSdW50aW1l
VHdvTGVnZ2VkQW5pbWFscyB2YWx1ZSkKK2lubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhU
ZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyB2YWx1ZSkKIHsKICAgICBzd2l0Y2go
dmFsdWUpIHsKLSAgICBjYXNlIFJXSVByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNEdWNr
czoKKyAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRHVja3M6CiAg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkR1Y2tzIik7Ci0gICAgY2FzZSBSV0lQcm90b2Nv
bFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzSGVuczoKKyAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRp
bWVUd29MZWdnZWRBbmltYWxzSGVuczoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSGVu
cyIpOwotICAgIGNhc2UgUldJUHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0Nyb3dzOgor
ICAgIGNhc2UgVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNDcm93czoKICAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQ3Jvd3MiKTsKLSAgICBjYXNlIFJXSVByb3RvY29sUnVu
dGltZVR3b0xlZ2dlZEFuaW1hbHNGbGFtaW5nb3M6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xSdW50
aW1lVHdvTGVnZ2VkQW5pbWFsc0ZsYW1pbmdvczoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiRmxhbWluZ29zIik7CiAgICAgfQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgUldJUHJvdG9j
b2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK2lubGluZSBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyBmcm9t
UHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0g
IkR1Y2tzIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1h
bHNEdWNrczsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmlt
YWxzRHVja3M7CiAgICAgaWYgKHZhbHVlID09ICJIZW5zIikKLSAgICAgICAgcmV0dXJuIFJXSVBy
b3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNIZW5zOworICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNIZW5zOwogICAgIGlmICh2YWx1ZSA9PSAiQ3Jv
d3MiKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0Ny
b3dzOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHND
cm93czsKICAgICBpZiAodmFsdWUgPT0gIkZsYW1pbmdvcyIpCi0gICAgICAgIHJldHVybiBSV0lQ
cm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRmxhbWluZ29zOworICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNGbGFtaW5nb3M7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFJXSVByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFu
aW1hbHNEdWNrczsKKyAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1h
bHNEdWNrczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLSMjIyBFbmQgRmlsZTog
UldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJv
dG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9j
b2xFdmVudERpc3BhdGNoZXJzLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRXZlbnRE
aXNwYXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTc2NCw5ICs3NjQsOSBAQCBpbmxpbmUgUldJUHJvdG9j
b2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZQogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1w
b3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKKyNpbXBvcnQg
IlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZl
cnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBl
cnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtNzc0LDkgKzc3NCw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sRXZlbnREaXNwYXRj
aGVycy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCiAK
LSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbC5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3Rv
Y29sLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC04MDksMjQgKzgwOSwyNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCA8V2Vi
SW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9y
L1Rlc3RQcm90b2NvbEpTT05PYmplY3QuaD4KIAogCiAKIAogCi10eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBSV0lQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscykgewotICAgIFJXSVByb3RvY29s
UnVudGltZUZhcm1BbmltYWxzUGlncywKLSAgICBSV0lQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFs
c0Nvd3MsCi0gICAgUldJUHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNDYXRzLAotICAgIFJXSVBy
b3RvY29sUnVudGltZUZhcm1BbmltYWxzSGVucywKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFscykgeworICAgIFRlc3RQcm90b2NvbFJ1bnRp
bWVGYXJtQW5pbWFsc1BpZ3MsCisgICAgVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzQ293
cywKKyAgICBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHNDYXRzLAorICAgIFRlc3RQcm90
b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0hlbnMsCiB9OwogCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBSV0lQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzKSB7Ci0gICAgUldJUHJvdG9j
b2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0R1Y2tzLAotICAgIFJXSVByb3RvY29sUnVudGltZVR3
b0xlZ2dlZEFuaW1hbHNIZW5zLAotICAgIFJXSVByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1h
bHNDcm93cywKLSAgICBSV0lQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRmxhbWluZ29z
LAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dl
ZEFuaW1hbHMpIHsKKyAgICBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0R1Y2tz
LAorICAgIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzSGVucywKKyAgICBUZXN0
UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0Nyb3dzLAorICAgIFRlc3RQcm90b2NvbFJ1
bnRpbWVUd29MZWdnZWRBbmltYWxzRmxhbWluZ29zLAogfTsKIAogCkBAIC04MzYsOSArODM2LDkg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xSdW50aW1lVHdvTGVnZ2Vk
QW5pbWFscykgewogCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbC5oCisjIyMgRW5kIEZp
bGU6IFRlc3RQcm90b2NvbC5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEludGVybmFs
LmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODY5
LDE3ICs4NjksMTcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xSdW50
aW1lVHdvTGVnZ2VkQW5pbWFscykgewogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpz
b24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAi
UldJUHJvdG9jb2wuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgi
CisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmpl
Y3RJbnRlcm5hbC5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0
b3JDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMu
aD4KIAogCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEludGVybmFsLmgKKyMjIyBFbmQg
RmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9j
b2xUeXBlcy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpA
QCAtOTExLDkgKzkxMSw5IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFJXSVByb3RvY29s
UnVudGltZVR3b0xlZ2dlZEFuaW1hbHMpIHsKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wt
YmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbElu
dGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJS
V0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29s
RW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JWYWx1ZXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKQEAgLTkyMiw0ICs5MjIs
NCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQ
cm90b2NvbFR5cGVzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xh
cmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CmluZGV4IDZhNGVkNDlkYjhkMmRhOWMwYWNi
Mjc0OTdhYTAzNDc2M2U4MDAzZjcuLmYwZjhkN2RhYmUyMTVlZGFmZmFiYzI3YzE5YzhmM2Y0ODFh
N2Q0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC04NjgsNyAr
ODY4LDcgQEAgU3RyaW5nIGdldEVudW1Db25zdGFudFZhbHVlKGludCBjb2RlKSB7CiAKICMjIyBF
bmQgRmlsZTogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmNwcAogCi0jIyMgQmVnaW4gRmlsZTog
UldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90
b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtOTEzLDkgKzkxMyw5IEBAIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBG
aWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQ
cm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2Nv
bENvbmZpZ3VyYXRpb24ubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xDb25maWd1cmF0
aW9uLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtOTQ3LDEwICs5NDcsMTAgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNv
bmZpZy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJU
ZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uLmgiCiAKLSNpbXBvcnQgIlJXSVByb3RvY29sSW50ZXJu
YWwuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCisjaW1wb3J0
ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERp
c3BhdGNoZXJzLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BbHRlcm5hdGVEaXNwYXRjaGFi
bGVBZ2VudC5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JD
b250cm9sbGVyLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBbHRlcm5hdGVC
YWNrZW5kRGlzcGF0Y2hlcnMuaD4KQEAgLTk1OCw3ICs5NTgsNyBAQCBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotQGltcGxlbWVudGF0aW9uIFJX
SVByb3RvY29sQ29uZmlndXJhdGlvbgorQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbENvbmZp
Z3VyYXRpb24KIHsKICAgICBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqIF9jb250cm9s
bGVyOwogfQpAQCAtOTgxLDkgKzk4MSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBA
ZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KKyMjIyBF
bmQgRmlsZTogVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5tbQogCi0jIyMgQmVnaW4gRmlsZTog
UldJUHJvdG9jb2xDb25maWd1cmF0aW9uLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xD
b25maWd1cmF0aW9uLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMDE0LDE2ICsxMDE0LDE2IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uCiAv
LyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgPFdlYklu
c3BlY3Rvci9SV0lQcm90b2NvbC5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1Rlc3RQcm90b2Nv
bC5oPgogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZh
Y2UgUldJUHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QKK0BpbnRlcmZhY2UgVGVzdFBy
b3RvY29sQ29uZmlndXJhdGlvbiA6IE5TT2JqZWN0CiBAZW5kCiAKIAotIyMjIEVuZCBGaWxlOiBS
V0lQcm90b2NvbENvbmZpZ3VyYXRpb24uaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xDb25m
aWd1cmF0aW9uLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNo
ZXJzLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1t
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgpAQCAtMTA1NSwxMCArMTA1NSwxMCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
ICgiZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkK
IAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRj
aGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAKLSNp
bmNsdWRlICJSV0lQcm90b2NvbEludGVybmFsLmgiCi0jaW5jbHVkZSAiUldJUHJvdG9jb2xFbnVt
Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgor
I2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKQEAgLTEwNjksOSArMTA2OSw5IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBGaWxlOiBSV0lQcm90b2NvbEJhY2tlbmREaXNw
YXRjaGVycy5tbQorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMu
bW0KIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgK
KyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTExMDIsNyArMTEwMiw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogLy8gRE8gTk9U
IEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUt
ZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2Nv
bC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBl
cnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKQEAgLTExMTUsOSArMTExNSw5IEBAIE9iakNFbnVtVHlw
ZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKIH0gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJz
LmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQorIyMj
IEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0x
MTQ5LDkgKzExNDksOSBAQCBPYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQog
CiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlJXSVByb3RvY29sRW51
bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lv
bkhlbHBlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtMTE2MSw5ICsxMTYxLDkgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xFdmVu
dERpc3BhdGNoZXJzLm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hl
cnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sLmgKKyMjIyBCZWdpbiBGaWxlOiBU
ZXN0UHJvdG9jb2wuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTExOTYsNTEgKzExOTYsNTEgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAKLSNp
bXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KKyNpbXBvcnQgPFdl
Ykluc3BlY3Rvci9UZXN0UHJvdG9jb2xKU09OT2JqZWN0Lmg+CiAKIAotQGNsYXNzIFJXSVByb3Rv
Y29sRGF0YWJhc2VFcnJvcjsKLUBjbGFzcyBSV0lQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJh
bWV0ZXJCdW5kbGU7Ci1AY2xhc3MgUldJUHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZTsK
LUBjbGFzcyBSV0lQcm90b2NvbERhdGFiYXNlT2JqZWN0V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0
czsKLUBjbGFzcyBSV0lQcm90b2NvbERhdGFiYXNlRHVtbXlPYmplY3Q7Ci1AY2xhc3MgUldJUHJv
dG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlOworQGNsYXNzIFRlc3RQcm90b2NvbERhdGFiYXNlRXJy
b3I7CitAY2xhc3MgVGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTsK
K0BjbGFzcyBUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZTsKK0BjbGFzcyBUZXN0
UHJvdG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHM7CitAY2xhc3Mg
VGVzdFByb3RvY29sRGF0YWJhc2VEdW1teU9iamVjdDsKK0BjbGFzcyBUZXN0UHJvdG9jb2xUZXN0
UGFyYW1ldGVyQnVuZGxlOwogCiAKIAogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVm
YXVsdCIpKSkKLUBpbnRlcmZhY2UgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUldJUHJvdG9j
b2xKU09OT2JqZWN0CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBQcm90
b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5n
ICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwogQGVuZAogCiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgUldJUHJvdG9jb2xEYXRhYmFzZU9w
dGlvbmFsUGFyYW1ldGVyQnVuZGxlIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CitAaW50ZXJmYWNl
IFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUgOiBQcm90b2NvbEpT
T05PYmplY3QKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzOwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpub3RlczsKIC8qIG9wdGlvbmFsICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGRvdWJsZSB0aW1lc3RhbXA7Ci0vKiBvcHRpb25hbCAq
LyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZh
bHVlczsKLS8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZDsKLS8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZXRhaW4pIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAqZXJyb3I7Ci0vKiBvcHRp
b25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPFJXSVByb3RvY29s
RGF0YWJhc2VFcnJvcj4qLyAqZXJyb3JMaXN0OworLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChu
b25hdG9taWMsIHJldGFpbikgUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXM7CisvKiBvcHRpb25h
bCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBQcm90b2NvbEpTT05PYmplY3QgKnBh
eWxvYWQ7CisvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBUZXN0
UHJvdG9jb2xEYXRhYmFzZUVycm9yICplcnJvcjsKKy8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSBOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAq
ZXJyb3JMaXN0OwogQGVuZAogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKLUBpbnRlcmZhY2UgUldJUHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZSA6IFJXSVBy
b3RvY29sSlNPTk9iamVjdAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5T
QXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVz
IHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9y
OihSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvciBlcnJvckxpc3Q6KE5TQXJyYXkvKjxS
V0lQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3Q7CitAaW50ZXJmYWNlIFRlc3RQ
cm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlIDogUHJvdG9jb2xKU09OT2JqZWN0CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICop
Y29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGlt
ZXN0YW1wIHZhbHVlczooUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFByb3Rv
Y29sSlNPTk9iamVjdCAqKXBheWxvYWQgZXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3Ig
KillcnJvciBlcnJvckxpc3Q6KE5TQXJyYXkvKjxUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yPiov
ICopZXJyb3JMaXN0OwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXM7CiAvKiByZXF1aXJlZCAqLyBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm5vdGVzOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgZG91YmxlIHRpbWVzdGFtcDsKLS8qIHJlcXVp
cmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJXSVByb3RvY29sSlNPTk9iamVj
dCAqdmFsdWVzOwotLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkOwotLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5
IChub25hdG9taWMsIHJldGFpbikgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICplcnJvcjsKLS8q
IHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5Lyo8UldJUHJv
dG9jb2xEYXRhYmFzZUVycm9yPiovICplcnJvckxpc3Q7CisvKiByZXF1aXJlZCAqLyBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmV0YWluKSBQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlczsKKy8qIHJl
cXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFByb3RvY29sSlNPTk9iamVj
dCAqcGF5bG9hZDsKKy8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4p
IFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKmVycm9yOworLyogcmVxdWlyZWQgKi8gQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXkvKjxUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9y
PiovICplcnJvckxpc3Q7CiBAZW5kCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQotQGludGVyZmFjZSBSV0lQcm90b2NvbERhdGFiYXNlT2JqZWN0V2l0aFByb3BlcnR5
TmFtZUNvbmZsaWN0cyA6IFJXSVByb3RvY29sSlNPTk9iamVjdAorQGludGVyZmFjZSBUZXN0UHJv
dG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMgOiBQcm90b2NvbEpT
T05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEludGVnZXI6KE5TU3RyaW5nICopaW50
ZWdlciBhcnJheTooTlNTdHJpbmcgKilhcnJheSBzdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHZh
bHVlOihOU1N0cmluZyAqKXZhbHVlIG9iamVjdDooTlNTdHJpbmcgKilvYmplY3Q7CiAvKiByZXF1
aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmludGVnZXI7CiAv
KiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmFycmF5
OwpAQCAtMTI1MCwxOCArMTI1MCwxOCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVm
YXVsdCIpKSkKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkp
Ci1AaW50ZXJmYWNlIFJXSVByb3RvY29sRGF0YWJhc2VEdW1teU9iamVjdCA6IFJXSVByb3RvY29s
SlNPTk9iamVjdAorQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUR1bW15T2JqZWN0IDog
UHJvdG9jb2xKU09OT2JqZWN0CiBAZW5kCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJk
ZWZhdWx0IikpKQotQGludGVyZmFjZSBSV0lQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGUgOiBS
V0lQcm90b2NvbEpTT05PYmplY3QKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVz
OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilu
b3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05P
YmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBl
cnJvcjooUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3I7CitAaW50ZXJmYWNlIFRlc3RQ
cm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGUgOiBQcm90b2NvbEpTT05PYmplY3QKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1
bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3Rh
bXAgdmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xK
U09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVy
cm9yOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXM7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgTlNTdHJpbmcgKm5vdGVzOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5
IChub25hdG9taWMsIGFzc2lnbikgZG91YmxlIHRpbWVzdGFtcDsKLS8qIHJlcXVpcmVkICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVz
OwotLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUldJUHJvdG9j
b2xKU09OT2JqZWN0ICpwYXlsb2FkOwotLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9t
aWMsIHJldGFpbikgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICplcnJvcjsKKy8qIHJlcXVpcmVk
ICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFByb3RvY29sSlNPTk9iamVjdCAqdmFs
dWVzOworLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUHJvdG9j
b2xKU09OT2JqZWN0ICpwYXlsb2FkOworLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9t
aWMsIHJldGFpbikgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqZXJyb3I7CiBAZW5kCiAKIApA
QCAtMTI2OSw5ICsxMjY5LDkgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQi
KSkpCiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sLmgKKyMjIyBFbmQgRmlsZTogVGVz
dFByb3RvY29sLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sSW50ZXJuYWwuaAorIyMj
IEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMzAyLDE3ICsx
MzAyLDE3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5
cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJSV0lQcm90b2NvbC5oIgotI2ltcG9ydCAiUldJ
UHJvdG9jb2xKU09OT2JqZWN0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgor
I2ltcG9ydCAiVGVzdFByb3RvY29sSlNPTk9iamVjdEludGVybmFsLmgiCiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiAKIAogCi0jIyMgRW5kIEZpbGU6IFJX
SVByb3RvY29sSW50ZXJuYWwuaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5o
CiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbFR5cGVzLm1tCisjIyMgQmVnaW4gRmlsZTog
VGVzdFByb3RvY29sVHlwZXMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMzQ0LDE2ICsxMzQ0LDE2IEBAIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogLy8gYnkgdGhlIHNjcmlwdDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1w
cm90b2NvbC1iaW5kaW5ncy5weQogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVBy
b3RvY29sSW50ZXJuYWwuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNp
bXBvcnQgIlJXSVByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0
UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclZhbHVlcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogCi1AaW1wbGVtZW50YXRpb24gUldJUHJvdG9jb2xEYXRh
YmFzZUVycm9yCitAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcgogCiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZToo
aW50KWNvZGU7CiB7CkBAIC0xMzkxLDcgKzEzOTEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBSV0lQcm90b2NvbERhdGFiYXNlT3B0aW9u
YWxQYXJhbWV0ZXJCdW5kbGUKK0BpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xEYXRhYmFzZU9w
dGlvbmFsUGFyYW1ldGVyQnVuZGxlCiAKIC0gKHZvaWQpc2V0Q29sdW1uTmFtZXM6KE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzCiB7CkBAIC0xNDIzLDUyICsxNDIzLDUyIEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcmV0dXJuIFtzdXBlciBkb3VibGVGb3JLZXk6
QCJ0aW1lc3RhbXAiXTsKIH0KIAotLSAodm9pZClzZXRWYWx1ZXM6KFJXSVByb3RvY29sSlNPTk9i
amVjdCAqKXZhbHVlcworLSAodm9pZClzZXRWYWx1ZXM6KFByb3RvY29sSlNPTk9iamVjdCAqKXZh
bHVlcwogewogICAgIFtzdXBlciBzZXRPYmplY3Q6dmFsdWVzIGZvcktleTpAInZhbHVlcyJdOwog
fQogCi0tIChSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKKy0gKFByb3RvY29sSlNPTk9i
amVjdCAqKXZhbHVlcwogewotICAgIHJldHVybiAoUldJUHJvdG9jb2xKU09OT2JqZWN0ICopW3N1
cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOworICAgIHJldHVybiAoUHJvdG9jb2xKU09OT2Jq
ZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOwogfQogCi0tICh2b2lkKXNldFBh
eWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKKy0gKHZvaWQpc2V0UGF5bG9h
ZDooUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZAogewogICAgIFtzdXBlciBzZXRPYmplY3Q6
cGF5bG9hZCBmb3JLZXk6QCJwYXlsb2FkIl07CiB9CiAKLS0gKFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKXBheWxvYWQKKy0gKFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKIHsKLSAgICByZXR1
cm4gKFJXSVByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2Fk
Il07CisgICAgcmV0dXJuIChQcm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5
OkAicGF5bG9hZCJdOwogfQogCi0tICh2b2lkKXNldEVycm9yOihSV0lQcm90b2NvbERhdGFiYXNl
RXJyb3IgKillcnJvcgorLSAodm9pZClzZXRFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJv
ciAqKWVycm9yCiB7CiAgICAgW3N1cGVyIHNldE9iamVjdDplcnJvciBmb3JLZXk6QCJlcnJvciJd
OwogfQogCi0tIChSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcgorLSAoVGVzdFByb3Rv
Y29sRGF0YWJhc2VFcnJvciAqKWVycm9yCiB7Ci0gICAgcmV0dXJuIChSV0lQcm90b2NvbERhdGFi
YXNlRXJyb3IgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3IiXTsKKyAgICByZXR1cm4gKFRl
c3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3IiXTsK
IH0KIAotLSAodm9pZClzZXRFcnJvckxpc3Q6KE5TQXJyYXkvKjxSV0lQcm90b2NvbERhdGFiYXNl
RXJyb3I+Ki8gKillcnJvckxpc3QKKy0gKHZvaWQpc2V0RXJyb3JMaXN0OihOU0FycmF5Lyo8VGVz
dFByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdAogewotICAgIFRIUk9XX0VYQ0VQ
VElPTl9GT1JfQkFEX1RZUEVfSU5fQVJSQVkoZXJyb3JMaXN0LCBbUldJUHJvdG9jb2xEYXRhYmFz
ZUVycm9yIGNsYXNzXSk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRV9JTl9BUlJB
WShlcnJvckxpc3QsIFtUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGNsYXNzXSk7CiAgICAgW3N1
cGVyIHNldEluc3BlY3RvckFycmF5Omluc3BlY3Rvck9iamVjdEFycmF5KGVycm9yTGlzdCkgZm9y
S2V5OkAiZXJyb3JMaXN0Il07CiB9CiAKLS0gKE5TQXJyYXkvKjxSV0lQcm90b2NvbERhdGFiYXNl
RXJyb3I+Ki8gKillcnJvckxpc3QKKy0gKE5TQXJyYXkvKjxUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yPiovICopZXJyb3JMaXN0CiB7Ci0gICAgcmV0dXJuIG9iamNBcnJheTxSV0lQcm90b2NvbERh
dGFiYXNlRXJyb3I+KFtzdXBlciBpbnNwZWN0b3JBcnJheUZvcktleTpAImVycm9yTGlzdCJdKTsK
KyAgICByZXR1cm4gb2JqY0FycmF5PFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+KFtzdXBlciBp
bnNwZWN0b3JBcnJheUZvcktleTpAImVycm9yTGlzdCJdKTsKIH0KIAogQGVuZAogCi1AaW1wbGVt
ZW50YXRpb24gUldJUHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZQorQGltcGxlbWVudGF0
aW9uIFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlCiAKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1l
cyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFs
dWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xK
U09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJy
b3IgZXJyb3JMaXN0OihOU0FycmF5Lyo8UldJUHJvdG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJy
b3JMaXN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFt
cDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBw
YXlsb2FkOihQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJvdG9jb2xE
YXRhYmFzZUVycm9yICopZXJyb3IgZXJyb3JMaXN0OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0
YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdDsKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwog
ICAgIGlmICghc2VsZikKQEAgLTE0ODAsNyArMTQ4MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2Fk
LCBAInBheWxvYWQiKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZ
KGVycm9yLCBAImVycm9yIik7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9Q
RVJUWShlcnJvckxpc3QsIEAiZXJyb3JMaXN0Iik7Ci0gICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9C
QURfVFlQRV9JTl9BUlJBWShlcnJvckxpc3QsIFtSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgY2xh
c3NdKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFX0lOX0FSUkFZKGVycm9yTGlz
dCwgW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgY2xhc3NdKTsKIAogICAgIHNlbGYuY29sdW1u
TmFtZXMgPSBjb2x1bW5OYW1lczsKICAgICBzZWxmLm5vdGVzID0gbm90ZXM7CkBAIC0xNTIzLDUw
ICsxNTIzLDUwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcmV0dXJuIFtzdXBl
ciBkb3VibGVGb3JLZXk6QCJ0aW1lc3RhbXAiXTsKIH0KIAotLSAodm9pZClzZXRWYWx1ZXM6KFJX
SVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcworLSAodm9pZClzZXRWYWx1ZXM6KFByb3RvY29s
SlNPTk9iamVjdCAqKXZhbHVlcwogewogICAgIFtzdXBlciBzZXRPYmplY3Q6dmFsdWVzIGZvcktl
eTpAInZhbHVlcyJdOwogfQogCi0tIChSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKKy0g
KFByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcwogewotICAgIHJldHVybiAoUldJUHJvdG9jb2xK
U09OT2JqZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOworICAgIHJldHVybiAo
UHJvdG9jb2xKU09OT2JqZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOwogfQog
Ci0tICh2b2lkKXNldFBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKKy0g
KHZvaWQpc2V0UGF5bG9hZDooUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZAogewogICAgIFtz
dXBlciBzZXRPYmplY3Q6cGF5bG9hZCBmb3JLZXk6QCJwYXlsb2FkIl07CiB9CiAKLS0gKFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKKy0gKFByb3RvY29sSlNPTk9iamVjdCAqKXBheWxv
YWQKIHsKLSAgICByZXR1cm4gKFJXSVByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmplY3RG
b3JLZXk6QCJwYXlsb2FkIl07CisgICAgcmV0dXJuIChQcm90b2NvbEpTT05PYmplY3QgKilbc3Vw
ZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdOwogfQogCi0tICh2b2lkKXNldEVycm9yOihSV0lQ
cm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcgorLSAodm9pZClzZXRFcnJvcjooVGVzdFByb3Rv
Y29sRGF0YWJhc2VFcnJvciAqKWVycm9yCiB7CiAgICAgW3N1cGVyIHNldE9iamVjdDplcnJvciBm
b3JLZXk6QCJlcnJvciJdOwogfQogCi0tIChSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJv
cgorLSAoVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yCiB7Ci0gICAgcmV0dXJuIChS
V0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3IiXTsK
KyAgICByZXR1cm4gKFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKilbc3VwZXIgb2JqZWN0Rm9y
S2V5OkAiZXJyb3IiXTsKIH0KIAotLSAodm9pZClzZXRFcnJvckxpc3Q6KE5TQXJyYXkvKjxSV0lQ
cm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3QKKy0gKHZvaWQpc2V0RXJyb3JMaXN0
OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdAogewot
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEVfSU5fQVJSQVkoZXJyb3JMaXN0LCBbUldJ
UHJvdG9jb2xEYXRhYmFzZUVycm9yIGNsYXNzXSk7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9C
QURfVFlQRV9JTl9BUlJBWShlcnJvckxpc3QsIFtUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGNs
YXNzXSk7CiAgICAgW3N1cGVyIHNldEluc3BlY3RvckFycmF5Omluc3BlY3Rvck9iamVjdEFycmF5
KGVycm9yTGlzdCkgZm9yS2V5OkAiZXJyb3JMaXN0Il07CiB9CiAKLS0gKE5TQXJyYXkvKjxSV0lQ
cm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3QKKy0gKE5TQXJyYXkvKjxUZXN0UHJv
dG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0CiB7Ci0gICAgcmV0dXJuIG9iamNBcnJh
eTxSV0lQcm90b2NvbERhdGFiYXNlRXJyb3I+KFtzdXBlciBpbnNwZWN0b3JBcnJheUZvcktleTpA
ImVycm9yTGlzdCJdKTsKKyAgICByZXR1cm4gb2JqY0FycmF5PFRlc3RQcm90b2NvbERhdGFiYXNl
RXJyb3I+KFtzdXBlciBpbnNwZWN0b3JBcnJheUZvcktleTpAImVycm9yTGlzdCJdKTsKIH0KIAog
QGVuZAogCi1AaW1wbGVtZW50YXRpb24gUldJUHJvdG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9w
ZXJ0eU5hbWVDb25mbGljdHMKK0BpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xEYXRhYmFzZU9i
amVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SW50ZWdlcjooTlNTdHJpbmcgKilpbnRlZ2VyIGFycmF5OihOU1N0cmluZyAqKWFycmF5IHN0cmlu
ZzooTlNTdHJpbmcgKilzdHJpbmcgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUgb2JqZWN0OihOU1N0
cmluZyAqKW9iamVjdDsKIHsKQEAgLTE2NDEsMTQgKzE2NDEsMTQgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gUldJUHJvdG9jb2xEYXRhYmFz
ZUR1bW15T2JqZWN0CitAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sRGF0YWJhc2VEdW1teU9i
amVjdAogCiBAZW5kCiAKIAotQGltcGxlbWVudGF0aW9uIFJXSVByb3RvY29sVGVzdFBhcmFtZXRl
ckJ1bmRsZQorQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGUK
IAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91
YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXls
b2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihSV0lQcm90b2NvbERh
dGFiYXNlRXJyb3IgKillcnJvcjsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVz
OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilu
b3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihQcm90b2NvbEpTT05PYmpl
Y3QgKil2YWx1ZXMgcGF5bG9hZDooUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjoo
VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yOwogewogICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CiAgICAgaWYgKCFzZWxmKQpAQCAtMTcwMCwzNyArMTcwMCwzNyBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBbc3VwZXIgZG91YmxlRm9yS2V5OkAidGltZXN0
YW1wIl07CiB9CiAKLS0gKHZvaWQpc2V0VmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2
YWx1ZXMKKy0gKHZvaWQpc2V0VmFsdWVzOihQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMKIHsK
ICAgICBbc3VwZXIgc2V0T2JqZWN0OnZhbHVlcyBmb3JLZXk6QCJ2YWx1ZXMiXTsKIH0KIAotLSAo
UldJUHJvdG9jb2xKU09OT2JqZWN0ICopdmFsdWVzCistIChQcm90b2NvbEpTT05PYmplY3QgKil2
YWx1ZXMKIHsKLSAgICByZXR1cm4gKFJXSVByb3RvY29sSlNPTk9iamVjdCAqKVtzdXBlciBvYmpl
Y3RGb3JLZXk6QCJ2YWx1ZXMiXTsKKyAgICByZXR1cm4gKFByb3RvY29sSlNPTk9iamVjdCAqKVtz
dXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXTsKIH0KIAotLSAodm9pZClzZXRQYXlsb2FkOihS
V0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCistICh2b2lkKXNldFBheWxvYWQ6KFByb3Rv
Y29sSlNPTk9iamVjdCAqKXBheWxvYWQKIHsKICAgICBbc3VwZXIgc2V0T2JqZWN0OnBheWxvYWQg
Zm9yS2V5OkAicGF5bG9hZCJdOwogfQogCi0tIChSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXls
b2FkCistIChQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCiB7Ci0gICAgcmV0dXJuIChSV0lQ
cm90b2NvbEpTT05PYmplY3QgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdOworICAg
IHJldHVybiAoUHJvdG9jb2xKU09OT2JqZWN0ICopW3N1cGVyIG9iamVjdEZvcktleTpAInBheWxv
YWQiXTsKIH0KIAotLSAodm9pZClzZXRFcnJvcjooUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICop
ZXJyb3IKKy0gKHZvaWQpc2V0RXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJv
cgogewogICAgIFtzdXBlciBzZXRPYmplY3Q6ZXJyb3IgZm9yS2V5OkAiZXJyb3IiXTsKIH0KIAot
LSAoUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IKKy0gKFRlc3RQcm90b2NvbERhdGFi
YXNlRXJyb3IgKillcnJvcgogewotICAgIHJldHVybiAoUldJUHJvdG9jb2xEYXRhYmFzZUVycm9y
ICopW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl07CisgICAgcmV0dXJuIChUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yICopW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl07CiB9CiAKIEBl
bmQKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBFbmQgRmlsZTog
VGVzdFByb3RvY29sVHlwZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNh
c3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQK
aW5kZXggZWJiNjUxMzk5N2MyMWFlNzc5ZmVlZWRhM2JlZTFkOGZkMDM0YzYxNi4uZTNhNzIwN2U3
ZDQ0ZWMzY2MxZTA5NDNkMTk5ODk5Y2JlMGI1ZGU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2Fz
dHMuanNvbi1yZXN1bHQKQEAgLTc1OSw3ICs3NTksNyBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5z
cGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj46OmFzc2VydFZhbHVlSGFz
RQogCiAjIyMgRW5kIEZpbGU6IEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5jcHAKIAotIyMjIEJl
Z2luIEZpbGU6IFJXSVByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgKKyMjIyBCZWdpbiBGaWxl
OiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTgwMiw5ICs4MDIs
OSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAK
LSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAorIyMjIEVuZCBG
aWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaAogCi0jIyMgQmVnaW4gRmlsZTog
UldJUHJvdG9jb2xDb25maWd1cmF0aW9uLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29s
Q29uZmlndXJhdGlvbi5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTgzNiwxMCArODM2LDEwIEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCiAj
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oIgor
I2ltcG9ydCAiVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbi5oIgogCi0jaW1wb3J0ICJSV0lQcm90
b2NvbEludGVybmFsLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5o
IgorI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2Nv
bEJhY2tlbmREaXNwYXRjaGVycy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQWx0ZXJuYXRl
RGlzcGF0Y2hhYmxlQWdlbnQuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxl
SW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXJzLmg+CkBAIC04NDcsNyArODQ3LDcgQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLUBpbXBsZW1l
bnRhdGlvbiBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24KK0BpbXBsZW1lbnRhdGlvbiBUZXN0UHJv
dG9jb2xDb25maWd1cmF0aW9uCiB7CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVy
KiBfY29udHJvbGxlcjsKIH0KQEAgLTg3MCw5ICs4NzAsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogQGVuZAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xDb25maWd1cmF0aW9u
Lm1tCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24ubW0KIAotIyMjIEJl
Z2luIEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oCisjIyMgQmVnaW4gRmlsZTogVGVz
dFByb3RvY29sQ29uZmlndXJhdGlvbi5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtOTAzLDE2ICs5MDMsMTYgQEAgdXNp
bmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3Rz
Lmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9y
dCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sLmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVz
dFByb3RvY29sLmg+CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQot
QGludGVyZmFjZSBSV0lQcm90b2NvbENvbmZpZ3VyYXRpb24gOiBOU09iamVjdAorQGludGVyZmFj
ZSBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uIDogTlNPYmplY3QKIEBlbmQKIAogCi0jIyMgRW5k
IEZpbGU6IFJXSVByb3RvY29sQ29uZmlndXJhdGlvbi5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90
b2NvbENvbmZpZ3VyYXRpb24uaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJvdG9jb2xCYWNrZW5k
RGlzcGF0Y2hlcnMubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0
Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCkBAIC05NDQsMTAgKzk0NCwxMCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSkKIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEJhY2tlbmRE
aXNwYXRjaGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgi
CiAKLSNpbmNsdWRlICJSV0lQcm90b2NvbEludGVybmFsLmgiCi0jaW5jbHVkZSAiUldJUHJvdG9j
b2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJUZXN0UHJvdG9jb2xJbnRlcm5h
bC5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKQEAgLTk1Niw5ICs5NTYsOSBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xCYWNrZW5k
RGlzcGF0Y2hlcnMubW0KKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNo
ZXJzLm1tCiAKLSMjIyBCZWdpbiBGaWxlOiBSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCkBAIC05ODksNyArOTg5LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlw
ZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVs
cGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgog
CiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIApAQCAtOTk3LDY5ICs5OTcsNjkgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgogT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhj
b25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCi1pbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmco
UldJUHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzIHZhbHVlKQoraW5saW5lIFN0cmluZyB0b1By
b3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMgdmFsdWUpCiB7CiAg
ICAgc3dpdGNoKHZhbHVlKSB7Ci0gICAgY2FzZSBSV0lQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1h
bHNQaWdzOgorICAgIGNhc2UgVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc1BpZ3M6CiAg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBpZ3MiKTsKLSAgICBjYXNlIFJXSVByb3RvY29s
VGVzdFVuY2FzdGVkQW5pbWFsc0Nvd3M6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0
ZWRBbmltYWxzQ293czoKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQ293cyIpOwotICAg
IGNhc2UgUldJUHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzQ2F0czoKKyAgICBjYXNlIFRlc3RQ
cm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHNDYXRzOgogICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJDYXRzIik7Ci0gICAgY2FzZSBSV0lQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHNIZW5z
OgorICAgIGNhc2UgVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc0hlbnM6CiAgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIkhlbnMiKTsKICAgICB9CiB9CiAKIHRlbXBsYXRlPD4KLWlu
bGluZSBSV0lQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFs
cyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUgPT0gIlBpZ3MiKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmlt
YWxzUGlnczsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHNQ
aWdzOwogICAgIGlmICh2YWx1ZSA9PSAiQ293cyIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2Nv
bFRlc3RVbmNhc3RlZEFuaW1hbHNDb3dzOworICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVz
dFVuY2FzdGVkQW5pbWFsc0Nvd3M7CiAgICAgaWYgKHZhbHVlID09ICJDYXRzIikKLSAgICAgICAg
cmV0dXJuIFJXSVByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc0NhdHM7CisgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzQ2F0czsKICAgICBpZiAodmFsdWUgPT0g
IkhlbnMiKQotICAgICAgICByZXR1cm4gUldJUHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzSGVu
czsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHNIZW5zOwog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSV0lQcm90b2NvbFRlc3RVbmNh
c3RlZEFuaW1hbHNQaWdzOworICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmlt
YWxzUGlnczsKIH0KIAotaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFJXSVByb3RvY29s
VGVzdENhc3RlZEFuaW1hbHMgdmFsdWUpCitpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmco
VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMgdmFsdWUpCiB7CiAgICAgc3dpdGNoKHZhbHVl
KSB7Ci0gICAgY2FzZSBSV0lQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRHVja3M6CisgICAgY2Fz
ZSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0R1Y2tzOgogICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsKCJEdWNrcyIpOwotICAgIGNhc2UgUldJUHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFs
c0hlbnM6CisgICAgY2FzZSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0hlbnM6CiAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkhlbnMiKTsKLSAgICBjYXNlIFJXSVByb3RvY29sVGVz
dENhc3RlZEFuaW1hbHNDcm93czoKKyAgICBjYXNlIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmlt
YWxzQ3Jvd3M6CiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNyb3dzIik7Ci0gICAgY2Fz
ZSBSV0lQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRmxhbWluZ29zOgorICAgIGNhc2UgVGVzdFBy
b3RvY29sVGVzdENhc3RlZEFuaW1hbHNGbGFtaW5nb3M6CiAgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIkZsYW1pbmdvcyIpOwogICAgIH0KIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIFJXSVBy
b3RvY29sVGVzdENhc3RlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpCitpbmxpbmUgVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMgZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09ICJEdWNrcyIp
Ci0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRHVja3M7CisgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0R1Y2tzOwogICAgIGlmICh2
YWx1ZSA9PSAiSGVucyIpCi0gICAgICAgIHJldHVybiBSV0lQcm90b2NvbFRlc3RDYXN0ZWRBbmlt
YWxzSGVuczsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzSGVu
czsKICAgICBpZiAodmFsdWUgPT0gIkNyb3dzIikKLSAgICAgICAgcmV0dXJuIFJXSVByb3RvY29s
VGVzdENhc3RlZEFuaW1hbHNDcm93czsKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RD
YXN0ZWRBbmltYWxzQ3Jvd3M7CiAgICAgaWYgKHZhbHVlID09ICJGbGFtaW5nb3MiKQotICAgICAg
ICByZXR1cm4gUldJUHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0ZsYW1pbmdvczsKKyAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRmxhbWluZ29zOwogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBSV0lQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxz
RHVja3M7CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRHVja3M7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29s
RW51bUNvbnZlcnNpb25IZWxwZXJzLmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRW51bUNv
bnZlcnNpb25IZWxwZXJzLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sRXZlbnREaXNw
YXRjaGVycy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMu
bW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCkBAIC0xMDkxLDkgKzEwOTEsOSBAQCBpbmxpbmUgUldJUHJvdG9jb2xUZXN0Q2Fz
dGVkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIC8vIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5l
cmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAogI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJSV0lQcm90b2NvbEludGVybmFsLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJ
bnRlcm5hbC5oIgogCi0jaW1wb3J0ICJSV0lQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5o
IgorI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCiAjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKQEAgLTExMDEsOSArMTEwMSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQorIyMj
IEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCiAKLSMjIyBCZWdpbiBG
aWxlOiBSV0lQcm90b2NvbC5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sLmgKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC0xMTM2LDQ3ICsxMTM2LDQ3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3Iv
UldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvVGVzdFByb3Rv
Y29sSlNPTk9iamVjdC5oPgogCiAKLUBjbGFzcyBSV0lQcm90b2NvbFRlc3RUeXBlTmVlZGluZ0Nh
c3Q7Ci1AY2xhc3MgUldJUHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MTsKLUBjbGFzcyBSV0lQ
cm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyOworQGNsYXNzIFRlc3RQcm90b2NvbFRlc3RUeXBl
TmVlZGluZ0Nhc3Q7CitAY2xhc3MgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDE7CitA
Y2xhc3MgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDI7CiAKIAotdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgUldJUHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzKSB7Ci0gICAgUldJ
UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzUGlncywKLSAgICBSV0lQcm90b2NvbFRlc3RVbmNh
c3RlZEFuaW1hbHNDb3dzLAotICAgIFJXSVByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc0NhdHMs
Ci0gICAgUldJUHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzSGVucywKK3R5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMpIHsKKyAgICBUZXN0
UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzUGlncywKKyAgICBUZXN0UHJvdG9jb2xUZXN0VW5j
YXN0ZWRBbmltYWxzQ293cywKKyAgICBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzQ2F0
cywKKyAgICBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzSGVucywKIH07CiAKLXR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFJXSVByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMpIHsKLSAg
ICBSV0lQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRHVja3MsCi0gICAgUldJUHJvdG9jb2xUZXN0
Q2FzdGVkQW5pbWFsc0hlbnMsCi0gICAgUldJUHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0Nyb3dz
LAotICAgIFJXSVByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNGbGFtaW5nb3MsCit0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscykgeworICAgIFRl
c3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRHVja3MsCisgICAgVGVzdFByb3RvY29sVGVzdENh
c3RlZEFuaW1hbHNIZW5zLAorICAgIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzQ3Jvd3Ms
CisgICAgVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNGbGFtaW5nb3MsCiB9OwogCiAKIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBSV0lQcm90
b2NvbFRlc3RUeXBlTmVlZGluZ0Nhc3QgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbnVtYmVyOihpbnQpbnVt
YmVyIGFuaW1hbHM6KFJXSVByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMpYW5pbWFscyBpZGVudGlm
aWVyOihpbnQpaWRlbnRpZmllciB0cmVlOihSV0lQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3Qx
ICopdHJlZTsKK0BpbnRlcmZhY2UgVGVzdFByb3RvY29sVGVzdFR5cGVOZWVkaW5nQ2FzdCA6IFBy
b3RvY29sSlNPTk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3RyaW5nOihOU1N0cmlu
ZyAqKXN0cmluZyBudW1iZXI6KGludCludW1iZXIgYW5pbWFsczooVGVzdFByb3RvY29sVGVzdENh
c3RlZEFuaW1hbHMpYW5pbWFscyBpZGVudGlmaWVyOihpbnQpaWRlbnRpZmllciB0cmVlOihUZXN0
UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqKXRyZWU7CiAvKiByZXF1aXJlZCAqLyBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnN0cmluZzsKIC8qIHJlcXVpcmVkICov
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBudW1iZXI7Ci0vKiByZXF1aXJlZCAq
LyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBSV0lQcm90b2NvbFRlc3RDYXN0ZWRBbmlt
YWxzIGFuaW1hbHM7CisvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
KSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscyBhbmltYWxzOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGlkZW50aWZpZXI7Ci0vKiByZXF1aXJl
ZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBSV0lQcm90b2NvbFRlc3RSZWN1cnNp
dmVPYmplY3QxICp0cmVlOworLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJl
dGFpbikgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgKnRyZWU7CiBAZW5kCiAKIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBSV0lQcm90
b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxIDogUldJUHJvdG9jb2xKU09OT2JqZWN0Ci0vKiBvcHRp
b25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBSV0lQcm90b2NvbFRlc3RSZWN1
cnNpdmVPYmplY3QyICpvYmo7CitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVP
YmplY3QxIDogUHJvdG9jb2xKU09OT2JqZWN0CisvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmV0YWluKSBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiAqb2JqOwog
QGVuZAogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZh
Y2UgUldJUHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiA6IFJXSVByb3RvY29sSlNPTk9iamVj
dAotLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgUldJUHJvdG9j
b2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqb2JqOworQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0
UmVjdXJzaXZlT2JqZWN0MiA6IFByb3RvY29sSlNPTk9iamVjdAorLyogb3B0aW9uYWwgKi8gQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbikgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVj
dDEgKm9iajsKIEBlbmQKIAogCkBAIC0xMTg0LDkgKzExODQsOSBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogCiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2wu
aAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAogCi0jIyMgQmVnaW4gRmlsZTogUldJUHJv
dG9jb2xJbnRlcm5hbC5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTEyMTcsMTcgKzEyMTcsMTcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAo
ImRlZmF1bHQiKSkpCiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uCiAvLyBi
eSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2Vu
ZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJXSVByb3Rv
Y29sLmgiCi0jaW1wb3J0ICJSV0lQcm90b2NvbEpTT05PYmplY3RJbnRlcm5hbC5oIgorI2ltcG9y
dCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0SW50ZXJu
YWwuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlci5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIAog
CiAKLSMjIyBFbmQgRmlsZTogUldJUHJvdG9jb2xJbnRlcm5hbC5oCisjIyMgRW5kIEZpbGU6IFRl
c3RQcm90b2NvbEludGVybmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFJXSVByb3RvY29sVHlwZXMu
bW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEyNTks
MTggKzEyNTksMTggQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAv
LyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKICNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiUldJUHJvdG9jb2xJbnRlcm5hbC5oIgorI2ltcG9ydCAiVGVzdFByb3Rv
Y29sSW50ZXJuYWwuaCIKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBl
cnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgogI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKLUBpbXBsZW1lbnRh
dGlvbiBSV0lQcm90b2NvbFRlc3RUeXBlTmVlZGluZ0Nhc3QKK0BpbXBsZW1lbnRhdGlvbiBUZXN0
UHJvdG9jb2xUZXN0VHlwZU5lZWRpbmdDYXN0CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbnVtYmVyOihpbnQpbnVtYmVyIGFuaW1hbHM6KFJXSVBy
b3RvY29sVGVzdENhc3RlZEFuaW1hbHMpYW5pbWFscyBpZGVudGlmaWVyOihpbnQpaWRlbnRpZmll
ciB0cmVlOihSV0lQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopdHJlZTsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbnVtYmVyOihpbnQpbnVt
YmVyIGFuaW1hbHM6KFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKWFuaW1hbHMgaWRlbnRp
ZmllcjooaW50KWlkZW50aWZpZXIgdHJlZTooVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVj
dDEgKil0cmVlOwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQpA
QCAtMTMwOCwxNCArMTMwOCwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJl
dHVybiBbc3VwZXIgaW50ZWdlckZvcktleTpAIm51bWJlciJdOwogfQogCi0tICh2b2lkKXNldEFu
aW1hbHM6KFJXSVByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMpYW5pbWFscworLSAodm9pZClzZXRB
bmltYWxzOihUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscylhbmltYWxzCiB7CiAgICAgW3N1
cGVyIHNldFN0cmluZzp0b1Byb3RvY29sU3RyaW5nKGFuaW1hbHMpIGZvcktleTpAImFuaW1hbHMi
XTsKIH0KIAotLSAoUldJUHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscylhbmltYWxzCistIChUZXN0
UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscylhbmltYWxzCiB7Ci0gICAgcmV0dXJuIGZyb21Qcm90
b2NvbFN0cmluZzxSV0lQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPihbc3VwZXIgc3RyaW5nRm9y
S2V5OkAiYW5pbWFscyJdKTsKKyAgICByZXR1cm4gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90
b2NvbFRlc3RDYXN0ZWRBbmltYWxzPihbc3VwZXIgc3RyaW5nRm9yS2V5OkAiYW5pbWFscyJdKTsK
IH0KIAogLSAodm9pZClzZXRJZGVudGlmaWVyOihpbnQpaWRlbnRpZmllcgpAQCAtMTMyOCw0NSAr
MTMyOCw0NSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBbc3VwZXIg
aW50ZWdlckZvcktleTpAImlkIl07CiB9CiAKLS0gKHZvaWQpc2V0VHJlZTooUldJUHJvdG9jb2xU
ZXN0UmVjdXJzaXZlT2JqZWN0MSAqKXRyZWUKKy0gKHZvaWQpc2V0VHJlZTooVGVzdFByb3RvY29s
VGVzdFJlY3Vyc2l2ZU9iamVjdDEgKil0cmVlCiB7CiAgICAgW3N1cGVyIHNldE9iamVjdDp0cmVl
IGZvcktleTpAInRyZWUiXTsKIH0KIAotLSAoUldJUHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0
MSAqKXRyZWUKKy0gKFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopdHJlZQogewot
ICAgIHJldHVybiAoUldJUHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqKVtzdXBlciBvYmpl
Y3RGb3JLZXk6QCJ0cmVlIl07CisgICAgcmV0dXJuIChUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZl
T2JqZWN0MSAqKVtzdXBlciBvYmplY3RGb3JLZXk6QCJ0cmVlIl07CiB9CiAKIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIFJXSVByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEKK0BpbXBsZW1lbnRh
dGlvbiBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MQogCi0tICh2b2lkKXNldE9iajoo
UldJUHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiAqKW9iagorLSAodm9pZClzZXRPYmo6KFRl
c3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICopb2JqCiB7CiAgICAgW3N1cGVyIHNldE9i
amVjdDpvYmogZm9yS2V5OkAib2JqIl07CiB9CiAKLS0gKFJXSVByb3RvY29sVGVzdFJlY3Vyc2l2
ZU9iamVjdDIgKilvYmoKKy0gKFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICopb2Jq
CiB7Ci0gICAgcmV0dXJuIChSV0lQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICopW3N1cGVy
IG9iamVjdEZvcktleTpAIm9iaiJdOworICAgIHJldHVybiAoVGVzdFByb3RvY29sVGVzdFJlY3Vy
c2l2ZU9iamVjdDIgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAib2JqIl07CiB9CiAKIEBlbmQKIAot
QGltcGxlbWVudGF0aW9uIFJXSVByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDIKK0BpbXBsZW1l
bnRhdGlvbiBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MgogCi0tICh2b2lkKXNldE9i
ajooUldJUHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqKW9iagorLSAodm9pZClzZXRPYmo6
KFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopb2JqCiB7CiAgICAgW3N1cGVyIHNl
dE9iamVjdDpvYmogZm9yS2V5OkAib2JqIl07CiB9CiAKLS0gKFJXSVByb3RvY29sVGVzdFJlY3Vy
c2l2ZU9iamVjdDEgKilvYmoKKy0gKFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICop
b2JqCiB7Ci0gICAgcmV0dXJuIChSV0lQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopW3N1
cGVyIG9iamVjdEZvcktleTpAIm9iaiJdOworICAgIHJldHVybiAoVGVzdFByb3RvY29sVGVzdFJl
Y3Vyc2l2ZU9iamVjdDEgKilbc3VwZXIgb2JqZWN0Rm9yS2V5OkAib2JqIl07CiB9CiAKIEBlbmQK
IAogCi0jIyMgRW5kIEZpbGU6IFJXSVByb3RvY29sVHlwZXMubW0KKyMjIyBFbmQgRmlsZTogVGVz
dFByb3RvY29sVHlwZXMubW0K
</data>

          </attachment>
      

    </bug>

</bugzilla>